forked from 0x2620/pandora
Support autocomplete from a group of layers
The idea here is to have several layers which share a set of tags. This mirrors what we already have if several layers reference the same type of entity. You might have config like this: { "id": "keywords", "title": "Keywords", "canAddAnnotations": {"member": true, "staff": true, "admin": true}, "item": "Keyword", "overlap": true, "type": "string", "autocomplete": true, "autocompleteKeys": ["keywords", "minorkeywords"] }, { "id": "minorkeywords", "title": "Minor Keywords", "canAddAnnotations": {"member": true, "staff": true, "admin": true}, "item": "Keyword", "overlap": true, "type": "string", "autocomplete": true, "autocompleteKeys": ["keywords", "minorkeywords"] }, Now, adding new keywords in either bin will offer autocompletions from the union of the two layers. The other option would be to do this on the server side, but I thought this was a less invasive way to achieve this.
This commit is contained in:
parent
4f064fda76
commit
8f3b3036df
1 changed files with 19 additions and 7 deletions
|
@ -55,13 +55,25 @@ pandora.ui.editor = function(data) {
|
|||
})
|
||||
} : layer.autocomplete
|
||||
? function(key, value, callback) {
|
||||
pandora.api.autocomplete({
|
||||
key: key,
|
||||
operator: '=',
|
||||
range: [0, 20],
|
||||
value: value
|
||||
}, function(result) {
|
||||
callback(result.data.items);
|
||||
var keys = layer.autocompleteKeys && layer.autocompleteKeys.length
|
||||
? layer.autocompleteKeys
|
||||
: [key];
|
||||
var n = keys.length;
|
||||
var itemss = [];
|
||||
|
||||
keys.forEach(function(key) {
|
||||
pandora.api.autocomplete({
|
||||
key: key,
|
||||
operator: '=',
|
||||
range: [0, 20],
|
||||
value: value
|
||||
}, function(result) {
|
||||
n--;
|
||||
itemss.push(result.data.items);
|
||||
if (n == 0) {
|
||||
callback(Ox.unique(Ox.flatten(itemss)));
|
||||
}
|
||||
});
|
||||
});
|
||||
} : null
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue