@c8y/ngx-components 1018.503.37 → 1018.503.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/assets-navigator/asset-node.service.d.ts +5 -2
  2. package/esm2020/assets-navigator/asset-node.mjs +2 -2
  3. package/esm2020/assets-navigator/asset-node.service.mjs +14 -5
  4. package/esm2020/core/docs/docs.service.mjs +1 -11
  5. package/esm2020/device-grid/columns/registration-date.device-grid-column.mjs +4 -10
  6. package/esm2020/ecosystem/application-plugins/application-plugins.component.mjs +34 -13
  7. package/esm2020/repository/shared/repository.service.mjs +4 -4
  8. package/esm2020/services/services-device-tab/columns/last-updated-date.device-grid-column.mjs +4 -10
  9. package/fesm2015/c8y-ngx-components-assets-navigator.mjs +16 -9
  10. package/fesm2015/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  11. package/fesm2015/c8y-ngx-components-device-grid.mjs +3 -9
  12. package/fesm2015/c8y-ngx-components-device-grid.mjs.map +1 -1
  13. package/fesm2015/c8y-ngx-components-ecosystem-application-plugins.mjs +26 -13
  14. package/fesm2015/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  15. package/fesm2015/c8y-ngx-components-ecosystem.mjs +26 -13
  16. package/fesm2015/c8y-ngx-components-ecosystem.mjs.map +1 -1
  17. package/fesm2015/c8y-ngx-components-repository-shared.mjs +3 -3
  18. package/fesm2015/c8y-ngx-components-repository-shared.mjs.map +1 -1
  19. package/fesm2015/c8y-ngx-components-services.mjs +3 -9
  20. package/fesm2015/c8y-ngx-components-services.mjs.map +1 -1
  21. package/fesm2015/c8y-ngx-components.mjs +0 -9
  22. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  23. package/fesm2020/c8y-ngx-components-assets-navigator.mjs +16 -9
  24. package/fesm2020/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  25. package/fesm2020/c8y-ngx-components-device-grid.mjs +3 -9
  26. package/fesm2020/c8y-ngx-components-device-grid.mjs.map +1 -1
  27. package/fesm2020/c8y-ngx-components-ecosystem-application-plugins.mjs +33 -13
  28. package/fesm2020/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  29. package/fesm2020/c8y-ngx-components-ecosystem.mjs +33 -13
  30. package/fesm2020/c8y-ngx-components-ecosystem.mjs.map +1 -1
  31. package/fesm2020/c8y-ngx-components-repository-shared.mjs +3 -3
  32. package/fesm2020/c8y-ngx-components-repository-shared.mjs.map +1 -1
  33. package/fesm2020/c8y-ngx-components-services.mjs +3 -9
  34. package/fesm2020/c8y-ngx-components-services.mjs.map +1 -1
  35. package/fesm2020/c8y-ngx-components.mjs +0 -9
  36. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  37. package/package.json +1 -1
@@ -76,19 +76,13 @@ class LastUpdatedDateGridColumn extends BaseColumn {
76
76
  if (dates.after) {
77
77
  const after = this.formatDate(dates.after);
78
78
  filter.__and.push({
79
- __or: {
80
- [this.path]: { __gt: after },
81
- [`${this.path}.date`]: { __gt: after }
82
- }
79
+ 'lastUpdated.date': { __gt: after }
83
80
  });
84
81
  }
85
82
  if (dates.before) {
86
83
  const before = this.formatDate(dates.before);
87
84
  filter.__and.push({
88
- __or: {
89
- [this.path]: { __lt: before },
90
- [`${this.path}.date`]: { __lt: before }
91
- }
85
+ 'lastUpdated.date': { __lt: before }
92
86
  });
93
87
  }
94
88
  }
@@ -97,7 +91,7 @@ class LastUpdatedDateGridColumn extends BaseColumn {
97
91
  };
98
92
  this.sortable = true;
99
93
  this.sortingConfig = {
100
- pathSortingConfigs: [{ path: `${this.path}.date` }, { path: this.path }]
94
+ pathSortingConfigs: [{ path: 'lastUpdated.date' }]
101
95
  };
102
96
  }
103
97
  formatDate(dateToFormat) {
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-services.mjs","sources":["../../services/services-device-tab/columns/last-updated-date.cell-renderer.component.ts","../../services/services-device-tab/columns/last-updated-date.device-grid-column.ts","../../services/services-device-tab/columns/name.cell-renderer.component.ts","../../services/services-device-tab/columns/name.grid-column.ts","../../services/services-device-tab/columns/service-type.grid-column.ts","../../services/status-options/status-options.model.ts","../../services/status-options/status-options.service.ts","../../services/services-device-tab/columns/status.cell-renderer.component.ts","../../services/services-device-tab/columns/status.cell-renderer.component.html","../../services/services-device-tab/columns/status.grid-column.ts","../../services/services-device-tab/services-device-tab.component.ts","../../services/services-device-tab/services-device-tab.component.html","../../services/services-device-tab/services-device-tab.guard.ts","../../services/services-device-tab/services.breadcrumb-factory.ts","../../services/services-device-tab/services-device-tab.module.ts","../../services/services.module.ts","../../services/c8y-ngx-components-services.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\n\n@Component({\n template: `{{ context.value | c8yDate }}`\n})\nexport class LastUpdatedDateCellRendererComponent {\n constructor(public context: CellRendererContext) {}\n}\n","import { FormGroup } from '@angular/forms';\nimport { BaseColumn, ColumnConfig, gettext } from '@c8y/ngx-components';\nimport { LastUpdatedDateCellRendererComponent } from './last-updated-date.cell-renderer.component';\n\nexport class LastUpdatedDateGridColumn extends BaseColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n\n this.path = 'lastUpdated';\n this.name = 'lastUpdatedDate';\n this.header = gettext('Last updated');\n this.cellRendererComponent = LastUpdatedDateCellRendererComponent;\n\n this.filterable = true;\n this.filteringConfig = {\n fields: [\n {\n type: 'object',\n key: 'lastUpdated',\n templateOptions: {\n label: gettext('Show services updated`between dates`')\n },\n fieldGroup: [\n {\n type: 'date-time',\n key: 'after',\n templateOptions: {\n label: gettext('from`date`')\n },\n expressionProperties: {\n 'templateOptions.maxDate': (model: any) => model?.before\n }\n },\n {\n type: 'date-time',\n key: 'before',\n templateOptions: {\n label: gettext('to`date`')\n },\n expressionProperties: {\n 'templateOptions.minDate': (model: any) => model?.after\n }\n }\n ]\n }\n ],\n formGroup: new FormGroup({}),\n getFilter: model => {\n const filter: any = {};\n const dates = model && model.lastUpdated;\n if (dates && (dates.after || dates.before)) {\n filter.__and = [];\n if (dates.after) {\n const after = this.formatDate(dates.after);\n filter.__and.push({\n __or: {\n [this.path]: { __gt: after },\n [`${this.path}.date`]: { __gt: after }\n }\n });\n }\n if (dates.before) {\n const before = this.formatDate(dates.before);\n filter.__and.push({\n __or: {\n [this.path]: { __lt: before },\n [`${this.path}.date`]: { __lt: before }\n }\n });\n }\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: `${this.path}.date` }, { path: this.path }]\n };\n }\n\n protected formatDate(dateToFormat: string): string {\n return new Date(dateToFormat).toISOString();\n }\n}\n","import { Component } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\n\n@Component({\n template: `\n <a [routerLink]=\"['/service', context.item.id]\" [title]=\"context.item.name\" class=\"interact\">\n {{ context.item.name }}\n </a>\n `\n})\nexport class NameCellRendererComponent {\n constructor(public context: CellRendererContext) {}\n}\n","import {\n BaseColumn,\n ColumnConfig,\n getBasicInputArrayFormFieldConfig,\n gettext\n} from '@c8y/ngx-components';\nimport { NameCellRendererComponent } from './name.cell-renderer.component';\n\nexport class ServiceNameGridColumn extends BaseColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n this.name = 'name';\n this.path = 'name';\n this.header = gettext('Name');\n this.cellRendererComponent = NameCellRendererComponent;\n\n this.filterable = true;\n this.filteringConfig = {\n fields: getBasicInputArrayFormFieldConfig({\n key: 'names',\n label: gettext('Filter services by name'),\n addText: gettext('Add next`name`'),\n tooltip: gettext('Use * as a wildcard character'),\n placeholder: gettext('daemon`SERVICE_NAME`')\n }),\n getFilter(model: any): any {\n const filter: any = {};\n if (model.names.length) {\n filter.name = { __in: model.names };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: this.path }]\n };\n }\n}\n","import {\n BaseColumn,\n ColumnConfig,\n getBasicInputArrayFormFieldConfig,\n gettext\n} from '@c8y/ngx-components';\n\nexport class ServiceTypeGridColumn extends BaseColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n this.name = 'serviceType';\n this.path = 'serviceType';\n this.header = gettext('Type');\n\n this.filterable = true;\n\n this.filteringConfig = {\n fields: getBasicInputArrayFormFieldConfig({\n key: 'serviceTypes',\n label: gettext('Filter services by type'),\n addText: gettext('Add next`type`'),\n tooltip: gettext('Use * as a wildcard character'),\n placeholder: 'systemd'\n }),\n getFilter(model: any): any {\n const filter: any = {};\n if (model.serviceTypes.length) {\n filter.serviceType = { __in: model.serviceTypes };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: this.path }]\n };\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { gettext, hookGeneric, GenericHookType, HookOptions } from '@c8y/ngx-components';\n\n/**\n * Extension hook allowing to register custom service statuses and configure their visual presentation.\n * @deprecated Consider using the `hookServiceStatus` function instead.\n */\nexport const HOOK_SERVICE_STATUS = new InjectionToken<StatusOption | StatusOption[]>(\n 'HOOK_SERVICE_STATUS'\n);\n\n/**\n * Extension hook allowing to register custom service statuses and configure their visual presentation.\n *\n * You can either provide a single `StatusOption` as parameter:\n * ```typescript\n * hookServiceStatus(...)\n * ```\n *\n * Or an array to directly register multiple:\n * ```typescript\n * hookServiceStatus([...])\n * ```\n *\n * Or you provide an Service that implements `ExtensionFactory<StatusOption>`\n * ```typescript\n * export class MyServiceStatusFactory implements ExtensionFactory<StatusOption> {...}\n * ...\n * hookServiceStatus(MyServiceStatusFactory)\n * ```\n * A typed alternative to `HOOK_SERVICE_STATUS`.\n * @param status The `StatusOption`'s or `ExtensionFactory` to be provided.\n * @returns An `Provider` to be provided in your module.\n */\nexport function hookServiceStatus(\n status: GenericHookType<StatusOption>,\n options?: Partial<HookOptions>\n) {\n return hookGeneric<StatusOption>(status, HOOK_SERVICE_STATUS, options);\n}\n\n/**\n * Defines the visual presentation of a service status option.\n */\nexport interface StatusOption {\n /**\n * Key used for this status in the c8y_Service object.\n */\n key: string;\n /**\n * Human readable name of the status used to be translated.\n */\n label: string;\n /**\n * An icon to use to display the status.\n */\n icon: string;\n /**\n * CSS class(es) used to e.g. accent the status (contextual color, etc.)\n */\n class?: string;\n}\n\n/**\n * Standard status options supported by the platform.\n */\nexport const SERVICE_STATUS_OPTIONS: StatusOption[] = [\n {\n key: 'up',\n label: gettext('Up'),\n icon: 'check-circle',\n class: 'text-success'\n },\n {\n key: 'down',\n label: gettext('Down'),\n icon: 'exclamation-circle',\n class: 'text-danger'\n },\n {\n key: 'unknown',\n label: gettext('Unknown'),\n icon: 'inactive-state'\n }\n];\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { flatten } from 'lodash-es';\nimport { HOOK_SERVICE_STATUS, SERVICE_STATUS_OPTIONS, StatusOption } from './status-options.model';\n\n/**\n * The service for system wide registered service status options.\n * It provides the standard service statuses plus all custom status options\n * registered with the <code>HOOK_SERVICE_STATUS</code> extension hook.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class StatusOptionsService {\n get options(): StatusOption[] {\n return this._options;\n }\n\n private _options: StatusOption[];\n\n constructor(\n @Optional() @Inject(HOOK_SERVICE_STATUS) options: Array<StatusOption | StatusOption[]>\n ) {\n this._options = [...SERVICE_STATUS_OPTIONS, ...flatten(options)];\n }\n}\n","import { Component } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\nimport { StatusOptionsService } from '../../status-options';\n\n@Component({\n templateUrl: 'status.cell-renderer.component.html'\n})\nexport class StatusCellRendererComponent {\n constructor(\n public context: CellRendererContext,\n public statusOptionsService: StatusOptionsService\n ) {}\n}\n","<span [ngSwitch]=\"context.item.status\">\n <ng-container *ngFor=\"let option of statusOptionsService.options\">\n <i\n *ngSwitchCase=\"option.key\"\n [c8yIcon]=\"option.icon\"\n class=\"{{ option.class }}\"\n [tooltip]=\"option.label | translate\"\n container=\"body\"\n placement=\"top\"\n ></i>\n </ng-container>\n <i\n *ngSwitchDefault\n c8yIcon=\"job\"\n class=\"text-primary\"\n [tooltip]=\"context.item.status\"\n container=\"body\"\n placement=\"top\"\n ></i>\n</span>\n","import {\n BaseColumn,\n ColumnConfig,\n ColumnDataType,\n getBasicInputArrayFormFieldConfig,\n gettext\n} from '@c8y/ngx-components';\nimport { entries } from 'lodash-es';\nimport { StatusOptionsService } from '../../status-options';\nimport { StatusCellRendererComponent } from './status.cell-renderer.component';\n\nexport class StatusGridColumn extends BaseColumn {\n constructor(statusOptionsService: StatusOptionsService, initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n this.name = 'status';\n this.path = 'status';\n this.header = gettext('Status');\n this.dataType = ColumnDataType.Icon;\n this.cellRendererComponent = StatusCellRendererComponent;\n this.filterable = true;\n this.resizable = false;\n\n this.filteringConfig = {\n fields: [\n {\n key: 'statusOptions',\n type: 'object',\n props: {\n label: gettext('Show devices with status')\n },\n fieldGroup: [\n ...statusOptionsService.options.map(option => ({\n key: option.key,\n type: 'switch',\n props: {\n label: option.label,\n optionDataCy: option.key\n }\n }))\n ]\n },\n ...getBasicInputArrayFormFieldConfig({\n key: 'custom',\n label: gettext('or filter by custom status'),\n addText: gettext('Add next`custom status`'),\n tooltip: gettext('Use * as a wildcard character'),\n placeholder: gettext('restarting`SERVICE_STATUS`'),\n optional: true\n })\n ],\n getFilter(model) {\n const filter: any = {};\n filter.status = {\n __in: [\n ...entries(model?.statusOptions || {})\n .filter(([_, value]) => !!value)\n .map(([key, _]) => key),\n ...model.custom.filter(c => !!c)\n ]\n };\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: this.path }]\n };\n }\n}\n","import { Component, EventEmitter } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IManagedObject, InventoryService, IResultList, QueriesUtil } from '@c8y/client';\nimport {\n Column,\n DataGridService,\n DataSourceModifier,\n ServerSideDataResult\n} from '@c8y/ngx-components';\nimport { StatusOptionsService } from '../status-options';\nimport {\n LastUpdatedDateGridColumn,\n ServiceNameGridColumn,\n ServiceTypeGridColumn,\n StatusGridColumn\n} from './columns';\n\nexport const SERVICE_FRAGMENT = 'c8y_Service';\n\n@Component({\n selector: 'c8y-services-device-tab',\n templateUrl: 'services-device-tab.component.html'\n})\nexport class ServicesDeviceTabComponent {\n deviceId: string | number = this.route.snapshot.parent.data.contextData.id;\n\n sizeRequest: Promise<number>;\n sizeRequestDone = false;\n\n refresh$: EventEmitter<void> = new EventEmitter();\n pagination = {\n pageSize: 50,\n currentPage: 1\n };\n\n columns: Column[] = [\n new StatusGridColumn(this.statusOptionsService),\n new ServiceNameGridColumn(),\n new ServiceTypeGridColumn(),\n new LastUpdatedDateGridColumn()\n ];\n\n serverSideDataCallback: any;\n\n private queriesUtil: QueriesUtil = new QueriesUtil();\n\n constructor(\n private route: ActivatedRoute,\n private inventoryService: InventoryService,\n private gridService: DataGridService,\n private statusOptionsService: StatusOptionsService\n ) {\n this.serverSideDataCallback = this.onDataSourceModifier.bind(this);\n this.sizeRequest = this.inventoryService\n .childAdditionsList(this.deviceId, {\n query: `type eq ${SERVICE_FRAGMENT}`,\n withTotalPages: true,\n pageSize: 1\n })\n .then(response => {\n this.sizeRequestDone = true;\n return response?.paging?.totalPages;\n });\n }\n\n async onDataSourceModifier(\n dataSourceModifier: DataSourceModifier\n ): Promise<ServerSideDataResult> {\n const query = this.queriesUtil.buildQuery(\n this.queriesUtil.addAndFilter(this.gridService.getQueryObj(dataSourceModifier.columns), {\n type: SERVICE_FRAGMENT\n })\n );\n\n const dataRequest: Promise<IResultList<IManagedObject>> =\n this.inventoryService.childAdditionsList(this.deviceId, {\n query,\n withTotalPages: true,\n pageSize: dataSourceModifier.pagination.pageSize,\n currentPage: dataSourceModifier.pagination.currentPage\n });\n\n const filtererdSizeRequest: Promise<number> = this.inventoryService\n .childAdditionsList(this.deviceId, {\n query,\n withTotalPages: true,\n pageSize: 1\n })\n .then(response => response?.paging?.totalPages);\n\n const [dataResponse, size, filteredSize] = await Promise.all([\n dataRequest,\n this.sizeRequest,\n filtererdSizeRequest\n ]);\n\n const { res, data, paging } = dataResponse;\n\n const serverSideDataResult: ServerSideDataResult = {\n res,\n data,\n paging,\n filteredSize,\n size\n };\n\n return serverSideDataResult;\n }\n\n trackByName(_index, column: Column): string {\n return column.name;\n }\n}\n","<div class=\"content-fullpage\">\n <c8y-data-grid\n [title]=\"'Services' | translate\"\n [refresh]=\"refresh$\"\n [actionControls]=\"[]\"\n [pagination]=\"pagination\"\n [columns]=\"columns\"\n [infiniteScroll]=\"'auto'\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n >\n <div class=\"c8y-empty-state\">\n <ng-container *ngIf=\"!sizeRequestDone\">\n <c8y-loading></c8y-loading>\n </ng-container>\n <ng-container *ngIf=\"sizeRequestDone\">\n <ng-container *ngIf=\"(sizeRequest | async) === 0; else noResults\">\n <div class=\"text-center\">\n <h1 class=\"c8y-icon-duocolor\" c8yIcon=\"c8y-tools\"></h1>\n <h3 translate>No services to display.</h3>\n </div>\n </ng-container>\n <ng-template #noResults>\n <h1 c8yIcon=\"search\"></h1>\n <div>\n <p>\n <strong>{{ 'No results to display.' | translate }}</strong>\n </p>\n <small>{{ 'Refine your search terms or check your spelling.' | translate }}</small>\n </div>\n </ng-template>\n </ng-container>\n </div>\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</div>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate } from '@angular/router';\nimport { InventoryService } from '@c8y/client';\nimport { get } from 'lodash-es';\n\nconst SERVICE_FRAGMENT = 'c8y_Service';\n\n@Injectable()\nexport class ServicesDeviceTabGuard implements CanActivate {\n constructor(private inventoryService: InventoryService) {}\n\n canActivate(route: ActivatedRouteSnapshot): Promise<boolean> {\n const id = get(route, 'params.id') || get(route, 'parent.params.id');\n return this.inventoryService\n .childAdditionsList({ id }, { query: `type eq ${SERVICE_FRAGMENT}`, pageSize: 1 })\n .then(result => !!result?.data?.length);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { InventoryService, ISource } from '@c8y/client';\nimport {\n Breadcrumb,\n BreadcrumbFactory,\n BreadcrumbItem,\n gettext,\n ViewContext\n} from '@c8y/ngx-components';\n\n@Injectable()\nexport class ServicesBreadcrumbFactory implements BreadcrumbFactory {\n private contextData;\n\n constructor(private inventoryService: InventoryService) {}\n\n async get(route: ActivatedRoute) {\n const { context, contextData } = route.snapshot.data;\n const { routeConfig } = route.snapshot;\n\n this.contextData = contextData || this.contextData;\n\n if (\n (context === ViewContext.Service || (routeConfig as any)?.context === ViewContext.Service) &&\n !!this.contextData\n ) {\n const serviceMO = (\n await this.inventoryService.detail(this.contextData, { withParents: true })\n )?.data;\n const breadcrumb: Breadcrumb = { items: [] };\n const breadcrumbItems: BreadcrumbItem[] = [];\n const device: ISource = serviceMO?.additionParents?.references[0]?.managedObject;\n\n if (device) {\n breadcrumbItems.push({\n label: device.name,\n path: `/device/${device.id}`\n });\n breadcrumbItems.push({\n label: gettext('Services'),\n path: `/device/${device.id}/services`\n });\n breadcrumbItems.push({\n label: serviceMO.name\n } as BreadcrumbItem);\n }\n\n breadcrumb.items = breadcrumbItems;\n return breadcrumb;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { CoreModule, gettext, hookBreadcrumb, hookRoute, ViewContext } from '@c8y/ngx-components';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport {\n LastUpdatedDateCellRendererComponent,\n NameCellRendererComponent,\n StatusCellRendererComponent\n} from './columns';\nimport { ServicesDeviceTabComponent } from './services-device-tab.component';\nimport { ServicesDeviceTabGuard } from './services-device-tab.guard';\nimport { ServicesBreadcrumbFactory } from './services.breadcrumb-factory';\n\n@NgModule({\n imports: [CoreModule, RouterModule, TooltipModule],\n declarations: [\n ServicesDeviceTabComponent,\n LastUpdatedDateCellRendererComponent,\n NameCellRendererComponent,\n StatusCellRendererComponent\n ],\n providers: [\n ServicesDeviceTabGuard,\n ServicesBreadcrumbFactory,\n hookRoute({\n context: ViewContext.Device,\n path: 'services',\n component: ServicesDeviceTabComponent,\n label: gettext('Services'),\n icon: 'statistics',\n priority: 500,\n canActivate: [ServicesDeviceTabGuard]\n }),\n hookBreadcrumb(ServicesBreadcrumbFactory)\n ]\n})\nexport class ServicesDeviceTabModule {}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { ServicesDeviceTabModule } from './services-device-tab';\n\n@NgModule({\n imports: [CoreModule, ServicesDeviceTabModule]\n})\nexport class ServicesModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i2.StatusOptionsService","SERVICE_FRAGMENT","i1","i3","i4.StatusOptionsService","i5"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-services.mjs","sources":["../../services/services-device-tab/columns/last-updated-date.cell-renderer.component.ts","../../services/services-device-tab/columns/last-updated-date.device-grid-column.ts","../../services/services-device-tab/columns/name.cell-renderer.component.ts","../../services/services-device-tab/columns/name.grid-column.ts","../../services/services-device-tab/columns/service-type.grid-column.ts","../../services/status-options/status-options.model.ts","../../services/status-options/status-options.service.ts","../../services/services-device-tab/columns/status.cell-renderer.component.ts","../../services/services-device-tab/columns/status.cell-renderer.component.html","../../services/services-device-tab/columns/status.grid-column.ts","../../services/services-device-tab/services-device-tab.component.ts","../../services/services-device-tab/services-device-tab.component.html","../../services/services-device-tab/services-device-tab.guard.ts","../../services/services-device-tab/services.breadcrumb-factory.ts","../../services/services-device-tab/services-device-tab.module.ts","../../services/services.module.ts","../../services/c8y-ngx-components-services.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\n\n@Component({\n template: `{{ context.value | c8yDate }}`\n})\nexport class LastUpdatedDateCellRendererComponent {\n constructor(public context: CellRendererContext) {}\n}\n","import { FormGroup } from '@angular/forms';\nimport { BaseColumn, ColumnConfig, gettext } from '@c8y/ngx-components';\nimport { LastUpdatedDateCellRendererComponent } from './last-updated-date.cell-renderer.component';\n\nexport class LastUpdatedDateGridColumn extends BaseColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n\n this.path = 'lastUpdated';\n this.name = 'lastUpdatedDate';\n this.header = gettext('Last updated');\n this.cellRendererComponent = LastUpdatedDateCellRendererComponent;\n\n this.filterable = true;\n this.filteringConfig = {\n fields: [\n {\n type: 'object',\n key: 'lastUpdated',\n templateOptions: {\n label: gettext('Show services updated`between dates`')\n },\n fieldGroup: [\n {\n type: 'date-time',\n key: 'after',\n templateOptions: {\n label: gettext('from`date`')\n },\n expressionProperties: {\n 'templateOptions.maxDate': (model: any) => model?.before\n }\n },\n {\n type: 'date-time',\n key: 'before',\n templateOptions: {\n label: gettext('to`date`')\n },\n expressionProperties: {\n 'templateOptions.minDate': (model: any) => model?.after\n }\n }\n ]\n }\n ],\n formGroup: new FormGroup({}),\n getFilter: model => {\n const filter: any = {};\n const dates = model && model.lastUpdated;\n if (dates && (dates.after || dates.before)) {\n filter.__and = [];\n if (dates.after) {\n const after = this.formatDate(dates.after);\n filter.__and.push({\n 'lastUpdated.date': { __gt: after }\n });\n }\n if (dates.before) {\n const before = this.formatDate(dates.before);\n filter.__and.push({\n 'lastUpdated.date': { __lt: before }\n });\n }\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: 'lastUpdated.date' }]\n };\n }\n\n protected formatDate(dateToFormat: string): string {\n return new Date(dateToFormat).toISOString();\n }\n}\n","import { Component } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\n\n@Component({\n template: `\n <a [routerLink]=\"['/service', context.item.id]\" [title]=\"context.item.name\" class=\"interact\">\n {{ context.item.name }}\n </a>\n `\n})\nexport class NameCellRendererComponent {\n constructor(public context: CellRendererContext) {}\n}\n","import {\n BaseColumn,\n ColumnConfig,\n getBasicInputArrayFormFieldConfig,\n gettext\n} from '@c8y/ngx-components';\nimport { NameCellRendererComponent } from './name.cell-renderer.component';\n\nexport class ServiceNameGridColumn extends BaseColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n this.name = 'name';\n this.path = 'name';\n this.header = gettext('Name');\n this.cellRendererComponent = NameCellRendererComponent;\n\n this.filterable = true;\n this.filteringConfig = {\n fields: getBasicInputArrayFormFieldConfig({\n key: 'names',\n label: gettext('Filter services by name'),\n addText: gettext('Add next`name`'),\n tooltip: gettext('Use * as a wildcard character'),\n placeholder: gettext('daemon`SERVICE_NAME`')\n }),\n getFilter(model: any): any {\n const filter: any = {};\n if (model.names.length) {\n filter.name = { __in: model.names };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: this.path }]\n };\n }\n}\n","import {\n BaseColumn,\n ColumnConfig,\n getBasicInputArrayFormFieldConfig,\n gettext\n} from '@c8y/ngx-components';\n\nexport class ServiceTypeGridColumn extends BaseColumn {\n constructor(initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n this.name = 'serviceType';\n this.path = 'serviceType';\n this.header = gettext('Type');\n\n this.filterable = true;\n\n this.filteringConfig = {\n fields: getBasicInputArrayFormFieldConfig({\n key: 'serviceTypes',\n label: gettext('Filter services by type'),\n addText: gettext('Add next`type`'),\n tooltip: gettext('Use * as a wildcard character'),\n placeholder: 'systemd'\n }),\n getFilter(model: any): any {\n const filter: any = {};\n if (model.serviceTypes.length) {\n filter.serviceType = { __in: model.serviceTypes };\n }\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: this.path }]\n };\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { gettext, hookGeneric, GenericHookType, HookOptions } from '@c8y/ngx-components';\n\n/**\n * Extension hook allowing to register custom service statuses and configure their visual presentation.\n * @deprecated Consider using the `hookServiceStatus` function instead.\n */\nexport const HOOK_SERVICE_STATUS = new InjectionToken<StatusOption | StatusOption[]>(\n 'HOOK_SERVICE_STATUS'\n);\n\n/**\n * Extension hook allowing to register custom service statuses and configure their visual presentation.\n *\n * You can either provide a single `StatusOption` as parameter:\n * ```typescript\n * hookServiceStatus(...)\n * ```\n *\n * Or an array to directly register multiple:\n * ```typescript\n * hookServiceStatus([...])\n * ```\n *\n * Or you provide an Service that implements `ExtensionFactory<StatusOption>`\n * ```typescript\n * export class MyServiceStatusFactory implements ExtensionFactory<StatusOption> {...}\n * ...\n * hookServiceStatus(MyServiceStatusFactory)\n * ```\n * A typed alternative to `HOOK_SERVICE_STATUS`.\n * @param status The `StatusOption`'s or `ExtensionFactory` to be provided.\n * @returns An `Provider` to be provided in your module.\n */\nexport function hookServiceStatus(\n status: GenericHookType<StatusOption>,\n options?: Partial<HookOptions>\n) {\n return hookGeneric<StatusOption>(status, HOOK_SERVICE_STATUS, options);\n}\n\n/**\n * Defines the visual presentation of a service status option.\n */\nexport interface StatusOption {\n /**\n * Key used for this status in the c8y_Service object.\n */\n key: string;\n /**\n * Human readable name of the status used to be translated.\n */\n label: string;\n /**\n * An icon to use to display the status.\n */\n icon: string;\n /**\n * CSS class(es) used to e.g. accent the status (contextual color, etc.)\n */\n class?: string;\n}\n\n/**\n * Standard status options supported by the platform.\n */\nexport const SERVICE_STATUS_OPTIONS: StatusOption[] = [\n {\n key: 'up',\n label: gettext('Up'),\n icon: 'check-circle',\n class: 'text-success'\n },\n {\n key: 'down',\n label: gettext('Down'),\n icon: 'exclamation-circle',\n class: 'text-danger'\n },\n {\n key: 'unknown',\n label: gettext('Unknown'),\n icon: 'inactive-state'\n }\n];\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { flatten } from 'lodash-es';\nimport { HOOK_SERVICE_STATUS, SERVICE_STATUS_OPTIONS, StatusOption } from './status-options.model';\n\n/**\n * The service for system wide registered service status options.\n * It provides the standard service statuses plus all custom status options\n * registered with the <code>HOOK_SERVICE_STATUS</code> extension hook.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class StatusOptionsService {\n get options(): StatusOption[] {\n return this._options;\n }\n\n private _options: StatusOption[];\n\n constructor(\n @Optional() @Inject(HOOK_SERVICE_STATUS) options: Array<StatusOption | StatusOption[]>\n ) {\n this._options = [...SERVICE_STATUS_OPTIONS, ...flatten(options)];\n }\n}\n","import { Component } from '@angular/core';\nimport { CellRendererContext } from '@c8y/ngx-components';\nimport { StatusOptionsService } from '../../status-options';\n\n@Component({\n templateUrl: 'status.cell-renderer.component.html'\n})\nexport class StatusCellRendererComponent {\n constructor(\n public context: CellRendererContext,\n public statusOptionsService: StatusOptionsService\n ) {}\n}\n","<span [ngSwitch]=\"context.item.status\">\n <ng-container *ngFor=\"let option of statusOptionsService.options\">\n <i\n *ngSwitchCase=\"option.key\"\n [c8yIcon]=\"option.icon\"\n class=\"{{ option.class }}\"\n [tooltip]=\"option.label | translate\"\n container=\"body\"\n placement=\"top\"\n ></i>\n </ng-container>\n <i\n *ngSwitchDefault\n c8yIcon=\"job\"\n class=\"text-primary\"\n [tooltip]=\"context.item.status\"\n container=\"body\"\n placement=\"top\"\n ></i>\n</span>\n","import {\n BaseColumn,\n ColumnConfig,\n ColumnDataType,\n getBasicInputArrayFormFieldConfig,\n gettext\n} from '@c8y/ngx-components';\nimport { entries } from 'lodash-es';\nimport { StatusOptionsService } from '../../status-options';\nimport { StatusCellRendererComponent } from './status.cell-renderer.component';\n\nexport class StatusGridColumn extends BaseColumn {\n constructor(statusOptionsService: StatusOptionsService, initialColumnConfig?: ColumnConfig) {\n super(initialColumnConfig);\n this.name = 'status';\n this.path = 'status';\n this.header = gettext('Status');\n this.dataType = ColumnDataType.Icon;\n this.cellRendererComponent = StatusCellRendererComponent;\n this.filterable = true;\n this.resizable = false;\n\n this.filteringConfig = {\n fields: [\n {\n key: 'statusOptions',\n type: 'object',\n props: {\n label: gettext('Show devices with status')\n },\n fieldGroup: [\n ...statusOptionsService.options.map(option => ({\n key: option.key,\n type: 'switch',\n props: {\n label: option.label,\n optionDataCy: option.key\n }\n }))\n ]\n },\n ...getBasicInputArrayFormFieldConfig({\n key: 'custom',\n label: gettext('or filter by custom status'),\n addText: gettext('Add next`custom status`'),\n tooltip: gettext('Use * as a wildcard character'),\n placeholder: gettext('restarting`SERVICE_STATUS`'),\n optional: true\n })\n ],\n getFilter(model) {\n const filter: any = {};\n filter.status = {\n __in: [\n ...entries(model?.statusOptions || {})\n .filter(([_, value]) => !!value)\n .map(([key, _]) => key),\n ...model.custom.filter(c => !!c)\n ]\n };\n return filter;\n }\n };\n\n this.sortable = true;\n this.sortingConfig = {\n pathSortingConfigs: [{ path: this.path }]\n };\n }\n}\n","import { Component, EventEmitter } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { IManagedObject, InventoryService, IResultList, QueriesUtil } from '@c8y/client';\nimport {\n Column,\n DataGridService,\n DataSourceModifier,\n ServerSideDataResult\n} from '@c8y/ngx-components';\nimport { StatusOptionsService } from '../status-options';\nimport {\n LastUpdatedDateGridColumn,\n ServiceNameGridColumn,\n ServiceTypeGridColumn,\n StatusGridColumn\n} from './columns';\n\nexport const SERVICE_FRAGMENT = 'c8y_Service';\n\n@Component({\n selector: 'c8y-services-device-tab',\n templateUrl: 'services-device-tab.component.html'\n})\nexport class ServicesDeviceTabComponent {\n deviceId: string | number = this.route.snapshot.parent.data.contextData.id;\n\n sizeRequest: Promise<number>;\n sizeRequestDone = false;\n\n refresh$: EventEmitter<void> = new EventEmitter();\n pagination = {\n pageSize: 50,\n currentPage: 1\n };\n\n columns: Column[] = [\n new StatusGridColumn(this.statusOptionsService),\n new ServiceNameGridColumn(),\n new ServiceTypeGridColumn(),\n new LastUpdatedDateGridColumn()\n ];\n\n serverSideDataCallback: any;\n\n private queriesUtil: QueriesUtil = new QueriesUtil();\n\n constructor(\n private route: ActivatedRoute,\n private inventoryService: InventoryService,\n private gridService: DataGridService,\n private statusOptionsService: StatusOptionsService\n ) {\n this.serverSideDataCallback = this.onDataSourceModifier.bind(this);\n this.sizeRequest = this.inventoryService\n .childAdditionsList(this.deviceId, {\n query: `type eq ${SERVICE_FRAGMENT}`,\n withTotalPages: true,\n pageSize: 1\n })\n .then(response => {\n this.sizeRequestDone = true;\n return response?.paging?.totalPages;\n });\n }\n\n async onDataSourceModifier(\n dataSourceModifier: DataSourceModifier\n ): Promise<ServerSideDataResult> {\n const query = this.queriesUtil.buildQuery(\n this.queriesUtil.addAndFilter(this.gridService.getQueryObj(dataSourceModifier.columns), {\n type: SERVICE_FRAGMENT\n })\n );\n\n const dataRequest: Promise<IResultList<IManagedObject>> =\n this.inventoryService.childAdditionsList(this.deviceId, {\n query,\n withTotalPages: true,\n pageSize: dataSourceModifier.pagination.pageSize,\n currentPage: dataSourceModifier.pagination.currentPage\n });\n\n const filtererdSizeRequest: Promise<number> = this.inventoryService\n .childAdditionsList(this.deviceId, {\n query,\n withTotalPages: true,\n pageSize: 1\n })\n .then(response => response?.paging?.totalPages);\n\n const [dataResponse, size, filteredSize] = await Promise.all([\n dataRequest,\n this.sizeRequest,\n filtererdSizeRequest\n ]);\n\n const { res, data, paging } = dataResponse;\n\n const serverSideDataResult: ServerSideDataResult = {\n res,\n data,\n paging,\n filteredSize,\n size\n };\n\n return serverSideDataResult;\n }\n\n trackByName(_index, column: Column): string {\n return column.name;\n }\n}\n","<div class=\"content-fullpage\">\n <c8y-data-grid\n [title]=\"'Services' | translate\"\n [refresh]=\"refresh$\"\n [actionControls]=\"[]\"\n [pagination]=\"pagination\"\n [columns]=\"columns\"\n [infiniteScroll]=\"'auto'\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n >\n <div class=\"c8y-empty-state\">\n <ng-container *ngIf=\"!sizeRequestDone\">\n <c8y-loading></c8y-loading>\n </ng-container>\n <ng-container *ngIf=\"sizeRequestDone\">\n <ng-container *ngIf=\"(sizeRequest | async) === 0; else noResults\">\n <div class=\"text-center\">\n <h1 class=\"c8y-icon-duocolor\" c8yIcon=\"c8y-tools\"></h1>\n <h3 translate>No services to display.</h3>\n </div>\n </ng-container>\n <ng-template #noResults>\n <h1 c8yIcon=\"search\"></h1>\n <div>\n <p>\n <strong>{{ 'No results to display.' | translate }}</strong>\n </p>\n <small>{{ 'Refine your search terms or check your spelling.' | translate }}</small>\n </div>\n </ng-template>\n </ng-container>\n </div>\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</div>\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate } from '@angular/router';\nimport { InventoryService } from '@c8y/client';\nimport { get } from 'lodash-es';\n\nconst SERVICE_FRAGMENT = 'c8y_Service';\n\n@Injectable()\nexport class ServicesDeviceTabGuard implements CanActivate {\n constructor(private inventoryService: InventoryService) {}\n\n canActivate(route: ActivatedRouteSnapshot): Promise<boolean> {\n const id = get(route, 'params.id') || get(route, 'parent.params.id');\n return this.inventoryService\n .childAdditionsList({ id }, { query: `type eq ${SERVICE_FRAGMENT}`, pageSize: 1 })\n .then(result => !!result?.data?.length);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { InventoryService, ISource } from '@c8y/client';\nimport {\n Breadcrumb,\n BreadcrumbFactory,\n BreadcrumbItem,\n gettext,\n ViewContext\n} from '@c8y/ngx-components';\n\n@Injectable()\nexport class ServicesBreadcrumbFactory implements BreadcrumbFactory {\n private contextData;\n\n constructor(private inventoryService: InventoryService) {}\n\n async get(route: ActivatedRoute) {\n const { context, contextData } = route.snapshot.data;\n const { routeConfig } = route.snapshot;\n\n this.contextData = contextData || this.contextData;\n\n if (\n (context === ViewContext.Service || (routeConfig as any)?.context === ViewContext.Service) &&\n !!this.contextData\n ) {\n const serviceMO = (\n await this.inventoryService.detail(this.contextData, { withParents: true })\n )?.data;\n const breadcrumb: Breadcrumb = { items: [] };\n const breadcrumbItems: BreadcrumbItem[] = [];\n const device: ISource = serviceMO?.additionParents?.references[0]?.managedObject;\n\n if (device) {\n breadcrumbItems.push({\n label: device.name,\n path: `/device/${device.id}`\n });\n breadcrumbItems.push({\n label: gettext('Services'),\n path: `/device/${device.id}/services`\n });\n breadcrumbItems.push({\n label: serviceMO.name\n } as BreadcrumbItem);\n }\n\n breadcrumb.items = breadcrumbItems;\n return breadcrumb;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { CoreModule, gettext, hookBreadcrumb, hookRoute, ViewContext } from '@c8y/ngx-components';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport {\n LastUpdatedDateCellRendererComponent,\n NameCellRendererComponent,\n StatusCellRendererComponent\n} from './columns';\nimport { ServicesDeviceTabComponent } from './services-device-tab.component';\nimport { ServicesDeviceTabGuard } from './services-device-tab.guard';\nimport { ServicesBreadcrumbFactory } from './services.breadcrumb-factory';\n\n@NgModule({\n imports: [CoreModule, RouterModule, TooltipModule],\n declarations: [\n ServicesDeviceTabComponent,\n LastUpdatedDateCellRendererComponent,\n NameCellRendererComponent,\n StatusCellRendererComponent\n ],\n providers: [\n ServicesDeviceTabGuard,\n ServicesBreadcrumbFactory,\n hookRoute({\n context: ViewContext.Device,\n path: 'services',\n component: ServicesDeviceTabComponent,\n label: gettext('Services'),\n icon: 'statistics',\n priority: 500,\n canActivate: [ServicesDeviceTabGuard]\n }),\n hookBreadcrumb(ServicesBreadcrumbFactory)\n ]\n})\nexport class ServicesDeviceTabModule {}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { ServicesDeviceTabModule } from './services-device-tab';\n\n@NgModule({\n imports: [CoreModule, ServicesDeviceTabModule]\n})\nexport class ServicesModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i2.StatusOptionsService","SERVICE_FRAGMENT","i1","i3","i4.StatusOptionsService","i5"],"mappings":"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"}
@@ -11893,7 +11893,6 @@ class DocsService extends ExtensionPointWithoutStateForPlugins {
11893
11893
  get() {
11894
11894
  // use the function as a factory
11895
11895
  const { links, noDefault, excludeDefault = [] } = this.options.get('docs', {});
11896
- const { supportUrl } = this.app.state;
11897
11896
  let staticLinks = noDefault
11898
11897
  ? []
11899
11898
  : documentationItems
@@ -11909,14 +11908,6 @@ class DocsService extends ExtensionPointWithoutStateForPlugins {
11909
11908
  });
11910
11909
  staticLinks = staticLinks.concat(links);
11911
11910
  }
11912
- if (supportUrl) {
11913
- staticLinks.push({
11914
- icon: 'comments',
11915
- label: gettext('Forum support'),
11916
- url: supportUrl,
11917
- type: 'doc'
11918
- });
11919
- }
11920
11911
  return staticLinks;
11921
11912
  }
11922
11913
  setupItemsObservable() {