@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
109 lines • 16.3 kB
JavaScript
import { Component, EventEmitter, Output } from '@angular/core';
import { gettext, SearchFilters } from '@c8y/ngx-components';
import { AssetSearchService } from './search.service';
import * as i0 from "@angular/core";
import * as i1 from "./search.service";
import * as i2 from "@angular/common";
import * as i3 from "@c8y/ngx-components";
export class SearchCustomFiltersComponent {
constructor(assetSearchService) {
this.assetSearchService = assetSearchService;
this.customDataQuery = new EventEmitter();
this.refresh = new EventEmitter();
this.checkboxesState = [
{
label: gettext('All'),
name: SearchFilters.ALL_FILTERS,
value: true,
indeterminate: false,
isDisabled: true
},
{ label: gettext('Show only devices'), name: SearchFilters.ONLY_DEVICES, value: true },
{
label: gettext('Show only groups and assets'),
name: SearchFilters.ONLY_GROUPS_AND_ASSETS,
value: true
}
];
}
ngOnInit() {
this.customDataQuery.next(this.assetSearchService.getGlobalSearchData);
}
onCheckboxChange(event, checkbox) {
const { checked } = event.target;
if (checked == undefined) {
return;
}
switch (checkbox.name) {
case SearchFilters.ALL_FILTERS:
this.onSelectAll(checkbox, checked);
break;
case SearchFilters.ONLY_DEVICES:
this.onAllDevices(checkbox, checked);
break;
case SearchFilters.ONLY_GROUPS_AND_ASSETS:
this.onGroupsAndAssets(checkbox, checked);
break;
}
// Handle allFilters checkbox when ONLY_GROUPS_AND_ASSETS and ONLY_DEVICES are selected
if (this.getCheckbox(SearchFilters.ONLY_DEVICES).value &&
this.getCheckbox(SearchFilters.ONLY_GROUPS_AND_ASSETS).value) {
Object.assign(this.getCheckbox(SearchFilters.ALL_FILTERS), {
indeterminate: false,
isDisabled: true,
value: true
});
}
this.assetSearchService.appliedFilters$.next({
[SearchFilters.ALL_FILTERS]: this.getCheckbox(SearchFilters.ALL_FILTERS).value,
[SearchFilters.ONLY_DEVICES]: this.getCheckbox(SearchFilters.ONLY_DEVICES).value,
[SearchFilters.ONLY_GROUPS_AND_ASSETS]: this.getCheckbox(SearchFilters.ONLY_GROUPS_AND_ASSETS)
.value
});
this.refresh.next(null);
}
saveCheckboxValue(checkbox, value) {
checkbox.value = value;
}
onSelectAll(currentCheckbox, checked) {
// Block unchecked state
if (checked) {
this.saveCheckboxValue(currentCheckbox, checked);
}
this.getCheckbox(SearchFilters.ALL_FILTERS).isDisabled = true;
this.getCheckbox(SearchFilters.ONLY_DEVICES).value = true;
this.getCheckbox(SearchFilters.ONLY_GROUPS_AND_ASSETS).value = true;
}
onAllDevices(currentCheckbox, checked) {
this.saveCheckboxValue(currentCheckbox, checked);
Object.assign(this.getCheckbox(SearchFilters.ALL_FILTERS), {
indeterminate: true,
isDisabled: false,
value: null
});
this.getCheckbox(SearchFilters.ONLY_GROUPS_AND_ASSETS).value = true;
}
onGroupsAndAssets(currentCheckbox, checked) {
this.saveCheckboxValue(currentCheckbox, checked);
Object.assign(this.getCheckbox(SearchFilters.ALL_FILTERS), {
indeterminate: true,
isDisabled: false,
value: null
});
this.getCheckbox(SearchFilters.ONLY_DEVICES).value = true;
}
getCheckbox(checkboxName) {
return this.checkboxesState.find(checkbox => checkbox.name === checkboxName);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchCustomFiltersComponent, deps: [{ token: i1.AssetSearchService }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchCustomFiltersComponent, selector: "c8y-search-custom-filters", outputs: { customDataQuery: "customDataQuery", refresh: "refresh" }, ngImport: i0, template: "<label class=\"c8y-checkbox\" *ngFor=\"let checkbox of checkboxesState\">\n <input\n type=\"checkbox\"\n [checked]=\"checkbox.value\"\n [indeterminate]=\"checkbox.indeterminate\"\n (click)=\"onCheckboxChange($event, checkbox)\"\n [attr.disabled]=\"checkbox.isDisabled ? true : null\"\n />\n <span></span>\n <span>{{ checkbox.label | translate }}</span>\n</label>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i3.C8yTranslatePipe, name: "translate" }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchCustomFiltersComponent, decorators: [{
type: Component,
args: [{ selector: 'c8y-search-custom-filters', template: "<label class=\"c8y-checkbox\" *ngFor=\"let checkbox of checkboxesState\">\n <input\n type=\"checkbox\"\n [checked]=\"checkbox.value\"\n [indeterminate]=\"checkbox.indeterminate\"\n (click)=\"onCheckboxChange($event, checkbox)\"\n [attr.disabled]=\"checkbox.isDisabled ? true : null\"\n />\n <span></span>\n <span>{{ checkbox.label | translate }}</span>\n</label>\n" }]
}], ctorParameters: () => [{ type: i1.AssetSearchService }], propDecorators: { customDataQuery: [{
type: Output
}], refresh: [{
type: Output
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWN1c3RvbS1maWx0ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NlYXJjaC9zZWFyY2gtY3VzdG9tLWZpbHRlcnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc2VhcmNoL3NlYXJjaC1jdXN0b20tZmlsdGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7QUFjdEQsTUFBTSxPQUFPLDRCQUE0QjtJQW1CdkMsWUFBb0Isa0JBQXNDO1FBQXRDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFsQmhELG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNyQyxZQUFPLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV2QyxvQkFBZSxHQUFvQjtZQUNqQztnQkFDRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDckIsSUFBSSxFQUFFLGFBQWEsQ0FBQyxXQUFXO2dCQUMvQixLQUFLLEVBQUUsSUFBSTtnQkFDWCxhQUFhLEVBQUUsS0FBSztnQkFDcEIsVUFBVSxFQUFFLElBQUk7YUFDakI7WUFDRCxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQ3RGO2dCQUNFLEtBQUssRUFBRSxPQUFPLENBQUMsNkJBQTZCLENBQUM7Z0JBQzdDLElBQUksRUFBRSxhQUFhLENBQUMsc0JBQXNCO2dCQUMxQyxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsQ0FB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TSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ3pELGFBQWEsRUFBRSxJQUFJO1lBQ25CLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLEtBQUssRUFBRSxJQUFJO1NBQ1osQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3RFLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxlQUF5QixFQUFFLE9BQWdCO1FBQ25FLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFakQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUN6RCxhQUFhLEVBQUUsSUFBSTtZQUNuQixVQUFVLEVBQUUsS0FBSztZQUNqQixLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDNUQsQ0FBQztJQUVPLFdBQVcsQ0FBQyxZQUEyQjtRQUM3QyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsQ0FBQztJQUMvRSxDQUFDOytHQXpHVSw0QkFBNEI7bUdBQTVCLDRCQUE0QixzSUNoQnpDLGlZQVdBOzs0RkRLYSw0QkFBNEI7a0JBSnhDLFNBQVM7K0JBQ0UsMkJBQTJCO3VGQUkzQixlQUFlO3NCQUF4QixNQUFNO2dCQUNHLE9BQU87c0JBQWhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdldHRleHQsIFNlYXJjaEZpbHRlcnMgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IEFzc2V0U2VhcmNoU2VydmljZSB9IGZyb20gJy4vc2VhcmNoLnNlcnZpY2UnO1xuXG5leHBvcnQgdHlwZSBDaGVja2JveCA9IHtcbiAgbGFiZWw6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICB2YWx1ZTogYm9vbGVhbjtcbiAgaW5kZXRlcm1pbmF0ZT86IGJvb2xlYW47XG4gIGlzRGlzYWJsZWQ/OiBib29sZWFuO1xufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXNlYXJjaC1jdXN0b20tZmlsdGVycycsXG4gIHRlbXBsYXRlVXJsOiAnc2VhcmNoLWN1c3RvbS1maWx0ZXJzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBTZWFyY2hDdXN0b21GaWx0ZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQE91dHB1dCgpIGN1c3RvbURhdGFRdWVyeSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY2hlY2tib3hlc1N0YXRlOiBBcnJheTxDaGVja2JveD4gPSBbXG4gICAge1xuICAgICAgbGFiZWw6IGdldHRleHQoJ0FsbCcpLFxuICAgICAgbmFtZTogU2VhcmNoRmlsdGVycy5BTExfRklMVEVSUyxcbiAgICAgIHZhbHVlOiB0cnVlLFxuICAgICAgaW5kZXRlcm1pbmF0ZTogZmFsc2UsXG4gICAgICBpc0Rpc2FibGVkOiB0cnVlXG4gICAgfSxcbiAgICB7IGxhYmVsOiBnZXR0ZXh0KCdTaG93IG9ubHkgZGV2aWNlcycpLCBuYW1lOiBTZWFyY2hGaWx0ZXJzLk9OTFlfREVWSUNFUywgdmFsdWU6IHRydWUgfSxcbiAgICB7XG4gICAgICBsYWJlbDogZ2V0dGV4dCgnU2hvdyBvbmx5IGdyb3VwcyBhbmQgYXNzZXRzJyksXG4gICAgICBuYW1lOiBTZWFyY2hGaWx0ZXJzLk9OTFlfR1JPVVBTX0FORF9BU1NFVFMsXG4gICAgICB2YWx1ZTogdHJ1ZVxuICAgIH1cbiAgXTtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhc3NldFNlYXJjaFNlcnZpY2U6IEFzc2V0U2VhcmNoU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmN1c3RvbURhdGFRdWVyeS5uZXh0KHRoaXMuYXNzZXRTZWFyY2hTZXJ2aWNlLmdldEdsb2JhbFNlYXJjaERhdGEpO1xuICB9XG5cbiAgb25DaGVja2JveENoYW5nZShldmVudDogRXZlbnQsIGNoZWNrYm94OiBDaGVja2JveCk6IHZvaWQge1xuICAgIGNvbnN0IHsgY2hlY2tlZCB9ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgICBpZiAoY2hlY2tlZCA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGNoZWNrYm94Lm5hbWUpIHtcbiAgICAgIGNhc2UgU2VhcmNoRmlsdGVycy5BTExfRklMVEVSUzpcbiAgICAgICAgdGhpcy5vblNlbGVjdEFsbChjaGVja2JveCwgY2hlY2tlZCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBTZWFyY2hGaWx0ZXJzLk9OTFlfREVWSUNFUzpcbiAgICAgICAgdGhpcy5vbkFsbERldmljZXMoY2hlY2tib3gsIGNoZWNrZWQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU2VhcmNoRmlsdGVycy5PTkxZX0dST1VQU19BTkRfQVNTRVRTOlxuICAgICAgICB0aGlzLm9uR3JvdXBzQW5kQXNzZXRzKGNoZWNrYm94LCBjaGVja2VkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGFsbEZpbHRlcnMgY2hlY2tib3ggd2hlbiBPTkxZX0dST1VQU19BTkRfQVNTRVRTIGFuZCBPTkxZX0RFVklDRVMgYXJlIHNlbGVjdGVkXG4gICAgaWYgKFxuICAgICAgdGhpcy5nZXRDaGVja2JveChTZWFyY2hGaWx0ZXJzLk9OTFlfREVWSUNFUykudmFsdWUgJiZcbiAgICAgIHRoaXMuZ2V0Q2hlY2tib3goU2VhcmNoRmlsdGVycy5PTkxZX0dST1VQU19BTkRfQVNTRVRTKS52YWx1ZVxuICAgICkge1xuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmdldENoZWNrYm94KFNlYXJjaEZpbHRlcnMuQUxMX0ZJTFRFUlMpLCB7XG4gICAgICAgIGluZGV0ZXJtaW5hdGU6IGZhbHNlLFxuICAgICAgICBpc0Rpc2FibGVkOiB0cnVlLFxuICAgICAgICB2YWx1ZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5hc3NldFNlYXJjaFNlcnZpY2UuYXBwbGllZEZpbHRlcnMkLm5leHQoe1xuICAgICAgW1NlYXJjaEZpbHRlcnMuQUxMX0ZJTFRFUlNdOiB0aGlzLmdldENoZWNrYm94KFNlYXJjaEZpbHRlcnMuQUxMX0ZJTFRFUlMpLnZhbHVlLFxuICAgICAgW1NlYXJjaEZpbHRlcnMuT05MWV9ERVZJQ0VTXTogdGhpcy5nZXRDaGVja2JveChTZWFyY2hGaWx0ZXJzLk9OTFlfREVWSUNFUykudmFsdWUsXG4gICAgICBbU2VhcmNoRmlsdGVycy5PTkxZX0dST1VQU19BTkRfQVNTRVRTXTogdGhpcy5nZXRDaGVja2JveChTZWFyY2hGaWx0ZXJzLk9OTFlfR1JPVVBTX0FORF9BU1NFVFMpXG4gICAgICAgIC52YWx1ZVxuICAgIH0pO1xuICAgIHRoaXMucmVmcmVzaC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSBzYXZlQ2hlY2tib3hWYWx1ZShjaGVja2JveCwgdmFsdWUpIHtcbiAgICBjaGVja2JveC52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBvblNlbGVjdEFsbChjdXJyZW50Q2hlY2tib3g6IENoZWNrYm94LCBjaGVja2VkOiBib29sZWFuKSB7XG4gICAgLy8gQmxvY2sgdW5jaGVja2VkIHN0YXRlXG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIHRoaXMuc2F2ZUNoZWNrYm94VmFsdWUoY3VycmVudENoZWNrYm94LCBjaGVja2VkKTtcbiAgICB9XG4gICAgdGhpcy5nZXRDaGVja2JveChTZWFyY2hGaWx0ZXJzLkFMTF9GSUxURVJTKS5pc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICB0aGlzLmdldENoZWNrYm94KFNlYXJjaEZpbHRlcnMuT05MWV9ERVZJQ0VTKS52YWx1ZSA9IHRydWU7XG4gICAgdGhpcy5nZXRDaGVja2JveChTZWFyY2hGaWx0ZXJzLk9OTFlfR1JPVVBTX0FORF9BU1NFVFMpLnZhbHVlID0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgb25BbGxEZXZpY2VzKGN1cnJlbnRDaGVja2JveDogQ2hlY2tib3gsIGNoZWNrZWQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnNhdmVDaGVja2JveFZhbHVlKGN1cnJlbnRDaGVja2JveCwgY2hlY2tlZCk7XG5cbiAgICBPYmplY3QuYXNzaWduKHRoaXMuZ2V0Q2hlY2tib3goU2VhcmNoRmlsdGVycy5BTExfRklMVEVSUyksIHtcbiAgICAgIGluZGV0ZXJtaW5hdGU6IHRydWUsXG4gICAgICBpc0Rpc2FibGVkOiBmYWxzZSxcbiAgICAgIHZhbHVlOiBudWxsXG4gICAgfSk7XG5cbiAgICB0aGlzLmdldENoZWNrYm94KFNlYXJjaEZpbHRlcnMuT05MWV9HUk9VUFNfQU5EX0FTU0VUUykudmFsdWUgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkdyb3Vwc0FuZEFzc2V0cyhjdXJyZW50Q2hlY2tib3g6IENoZWNrYm94LCBjaGVja2VkOiBib29sZWFuKSB7XG4gICAgdGhpcy5zYXZlQ2hlY2tib3hWYWx1ZShjdXJyZW50Q2hlY2tib3gsIGNoZWNrZWQpO1xuXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLmdldENoZWNrYm94KFNlYXJjaEZpbHRlcnMuQUxMX0ZJTFRFUlMpLCB7XG4gICAgICBpbmRldGVybWluYXRlOiB0cnVlLFxuICAgICAgaXNEaXNhYmxlZDogZmFsc2UsXG4gICAgICB2YWx1ZTogbnVsbFxuICAgIH0pO1xuXG4gICAgdGhpcy5nZXRDaGVja2JveChTZWFyY2hGaWx0ZXJzLk9OTFlfREVWSUNFUykudmFsdWUgPSB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDaGVja2JveChjaGVja2JveE5hbWU6IFNlYXJjaEZpbHRlcnMpOiBDaGVja2JveCB7XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tib3hlc1N0YXRlLmZpbmQoY2hlY2tib3ggPT4gY2hlY2tib3gubmFtZSA9PT0gY2hlY2tib3hOYW1lKTtcbiAgfVxufVxuIiwiPGxhYmVsIGNsYXNzPVwiYzh5LWNoZWNrYm94XCIgKm5nRm9yPVwibGV0IGNoZWNrYm94IG9mIGNoZWNrYm94ZXNTdGF0ZVwiPlxuICA8aW5wdXRcbiAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgIFtjaGVja2VkXT1cImNoZWNrYm94LnZhbHVlXCJcbiAgICBbaW5kZXRlcm1pbmF0ZV09XCJjaGVja2JveC5pbmRldGVybWluYXRlXCJcbiAgICAoY2xpY2spPVwib25DaGVja2JveENoYW5nZSgkZXZlbnQsIGNoZWNrYm94KVwiXG4gICAgW2F0dHIuZGlzYWJsZWRdPVwiY2hlY2tib3guaXNEaXNhYmxlZCA/IHRydWUgOiBudWxsXCJcbiAgLz5cbiAgPHNwYW4+PC9zcGFuPlxuICA8c3Bhbj57eyBjaGVja2JveC5sYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbjwvbGFiZWw+XG4iXX0=