diff options
author | Garren Smith <garren.smith@gmail.com> | 2014-03-14 12:05:55 -0400 |
---|---|---|
committer | Garren Smith <garren.smith@gmail.com> | 2014-03-20 10:33:46 +0200 |
commit | 789a55a2e3cea7d691de0fe5090a7592ff3d041c (patch) | |
tree | edb450a7561e801855e804f5d2eeb74eca50e978 | |
parent | c6e5ce6ee8c52b6b42490fd9b041ec81038c0963 (diff) | |
download | couchdb-789a55a2e3cea7d691de0fe5090a7592ff3d041c.tar.gz |
Improved key support
-rw-r--r-- | src/fauxton/app/addons/documents/views.js | 53 |
1 files changed, 29 insertions, 24 deletions
diff --git a/src/fauxton/app/addons/documents/views.js b/src/fauxton/app/addons/documents/views.js index 0b62dced7..4be76e69c 100644 --- a/src/fauxton/app/addons/documents/views.js +++ b/src/fauxton/app/addons/documents/views.js @@ -1118,12 +1118,21 @@ function(app, FauxtonAPI, Components, Documents, Databases, pouchdb, resizeColum this.render(); }, getKeys: function(val){ - var keys = val.value.replace(/\s/g,"").split(','); + var keys = val.value.replace(/\s/g,""); + + var regKeys = keys.match(/(\[.*?\])/g); + if (regKeys) { + keys = regKeys; + } else { + keys = keys.split(','); + } + + keys = _.map(keys, function (key) { return JSON.parse(key); }); - if (keys.length > 1){ + if (_.isArray(keys)){ return { name: "keys", - value: JSON.stringify(keys) + value: JSON.stringify(keys) }; } else if (keys.length === 1) { return { @@ -1131,37 +1140,23 @@ function(app, FauxtonAPI, Components, Documents, Databases, pouchdb, resizeColum value: keys[0] }; } - }, queryParams: function () { var $form = this.$(".js-view-query-update"), getKeys = this.getKeys; - var rawParams = _.reduce($form.serializeArray(), function(params, param) { + var params = _.reduce($form.serializeArray(), function(params, param) { if (!param.value) { return params; } if (param.name === "limit" && param.value === 'None') { return params; } + + if (param.name === "keys"){ + param = getKeys(param); + } params.push(param); return params; }, []); - var filteredParams = _.filter(rawParams, function(param) { - return param.value; - }); - - console.log('filtered', filteredParams); - var params = filteredParams; - /*var params = _.map(filteredParams, function(param) { - if (param.name === "keys"){ - param.value = JSON.parse(param.value); - //param.value = JSON.stringify(b); - return param; - //return getKeys(param); - }else{ - return param; - } - });*/ - // Validate *key* params to ensure they're valid JSON var keyParams = ["keys","startkey","endkey"]; var errorParams = _.filter(params, function(param) { @@ -1177,8 +1172,7 @@ function(app, FauxtonAPI, Components, Documents, Databases, pouchdb, resizeColum } }); - console.log('params', params); - return {params: params, errorParams: {}}; //errorParams}; + return {params: params, errorParams: errorParams}; }, updateFilters: function(event) { @@ -1239,6 +1233,17 @@ function(app, FauxtonAPI, Components, Documents, Databases, pouchdb, resizeColum } this.updateFiltersFor(key, $ele); break; + case "keys": + val = JSON.parse(val); + var processVal = val; + if (_.isArray(val)) { + processVal = _.map(val, function (arr) { + return JSON.stringify(arr); + }).join(', '); + } + + $form.find("input[name='keys']").val(processVal); + break; default: $form.find("input[name='"+key+"']").val(val); break; |