@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
92 lines • 13.5 kB
JavaScript
import { Component, ViewChild } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
import { SearchGridComponent } from './search-grid.component';
import { FilteringActionType, AlertService, Status, gettext } from '@c8y/ngx-components';
import * as i0 from "@angular/core";
import * as i1 from "@angular/router";
import * as i2 from "@c8y/ngx-components";
import * as i3 from "@angular/common";
import * as i4 from "./search-grid.component";
export class SearchResultsComponent {
constructor(route, alert) {
this.route = route;
this.alert = alert;
this.filter = '';
this.searchText = '';
this.WARNING_TIMEOUT_TIME = 3000;
this.unsubscribe$ = new Subject();
}
ngOnInit() {
this.route.queryParams.pipe(takeUntil(this.unsubscribe$)).subscribe(params => {
if (params.filter) {
this.filteringName = params.filter;
}
});
}
ngAfterViewInit() {
this.route.queryParams
.pipe(takeUntil(this.unsubscribe$))
.subscribe(({ filter, search }) => this.onQueryParamsChange(filter, search));
}
resetSearch() {
if (this.searchGrid.dataGrid.searchText) {
this.alert.add({
text: gettext('Search reset. Full text search does not support filtering.'),
type: Status.WARNING,
timeout: this.WARNING_TIMEOUT_TIME
});
this.searchText = '';
this.searchGrid.dataGrid.searchText = '';
}
}
resetFilter() {
this.filter = '';
if (this.searchGrid.dataGrid.filteringApplied) {
this.alert.add({
text: gettext('Filter reset. Full text search does not support filtering.'),
type: Status.WARNING,
timeout: this.WARNING_TIMEOUT_TIME
});
this.searchGrid.dataGrid.clearFilters(false);
}
}
ngOnDestroy() {
this.unsubscribe$.next();
this.unsubscribe$.complete();
}
onQueryParamsChange(filter, searchTerm) {
if (!this.shouldFilter(filter) && searchTerm) {
this.searchText = searchTerm || '';
}
}
shouldFilter(filter) {
if (!filter) {
return false;
}
this.resetSearch();
this.filter = filter || '';
this.searchGrid.updateFiltering(['name'], {
type: FilteringActionType.ApplyFilter,
payload: {
filteringModifier: {
externalFilterQuery: {
names: [this.filter]
}
}
}
});
return true;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchResultsComponent, deps: [{ token: i1.ActivatedRoute }, { token: i2.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SearchResultsComponent, selector: "c8y-search-results", viewQueries: [{ propertyName: "searchGrid", first: true, predicate: SearchGridComponent, descendants: true, static: true }], ngImport: i0, template: "<c8y-title>\n <span translate class=\"p-r-4\">Search</span>\n <small\n ngNonBindable\n translate\n *ngIf=\"searchText\"\n [translateParams]=\"{\n searchHint: searchText\n }\"\n >searching \"{{ searchHint }}\"</small\n >\n <small\n ngNonBindable\n translate\n *ngIf=\"filter\"\n [translateParams]=\"{\n filterHint: filter\n }\"\n >filtered by \"{{ filterHint }}\"</small\n >\n</c8y-title>\n\n<c8y-search-grid [searchText]=\"searchText\" [filteringName]=\"filteringName\"></c8y-search-grid>\n", dependencies: [{ kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: i4.SearchGridComponent, selector: "c8y-search-grid", inputs: ["parent-group", "title", "loadingItemsLabel", "columns", "pagination", "actionControls", "selectable", "bulkActionControls", "searchText", "filteringName", "columnsConfigKey"], outputs: ["onColumnsChange"] }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SearchResultsComponent, decorators: [{
type: Component,
args: [{ selector: 'c8y-search-results', template: "<c8y-title>\n <span translate class=\"p-r-4\">Search</span>\n <small\n ngNonBindable\n translate\n *ngIf=\"searchText\"\n [translateParams]=\"{\n searchHint: searchText\n }\"\n >searching \"{{ searchHint }}\"</small\n >\n <small\n ngNonBindable\n translate\n *ngIf=\"filter\"\n [translateParams]=\"{\n filterHint: filter\n }\"\n >filtered by \"{{ filterHint }}\"</small\n >\n</c8y-title>\n\n<c8y-search-grid [searchText]=\"searchText\" [filteringName]=\"filteringName\"></c8y-search-grid>\n" }]
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i2.AlertService }], propDecorators: { searchGrid: [{
type: ViewChild,
args: [SearchGridComponent, { static: true }]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLXJlc3VsdHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc2VhcmNoL3NlYXJjaC1yZXN1bHRzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uL3NlYXJjaC9zZWFyY2gtcmVzdWx0cy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFhLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFTLE1BQU0scUJBQXFCLENBQUM7Ozs7OztBQU1oRyxNQUFNLE9BQU8sc0JBQXNCO0lBVWpDLFlBQ1UsS0FBcUIsRUFDckIsS0FBbUI7UUFEbkIsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsVUFBSyxHQUFMLEtBQUssQ0FBYztRQVg3QixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ1osZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUtDLHlCQUFvQixHQUFHLElBQUksQ0FBQztRQUNyQyxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFLeEMsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUMzRSxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFD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Y2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTZWFyY2hHcmlkQ29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2gtZ3JpZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmlsdGVyaW5nQWN0aW9uVHlwZSwgQWxlcnRTZXJ2aWNlLCBTdGF0dXMsIGdldHRleHQsIEFsZXJ0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1zZWFyY2gtcmVzdWx0cycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtcmVzdWx0cy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU2VhcmNoUmVzdWx0c0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIGZpbHRlciA9ICcnO1xuICBzZWFyY2hUZXh0ID0gJyc7XG4gIEBWaWV3Q2hpbGQoU2VhcmNoR3JpZENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgc2VhcmNoR3JpZDogU2VhcmNoR3JpZENvbXBvbmVudDtcbiAgZmlsdGVyaW5nTmFtZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgV0FSTklOR19USU1FT1VUX1RJTUUgPSAzMDAwO1xuICBwcml2YXRlIHVuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBhbGVydDogQWxlcnRTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUkKSkuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICBpZiAocGFyYW1zLmZpbHRlcikge1xuICAgICAgICB0aGlzLmZpbHRlcmluZ05hbWUgPSBwYXJhbXMuZmlsdGVyO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlJCkpXG4gICAgICAuc3Vic2NyaWJlKCh7IGZpbHRlciwgc2VhcmNoIH0pID0+IHRoaXMub25RdWVyeVBhcmFtc0NoYW5nZShmaWx0ZXIsIHNlYXJjaCkpO1xuICB9XG5cbiAgcmVzZXRTZWFyY2goKSB7XG4gICAgaWYgKHRoaXMuc2VhcmNoR3JpZC5kYXRhR3JpZC5zZWFyY2hUZXh0KSB7XG4gICAgICB0aGlzLmFsZXJ0LmFkZCh7XG4gICAgICAgIHRleHQ6IGdldHRleHQoJ1NlYXJjaCByZXNldC4gRnVsbCB0ZXh0IHNlYXJjaCBkb2VzIG5vdCBzdXBwb3J0IGZpbHRlcmluZy4nKSxcbiAgICAgICAgdHlwZTogU3RhdHVzLldBUk5JTkcsXG4gICAgICAgIHRpbWVvdXQ6IHRoaXMuV0FSTklOR19USU1FT1VUX1RJTUVcbiAgICAgIH0gYXMgQWxlcnQpO1xuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgICB0aGlzLnNlYXJjaEdyaWQuZGF0YUdyaWQuc2VhcmNoVGV4dCA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIHJlc2V0RmlsdGVyKCkge1xuICAgIHRoaXMuZmlsdGVyID0gJyc7XG4gICAgaWYgKHRoaXMuc2VhcmNoR3JpZC5kYXRhR3JpZC5maWx0ZXJpbmdBcHBsaWVkKSB7XG4gICAgICB0aGlzLmFsZXJ0LmFkZCh7XG4gICAgICAgIHRleHQ6IGdldHRleHQoJ0ZpbHRlciByZXNldC4gRnVsbCB0ZXh0IHNlYXJjaCBkb2VzIG5vdCBzdXBwb3J0IGZpbHRlcmluZy4nKSxcbiAgICAgICAgdHlwZTogU3RhdHVzLldBUk5JTkcsXG4gICAgICAgIHRpbWVvdXQ6IHRoaXMuV0FSTklOR19USU1FT1VUX1RJTUVcbiAgICAgIH0gYXMgQWxlcnQpO1xuICAgICAgdGhpcy5zZWFyY2hHcmlkLmRhdGFHcmlkLmNsZWFyRmlsdGVycyhmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy51bnN1YnNjcmliZSQubmV4dCgpO1xuICAgIHRoaXMudW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIG9uUXVlcnlQYXJhbXNDaGFuZ2UoZmlsdGVyOiBzdHJpbmcsIHNlYXJjaFRlcm06IHN0cmluZykge1xuICAgIGlmICghdGhpcy5zaG91bGRGaWx0ZXIoZmlsdGVyKSAmJiBzZWFyY2hUZXJtKSB7XG4gICAgICB0aGlzLnNlYXJjaFRleHQgPSBzZWFyY2hUZXJtIHx8ICcnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkRmlsdGVyKGZpbHRlcikge1xuICAgIGlmICghZmlsdGVyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMucmVzZXRTZWFyY2goKTtcbiAgICB0aGlzLmZpbHRlciA9IGZpbHRlciB8fCAnJztcbiAgICB0aGlzLnNlYXJjaEdyaWQudXBkYXRlRmlsdGVyaW5nKFsnbmFtZSddLCB7XG4gICAgICB0eXBlOiBGaWx0ZXJpbmdBY3Rpb25UeXBlLkFwcGx5RmlsdGVyLFxuICAgICAgcGF5bG9hZDoge1xuICAgICAgICBmaWx0ZXJpbmdNb2RpZmllcjoge1xuICAgICAgICAgIGV4dGVybmFsRmlsdGVyUXVlcnk6IHtcbiAgICAgICAgICAgIG5hbWVzOiBbdGhpcy5maWx0ZXJdXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiIsIjxjOHktdGl0bGU+XG4gIDxzcGFuIHRyYW5zbGF0ZSBjbGFzcz1cInAtci00XCI+U2VhcmNoPC9zcGFuPlxuICA8c21hbGxcbiAgICBuZ05vbkJpbmRhYmxlXG4gICAgdHJhbnNsYXRlXG4gICAgKm5nSWY9XCJzZWFyY2hUZXh0XCJcbiAgICBbdHJhbnNsYXRlUGFyYW1zXT1cIntcbiAgICAgIHNlYXJjaEhpbnQ6IHNlYXJjaFRleHRcbiAgICB9XCJcbiAgICA+c2VhcmNoaW5nIFwie3sgc2VhcmNoSGludCB9fVwiPC9zbWFsbFxuICA+XG4gIDxzbWFsbFxuICAgIG5nTm9uQmluZGFibGVcbiAgICB0cmFuc2xhdGVcbiAgICAqbmdJZj1cImZpbHRlclwiXG4gICAgW3RyYW5zbGF0ZVBhcmFtc109XCJ7XG4gICAgICBmaWx0ZXJIaW50OiBmaWx0ZXJcbiAgICB9XCJcbiAgICA+ZmlsdGVyZWQgYnkgXCJ7eyBmaWx0ZXJIaW50IH19XCI8L3NtYWxsXG4gID5cbjwvYzh5LXRpdGxlPlxuXG48Yzh5LXNlYXJjaC1ncmlkIFtzZWFyY2hUZXh0XT1cInNlYXJjaFRleHRcIiBbZmlsdGVyaW5nTmFtZV09XCJmaWx0ZXJpbmdOYW1lXCI+PC9jOHktc2VhcmNoLWdyaWQ+XG4iXX0=