systelab-components
Version:
systelab-components is a set of components that use wide accepted and adopted standard technologies like Angular and Bootstrap, as well as other popular libraries. Please read the ATTRIBUTION.md file for a complete list of dependencies.
121 lines • 17.1 kB
JavaScript
import { Directive, EventEmitter, Input, Output } from '@angular/core';
import { SearcherDialog } from './searcher.dialog.component';
import * as i0 from "@angular/core";
import * as i1 from "../modal/dialog/dialog.service";
import * as i2 from "./abstract-searcher";
export class AbstractGenericSearcherComponent {
get multipleSelectedItemList() {
return this._multipleSelectedItemList;
}
set multipleSelectedItemList(value) {
this._multipleSelectedItemList = value;
this.abstractSearcher.multipleSelectedItemList = this._multipleSelectedItemList;
this._code = '';
let description = '';
for (const selectedItem of value) {
if (this._code !== '') {
this._code += ', ';
}
this._code += selectedItem[this.abstractSearcher.getCodeField()] ? selectedItem[this.abstractSearcher.getCodeField()] : '';
if (description !== '') {
description += '; ';
}
description += selectedItem[this.abstractSearcher.getDescriptionField()] ? selectedItem[this.abstractSearcher.getDescriptionField()] : '';
}
this.codeChange.emit(this._code);
this.description = description;
this.multipleSelectedItemListChange.emit(this._multipleSelectedItemList);
}
set id(value) {
this._id = value;
this.abstractSearcher.id = value;
this.idChange.emit(this._id);
}
get id() {
return this._id;
}
set description(value) {
this._description = value;
this.descriptionChange.emit(this._description);
}
get description() {
return this._description;
}
set code(value) {
this._code = value;
this.codeChange.emit(this._code);
}
get code() {
return this._code;
}
constructor(dialogService, abstractSearcher) {
this.dialogService = dialogService;
this.abstractSearcher = abstractSearcher;
this.multipleSelection = false;
this.multipleSelectedItemListChange = new EventEmitter();
this.idChange = new EventEmitter();
this.descriptionChange = new EventEmitter();
this.codeChange = new EventEmitter();
this.selectedHasChanged = new EventEmitter();
this.searcherDialogParameters = this.abstractSearcher.getDialogParameters();
this.abstractSearcher = abstractSearcher;
}
ngOnInit() {
this.abstractSearcher.multipleSelection = this.multipleSelection;
}
openSearchDialog() {
let previousMultipleSelectionItemList = [];
if (this.multipleSelection && this._multipleSelectedItemList) {
previousMultipleSelectionItemList = [...this._multipleSelectedItemList];
}
this.searcherDialogParameters.widthRelative = '66%';
this.searcherDialogParameters.heightRelative = '66%';
this.searcherDialogParameters.searcher = this.abstractSearcher;
this.dialogService.showDialog(SearcherDialog, this.searcherDialogParameters)
.subscribe((v) => {
if (v) {
if (!this.multipleSelection) {
this.id = (v && v[0]) ? v[0][this.abstractSearcher.getIdField()] : undefined;
this.description = (v && v[0]) ? v[0][this.abstractSearcher.getDescriptionField()] : undefined;
this.code = (v && v[0]) ? v[0][this.abstractSearcher.getCodeField()] : undefined;
this.upDateField(v ? v[0] : undefined);
}
this.multipleSelectedItemList = v ? v : new Array();
}
else if (this.multipleSelection) {
this.multipleSelectedItemList = [...previousMultipleSelectionItemList];
}
});
}
upDateField(value) {
this.selectedHasChanged.emit(value ? value[this.abstractSearcher.getIdField()] : undefined);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AbstractGenericSearcherComponent, deps: [{ token: i1.DialogService }, { token: i2.AbstractSearcher }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.9", type: AbstractGenericSearcherComponent, inputs: { multipleSelection: "multipleSelection", isDisabled: "isDisabled", multipleSelectedItemList: "multipleSelectedItemList", id: "id", description: "description", code: "code" }, outputs: { multipleSelectedItemListChange: "multipleSelectedItemListChange", idChange: "idChange", descriptionChange: "descriptionChange", codeChange: "codeChange", selectedHasChanged: "selectedHasChanged" }, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.9", ngImport: i0, type: AbstractGenericSearcherComponent, decorators: [{
type: Directive
}], ctorParameters: () => [{ type: i1.DialogService }, { type: i2.AbstractSearcher }], propDecorators: { multipleSelection: [{
type: Input
}], isDisabled: [{
type: Input
}], multipleSelectedItemList: [{
type: Input
}], multipleSelectedItemListChange: [{
type: Output
}], id: [{
type: Input
}], description: [{
type: Input
}], code: [{
type: Input
}], idChange: [{
type: Output
}], descriptionChange: [{
type: Output
}], codeChange: [{
type: Output
}], selectedHasChanged: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZ2VuZXJpYy5zZWFyY2hlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zeXN0ZWxhYi1jb21wb25lbnRzL3NyYy9saWIvc2VhcmNoZXIvYWJzdHJhY3QtZ2VuZXJpYy5zZWFyY2hlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7QUFHN0QsTUFBTSxPQUFnQixnQ0FBZ0M7SUFTckQsSUFDSSx3QkFBd0I7UUFDM0IsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksd0JBQXdCLENBQUMsS0FBZTtRQUUzQyxJQUFJLENBQUMseUJBQXlCLEdBQUcsS0FBSyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUM7UUFDaEYsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBRXJCLEtBQUssTUFBTSxZQUFZLElBQUksS0FBSyxFQUFFO1lBQ2pDLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxFQUFFLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDO2FBQ25CO1lBQ0QsSUFBSSxDQUFDLEtBQUssSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBRTNILElBQUks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SSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxDQUFDLEdBQUcsaUNBQWlDLENBQUMsQ0FBQzthQUN2RTtRQUNGLENBQUMsQ0FDRCxDQUFDO0lBQ0osQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUFRO1FBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdGLENBQUM7OEdBbEhvQixnQ0FBZ0M7a0dBQWhDLGdDQUFnQzs7MkZBQWhDLGdDQUFnQztrQkFEckQsU0FBUztpSEFJTyxpQkFBaUI7c0JBQWhDLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFNRix3QkFBd0I7c0JBRDNCLEtBQUs7Z0JBNkJXLDhCQUE4QjtzQkFBOUMsTUFBTTtnQkFHSCxFQUFFO3NCQURMLEtBQUs7Z0JBYUYsV0FBVztzQkFEZCxLQUFLO2dCQVlGLElBQUk7c0JBRFAsS0FBSztnQkFVVyxRQUFRO3NCQUF4QixNQUFNO2dCQUNVLGlCQUFpQjtzQkFBakMsTUFBTTtnQkFDVSxVQUFVO3NCQUExQixNQUFNO2dCQUNVLGtCQUFrQjtzQkFBbEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi9tb2RhbC9kaWFsb2cvZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWJzdHJhY3RTZWFyY2hlciB9IGZyb20gJy4vYWJzdHJhY3Qtc2VhcmNoZXInO1xuaW1wb3J0IHsgU2VhcmNoZXJEaWFsb2dQYXJhbWV0ZXJzIH0gZnJvbSAnLi9zZWFyY2hlci5kaWFsb2cucGFyYW1ldGVycyc7XG5pbXBvcnQgeyBTZWFyY2hlckRpYWxvZyB9IGZyb20gJy4vc2VhcmNoZXIuZGlhbG9nLmNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0R2VuZXJpY1NlYXJjaGVyQ29tcG9uZW50PFQ+IGltcGxlbWVudHMgT25Jbml0IHtcblx0cHVibGljIHNlYXJjaGVyRGlhbG9nUGFyYW1ldGVyczogU2VhcmNoZXJEaWFsb2dQYXJhbWV0ZXJzPFQ+O1xuXG5cdEBJbnB1dCgpIHB1YmxpYyBtdWx0aXBsZVNlbGVjdGlvbiA9IGZhbHNlO1xuXHRASW5wdXQoKSBwdWJsaWMgaXNEaXNhYmxlZDogYm9vbGVhbjtcblxuXHRwdWJsaWMgX2lkOiBudW1iZXIgfCBzdHJpbmc7XG5cdHByb3RlY3RlZCBfbXVsdGlwbGVTZWxlY3RlZEl0ZW1MaXN0OiBBcnJheTxUPjtcblxuXHRASW5wdXQoKVxuXHRnZXQgbXVsdGlwbGVTZWxlY3RlZEl0ZW1MaXN0KCkge1xuXHRcdHJldHVybiB0aGlzLl9tdWx0aXBsZVNlbGVjdGVkSXRlbUxpc3Q7XG5cdH1cblxuXHRzZXQgbXVsdGlwbGVTZWxlY3RlZEl0ZW1MaXN0KHZhbHVlOiBBcnJheTxUPikge1xuXG5cdFx0dGhpcy5fbXVsdGlwbGVTZWxlY3RlZEl0ZW1MaXN0ID0gdmFsdWU7XG5cdFx0dGhpcy5hYnN0cmFjdFNlYXJjaGVyLm11bHRpcGxlU2VsZWN0ZWRJdGVtTGlzdCA9IHRoaXMuX211bHRpcGxlU2VsZWN0ZWRJdGVtTGlzdDtcblx0XHR0aGlzLl9jb2RlID0gJyc7XG5cdFx0bGV0IGRlc2NyaXB0aW9uID0gJyc7XG5cblx0XHRmb3IgKGNvbnN0IHNlbGVjdGVkSXRlbSBvZiB2YWx1ZSkge1xuXHRcdFx0aWYgKHRoaXMuX2NvZGUgIT09ICcnKSB7XG5cdFx0XHRcdHRoaXMuX2NvZGUgKz0gJywgJztcblx0XHRcdH1cblx0XHRcdHRoaXMuX2NvZGUgKz0gc2VsZWN0ZWRJdGVtW3RoaXMuYWJzdHJhY3RTZWFyY2hlci5nZXRDb2RlRmllbGQoKV0gPyBzZWxlY3RlZEl0ZW1bdGhpcy5hYnN0cmFjdFNlYXJjaGVyLmdldENvZGVGaWVsZCgpXSA6ICcnO1xuXG5cdFx0XHRpZiAoZGVzY3JpcHRpb24gIT09ICcnKSB7XG5cdFx0XHRcdGRlc2NyaXB0aW9uICs9ICc7ICc7XG5cdFx0XHR9XG5cdFx0XHRkZXNjcmlwdGlvbiArPSBzZWxlY3RlZEl0ZW1bdGhpcy5hYnN0cmFjdFNlYXJjaGVyLmdldERlc2NyaXB0aW9uRmllbGQoKV0gPyBzZWxlY3RlZEl0ZW1bdGhpcy5hYnN0cmFjdFNlYXJjaGVyLmdldERlc2NyaXB0aW9uRmllbGQoKV0gOiAnJztcblxuXHRcdH1cblx0XHR0aGlzLmNvZGVDaGFuZ2UuZW1pdCh0aGlzLl9jb2RlKTtcblx0XHR0aGlzLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247XG5cdFx0dGhpcy5tdWx0aXBsZVNlbGVjdGVkSXRlbUxpc3RDaGFuZ2UuZW1pdCh0aGlzLl9tdWx0aXBsZVNlbGVjdGVkSXRlbUxpc3QpO1xuXHR9XG5cblx0QE91dHB1dCgpIHB1YmxpYyBtdWx0aXBsZVNlbGVjdGVkSXRlbUxpc3RDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cblx0QElucHV0KClcblx0c2V0IGlkKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHR0aGlzLl9pZCA9IHZhbHVlO1xuXHRcdHRoaXMuYWJzdHJhY3RTZWFyY2hlci5pZCA9IHZhbHVlO1xuXHRcdHRoaXMuaWRDaGFuZ2UuZW1pdCh0aGlzLl9pZCk7XG5cdH1cblxuXHRnZXQgaWQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2lkO1xuXHR9XG5cblx0cHVibGljIF9kZXNjcmlwdGlvbjogc3RyaW5nO1xuXHRASW5wdXQoKVxuXHRzZXQgZGVzY3JpcHRpb24odmFsdWU6IHN0cmluZykge1xuXHRcdHRoaXMuX2Rlc2NyaXB0aW9uID0gdmFsdWU7XG5cdFx0dGhpcy5kZXNjcmlwdGlvbkNoYW5nZS5lbWl0KHRoaXMuX2Rlc2NyaXB0aW9uKTtcblx0fVxuXG5cdGdldCBkZXNjcmlwdGlvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5fZGVzY3JpcHRpb247XG5cdH1cblxuXHRwdWJsaWMgX2NvZGU6IHN0cmluZztcblx0QElucHV0KClcblx0c2V0IGNvZGUodmFsdWU6IHN0cmluZykge1xuXHRcdHRoaXMuX2NvZGUgPSB2YWx1ZTtcblx0XHR0aGlzLmNvZGVDaGFuZ2UuZW1pdCh0aGlzLl9jb2RlKTtcblx0fVxuXG5cdGdldCBjb2RlKCkge1xuXHRcdHJldHVybiB0aGlzLl9jb2RlO1xuXHR9XG5cblx0QE91dHB1dCgpIHB1YmxpYyBpZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblx0QE91dHB1dCgpIHB1YmxpYyBkZXNjcmlwdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblx0QE91dHB1dCgpIHB1YmxpYyBjb2RlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXHRAT3V0cHV0KCkgcHVibGljIHNlbGVjdGVkSGFzQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuXHRwcm90ZWN0ZWQgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsIHB1YmxpYyBhYnN0cmFjdFNlYXJjaGVyOiBBYnN0cmFjdFNlYXJjaGVyPFQ+KSB7XG5cdFx0dGhpcy5zZWFyY2hlckRpYWxvZ1BhcmFtZXRlcnMgPSB0aGlzLmFic3RyYWN0U2VhcmNoZXIuZ2V0RGlhbG9nUGFyYW1ldGVycygpO1xuXHRcdHRoaXMuYWJzdHJhY3RTZWFyY2hlciA9IGFic3RyYWN0U2VhcmNoZXI7XG5cdH1cblxuXHRwdWJsaWMgbmdPbkluaXQoKSB7XG5cdFx0dGhpcy5hYnN0cmFjdFNlYXJjaGVyLm11bHRpcGxlU2VsZWN0aW9uID0gdGhpcy5tdWx0aXBsZVNlbGVjdGlvbjtcblx0fVxuXHRwdWJsaWMgb3BlblNlYXJjaERpYWxvZygpOiB2b2lkIHtcblx0XHRsZXQgcHJldmlvdXNNdWx0aXBsZVNlbGVjdGlvbkl0ZW1MaXN0OiBBcnJheTxUPiA9IFtdO1xuXHRcdGlmICh0aGlzLm11bHRpcGxlU2VsZWN0aW9uICYmIHRoaXMuX211bHRpcGxlU2VsZWN0ZWRJdGVtTGlzdCkge1xuXHRcdFx0cHJldmlvdXNNdWx0aXBsZVNlbGVjdGlvbkl0ZW1MaXN0ID0gWy4uLnRoaXMuX211bHRpcGxlU2VsZWN0ZWRJdGVtTGlzdF07XG5cdFx0fVxuXHRcdHRoaXMuc2VhcmNoZXJEaWFsb2dQYXJhbWV0ZXJzLndpZHRoUmVsYXRpdmUgPSAnNjYlJztcblx0XHR0aGlzLnNlYXJjaGVyRGlhbG9nUGFyYW1ldGVycy5oZWlnaHRSZWxhdGl2ZSA9ICc2NiUnO1xuXHRcdHRoaXMuc2VhcmNoZXJEaWFsb2dQYXJhbWV0ZXJzLnNlYXJjaGVyID0gdGhpcy5hYnN0cmFjdFNlYXJjaGVyO1xuXHRcdHRoaXMuZGlhbG9nU2VydmljZS5zaG93RGlhbG9nKFNlYXJjaGVyRGlhbG9nLCB0aGlzLnNlYXJjaGVyRGlhbG9nUGFyYW1ldGVycylcblx0XHRcdC5zdWJzY3JpYmUoXG5cdFx0XHRcdCh2OiBBcnJheTxUPikgPT4ge1xuXHRcdFx0XHRcdGlmICh2KSB7XG5cdFx0XHRcdFx0XHRpZiAoIXRoaXMubXVsdGlwbGVTZWxlY3Rpb24pIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5pZCA9ICh2ICYmIHZbMF0pID8gdlswXVt0aGlzLmFic3RyYWN0U2VhcmNoZXIuZ2V0SWRGaWVsZCgpXSA6IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdFx0dGhpcy5kZXNjcmlwdGlvbiA9ICh2ICYmIHZbMF0pID8gdlswXVt0aGlzLmFic3RyYWN0U2VhcmNoZXIuZ2V0RGVzY3JpcHRpb25GaWVsZCgpXSA6IHVuZGVmaW5lZDtcblx0XHRcdFx0XHRcdFx0dGhpcy5jb2RlID0gKHYgJiYgdlswXSkgPyB2WzBdW3RoaXMuYWJzdHJhY3RTZWFyY2hlci5nZXRDb2RlRmllbGQoKV0gOiB1bmRlZmluZWQ7XG5cdFx0XHRcdFx0XHRcdHRoaXMudXBEYXRlRmllbGQodiA/IHZbMF0gOiB1bmRlZmluZWQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGhpcy5tdWx0aXBsZVNlbGVjdGVkSXRlbUxpc3QgPSB2ID8gdiA6IG5ldyBBcnJheTxUPigpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAodGhpcy5tdWx0aXBsZVNlbGVjdGlvbikge1xuXHRcdFx0XHRcdFx0dGhpcy5tdWx0aXBsZVNlbGVjdGVkSXRlbUxpc3QgPSBbLi4ucHJldmlvdXNNdWx0aXBsZVNlbGVjdGlvbkl0ZW1MaXN0XTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdCk7XG5cdH1cblxuXHRwdWJsaWMgdXBEYXRlRmllbGQodmFsdWU6IFQpOiB2b2lkIHtcblx0XHR0aGlzLnNlbGVjdGVkSGFzQ2hhbmdlZC5lbWl0KHZhbHVlID8gdmFsdWVbdGhpcy5hYnN0cmFjdFNlYXJjaGVyLmdldElkRmllbGQoKV0gOiB1bmRlZmluZWQpO1xuXHR9XG59Il19