salix/modules/item/front/search-panel/index.js

67 lines
1.8 KiB
JavaScript
Raw Normal View History

import ngModule from '../module';
2018-12-27 11:54:16 +00:00
import SearchPanel from 'core/components/searchbar/search-panel';
class Controller extends SearchPanel {
constructor($scope) {
super();
this.$ = $scope;
this.moreFields = [
{field: 'id'},
{field: 'description'},
{field: 'name'}
];
}
initializeMoreFields() {
if (!this.$.filter.moreFields || !this.$.filter.moreFields.length)
this.$.filter.moreFields = [{}];
}
set filter(value) {
2019-01-16 14:29:01 +00:00
if (!value)
value = {};
if (!value.tags)
value.tags = [{}];
this.$.filter = value;
}
2019-02-14 10:24:04 +00:00
get itemTypes() {
if (this.$.filter) {
if (!this.$.filter.categoryFk)
return '/item/api/ItemTypes';
return `/item/api/ItemCategories/${this.$.filter.categoryFk}/itemTypes`;
}
}
get filter() {
if (this.$.filter.moreFields) {
this.$.filter.moreFields.forEach(element => {
this.$.filter[element.field] = element.value;
});
}
let filter = Object.assign({}, this.$.filter);
delete filter.moreFields;
return filter;
}
getSourceTable(selection) {
if (!selection || selection.isFree === true)
return null;
2019-01-15 13:53:38 +00:00
if (selection.sourceTable) {
return '/api/'
+ selection.sourceTable.charAt(0).toUpperCase()
+ selection.sourceTable.substring(1) + 's';
2019-01-15 13:53:38 +00:00
} else if (selection.sourceTable == null)
return `/api/ItemTags/filterItemTags/${selection.id}`;
}
}
Controller.$inject = ['$scope'];
ngModule.component('vnItemSearchPanel', {
template: require('./index.html'),
controller: Controller
});