summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGarren Smith <garren.smith@gmail.com>2014-03-14 12:05:55 -0400
committerGarren Smith <garren.smith@gmail.com>2014-03-20 10:33:46 +0200
commit789a55a2e3cea7d691de0fe5090a7592ff3d041c (patch)
treeedb450a7561e801855e804f5d2eeb74eca50e978
parentc6e5ce6ee8c52b6b42490fd9b041ec81038c0963 (diff)
downloadcouchdb-789a55a2e3cea7d691de0fe5090a7592ff3d041c.tar.gz
Improved key support
-rw-r--r--src/fauxton/app/addons/documents/views.js53
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;