@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
532 lines (519 loc) • 34.7 kB
JavaScript
import * as i0 from '@angular/core';
import { Injectable, EventEmitter, Output, Input, Component, HostListener, NgModule } from '@angular/core';
import * as i2 from '@c8y/ngx-components';
import { gettext, BaseColumn, getBasicInputArrayFormFieldConfig, DataGridService, Status, alertOnError, DataGridComponent, EmptyStateComponent, ColumnDirective, C8yTranslatePipe, ModalComponent, BuiltInActionType, TitleComponent, ExpandableRowDirective, CellRendererDefDirective, IconDirective, CoreModule, ModalModule, hookTab, hookRoute, hookNavigator, NavigatorNode } from '@c8y/ngx-components';
import { TooltipModule } from 'ngx-bootstrap/tooltip';
import { NameDeviceGridColumn, TypeDeviceGridColumn, GroupDeviceGridColumn, RegistrationDateDeviceGridColumn, DeviceGridModule } from '@c8y/ngx-components/device-grid';
import * as i1 from '@angular/router';
import * as i1$1 from '@c8y/client';
import * as i3 from '@ngx-translate/core';
import * as i1$2 from 'ngx-bootstrap/modal';
import * as i3$1 from '@c8y/ngx-components/context-dashboard';
import { TypeDashboardInfoComponent, ContextDashboardModule } from '@c8y/ngx-components/context-dashboard';
import { NgFor } from '@angular/common';
class DashboardManagerTabsFactory {
constructor(router) {
this.router = router;
}
get() {
const tabs = [];
if (this.router.url.match(/\/dashboard-manager/g)) {
tabs.push({
path: 'dashboard-manager/type-dashboards',
priority: 1000,
label: gettext('Type dashboards')
});
}
return tabs;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardManagerTabsFactory, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardManagerTabsFactory }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardManagerTabsFactory, decorators: [{
type: Injectable
}], ctorParameters: () => [{ type: i1.Router }] });
class DeviceTypeValueGridColumn extends BaseColumn {
constructor(initialColumnConfig) {
super(initialColumnConfig);
this.name = 'deviceTypeValue';
this.path = 'c8y_Dashboard.deviceTypeValue';
this.header = gettext('Target asset model');
this.filterable = true;
this.sortable = false;
this.filteringConfig = {
fields: getBasicInputArrayFormFieldConfig({
key: 'deviceTypeValues',
label: gettext('Filter dashboards by target asset model'),
addText: gettext('Add next`target asset model`'),
tooltip: gettext('Use * as a wildcard character'),
placeholder: 'c8y_MQTTDevice'
}),
getFilter: (model) => {
const filter = {};
if (model.deviceTypeValues.length) {
filter[this.path] = { __in: model.deviceTypeValues };
}
return filter;
}
};
}
}
const DASHBOARD_MANAGER_PRODUCT_EXPERIENCE = {
EVENTS: {
DASHBOARD_TEMPLATE: 'dashboardTemplate'
},
COMPONENTS: {
TYPE_DASHBOARDS_LIST: 'type-dashboards-list',
TYPE_DASHBOARD_TARGET_ASSETS_GRID: 'type-dashboard-target-assets-grid'
},
ACTIONS: {
DELETE_TYPE_DASHBOARD: 'deleteTypeDashboard',
EDIT_TYPE_DASHBOARD: 'editTypeDashboard',
OPEN_DASHBOARD_INSTANCE_TO_EDIT: 'openDashboardInstanceToEdit'
}
};
class DashboardManagerService extends DataGridService {
constructor(inventory, userPreferencesService, modal, translateService) {
super(userPreferencesService);
this.inventory = inventory;
this.userPreferencesService = userPreferencesService;
this.modal = modal;
this.translateService = translateService;
this.baseQuery = {
__filter: {
__and: [
{ 'c8y_Dashboard.deviceType': { __eq: true } },
{ __has: 'c8y_Dashboard.deviceTypeValue' }
]
}
};
this.TYPE_DASHBOARDS_QUERY = '$filter=((c8y_Dashboard.deviceType eq true) and (has(c8y_Dashboard.deviceTypeValue)))';
}
getColumns() {
return [
{
name: 'icon',
header: gettext('Icon'),
path: 'c8y_Dashboard.icon',
sortable: false,
gridTrackSize: '45px'
},
{
name: 'name',
header: gettext('Name'),
path: 'name',
sortable: false,
gridTrackSize: '200px'
},
{
name: 'description',
header: gettext('Description'),
path: 'c8y_Dashboard.description',
sortable: false
},
new DeviceTypeValueGridColumn(),
{
name: 'lastUpdated',
header: gettext('Last update'),
path: 'lastUpdated',
sortable: false,
gridTrackSize: '200px'
}
];
}
getDefaultPagination() {
return {
pageSize: 25,
currentPage: 1
};
}
async getData(columns, pagination, text) {
const filters = this.getFilters(columns, pagination, text);
return await this.inventory.list(filters);
}
async getTotal() {
return (await this.inventory.list({
query: this.TYPE_DASHBOARDS_QUERY,
withTotalElements: true
})).paging.totalElements;
}
async delete(dashboard, onSuccess) {
try {
const msg = gettext(`You are about to delete the dashboard "{{ dashboardName }}" from all devices of type "{{ deviceType }}".
Do you want to proceed?`);
await this.modal.confirm(gettext('Delete dashboard'), this.translateService.instant(msg, {
dashboardName: dashboard.c8y_Dashboard.name,
deviceType: dashboard.c8y_Dashboard.deviceTypeValue
}), Status.DANGER, {
ok: gettext('Delete'),
cancel: gettext('Cancel')
}, {}, {
eventName: DASHBOARD_MANAGER_PRODUCT_EXPERIENCE.EVENTS.DASHBOARD_TEMPLATE,
data: {
action: DASHBOARD_MANAGER_PRODUCT_EXPERIENCE.ACTIONS.DELETE_TYPE_DASHBOARD,
component: DASHBOARD_MANAGER_PRODUCT_EXPERIENCE.COMPONENTS.TYPE_DASHBOARDS_LIST
}
});
await this.inventory.delete(dashboard);
onSuccess();
}
catch (ex) {
// intended empty
}
}
getFilters(columns, pagination, text) {
return {
query: this.getQueryString(columns),
...(text && { text }),
pageSize: pagination.pageSize,
currentPage: pagination.currentPage,
withTotalPages: true,
withTotalElements: true
};
}
getQueryString(columns) {
const queryFromColumns = this.getQueryObj(columns);
const fullQuery = this.queriesUtil.addAndFilter(queryFromColumns, this.baseQuery);
return this.queriesUtil.buildQuery(fullQuery);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardManagerService, deps: [{ token: i1$1.InventoryService }, { token: i2.UserPreferencesService }, { token: i2.ModalService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardManagerService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardManagerService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: () => [{ type: i1$1.InventoryService }, { type: i2.UserPreferencesService }, { type: i2.ModalService }, { type: i3.TranslateService }] });
class BasicNameDeviceGridColumn extends NameDeviceGridColumn {
constructor(initialColumnConfig) {
super(initialColumnConfig);
this.name = 'basic-name';
this.cellRendererComponent = null;
}
}
class TypeDashboardAssetsGridService extends DataGridService {
constructor(inventoryService, userPreferencesService) {
super(userPreferencesService);
this.inventoryService = inventoryService;
this.userPreferencesService = userPreferencesService;
}
getDefaultColumns(columnsForDevice = true) {
return columnsForDevice
? [
new BasicNameDeviceGridColumn(),
new TypeDeviceGridColumn(),
new GroupDeviceGridColumn(),
new RegistrationDateDeviceGridColumn()
]
: [
new BasicNameDeviceGridColumn(),
new TypeDeviceGridColumn(),
new RegistrationDateDeviceGridColumn()
];
}
async getData(columns, pagination, query = {}, text = null) {
const filters = {
...this.getFilters(columns, pagination, query, text),
withGroups: true
};
return this.inventoryService.list(filters);
}
async getCount(columns, pagination, query = {}, text = null) {
const filters = {
...this.getFilters(columns, pagination, query, text),
pageSize: 1,
currentPage: 1
};
return (await this.inventoryService.list(filters)).paging.totalPages;
}
async getTotal(query = {}) {
const filters = {
query: this.queriesUtil.buildQuery(query),
pageSize: 1,
withTotalPages: true
};
return (await this.inventoryService.list(filters)).paging.totalPages;
}
getFilters(columns, pagination, query, text) {
return {
...{ query: this.getDeviceQueryString(columns, query) },
...(text && { text }),
pageSize: pagination.pageSize,
currentPage: pagination.currentPage,
withChildren: false,
withTotalPages: true
};
}
getDeviceQueryString(columns, query) {
let fullQuery = this.getQueryObj(columns);
fullQuery = this.queriesUtil.addAndFilter(fullQuery, query);
return this.queriesUtil.buildQuery(fullQuery);
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TypeDashboardAssetsGridService, deps: [{ token: i1$1.InventoryService }, { token: i2.UserPreferencesService }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TypeDashboardAssetsGridService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TypeDashboardAssetsGridService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: () => [{ type: i1$1.InventoryService }, { type: i2.UserPreferencesService }] });
class TypeDashboardTargetAssetsGridComponent {
constructor(router, assetsGridService, contextDashboardService, gainsightService) {
this.router = router;
this.assetsGridService = assetsGridService;
this.contextDashboardService = contextDashboardService;
this.gainsightService = gainsightService;
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}`]);
this.gainsightService.triggerEvent(DASHBOARD_MANAGER_PRODUCT_EXPERIENCE.EVENTS.DASHBOARD_TEMPLATE, {
component: DASHBOARD_MANAGER_PRODUCT_EXPERIENCE.COMPONENTS.TYPE_DASHBOARD_TARGET_ASSETS_GRID,
action: DASHBOARD_MANAGER_PRODUCT_EXPERIENCE.ACTIONS.OPEN_DASHBOARD_INSTANCE_TO_EDIT
});
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TypeDashboardTargetAssetsGridComponent, deps: [{ token: i1.Router }, { token: TypeDashboardAssetsGridService }, { token: i3$1.ContextDashboardService }, { token: i2.GainsightService }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: TypeDashboardTargetAssetsGridComponent, isStandalone: true, 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: DataGridComponent, selector: "c8y-data-grid", inputs: ["title", "loadMoreItemsLabel", "loadingItemsLabel", "showSearch", "refresh", "columns", "rows", "pagination", "childNodePagination", "infiniteScroll", "serverSideDataCallback", "selectable", "singleSelection", "selectionPrimaryKey", "displayOptions", "actionControls", "bulkActionControls", "headerActionControls", "searchText", "configureColumnsEnabled", "showCounterWarning", "activeClassName", "expandableRows", "treeGrid", "hideReload", "childNodesProperty", "parentNodeLabelProperty"], outputs: ["rowMouseOver", "rowMouseLeave", "rowClick", "onConfigChange", "onBeforeFilter", "onBeforeSearch", "onFilter", "itemsSelect", "onReload", "onAddCustomColumn", "onRemoveCustomColumn", "onColumnFilterReset", "onSort", "onPageSizeChange", "onColumnReordered", "onColumnVisibilityChange"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: ColumnDirective, selector: "c8y-column", inputs: ["name"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TypeDashboardTargetAssetsGridComponent, decorators: [{
type: Component,
args: [{ selector: 'c8y-type-dashboard-target-assets-grid', imports: [DataGridComponent, EmptyStateComponent, NgFor, ColumnDirective, C8yTranslatePipe], 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: TypeDashboardAssetsGridService }, { type: i3$1.ContextDashboardService }, { type: i2.GainsightService }], propDecorators: { dashboard: [{
type: Input
}], onNavigateToAsset: [{
type: Output
}] } });
class TypeDashboardTargetAssetsModalComponent {
constructor(bsModalRef) {
this.bsModalRef = bsModalRef;
this.labels = { cancel: gettext('Cancel') };
}
handleKeyboardEvent(event) {
if (event.key === 'Escape') {
this.close();
}
}
close() {
this.bsModalRef.hide();
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TypeDashboardTargetAssetsModalComponent, deps: [{ token: i1$2.BsModalRef }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: TypeDashboardTargetAssetsModalComponent, isStandalone: true, selector: "c8y-type-dashboard-target-assets-modal", inputs: { dashboard: "dashboard" }, host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, ngImport: i0, template: "<c8y-modal\n title=\"{{ 'Select dashboard instance to edit' | translate }}\"\n (onClose)=\"close()\"\n (onDismiss)=\"close()\"\n [labels]=\"labels\"\n [disabled]=\"true\"\n [headerClasses]=\"'has-data-grid'\"\n>\n <c8y-type-dashboard-target-assets-grid\n [dashboard]=\"dashboard\"\n (onNavigateToAsset)=\"close()\"\n ></c8y-type-dashboard-target-assets-grid>\n</c8y-modal>\n", dependencies: [{ kind: "component", type: ModalComponent, selector: "c8y-modal", inputs: ["disabled", "close", "dismiss", "title", "body", "customFooter", "headerClasses", "labels"], outputs: ["onDismiss", "onClose"] }, { kind: "component", type: TypeDashboardTargetAssetsGridComponent, selector: "c8y-type-dashboard-target-assets-grid", inputs: ["dashboard"], outputs: ["onNavigateToAsset"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TypeDashboardTargetAssetsModalComponent, decorators: [{
type: Component,
args: [{ selector: 'c8y-type-dashboard-target-assets-modal', imports: [ModalComponent, TypeDashboardTargetAssetsGridComponent, C8yTranslatePipe], template: "<c8y-modal\n title=\"{{ 'Select dashboard instance to edit' | translate }}\"\n (onClose)=\"close()\"\n (onDismiss)=\"close()\"\n [labels]=\"labels\"\n [disabled]=\"true\"\n [headerClasses]=\"'has-data-grid'\"\n>\n <c8y-type-dashboard-target-assets-grid\n [dashboard]=\"dashboard\"\n (onNavigateToAsset)=\"close()\"\n ></c8y-type-dashboard-target-assets-grid>\n</c8y-modal>\n" }]
}], ctorParameters: () => [{ type: i1$2.BsModalRef }], propDecorators: { dashboard: [{
type: Input
}], handleKeyboardEvent: [{
type: HostListener,
args: ['document:keydown', ['$event']]
}] } });
class TypeDashboardsListComponent {
constructor(dashboardManagerService, bsModalService, gainsightService) {
this.dashboardManagerService = dashboardManagerService;
this.bsModalService = bsModalService;
this.gainsightService = gainsightService;
this.title = gettext('Type dashboards');
this.loadMoreItemsLabel = gettext('Load more dashboards');
this.loadingItemsLabel = gettext('Loading dashboards…');
this.columns = this.dashboardManagerService.getColumns();
this.pagination = this.dashboardManagerService.getDefaultPagination();
this.actionControls = [
{
type: BuiltInActionType.Edit,
text: gettext('Edit dashboard'),
callback: item => this.openTargetAssetsModal(item)
},
{
type: BuiltInActionType.Delete,
text: gettext('Delete dashboard'),
callback: item => this.delete(item)
}
];
this.displayOptions = {
striped: true,
bordered: false,
gridHeader: true,
filter: true,
hover: false
};
this.refresh = new EventEmitter();
this.serverSideDataCallback = this.onDataSourceModifier.bind(this);
}
async delete(dashboard) {
await this.dashboardManagerService.delete(dashboard, () => this.refresh.emit());
}
openTargetAssetsModal(dashboard) {
const initialState = { dashboard };
this.bsModalService.show(TypeDashboardTargetAssetsModalComponent, {
class: 'modal-lg',
ariaDescribedby: 'modal-body',
ariaLabelledBy: 'modal-title',
ignoreBackdropClick: true,
initialState
});
this.gainsightService.triggerEvent(DASHBOARD_MANAGER_PRODUCT_EXPERIENCE.EVENTS.DASHBOARD_TEMPLATE, {
component: DASHBOARD_MANAGER_PRODUCT_EXPERIENCE.COMPONENTS.TYPE_DASHBOARDS_LIST,
action: DASHBOARD_MANAGER_PRODUCT_EXPERIENCE.ACTIONS.EDIT_TYPE_DASHBOARD
});
}
trackByName(_index, column) {
return column.name;
}
async onDataSourceModifier(dataSourceModifier) {
const { res, data, paging } = await alertOnError(this.dashboardManagerService.getData(dataSourceModifier.columns, dataSourceModifier.pagination, dataSourceModifier.searchText));
const filteredSize = paging.totalElements;
const size = await alertOnError(this.dashboardManagerService.getTotal());
return {
res,
data,
paging,
filteredSize,
size
};
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TypeDashboardsListComponent, deps: [{ token: DashboardManagerService }, { token: i1$2.BsModalService }, { token: i2.GainsightService }], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: TypeDashboardsListComponent, isStandalone: true, selector: "c8y-dashboard-manager", ngImport: i0, template: "<c8y-title>\n {{ 'Dashboard manager' | translate }}\n</c8y-title>\n\n<div class=\"content-fullpage d-flex d-col border-top border-bottom\">\n <c8y-data-grid\n [title]=\"title\"\n [loadMoreItemsLabel]=\"loadMoreItemsLabel\"\n [loadingItemsLabel]=\"loadingItemsLabel\"\n [columns]=\"columns\"\n [pagination]=\"pagination\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n [infiniteScroll]=\"'auto'\"\n [actionControls]=\"actionControls\"\n [showSearch]=\"true\"\n [displayOptions]=\"displayOptions\"\n [refresh]=\"refresh\"\n [expandableRows]=\"'ASYNC'\"\n >\n <div\n *c8yExpandableRow=\"\n let context;\n let asyncRenderSuccess = asyncRenderSuccess;\n let asyncRenderFail = asyncRenderFail\n \"\n >\n <c8y-type-dashboard-info\n [context]=\"context\"\n [asyncRenderSuccess]=\"asyncRenderSuccess\"\n [asyncRenderFail]=\"asyncRenderFail\"\n ></c8y-type-dashboard-info>\n </div>\n\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No matching dashboards.' | 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=\"icon\">\n <ng-container *c8yCellRendererDef=\"let context\">\n <i [c8yIcon]=\"context.value\"></i>\n </ng-container>\n </c8y-column>\n\n <c8y-column name=\"deviceTypeValue\">\n <ng-container *c8yCellRendererDef=\"let context\">\n <span class=\"label label-info\">\n {{ context.value }}\n </span>\n </ng-container>\n </c8y-column>\n\n <c8y-column [name]=\"column.name\"></c8y-column>\n </ng-container>\n </c8y-data-grid>\n</div>\n", dependencies: [{ kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: DataGridComponent, selector: "c8y-data-grid", inputs: ["title", "loadMoreItemsLabel", "loadingItemsLabel", "showSearch", "refresh", "columns", "rows", "pagination", "childNodePagination", "infiniteScroll", "serverSideDataCallback", "selectable", "singleSelection", "selectionPrimaryKey", "displayOptions", "actionControls", "bulkActionControls", "headerActionControls", "searchText", "configureColumnsEnabled", "showCounterWarning", "activeClassName", "expandableRows", "treeGrid", "hideReload", "childNodesProperty", "parentNodeLabelProperty"], outputs: ["rowMouseOver", "rowMouseLeave", "rowClick", "onConfigChange", "onBeforeFilter", "onBeforeSearch", "onFilter", "itemsSelect", "onReload", "onAddCustomColumn", "onRemoveCustomColumn", "onColumnFilterReset", "onSort", "onPageSizeChange", "onColumnReordered", "onColumnVisibilityChange"] }, { kind: "directive", type: ExpandableRowDirective, selector: "[c8yExpandableRow]" }, { kind: "component", type: TypeDashboardInfoComponent, selector: "c8y-type-dashboard-info", inputs: ["deviceTypeValue", "displayDeviceTypeValue", "context", "asyncRenderSuccess", "asyncRenderFail"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: ColumnDirective, selector: "c8y-column", inputs: ["name"] }, { kind: "directive", type: CellRendererDefDirective, selector: "[c8yCellRendererDef]" }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TypeDashboardsListComponent, decorators: [{
type: Component,
args: [{ selector: 'c8y-dashboard-manager', imports: [
TitleComponent,
DataGridComponent,
ExpandableRowDirective,
TypeDashboardInfoComponent,
EmptyStateComponent,
NgFor,
ColumnDirective,
CellRendererDefDirective,
IconDirective,
C8yTranslatePipe
], template: "<c8y-title>\n {{ 'Dashboard manager' | translate }}\n</c8y-title>\n\n<div class=\"content-fullpage d-flex d-col border-top border-bottom\">\n <c8y-data-grid\n [title]=\"title\"\n [loadMoreItemsLabel]=\"loadMoreItemsLabel\"\n [loadingItemsLabel]=\"loadingItemsLabel\"\n [columns]=\"columns\"\n [pagination]=\"pagination\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n [infiniteScroll]=\"'auto'\"\n [actionControls]=\"actionControls\"\n [showSearch]=\"true\"\n [displayOptions]=\"displayOptions\"\n [refresh]=\"refresh\"\n [expandableRows]=\"'ASYNC'\"\n >\n <div\n *c8yExpandableRow=\"\n let context;\n let asyncRenderSuccess = asyncRenderSuccess;\n let asyncRenderFail = asyncRenderFail\n \"\n >\n <c8y-type-dashboard-info\n [context]=\"context\"\n [asyncRenderSuccess]=\"asyncRenderSuccess\"\n [asyncRenderFail]=\"asyncRenderFail\"\n ></c8y-type-dashboard-info>\n </div>\n\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No matching dashboards.' | 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=\"icon\">\n <ng-container *c8yCellRendererDef=\"let context\">\n <i [c8yIcon]=\"context.value\"></i>\n </ng-container>\n </c8y-column>\n\n <c8y-column name=\"deviceTypeValue\">\n <ng-container *c8yCellRendererDef=\"let context\">\n <span class=\"label label-info\">\n {{ context.value }}\n </span>\n </ng-container>\n </c8y-column>\n\n <c8y-column [name]=\"column.name\"></c8y-column>\n </ng-container>\n </c8y-data-grid>\n</div>\n" }]
}], ctorParameters: () => [{ type: DashboardManagerService }, { type: i1$2.BsModalService }, { type: i2.GainsightService }] });
const DASHBOARD_MANAGER_PATH = 'dashboard-manager';
class DashboardManagerModule {
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardManagerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: DashboardManagerModule, imports: [CoreModule,
TooltipModule,
DeviceGridModule,
ContextDashboardModule,
ModalModule,
TypeDashboardInfoComponent,
TypeDashboardsListComponent,
TypeDashboardTargetAssetsModalComponent,
TypeDashboardTargetAssetsGridComponent] }); }
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardManagerModule, providers: [
hookTab(DashboardManagerTabsFactory),
hookRoute([
{
path: DASHBOARD_MANAGER_PATH,
redirectTo: `${DASHBOARD_MANAGER_PATH}/type-dashboards`,
pathMatch: 'full'
},
{
path: `${DASHBOARD_MANAGER_PATH}/type-dashboards`,
component: TypeDashboardsListComponent
}
]),
hookNavigator(new NavigatorNode({
parent: gettext('Configuration'),
path: DASHBOARD_MANAGER_PATH,
label: gettext('Dashboard manager'),
icon: 'management1',
routerLinkExact: false,
featureId: 'dashboardManager'
}))
], imports: [CoreModule,
TooltipModule,
DeviceGridModule,
ContextDashboardModule,
ModalModule,
TypeDashboardInfoComponent,
TypeDashboardsListComponent,
TypeDashboardTargetAssetsModalComponent,
TypeDashboardTargetAssetsGridComponent] }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardManagerModule, decorators: [{
type: NgModule,
args: [{
imports: [
CoreModule,
TooltipModule,
DeviceGridModule,
ContextDashboardModule,
ModalModule,
TypeDashboardInfoComponent,
TypeDashboardsListComponent,
TypeDashboardTargetAssetsModalComponent,
TypeDashboardTargetAssetsGridComponent
],
providers: [
hookTab(DashboardManagerTabsFactory),
hookRoute([
{
path: DASHBOARD_MANAGER_PATH,
redirectTo: `${DASHBOARD_MANAGER_PATH}/type-dashboards`,
pathMatch: 'full'
},
{
path: `${DASHBOARD_MANAGER_PATH}/type-dashboards`,
component: TypeDashboardsListComponent
}
]),
hookNavigator(new NavigatorNode({
parent: gettext('Configuration'),
path: DASHBOARD_MANAGER_PATH,
label: gettext('Dashboard manager'),
icon: 'management1',
routerLinkExact: false,
featureId: 'dashboardManager'
}))
]
}]
}] });
/**
* Generated bundle index. Do not edit.
*/
export { DASHBOARD_MANAGER_PRODUCT_EXPERIENCE, DashboardManagerModule };
//# sourceMappingURL=c8y-ngx-components-dashboard-manager.mjs.map