UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

72 lines 15.8 kB
import { Component, EventEmitter, Input, Output } from '@angular/core'; import { alertOnError, gettext } from '@c8y/ngx-components'; import { Router } from '@angular/router'; import { TypeDashboardAssetsGridService } from './type-dashboard-assets-grid.service'; import { ContextDashboardService } from '../../../context-dashboard/context-dashboard.service'; import * as i0 from "@angular/core"; import * as i1 from "@angular/router"; import * as i2 from "./type-dashboard-assets-grid.service"; import * as i3 from "../../../context-dashboard/context-dashboard.service"; import * as i4 from "@c8y/ngx-components"; import * as i5 from "@angular/common"; export class TypeDashboardTargetAssetsGridComponent { constructor(router, assetsGridService, contextDashboardService) { this.router = router; this.assetsGridService = assetsGridService; this.contextDashboardService = contextDashboardService; this.labels = { cancel: gettext('Cancel') }; this.actionControls = [ { type: 'navigateToInstance', text: gettext('Open instance`dashboard`'), callback: item => this.navigateToDevice(item), icon: 'file-create' } ]; this.loadMoreItemsLabel = gettext('Load more assets'); this.loadingItemsLabel = gettext('Loading assets'); this.pagination = { pageSize: 25, currentPage: 1 }; this.onNavigateToAsset = new EventEmitter(); this.serverSideDataCallback = this.onDataSourceModifier.bind(this); } ngOnInit() { this.isDeviceDashboard = this.contextDashboardService.isDeviceDashboard(this.dashboard); this.columns = this.assetsGridService.getDefaultColumns(this.isDeviceDashboard); } async onDataSourceModifier(dataSourceModifier) { const baseQuery = { type: this.dashboard.c8y_Dashboard.deviceTypeValue }; const { res, data, paging } = await alertOnError(this.assetsGridService.getData(dataSourceModifier.columns, dataSourceModifier.pagination, baseQuery, dataSourceModifier.searchText)); const filteredSize = await alertOnError(this.assetsGridService.getCount(dataSourceModifier.columns, dataSourceModifier.pagination, baseQuery, dataSourceModifier.searchText)); const size = await alertOnError(this.assetsGridService.getTotal(baseQuery)); const serverSideDataResult = { res, data, paging, filteredSize, size }; return serverSideDataResult; } trackByName(_index, column) { return column.name; } navigateToDevice(val) { const parentSubPath = this.isDeviceDashboard ? 'device' : 'group'; this.onNavigateToAsset.emit(); this.router.navigate([`/${parentSubPath}/${val.id}/dashboard/${this.dashboard.id}`]); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TypeDashboardTargetAssetsGridComponent, deps: [{ token: i1.Router }, { token: i2.TypeDashboardAssetsGridService }, { token: i3.ContextDashboardService }], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TypeDashboardTargetAssetsGridComponent, selector: "c8y-type-dashboard-target-assets-grid", inputs: { dashboard: "dashboard" }, outputs: { onNavigateToAsset: "onNavigateToAsset" }, ngImport: i0, template: "<c8y-data-grid\n [title]=\"''\"\n [loadMoreItemsLabel]=\"loadMoreItemsLabel\"\n [loadingItemsLabel]=\"loadingItemsLabel\"\n [columns]=\"columns\"\n [pagination]=\"pagination\"\n [infiniteScroll]=\"'auto'\"\n [actionControls]=\"actionControls\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n [showSearch]=\"true\"\n>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No results to display.' | translate\"\n [subtitle]=\"'Refine your search terms.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <ng-container *ngFor=\"let column of columns; trackBy: trackByName\">\n <c8y-column [name]=\"column.name\"></c8y-column>\n </ng-container>\n</c8y-data-grid>\n", dependencies: [{ kind: "component", type: i4.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.ColumnDirective, selector: "c8y-column", inputs: ["name"] }, { kind: "component", type: i4.DataGridComponent, selector: "c8y-data-grid", inputs: ["title", "loadMoreItemsLabel", "loadingItemsLabel", "showSearch", "refresh", "columns", "rows", "pagination", "infiniteScroll", "serverSideDataCallback", "selectable", "singleSelection", "selectionPrimaryKey", "displayOptions", "actionControls", "bulkActionControls", "headerActionControls", "searchText", "configureColumnsEnabled", "showCounterWarning", "activeClassName", "expandableRows", "hideReload"], outputs: ["rowMouseOver", "rowMouseLeave", "rowClick", "onConfigChange", "onBeforeFilter", "onBeforeSearch", "onFilter", "itemsSelect", "onReload", "onAddCustomColumn", "onRemoveCustomColumn", "onColumnFilterReset", "onSort", "onPageSizeChange", "onColumnReordered", "onColumnVisibilityChange"] }, { kind: "pipe", type: i4.C8yTranslatePipe, name: "translate" }] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TypeDashboardTargetAssetsGridComponent, decorators: [{ type: Component, args: [{ selector: 'c8y-type-dashboard-target-assets-grid', template: "<c8y-data-grid\n [title]=\"''\"\n [loadMoreItemsLabel]=\"loadMoreItemsLabel\"\n [loadingItemsLabel]=\"loadingItemsLabel\"\n [columns]=\"columns\"\n [pagination]=\"pagination\"\n [infiniteScroll]=\"'auto'\"\n [actionControls]=\"actionControls\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n [showSearch]=\"true\"\n>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No results to display.' | translate\"\n [subtitle]=\"'Refine your search terms.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n\n <ng-container *ngFor=\"let column of columns; trackBy: trackByName\">\n <c8y-column [name]=\"column.name\"></c8y-column>\n </ng-container>\n</c8y-data-grid>\n" }] }], ctorParameters: () => [{ type: i1.Router }, { type: i2.TypeDashboardAssetsGridService }, { type: i3.ContextDashboardService }], propDecorators: { dashboard: [{ type: Input }], onNavigateToAsset: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1kYXNoYm9hcmQtdGFyZ2V0LWFzc2V0cy1ncmlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvbnRleHQtZGFzaGJvYXJkL2Rhc2hib2FyZC1tYW5hZ2VyL3R5cGUtZGFzaGJvYXJkLXRhcmdldC1hc3NldHMtZ3JpZC90eXBlLWRhc2hib2FyZC10YXJnZXQtYXNzZXRzLWdyaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvZGFzaGJvYXJkLW1hbmFnZXIvdHlwZS1kYXNoYm9hcmQtdGFyZ2V0LWFzc2V0cy1ncmlkL3R5cGUtZGFzaGJvYXJkLXRhcmdldC1hc3NldHMtZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFFTCxZQUFZLEVBR1osT0FBTyxFQUlSLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBRXRGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOzs7Ozs7O0FBTS9GLE1BQU0sT0FBTyxzQ0FBc0M7SUF1QmpELFlBQ1UsTUFBYyxFQUNkLGlCQUFpRCxFQUNqRCx1QkFBZ0Q7UUFGaEQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBZ0M7UUFDakQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQXpCMUQsV0FBTSxHQUFnQixFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUVwRCxtQkFBYyxHQUFvQjtZQUNoQztnQkFDRSxJ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bnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWN0aW9uQ29udHJvbCxcbiAgYWxlcnRPbkVycm9yLFxuICBDb2x1bW4sXG4gIERhdGFTb3VyY2VNb2RpZmllcixcbiAgZ2V0dGV4dCxcbiAgTW9kYWxMYWJlbHMsXG4gIFNlcnZlclNpZGVEYXRhQ2FsbGJhY2ssXG4gIFNlcnZlclNpZGVEYXRhUmVzdWx0XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgVHlwZURhc2hib2FyZEFzc2V0c0dyaWRTZXJ2aWNlIH0gZnJvbSAnLi90eXBlLWRhc2hib2FyZC1hc3NldHMtZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC1kYXNoYm9hcmQvY29udGV4dC1kYXNoYm9hcmQubW9kZWwnO1xuaW1wb3J0IHsgQ29udGV4dERhc2hib2FyZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0LWRhc2hib2FyZC9jb250ZXh0LWRhc2hib2FyZC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXR5cGUtZGFzaGJvYXJkLXRhcmdldC1hc3NldHMtZ3JpZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90eXBlLWRhc2hib2FyZC10YXJnZXQtYXNzZXRzLWdyaWQuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFR5cGVEYXNoYm9hcmRUYXJnZXRBc3NldHNHcmlkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgbGFiZWxzOiBNb2RhbExhYmVscyA9IHsgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKSB9O1xuICBjb2x1bW5zOiBDb2x1bW5bXTtcbiAgYWN0aW9uQ29udHJvbHM6IEFjdGlvbkNvbnRyb2xbXSA9IFtcbiAgICB7XG4gICAgICB0eXBlOiAnbmF2aWdhdGVUb0luc3RhbmNlJyxcbiAgICAgIHRleHQ6IGdldHRleHQoJ09wZW4gaW5zdGFuY2VgZGFzaGJvYXJkYCcpLFxuICAgICAgY2FsbGJhY2s6IGl0ZW0gPT4gdGhpcy5uYXZpZ2F0ZVRvRGV2aWNlKGl0ZW0gYXMgSU1hbmFnZWRPYmplY3QpLFxuICAgICAgaWNvbjogJ2ZpbGUtY3JlYXRlJ1xuICAgIH1cbiAgXTtcbiAgbG9hZE1vcmVJdGVtc0xhYmVsID0gZ2V0dGV4dCgnTG9hZCBtb3JlIGFzc2V0cycpO1xuICBsb2FkaW5nSXRlbXNMYWJlbDogc3RyaW5nID0gZ2V0dGV4dCgnTG9hZGluZyBhc3NldHPigKYnKTtcbiAgcGFnaW5hdGlvbiA9IHtcbiAgICBwYWdlU2l6ZTogMjUsXG4gICAgY3VycmVudFBhZ2U6IDFcbiAgfTtcbiAgc2VydmVyU2lkZURhdGFDYWxsYmFjazogU2VydmVyU2lkZURhdGFDYWxsYmFjaztcblxuICBASW5wdXQoKSBkYXNoYm9hcmQ6IENvbnRleHREYXNoYm9hcmRNYW5hZ2VkT2JqZWN0O1xuICBAT3V0cHV0KCkgb25OYXZpZ2F0ZVRvQXNzZXQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgcHJpdmF0ZSBpc0RldmljZURhc2hib2FyZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYXNzZXRzR3JpZFNlcnZpY2U6IFR5cGVEYXNoYm9hcmRBc3NldHNHcmlkU2VydmljZSxcbiAgICBwcml2YXRlIGNvbnRleHREYXNoYm9hcmRTZXJ2aWNlOiBDb250ZXh0RGFzaGJvYXJkU2VydmljZVxuICApIHtcbiAgICB0aGlzLnNlcnZlclNpZGVEYXRhQ2FsbGJhY2sgPSB0aGlzLm9uRGF0YVNvdXJjZU1vZGlmaWVyLmJpbmQodGhpcyk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmlzRGV2aWNlRGFzaGJvYXJkID0gdGhpcy5jb250ZXh0RGFzaGJvYXJkU2VydmljZS5pc0RldmljZURhc2hib2FyZCh0aGlzLmRhc2hib2FyZCk7XG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5hc3NldHNHcmlkU2VydmljZS5nZXREZWZhdWx0Q29sdW1ucyh0aGlzLmlzRGV2aWNlRGFzaGJvYXJkKTtcbiAgfVxuXG4gIGFzeW5jIG9uRGF0YVNvdXJjZU1vZGlmaWVyKFxuICAgIGRhdGFTb3VyY2VNb2RpZmllcjogRGF0YVNvdXJjZU1vZGlmaWVyXG4gICk6IFByb21pc2U8U2VydmVyU2lkZURhdGFSZXN1bHQ+IHtcbiAgICBjb25zdCBiYXNlUXVlcnkgPSB7IHR5cGU6IHRoaXMuZGFzaGJvYXJkLmM4eV9EYXNoYm9hcmQuZGV2aWNlVHlwZVZhbHVlIH07XG5cbiAgICBjb25zdCB7IHJlcywgZGF0YSwgcGFnaW5nIH0gPSBhd2FpdCBhbGVydE9uRXJyb3IoXG4gICAgICB0aGlzLmFzc2V0c0dyaWRTZXJ2aWNlLmdldERhdGEoXG4gICAgICAgIGRhdGFTb3VyY2VNb2RpZmllci5jb2x1bW5zLFxuICAgICAgICBkYXRhU291cmNlTW9kaWZpZXIucGFnaW5hdGlvbixcbiAgICAgICAgYmFzZVF1ZXJ5LFxuICAgICAgICBkYXRhU291cmNlTW9kaWZpZXIuc2VhcmNoVGV4dFxuICAgICAgKVxuICAgICk7XG5cbiAgICBjb25zdCBmaWx0ZXJlZFNpemUgPSBhd2FpdCBhbGVydE9uRXJyb3IoXG4gICAgICB0aGlzLmFzc2V0c0dyaWRTZXJ2aWNlLmdldENvdW50KFxuICAgICAgICBkYXRhU291cmNlTW9kaWZpZXIuY29sdW1ucyxcbiAgICAgICAgZGF0YVNvdXJjZU1vZGlmaWVyLnBhZ2luYXRpb24sXG4gICAgICAgIGJhc2VRdWVyeSxcbiAgICAgICAgZGF0YVNvdXJjZU1vZGlmaWVyLnNlYXJjaFRleHRcbiAgICAgIClcbiAgICApO1xuICAgIGNvbnN0IHNpemUgPSBhd2FpdCBhbGVydE9uRXJyb3IodGhpcy5hc3NldHNHcmlkU2VydmljZS5nZXRUb3RhbChiYXNlUXVlcnkpKTtcblxuICAgIGNvbnN0IHNlcnZlclNpZGVEYXRhUmVzdWx0ID0ge1xuICAgICAgcmVzLFxuICAgICAgZGF0YSxcbiAgICAgIHBhZ2luZyxcbiAgICAgIGZpbHRlcmVkU2l6ZSxcbiAgICAgIHNpemVcbiAgICB9O1xuXG4gICAgcmV0dXJuIHNlcnZlclNpZGVEYXRhUmVzdWx0O1xuICB9XG5cbiAgdHJhY2tCeU5hbWUoX2luZGV4LCBjb2x1bW46IENvbHVtbik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNvbHVtbi5uYW1lO1xuICB9XG5cbiAgbmF2aWdhdGVUb0RldmljZSh2YWw6IElNYW5hZ2VkT2JqZWN0KTogdm9pZCB7XG4gICAgY29uc3QgcGFyZW50U3ViUGF0aCA9IHRoaXMuaXNEZXZpY2VEYXNoYm9hcmQgPyAnZGV2aWNlJyA6ICdncm91cCc7XG4gICAgdGhpcy5vbk5hdmlnYXRlVG9Bc3NldC5lbWl0KCk7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AvJHtwYXJlbnRTdWJQYXRofS8ke3ZhbC5pZH0vZGFzaGJvYXJkLyR7dGhpcy5kYXNoYm9hcmQuaWR9YF0pO1xuICB9XG59XG4iLCI8Yzh5LWRhdGEtZ3JpZFxuICBbdGl0bGVdPVwiJydcIlxuICBbbG9hZE1vcmVJdGVtc0xhYmVsXT1cImxvYWRNb3JlSXRlbXNMYWJlbFwiXG4gIFtsb2FkaW5nSXRlbXNMYWJlbF09XCJsb2FkaW5nSXRlbXNMYWJlbFwiXG4gIFtjb2x1bW5zXT1cImNvbHVtbnNcIlxuICBbcGFnaW5hdGlvbl09XCJwYWdpbmF0aW9uXCJcbiAgW2luZmluaXRlU2Nyb2xsXT1cIidhdXRvJ1wiXG4gIFthY3Rpb25Db250cm9sc109XCJhY3Rpb25Db250cm9sc1wiXG4gIFtzZXJ2ZXJTaWRlRGF0YUNhbGxiYWNrXT1cInNlcnZlclNpZGVEYXRhQ2FsbGJhY2tcIlxuICBbc2hvd1NlYXJjaF09XCJ0cnVlXCJcbj5cbiAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgIFtpY29uXT1cIidzZWFyY2gnXCJcbiAgICBbdGl0bGVdPVwiJ05vIHJlc3VsdHMgdG8gZGlzcGxheS4nIHwgdHJhbnNsYXRlXCJcbiAgICBbc3VidGl0bGVdPVwiJ1JlZmluZSB5b3VyIHNlYXJjaCB0ZXJtcy4nIHwgdHJhbnNsYXRlXCJcbiAgICBbaG9yaXpvbnRhbF09XCJ0cnVlXCJcbiAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuXG4gIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5TmFtZVwiPlxuICAgIDxjOHktY29sdW1uIFtuYW1lXT1cImNvbHVtbi5uYW1lXCI+PC9jOHktY29sdW1uPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvYzh5LWRhdGEtZ3JpZD5cbiJdfQ==