{"version":3,"file":"c8y-ngx-components-device-parameters.mjs","sources":["../../device-parameters/device-parameters-list.component.ts","../../device-parameters/device-parameters-list.component.html","../../device-parameters/device-parameters-tab.guard.ts","../../device-parameters/index.ts","../../device-parameters/c8y-ngx-components-device-parameters.ts"],"sourcesContent":["import { Component, inject, OnInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n  Column,\n  DataGridComponent,\n  Pagination,\n  AssetPropertyService,\n  C8yTranslatePipe,\n  EmptyStateComponent,\n  IconDirective,\n  DeviceParameter,\n  gettext\n} from '@c8y/ngx-components';\nimport { ActivatedRoute } from '@angular/router';\nimport { IManagedObject } from '@c8y/client';\nimport { difference } from 'lodash-es';\n\n@Component({\n  standalone: true,\n  selector: 'c8y-device-parameters-list',\n  imports: [CommonModule, IconDirective, C8yTranslatePipe, EmptyStateComponent, DataGridComponent],\n  templateUrl: 'device-parameters-list.component.html'\n})\nexport class DeviceParametersListComponent implements OnInit {\n  private readonly route = inject(ActivatedRoute);\n  private readonly assetPropertyService: AssetPropertyService = inject(AssetPropertyService);\n  private readonly device: IManagedObject = this.route.snapshot.parent?.data?.contextData;\n\n  rows: DeviceParameter[] = [];\n  pagination: Pagination = { currentPage: 1, pageSize: 25 };\n  columns: Column[] = [\n    { name: 'Title', path: 'title', header: gettext('Title') },\n    { name: 'Key', path: 'key', header: gettext('Key') },\n    { name: 'Value', path: 'value', header: gettext('Value') },\n    { name: 'Type', path: 'type', header: gettext('Type') }\n  ];\n\n  async ngOnInit() {\n    await this.loadData();\n  }\n\n  async loadData() {\n    const paramKeys = this.getParameterKeys(this.device);\n\n    if (!paramKeys.length) {\n      return {\n        data: [],\n        res: {} as any,\n        size: 0,\n        filteredSize: 0\n      };\n    }\n\n    const result = await this.assetPropertyService.list({ identifiers: paramKeys });\n    const definitions = result.data || [];\n\n    this.rows = paramKeys.map(key => {\n      const def = definitions.find(d => d.identifier === key);\n      const value = this.device[key];\n\n      return {\n        title: def?.jsonSchema?.title || '',\n        key,\n        value: typeof value === 'object' ? JSON.stringify(value) : value,\n        type: def?.jsonSchema?.type || typeof value\n      };\n    });\n  }\n\n  private getParameterKeys(device: IManagedObject): string[] {\n    const excluded = [\n      'id',\n      'self',\n      'owner',\n      'name',\n      'type',\n      'lastUpdated',\n      'creationTime',\n      'childDevices',\n      'childAssets',\n      'childAdditions',\n      'deviceParents',\n      'assetParents',\n      'additionParents',\n      'c8y_IsDevice',\n      'com_cumulocity_model_Agent'\n    ];\n    return difference(Object.keys(device), excluded);\n  }\n}\n","<div class=\"content-fullpage\">\n  <c8y-data-grid\n    [title]=\"'Parameters' | translate\"\n    [columns]=\"columns\"\n    [rows]=\"rows\"\n    [pagination]=\"pagination\"\n    (onReload)=\"loadData()\"\n  >\n    <c8y-ui-empty-state\n      icon=\"search\"\n      [title]=\"'No parameters to display.' | translate\"\n      [subtitle]=\"'Parameters used in the device will be displayed here' | translate\"\n      horizontal\n    ></c8y-ui-empty-state>\n  </c8y-data-grid>\n</div>\n","import { Injectable } from '@angular/core';\nimport { CanActivate } from '@angular/router';\nimport { ApplicationService } from '@c8y/client';\n\nconst DEVICE_PARAMETERS_MICROSERVICE = 'device-parameters';\nconst DTM_MICROSERVICE = 'dtm';\n\n@Injectable({ providedIn: 'root' })\nexport class DeviceParametersTabGuard implements CanActivate {\n  constructor(private applicationService: ApplicationService) {}\n\n  async canActivate(): Promise<boolean> {\n    const deviceParametersAvailable = await this.applicationService\n      .isAvailable(DEVICE_PARAMETERS_MICROSERVICE)\n      .then(({ data }) => data)\n      .catch(() => false);\n\n    const dtmAvailable = await this.applicationService\n      .isAvailable(DTM_MICROSERVICE)\n      .then(({ data }) => data)\n      .catch(() => false);\n\n    return deviceParametersAvailable && dtmAvailable;\n  }\n}\n","import { hookRoute, Route, ViewContext, gettext } from '@c8y/ngx-components';\nimport { DeviceParametersListComponent } from './device-parameters-list.component';\nimport { DeviceParametersTabGuard } from './device-parameters-tab.guard';\n\nconst DEVICE_PARAMETERS_ROUTE: Route = {\n  path: 'parameters',\n  context: ViewContext.Device,\n  component: DeviceParametersListComponent,\n  label: gettext('Parameters'),\n  icon: 'sliders',\n  priority: 650,\n  canActivate: [DeviceParametersTabGuard]\n};\n\nexport const deviceParametersFeatureProvider = [hookRoute(DEVICE_PARAMETERS_ROUTE)];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}