forked from DGNum/gestioCOF
Adapt ArticleAutocomplete to new format
This commit is contained in:
parent
2ce96bce1b
commit
01295d464d
1 changed files with 33 additions and 33 deletions
|
@ -488,8 +488,6 @@ class ArticleAutocomplete {
|
|||
|
||||
constructor(article_manager) {
|
||||
this.manager = article_manager;
|
||||
this.matching = [];
|
||||
this.active_categories = [];
|
||||
this._$container = article_manager._$container ;
|
||||
this._$input = $('#article_autocomplete');
|
||||
|
||||
|
@ -523,31 +521,30 @@ class ArticleAutocomplete {
|
|||
|
||||
update(prefix, backspace) {
|
||||
|
||||
this.resetMatch();
|
||||
var article_list = this.manager.list ;
|
||||
var lower = prefix.toLowerCase() ;
|
||||
var that = this ;
|
||||
this.matching = article_list.data['article']
|
||||
.filter(function(article) {
|
||||
return article.name.toLowerCase()
|
||||
.indexOf(lower) === 0 ;
|
||||
|
||||
article_list.traverse(function(node) {
|
||||
if (node.type === 'article' &&
|
||||
node.content.name.toLowerCase()
|
||||
.startsWith(lower)) {
|
||||
that.matching['article'].push(node.content);
|
||||
if (that.matching['category'].indexOf(node.parent.content) == -1)
|
||||
that.matching['category'].push(node.parent.content);
|
||||
}
|
||||
});
|
||||
|
||||
this.active_categories = article_list.data['category']
|
||||
.filter(function(category) {
|
||||
return that.matching.find(function(article) {
|
||||
return article.category === category ;
|
||||
});
|
||||
});
|
||||
|
||||
if (this.matching.length == 1) {
|
||||
if (this.matching['article'].length == 1) {
|
||||
if (!backspace) {
|
||||
this.manager.validate(this.matching[0]) ;
|
||||
this.manager.validate(this.matching['article'][0]) ;
|
||||
this.showAll() ;
|
||||
} else {
|
||||
this.manager.unset();
|
||||
this.updateDisplay();
|
||||
}
|
||||
} else if (this.matching.length > 1) {
|
||||
} else if (this.matching['article'].length > 1) {
|
||||
this.manager.unset();
|
||||
this.updateDisplay() ;
|
||||
if (!backspace)
|
||||
|
@ -556,26 +553,21 @@ class ArticleAutocomplete {
|
|||
}
|
||||
|
||||
updateDisplay() {
|
||||
var article_list = this.manager.list ;
|
||||
for (let article of article_list.data['article']) {
|
||||
if (this.matching.indexOf(article) > -1) {
|
||||
this._$container.find('[data-article-id='+article.id+']').show();
|
||||
} else {
|
||||
this._$container.find('[data-article-id='+article.id+']').hide();
|
||||
}
|
||||
}
|
||||
var that = this;
|
||||
|
||||
for (let category of article_list.data['category']) {
|
||||
if (this.active_categories.indexOf(category) > -1) {
|
||||
this._$container.find('[data-category-id='+category.id+']').show();
|
||||
this.manager.list.traverse(function(node) {
|
||||
if (that.matching[node.type].indexOf(node.content) != -1) {
|
||||
that._$container.find('#'+node.type+'-'+node.content.id)
|
||||
.show();
|
||||
} else {
|
||||
this._$container.find('[data-category-id='+category.id+']').hide();
|
||||
that._$container.find('#'+node.type+'-'+node.content.id)
|
||||
.hide();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
updatePrefix() {
|
||||
var lower = this.matching.map(function (article) {
|
||||
var lower = this.matching['article'].map(function (article) {
|
||||
return article.name.toLowerCase() ;
|
||||
});
|
||||
|
||||
|
@ -588,8 +580,16 @@ class ArticleAutocomplete {
|
|||
}
|
||||
|
||||
showAll() {
|
||||
this.matching = this.manager.list.data['article'];
|
||||
this.active_categories = this.manager.list.data['category'];
|
||||
var that = this;
|
||||
this.resetMatch();
|
||||
this.manager.list.traverse(function(node) {
|
||||
that.matching[node.type].push(node.content);
|
||||
});
|
||||
this.updateDisplay();
|
||||
}
|
||||
|
||||
resetMatch() {
|
||||
this.matching = {'article' : [],
|
||||
'category': []};
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue