diff --git a/src/util.js b/src/util.js index ca5cee76..5023c03a 100644 --- a/src/util.js +++ b/src/util.js @@ -70,14 +70,6 @@ var util = function() { return o; }; - function inURL(url, str) { - var exists = false; - if ( url.indexOf( str ) > -1 ) { - exists = true; - } - return exists; - } - function registerEmitter() { var Emitter = function(obj) { this.emit = function(obj, channel) { @@ -182,256 +174,7 @@ var util = function() { } } - function formatMetadata(data) { - out = '
'; - $.each(data, function(key, val) { - if (typeof(val) == 'string' && key[0] != '_') { - out = out + '
' + key + '
' + val; - } else if (typeof(val) == 'object' && key != "geometry" && val != null) { - if (key == 'properties') { - $.each(val, function(attr, value){ - out = out + '
' + attr + '
' + value; - }) - } else { - out = out + '
' + key + '
' + val.join(', '); - } - } - }); - out = out + '
'; - return out; - } - - function getBaseURL(url) { - var baseURL = ""; - if ( inURL(url, '_design') ) { - if (inURL(url, '_rewrite')) { - var path = url.split("#")[0]; - if (path[path.length - 1] === "/") { - baseURL = ""; - } else { - baseURL = '_rewrite/'; - } - } else { - baseURL = '_rewrite/'; - } - } - return baseURL; - } - - var persist = { - restore: function() { - $('.persist').each(function(i, el) { - var inputId = $(el).attr('id'); - if(localStorage.getItem(inputId)) $('#' + inputId).val(localStorage.getItem(inputId)); - }) - }, - save: function(id) { - localStorage.setItem(id, $('#' + id).val()); - }, - clear: function() { - $('.persist').each(function(i, el) { - localStorage.removeItem($(el).attr('id')); - }) - } - } - - // simple debounce adapted from underscore.js - function delay(func, wait) { - return function() { - var context = this, args = arguments; - var throttler = function() { - delete app.timeout; - func.apply(context, args); - }; - if (!app.timeout) app.timeout = setTimeout(throttler, wait); - }; - }; - - function resetForm(form) { - $(':input', form) - .not(':button, :submit, :reset, :hidden') - .val('') - .removeAttr('checked') - .removeAttr('selected'); - } - - function largestWidth(selector, min) { - var min_width = min || 0; - $(selector).each(function(i, n){ - var this_width = $(n).width(); - if (this_width > min_width) { - min_width = this_width; - } - }); - return min_width; - } - - function getType(obj) { - if (obj === null) { - return 'null'; - } - if (typeof obj === 'object') { - if (obj.constructor.toString().indexOf("Array") !== -1) { - return 'array'; - } else { - return 'object'; - } - } else { - return typeof obj; - } - } - - function lookupPath(path) { - var docs = app.apiDocs; - try { - _.each(path, function(node) { - docs = docs[node]; - }) - } catch(e) { - util.notify("Error selecting documents" + e); - docs = []; - } - return docs; - } - - function nodePath(docField) { - if (docField.children('.object-key').length > 0) return docField.children('.object-key').text(); - if (docField.children('.array-key').length > 0) return docField.children('.array-key').text(); - if (docField.children('.doc-key').length > 0) return docField.children('.doc-key').text(); - return ""; - } - - function selectedTreePath() { - var nodes = [] - , parent = $('.chosen'); - while (parent.length > 0) { - nodes.push(nodePath(parent)); - parent = parent.parents('.doc-field:first'); - } - return _.compact(nodes).reverse(); - } - - // TODO refactor handlers so that they dont stack up as the tree gets bigger - function handleTreeClick(e) { - var clicked = $(e.target); - if(clicked.hasClass('expand')) return; - if (clicked.children('.array').length > 0) { - var field = clicked; - } else if (clicked.siblings('.array').length > 0) { - var field = clicked.parents('.doc-field:first'); - } else { - var field = clicked.parents('.array').parents('.doc-field:first'); - } - $('.chosen').removeClass('chosen'); - field.addClass('chosen'); - return false; - } - - var createTreeNode = { - "string": function (obj, key) { - var val = $('
'); - if (obj[key].length > 45) { - val.append($('') - .text(obj[key].slice(0, 45))) - .append( - $('...') - .click(function () { - val.html('') - .append($('') - .text(obj[key].length ? obj[key] : " ") - ) - }) - ) - } - else { - var val = $('
'); - val.append( - $('') - .text(obj[key].length ? obj[key] : " ") - ) - } - return val; - } - , "number": function (obj, key) { - var val = $('
') - val.append($('' + obj[key] + '')) - return val; - } - , "null": function (obj, key) { - var val = $('
') - val.append($('' + obj[key] + '')) - return val; - } - , "boolean": function (obj, key) { - var val = $('
') - val.append($('' + obj[key] + '')) - return val; - } - , "array": function (obj, key, indent) { - if (!indent) indent = 1; - var val = $('
') - $('[...]') - .click(function (e) { - var n = $(this).parent(); - var cls = 'sub-'+key+'-'+indent - n.html('') - n.append('[') - for (i in obj[key]) { - var field = $('
').click(handleTreeClick); - n.append( - field - .append('
'+i+'
') - .append(createTreeNode[getType(obj[key][i])](obj[key], i, indent + 1)) - ) - } - n.append(']') - $('div.'+cls).width(largestWidth('div.'+cls)) - }) - .appendTo($('
').appendTo(val)) - return val; - } - , "object": function (obj, key, indent) { - if (!indent) indent = 1; - var val = $('
') - $('{...}') - .click(function (e) { - var n = $(this).parent(); - n.html('') - n.append('{') - for (i in obj[key]) { - var field = $('
').click(handleTreeClick); - var p = $('
'); - var di = $('
'+i+'
') - field.append(p) - .append(di) - .append(createTreeNode[getType(obj[key][i])](obj[key], i, indent + 1)) - n.append(field) - } - - n.append('}') - di.width(largestWidth('div.object-key')) - }) - .appendTo($('
').appendTo(val)) - return val; - } - } - - function renderTree(doc) { - var d = $('div#document-editor'); - for (i in doc) { - var field = $('
').click(handleTreeClick); - $('
').appendTo(field); - field.append('
'+i+'
') - field.append(createTreeNode[getType(doc[i])](doc, i)); - d.append(field); - } - - $('div.doc-key-base').width(largestWidth('div.doc-key-base')) - } - - return { - inURL: inURL, registerEmitter: registerEmitter, listenFor: listenFor, show: show, @@ -439,14 +182,6 @@ var util = function() { position: position, render: render, notify: notify, - observeExit: observeExit, - formatMetadata:formatMetadata, - getBaseURL:getBaseURL, - resetForm: resetForm, - delay: delay, - persist: persist, - lookupPath: lookupPath, - selectedTreePath: selectedTreePath, - renderTree: renderTree + observeExit: observeExit }; }();