62 lines
1.5 KiB
JavaScript
62 lines
1.5 KiB
JavaScript
import ngModule from '../module';
|
|
import SearchPanel from 'core/components/searchbar/search-panel';
|
|
import './style.scss';
|
|
|
|
class Controller extends SearchPanel {
|
|
constructor($element, $) {
|
|
super($element, $);
|
|
}
|
|
|
|
$onInit() {
|
|
this.filter = {
|
|
isActive: true,
|
|
tags: []
|
|
};
|
|
}
|
|
|
|
changeCategory(id) {
|
|
if (this.filter.categoryFk != id) {
|
|
this.filter.categoryFk = id;
|
|
this.applyFilters();
|
|
}
|
|
}
|
|
|
|
removeItemFilter(param) {
|
|
this.filter[param] = null;
|
|
if (param == 'categoryFk') this.filter['typeFk'] = null;
|
|
this.applyFilters();
|
|
}
|
|
|
|
removeTag(tag) {
|
|
const index = this.filter.tags.indexOf(tag);
|
|
if (index > -1) this.filter.tags.splice(index, 1);
|
|
this.applyFilters();
|
|
}
|
|
|
|
onKeyPress($event) {
|
|
if ($event.key === 'Enter')
|
|
this.applyFilters();
|
|
}
|
|
|
|
applyFilters() {
|
|
for (let i = 0; i < this.filter.tags.length; i++) {
|
|
if (!this.filter.tags[i].value)
|
|
this.filter.tags.splice(i, 1);
|
|
}
|
|
return this.model.applyFilter({}, this.filter);
|
|
}
|
|
|
|
showTagInfo(itemTag) {
|
|
if (!itemTag.tagFk) return itemTag.value;
|
|
return `${this.tags.find(tag => tag.id == itemTag.tagFk).name}: ${itemTag.value}`;
|
|
}
|
|
}
|
|
|
|
ngModule.component('vnLatestBuysSearchPanel', {
|
|
template: require('./index.html'),
|
|
controller: Controller,
|
|
bindings: {
|
|
model: '<'
|
|
}
|
|
});
|