@c8y/ngx-components 1023.79.1 → 1023.80.2

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 (34) hide show
  1. package/ai/agent-chat/index.d.ts +22 -11
  2. package/ai/agent-chat/index.d.ts.map +1 -1
  3. package/ai/ai-chat/index.d.ts +30 -9
  4. package/ai/ai-chat/index.d.ts.map +1 -1
  5. package/ai/index.d.ts +64 -49
  6. package/ai/index.d.ts.map +1 -1
  7. package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs +235 -127
  8. package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs.map +1 -1
  9. package/fesm2022/c8y-ngx-components-ai-ai-chat.mjs +104 -44
  10. package/fesm2022/c8y-ngx-components-ai-ai-chat.mjs.map +1 -1
  11. package/fesm2022/c8y-ngx-components-ai.mjs +92 -61
  12. package/fesm2022/c8y-ngx-components-ai.mjs.map +1 -1
  13. package/fesm2022/c8y-ngx-components-global-context.mjs +23 -3
  14. package/fesm2022/c8y-ngx-components-global-context.mjs.map +1 -1
  15. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs +31 -29
  16. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs.map +1 -1
  17. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-list.mjs +47 -8
  18. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-list.mjs.map +1 -1
  19. package/global-context/index.d.ts +17 -2
  20. package/global-context/index.d.ts.map +1 -1
  21. package/locales/de.po +3 -0
  22. package/locales/es.po +3 -0
  23. package/locales/fr.po +3 -0
  24. package/locales/ja_JP.po +3 -0
  25. package/locales/ko.po +3 -0
  26. package/locales/locales.pot +3 -0
  27. package/locales/nl.po +3 -0
  28. package/locales/pl.po +3 -0
  29. package/locales/pt_BR.po +3 -0
  30. package/locales/zh_CN.po +3 -0
  31. package/locales/zh_TW.po +3 -0
  32. package/package.json +1 -1
  33. package/widgets/implementations/datapoints-list/index.d.ts +5 -0
  34. package/widgets/implementations/datapoints-list/index.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-widgets-implementations-datapoints-list.mjs","sources":["../../widgets/implementations/datapoints-list/datapoints-list.constants.ts","../../widgets/implementations/datapoints-list/datapoints-list-view/datapoints-list-view.service.ts","../../widgets/implementations/datapoints-list/datapoints-list-view/datapoints-list-fetch.service.ts","../../widgets/implementations/datapoints-list/datapoints-list-view/datapoints-list-view.component.ts","../../widgets/implementations/datapoints-list/datapoints-list-view/datapoints-list-view.component.html","../../widgets/implementations/datapoints-list/datapoints-list-config/datapoints-list-config.component.ts","../../widgets/implementations/datapoints-list/datapoints-list-config/datapoints-list-config.component.html","../../widgets/implementations/datapoints-list/c8y-ngx-components-widgets-implementations-datapoints-list.ts"],"sourcesContent":["import { gettext } from '@c8y/ngx-components/gettext';\n\nimport { ColumnConfig } from './datapoints-list-widget.model';\n\n/**\n * Default column configuration for datapoints list widget\n */\nexport const DEFAULT_DATAPOINTS_LIST_COLUMNS: ColumnConfig[] = [\n { id: 'kpi', label: gettext('Label'), visible: true, order: 0 },\n { id: 'target', label: gettext('Target'), visible: true, order: 1 },\n { id: 'current', label: gettext('Current'), visible: true, order: 2 },\n { id: 'diff', label: gettext('Diff'), visible: true, order: 3 },\n { id: 'diffPercentage', label: gettext('Diff %'), visible: true, order: 4 },\n { id: 'asset', label: gettext('Asset'), visible: true, order: 5 }\n];\n","import { Injectable } from '@angular/core';\nimport { IMeasurement } from '@c8y/client';\nimport { KPIDetails } from '@c8y/ngx-components/datapoint-selector';\nimport { DatapointWithMeasurement } from '../datapoints-list-widget.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DatapointsListService {\n /**\n * Calculate difference between current value and target\n * @param datapoint - Datapoint record\n * @returns Difference value or null if value/target is undefined\n */\n diff(datapoint: DatapointWithMeasurement): number | null {\n const { currentValue, target } = datapoint;\n // != checks both null and undefined\n if (currentValue != null && target != null) {\n return currentValue - target;\n }\n return null;\n }\n\n /**\n * Calculate percentage difference between current value and target\n * @param datapoint - Datapoint record\n * @returns Percentage difference or null if target is undefined\n */\n diffPercent(datapoint: DatapointWithMeasurement): number | null {\n const target = datapoint.target;\n\n if (target !== null && target !== undefined) {\n const _diff = this.diff(datapoint);\n if (_diff !== null) {\n // Intentionally allows division by zero to return Infinity\n // when target is 0, representing mathematically undefined percentage.\n // This follows the previous AngularJS implementation behavior.\n return (_diff / target) * 100;\n }\n }\n\n return null;\n }\n\n /**\n * Get fraction size format based on whether the value is an integer\n * @param value - Number to check\n * @param defaultFractionSize - Default fraction size format to use for non-integers\n * @returns Fraction size format ('1.0-0' for integers, defaultFractionSize for decimals)\n */\n getFractionSize(value: number | null | undefined, defaultFractionSize: string): string {\n if (value === null || value === undefined) {\n return defaultFractionSize;\n }\n return value % 1 === 0 ? '1.0-0' : defaultFractionSize;\n }\n\n /**\n * Extract current value and timestamp from a measurement\n * @param datapoint - Datapoint configuration (contains fragment and series)\n * @param measurement - Measurement to extract value from\n * @returns Object containing extracted value and timestamp (null if not found)\n */\n extractMeasurementValue(\n datapoint: KPIDetails,\n measurement: IMeasurement | undefined\n ): { value: number | null; timestamp: Date | null } {\n // Return null values if measurement is missing\n if (!measurement) {\n return { value: null, timestamp: null };\n }\n\n // Return null values if datapoint configuration is incomplete\n if (!datapoint.fragment || !datapoint.series) {\n return { value: null, timestamp: null };\n }\n\n // Access the fragment (e.g., \"c8y_Steam\")\n const fragmentData = measurement[datapoint.fragment];\n if (!fragmentData) {\n return { value: null, timestamp: null };\n }\n\n // Access the series within the fragment (e.g., \"Temperature\")\n const seriesData = fragmentData[datapoint.series];\n if (!seriesData || seriesData.value === undefined) {\n return { value: null, timestamp: null };\n }\n\n // Extract and return the value and timestamp\n return {\n value: seriesData.value,\n timestamp: new Date(measurement.time)\n };\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport {\n IManagedObject,\n IMeasurement,\n IMeasurementFilter,\n InventoryService,\n MeasurementService\n} from '@c8y/client';\nimport { AlertService } from '@c8y/ngx-components';\nimport { KPIDetails } from '@c8y/ngx-components/datapoint-selector';\nimport { DatapointWithMeasurement } from '../datapoints-list-widget.model';\nimport { DatapointsListService } from './datapoints-list-view.service';\n\ninterface FetchConfig {\n fractionSize: string;\n dateFrom?: string;\n dateTo?: string;\n}\n\ninterface FetchResult {\n dataPoints: DatapointWithMeasurement[];\n seriesWithoutPermissionCount: number;\n targetManagedObjects: Map<string, IManagedObject>;\n}\n\ninterface SingleDatapointResult {\n datapoint: DatapointWithMeasurement;\n hasPermissionError: boolean;\n}\n\n/**\n * Service that handles all data-fetching operations for the datapoints list widget.\n * Encapsulates measurement fetching, data enrichment, and error handling.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DatapointsListFetchService {\n private alertService = inject(AlertService);\n private measurementService = inject(MeasurementService);\n private inventoryService = inject(InventoryService);\n private datapointsListService = inject(DatapointsListService);\n\n /**\n * Fetch measurements for all active datapoints and enrich them with calculated values.\n */\n async fetchDatapointsWithMeasurements(\n datapoints: KPIDetails[],\n config: FetchConfig\n ): Promise<FetchResult> {\n const targetManagedObjects = new Map<string, IManagedObject>();\n\n const results = await this.fetchAllDatapoints(datapoints, config);\n\n const enrichedDataPoints = results.map(r => r.datapoint);\n const seriesWithoutPermissionCount = results.filter(r => r.hasPermissionError).length;\n\n await this.fetchTargetManagedObjects(enrichedDataPoints, targetManagedObjects);\n\n return {\n dataPoints: enrichedDataPoints,\n seriesWithoutPermissionCount,\n targetManagedObjects\n };\n }\n\n /**\n * Fetch and enrich all datapoints in parallel.\n * Each datapoint fetch is independent - one failure doesn't affect others.\n */\n private fetchAllDatapoints(\n datapoints: KPIDetails[],\n config: FetchConfig\n ): Promise<SingleDatapointResult[]> {\n return Promise.all(\n datapoints.map((datapoint, index) => this.fetchSingleDatapoint(datapoint, index, config))\n );\n }\n\n /**\n * Fetch measurement for a single datapoint and return enriched result.\n * Handles errors gracefully - returns empty datapoint on failure.\n */\n private async fetchSingleDatapoint(\n datapoint: KPIDetails,\n index: number,\n config: FetchConfig\n ): Promise<SingleDatapointResult> {\n try {\n const measurement = await this.getMeasurementForDatapoint(datapoint, config);\n const measurementValue = this.datapointsListService.extractMeasurementValue(\n datapoint,\n measurement\n );\n\n return {\n datapoint: this.createEnrichedDatapoint(datapoint, index, measurementValue, config),\n hasPermissionError: false\n };\n } catch (error) {\n return this.handleFetchError(error, datapoint, index, config);\n }\n }\n\n /**\n * Handle fetch error and return appropriate result.\n */\n private handleFetchError(\n error: unknown,\n datapoint: KPIDetails,\n index: number,\n config: FetchConfig\n ): SingleDatapointResult {\n const isPermissionError = (error as HttpErrorResponse)?.status === 403;\n\n if (!isPermissionError) {\n this.alertService.addServerFailure(error);\n }\n\n return {\n datapoint: this.createEnrichedDatapoint(\n datapoint,\n index,\n { value: null, timestamp: null },\n config\n ),\n hasPermissionError: isPermissionError\n };\n }\n\n /**\n * Create an enriched datapoint with measurement value and all calculated fields.\n */\n private createEnrichedDatapoint(\n datapoint: KPIDetails,\n index: number,\n measurementValue: { value: number | null; timestamp: Date | null },\n config: FetchConfig\n ): DatapointWithMeasurement {\n const enrichedDatapoint: DatapointWithMeasurement = {\n ...datapoint,\n id: this.getDatapointId(datapoint, index),\n currentValue: measurementValue.value,\n timestamp: measurementValue.timestamp\n };\n\n this.calculateDerivedFields(enrichedDatapoint, config.fractionSize);\n\n return enrichedDatapoint;\n }\n\n /**\n * Calculate and set all derived fields on a datapoint.\n * Includes diff, diffPercent, and fraction sizes for display formatting.\n */\n private calculateDerivedFields(datapoint: DatapointWithMeasurement, fractionSize: string): void {\n datapoint.diffValue = this.datapointsListService.diff(datapoint);\n datapoint.diffPercentValue = this.datapointsListService.diffPercent(datapoint);\n datapoint.currentFractionSize = this.datapointsListService.getFractionSize(\n datapoint.currentValue,\n fractionSize\n );\n datapoint.diffFractionSize = this.datapointsListService.getFractionSize(\n datapoint.diffValue,\n fractionSize\n );\n datapoint.diffPercentFractionSize = this.datapointsListService.getFractionSize(\n datapoint.diffPercentValue,\n fractionSize\n );\n }\n\n /**\n * Fetch managed objects for device status display.\n */\n private async fetchTargetManagedObjects(\n dataPoints: DatapointWithMeasurement[],\n targetManagedObjects: Map<string, IManagedObject>\n ): Promise<void> {\n const uniqueTargetIds = this.getUniqueTargetIds(dataPoints);\n\n if (uniqueTargetIds.size === 0) {\n return;\n }\n\n await Promise.all(\n Array.from(uniqueTargetIds).map(targetId =>\n this.fetchManagedObject(targetId, targetManagedObjects)\n )\n );\n }\n\n /**\n * Get unique target IDs from datapoints.\n */\n private getUniqueTargetIds(dataPoints: DatapointWithMeasurement[]): Set<string> {\n const uniqueTargetIds = new Set<string>();\n\n for (const dp of dataPoints) {\n if (dp.__target?.id) {\n uniqueTargetIds.add(dp.__target.id.toString());\n }\n }\n\n return uniqueTargetIds;\n }\n\n /**\n * Fetch a single managed object and add to the map.\n */\n private async fetchManagedObject(\n targetId: string,\n targetManagedObjects: Map<string, IManagedObject>\n ): Promise<void> {\n try {\n const { data } = await this.inventoryService.detail(targetId);\n targetManagedObjects.set(targetId, data);\n } catch (error) {\n this.alertService.addServerFailure(error);\n }\n }\n\n /**\n * Fetch the most recent measurement for a datapoint within the specified date range.\n */\n private async getMeasurementForDatapoint(\n datapoint: KPIDetails,\n config: FetchConfig\n ): Promise<IMeasurement | null> {\n const sourceId = datapoint.__target?.id;\n if (!sourceId || !datapoint.fragment || !datapoint.series) {\n return null;\n }\n\n const filter: IMeasurementFilter = {\n dateFrom: config.dateFrom || '1970-01-01',\n dateTo: config.dateTo || new Date().toISOString(),\n source: sourceId,\n valueFragmentSeries: datapoint.series,\n valueFragmentType: datapoint.fragment,\n pageSize: 1,\n revert: true\n };\n\n const { data } = await this.measurementService.list(filter);\n return data?.[0] ?? null;\n }\n\n /**\n * Get unique ID for a datapoint.\n * Uses target ID if available, otherwise generates fallback based on index.\n */\n private getDatapointId(datapoint: KPIDetails, fallbackIndex: number): string {\n return datapoint.__target?.id?.toString() || `dp-${fallbackIndex}`;\n }\n}\n","import { DecimalPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n linkedSignal,\n OnInit,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { Router } from '@angular/router';\nimport { IManagedObject, InventoryService } from '@c8y/client';\nimport {\n AlertService,\n ApplyRangeClassPipe,\n C8yTranslateDirective,\n C8yTranslatePipe,\n ColorRangeBoundaries,\n DashboardChildComponent,\n DatePipe,\n DeviceStatusComponent,\n DynamicComponentAlert,\n DynamicComponentAlertAggregator,\n DynamicComponentModule,\n EmptyStateComponent,\n ForOfDirective,\n GroupService,\n GuideDocsComponent,\n GuideHrefDirective,\n IconDirective,\n ListGroupModule,\n LoadingComponent,\n VirtualScrollListenerDirective,\n WidgetActionWrapperComponent\n} from '@c8y/ngx-components';\nimport { KPIDetails } from '@c8y/ngx-components/datapoint-selector';\nimport {\n DatapointsExportSelectorComponent,\n ExportConfig\n} from '@c8y/ngx-components/datapoints-export-selector';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n CONTEXT_FEATURE,\n DisplayMode,\n GLOBAL_CONTEXT_DISPLAY_MODE,\n GlobalContextConnectorComponent,\n GlobalContextState,\n LocalControlsComponent,\n PRESET_NAME,\n PresetName,\n REFRESH_OPTION,\n WidgetConfigMigrationService\n} from '@c8y/ngx-components/global-context';\nimport { isEqual, merge } from 'lodash-es';\nimport { pairwise } from 'rxjs';\nimport { DatapointsListConfig, DatapointWithMeasurement } from '../datapoints-list-widget.model';\nimport { DEFAULT_DATAPOINTS_LIST_COLUMNS } from '../datapoints-list.constants';\nimport { DatapointsListFetchService } from './datapoints-list-fetch.service';\n\n@Component({\n selector: 'c8y-datapoints-list',\n templateUrl: './datapoints-list-view.component.html',\n host: { class: 'd-col fit-h' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ApplyRangeClassPipe,\n C8yTranslateDirective,\n C8yTranslatePipe,\n DatapointsExportSelectorComponent,\n DatePipe,\n DecimalPipe,\n DeviceStatusComponent,\n DynamicComponentModule,\n EmptyStateComponent,\n ForOfDirective,\n GlobalContextConnectorComponent,\n GuideDocsComponent,\n GuideHrefDirective,\n IconDirective,\n ListGroupModule,\n LoadingComponent,\n LocalControlsComponent,\n NgTemplateOutlet,\n VirtualScrollListenerDirective,\n WidgetActionWrapperComponent\n ]\n})\nexport class DatapointsListViewComponent implements OnInit {\n config = input.required<DatapointsListConfig>();\n isInPreviewMode = input(false);\n\n private readonly alertService = inject(AlertService);\n private readonly dashboardChild = inject(DashboardChildComponent, { optional: true });\n private readonly defaultColumns = DEFAULT_DATAPOINTS_LIST_COLUMNS;\n private readonly fetchService = inject(DatapointsListFetchService);\n private readonly groupService = inject(GroupService);\n private readonly inventoryService = inject(InventoryService);\n private readonly router = inject(Router);\n private readonly widgetConfigMigrationService = inject(WidgetConfigMigrationService);\n\n readonly CONTEXT_FEATURE = CONTEXT_FEATURE;\n readonly GLOBAL_CONTEXT_DISPLAY_MODE = GLOBAL_CONTEXT_DISPLAY_MODE;\n missingAllPermissionsAlert = new DynamicComponentAlertAggregator();\n targetManagedObjects = new Map<string, IManagedObject>();\n\n configSignal = linkedSignal(() => {\n const raw = this.config();\n const migrated = this.widgetConfigMigrationService.migrateWidgetConfig(raw);\n return merge({}, raw, migrated) as DatapointsListConfig;\n });\n contextConfig = signal<GlobalContextState>({});\n dataPoints = signal<DatapointWithMeasurement[]>([]);\n displayMode = signal<DisplayMode>(GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD);\n hasLoadedOnce = signal(false);\n hasNoPermissionsToReadAnyMeasurement = signal(false);\n isLinkedToGlobal = signal<boolean | undefined>(undefined);\n isLoading = signal(false);\n widgetControls = signal<PresetName>(PRESET_NAME.DATA_POINTS_LIST);\n\n fractionSize = computed(() => {\n const decimalPlaces = this.configSignal()?.decimalPlaces;\n if (typeof decimalPlaces === 'number' && !Number.isNaN(decimalPlaces)) {\n return `1.${decimalPlaces}-${decimalPlaces}`;\n }\n return '1.2-2';\n });\n\n columns = computed(() => {\n const options = this.configSignal()?.options;\n\n if (options?.columns?.length > 0) {\n return [...options.columns].sort((a, b) => a.order - b.order);\n }\n\n return this.defaultColumns.map(defaultCol => ({\n ...defaultCol,\n visible: options?.[defaultCol.id] ?? defaultCol.visible\n }));\n });\n\n visibleColumns = computed(() => {\n return this.columns().filter(col => col.visible !== false);\n });\n\n exportConfig = computed<ExportConfig | null>(() => {\n const effectiveConfig = { ...this.configSignal(), ...this.contextConfig() };\n const dateFrom = effectiveConfig.dateTimeContext?.dateFrom;\n const dateTo = effectiveConfig.dateTimeContext?.dateTo;\n\n if (!dateFrom || !dateTo || (this.isLoading() && !this.hasLoadedOnce())) {\n return null;\n }\n\n return {\n exportType: 'latestWithDetails',\n datapointDetails:\n effectiveConfig.datapoints\n ?.filter(dp => dp.__active === true)\n .map(dp => ({\n deviceName: dp.__target?.name || '',\n source: dp.__target?.id || '',\n valueFragmentSeries: dp.series,\n valueFragmentType: dp.fragment,\n target: dp.target,\n label: dp.label\n })) || [],\n dateFrom: dateFrom instanceof Date ? dateFrom.toISOString() : dateFrom,\n dateTo: dateTo instanceof Date ? dateTo.toISOString() : dateTo,\n columns: this.columns()\n .filter(col => col.visible)\n .map(col => ({\n id: col.id,\n label: col.label,\n visible: col.visible,\n order: col.order\n }))\n };\n });\n\n activeDataPoints = computed(() => {\n return this.configSignal()?.datapoints?.filter(dp => dp.__active === true) ?? [];\n });\n\n private loadRequestId = 0;\n private readonly seriesWithoutPermissionToReadCount = signal(0);\n\n constructor() {\n toObservable(this.config)\n .pipe(pairwise(), takeUntilDestroyed())\n .subscribe(([prevConfig, currentConfig]) => {\n if (!this.isInPreviewMode()) {\n return;\n }\n\n const prevContext = this.extractContextState(prevConfig);\n const newContext = this.extractContextState(currentConfig);\n this.contextConfig.set(newContext);\n\n const datapointsChanged = !isEqual(prevConfig.datapoints, currentConfig.datapoints);\n const decimalPlacesChanged = prevConfig.decimalPlaces !== currentConfig.decimalPlaces;\n const contextChanged = !isEqual(prevContext, newContext);\n\n if (datapointsChanged || decimalPlacesChanged || contextChanged) {\n this.isLoading.set(true);\n this.loadDatapoints();\n }\n });\n }\n\n ngOnInit(): void {\n const config = this.configSignal();\n\n const displayMode = config.displayMode || GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD;\n this.displayMode.set(displayMode as DisplayMode);\n\n this.contextConfig.set(this.extractContextState(config));\n\n if (displayMode !== GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD || this.isInPreviewMode()) {\n this.loadDatapoints();\n }\n }\n\n onContextChange(event: { context: GlobalContextState; diff: GlobalContextState }): void {\n const { diff, context } = event;\n this.contextConfig.set(context);\n\n if (\n diff.isAutoRefreshEnabled === false &&\n Object.keys(diff).length === 1 &&\n context.refreshOption === REFRESH_OPTION.LIVE\n ) {\n return;\n }\n\n this.isLoading.set(true);\n this.loadDatapoints();\n }\n\n onRefresh(): void {\n this.isLoading.set(true);\n this.loadDatapoints();\n }\n\n onExportModalOpen(isOpened: boolean): void {\n this.setAutoRefreshPaused(isOpened);\n }\n\n async redirectToAsset(assetId: string | number | undefined): Promise<void> {\n if (this.isInPreviewMode() || !assetId) {\n return;\n }\n\n try {\n const { data: mo } = await this.inventoryService.detail(assetId);\n\n if (mo) {\n const assetPath = this.groupService.getAssetPath(mo);\n this.router.navigateByUrl(`/${assetPath}/${mo.id}`);\n }\n } catch (error) {\n this.alertService.addServerFailure(error);\n }\n }\n\n getTargetManagedObject(targetId: string | number): IManagedObject | undefined {\n return this.targetManagedObjects.get(targetId.toString());\n }\n\n getDashboardChild(): DashboardChildComponent | null {\n return this.dashboardChild ?? null;\n }\n\n getRangeValues(dp: KPIDetails): ColorRangeBoundaries {\n return {\n yellowRangeMin: dp.yellowRangeMin,\n yellowRangeMax: dp.yellowRangeMax,\n redRangeMin: dp.redRangeMin,\n redRangeMax: dp.redRangeMax\n };\n }\n\n onListScrolled(): void {\n this.setAutoRefreshPaused(true);\n }\n\n onListScrolledToTop(): void {\n this.setAutoRefreshPaused(false);\n }\n\n private extractContextState(config: Partial<GlobalContextState>): GlobalContextState {\n return {\n dateTimeContext: config.dateTimeContext,\n aggregation: config.aggregation,\n isAutoRefreshEnabled: config.isAutoRefreshEnabled,\n refreshInterval: config.refreshInterval,\n refreshOption: config.refreshOption\n };\n }\n\n private setAutoRefreshPaused(paused: boolean): void {\n if (this.isInPreviewMode()) {\n return;\n }\n\n const current = this.contextConfig();\n if (current.refreshOption === REFRESH_OPTION.HISTORY) {\n return;\n }\n\n this.contextConfig.set({\n ...current,\n isAutoRefreshEnabled: !paused\n });\n this.isLinkedToGlobal.set(!paused);\n }\n\n private loadDatapoints(): void {\n if (this.activeDataPoints().length > 0) {\n this.fetchMeasurements();\n } else {\n this.dataPoints.set([]);\n this.hasLoadedOnce.set(true);\n this.isLoading.set(false);\n }\n }\n\n private async fetchMeasurements(): Promise<void> {\n const requestId = ++this.loadRequestId;\n\n try {\n this.isLoading.set(true);\n\n const effectiveConfig = {\n ...this.configSignal(),\n ...this.contextConfig()\n };\n\n const dateFrom = effectiveConfig.dateTimeContext?.dateFrom;\n const dateTo = effectiveConfig.dateTimeContext?.dateTo;\n\n const dateFromStr = dateFrom instanceof Date ? dateFrom.toISOString() : dateFrom;\n const dateToStr = dateTo instanceof Date ? dateTo.toISOString() : dateTo;\n\n const result = await this.fetchService.fetchDatapointsWithMeasurements(\n this.activeDataPoints(),\n { fractionSize: this.fractionSize(), dateFrom: dateFromStr, dateTo: dateToStr }\n );\n\n if (requestId === this.loadRequestId) {\n this.dataPoints.set(result.dataPoints);\n this.targetManagedObjects = result.targetManagedObjects;\n this.hasLoadedOnce.set(true);\n this.seriesWithoutPermissionToReadCount.set(result.seriesWithoutPermissionCount);\n this.checkAndDisplayPermissionErrors();\n }\n } finally {\n if (requestId === this.loadRequestId) {\n this.isLoading.set(false);\n }\n }\n }\n\n private checkAndDisplayPermissionErrors(): void {\n if (this.seriesWithoutPermissionToReadCount()) {\n this.missingAllPermissionsAlert.clear();\n this.handleNoPermissionErrorMessage();\n }\n }\n\n private handleNoPermissionErrorMessage(): void {\n const noPermissions =\n this.seriesWithoutPermissionToReadCount() === this.activeDataPoints().length;\n this.hasNoPermissionsToReadAnyMeasurement.set(noPermissions);\n\n if (noPermissions) {\n this.showMessageForMissingPermissionsForAllSeries();\n }\n }\n\n private showMessageForMissingPermissionsForAllSeries(): void {\n this.missingAllPermissionsAlert.addAlerts(\n new DynamicComponentAlert({\n allowHtml: true,\n text: gettext(`<p>To view data, you must meet at least one of these criteria:</p>\n <ul>\n <li>\n Have\n <b>READ permission for \"Measurements\" permission type</b>\n (either as a global role or for the specific source)\n </li>\n <li>\n Be the\n <b>owner of the source</b>\n you want to export data from\n </li>\n </ul>\n <p>Don't meet these requirements? Contact your system administrator for assistance.</p>`),\n type: 'system'\n })\n );\n }\n}\n","@if (!isInPreviewMode()) {\n <div class=\"d-flex gap-16 p-r-16 inner-scroll h-auto min-width-0\">\n @if (displayMode() === GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD) {\n <c8y-global-context-connector\n [controls]=\"widgetControls()\"\n [config]=\"contextConfig()\"\n [isLoading]=\"isLoading()\"\n [dashboardChild]=\"getDashboardChild()!\"\n [linked]=\"isLinkedToGlobal()\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n ></c8y-global-context-connector>\n } @else {\n <c8y-local-controls\n [controls]=\"widgetControls()\"\n [displayMode]=\"displayMode()\"\n [config]=\"contextConfig()\"\n [isLoading]=\"isLoading()\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n ></c8y-local-controls>\n }\n </div>\n}\n\n@if (!isInPreviewMode() && exportConfig(); as config) {\n <c8y-widget-action>\n <c8y-datapoints-export-selector\n [displayMode]=\"'icon-only'\"\n [exportConfig]=\"config\"\n [containerClass]=\"'d-contents'\"\n (isOpen)=\"onExportModalOpen($event)\"\n ></c8y-datapoints-export-selector>\n </c8y-widget-action>\n}\n\n@if (!hasNoPermissionsToReadAnyMeasurement()) {\n <!-- the .page-sticky-header -->\n @if (dataPoints().length > 0) {\n <div class=\"hidden-xs hidden-sm c8y-list__item\">\n <div class=\"c8y-list__item__block flex-grow min-width-0\">\n <div class=\"c8y-list__item__icon\">\n <i style=\"width: 22px\"></i>\n </div>\n <div class=\"c8y-list__item__body\">\n <div class=\"d-flex-md row\">\n @for (column of visibleColumns(); track column.id) {\n <div\n [class]=\"\n column.id === 'kpi' || column.id === 'asset'\n ? 'col-md-3 flex-grow min-width-0'\n : column.id == 'diff' || column.id == 'diffPercentage'\n ? 'col-md-1 flex-grow min-width-0'\n : 'col-md-2 flex-grow min-width-0'\n \"\n [class.text-right]=\"column.id !== 'asset' && column.id !== 'kpi'\"\n >\n <span class=\"text-medium text-truncate\">\n {{ column.label | translate }}\n </span>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n }\n <!-- The record list -->\n @if (isLoading() && !hasLoadedOnce()) {\n <!-- Initial load: full spinner -->\n <ng-container [ngTemplateOutlet]=\"loading\"></ng-container>\n } @else {\n @if (isLoading()) {\n <!-- Refresh: inline loading overlay -->\n <div class=\"p-absolute fit-w overflow-hidden p-b-4\">\n <c8y-loading [layout]=\"'page'\"></c8y-loading>\n </div>\n }\n @if (dataPoints().length) {\n <c8y-list-group\n class=\"flex-grow\"\n role=\"list\"\n c8yVirtualScrollListener\n (scrolled)=\"onListScrolled()\"\n (scrolledToTop)=\"onListScrolledToTop()\"\n >\n <c8y-li\n role=\"listitem\"\n *c8yFor=\"\n let dp of { data: dataPoints(), res: null! };\n enableVirtualScroll: true;\n virtualScrollElementSize: 48;\n virtualScrollStrategy: 'fixed'\n \"\n >\n <c8y-li-icon>\n <i\n c8yIcon=\"circle\"\n [style.color]=\"dp.color\"\n ></i>\n </c8y-li-icon>\n <c8y-li-body>\n <div class=\"d-flex-md row\">\n @for (column of visibleColumns(); track column.id) {\n @switch (column.id) {\n @case ('kpi') {\n <div\n class=\"col-md-3 flex-grow\"\n [attr.data-cy]=\"'datapointlist-' + column.id\"\n >\n <div class=\"d-flex a-i-center d-contents-md p-t-4 p-b-4 separator-bottom\">\n <small\n class=\"text-label-small flex-grow visible-xs-inline-block visible-sm-inline-block\"\n >{{ column.label | translate }}</small\n >\n {{ dp.label | translate }}\n @if (dp.unit) {\n <small class=\"text-muted\">{{ dp.unit }}</small>\n }\n </div>\n </div>\n }\n @case ('target') {\n <div\n class=\"col-md-2 text-right-md flex-grow\"\n [attr.data-cy]=\"'datapointlist-' + column.id\"\n >\n <div class=\"d-flex a-i-center d-contents-md p-t-4 p-b-4 separator-bottom\">\n <small\n class=\"text-label-small flex-grow visible-xs-inline-block visible-sm-inline-block\"\n >{{ column.label | translate }}</small\n >\n <span>{{ dp.target }}</span>\n </div>\n </div>\n }\n @case ('current') {\n <div\n class=\"col-md-2 text-right-md flex-grow\"\n [attr.data-cy]=\"'datapointlist-' + column.id\"\n >\n <div class=\"d-flex a-i-center d-contents-md p-t-4 p-b-4 separator-bottom\">\n <small\n class=\"text-label-small flex-grow visible-xs-inline-block visible-sm-inline-block\"\n >{{ column.label | translate }}</small\n >\n @let ariaLabel =\n 'Last updated: {{ date }}'\n | translate: { date: dp.timestamp | c8yDate: 'medium' };\n <span\n [class]=\"dp.currentValue | applyRangeClass: getRangeValues(dp)\"\n [title]=\"dp.timestamp | c8yDate: 'medium'\"\n [attr.aria-label]=\"ariaLabel\"\n >\n {{ dp.currentValue | number: dp.currentFractionSize }}\n </span>\n </div>\n </div>\n }\n @case ('diff') {\n <div\n class=\"col-md-1 text-right-md flex-grow\"\n [attr.data-cy]=\"'datapointlist-' + column.id\"\n >\n <div class=\"d-flex a-i-center d-contents-md p-t-4 p-b-4 separator-bottom\">\n <small\n class=\"text-label-small flex-grow visible-xs-inline-block visible-sm-inline-block\"\n >{{ column.label | translate }}</small\n >\n <span>\n {{ dp.diffValue | number: dp.diffFractionSize }}\n </span>\n </div>\n </div>\n }\n @case ('diffPercentage') {\n <div\n class=\"col-md-1 text-right-md flex-grow\"\n [attr.data-cy]=\"'datapointlist-' + column.id\"\n >\n <div class=\"d-flex a-i-center d-contents-md p-t-4 p-b-4 separator-bottom\">\n <small\n class=\"text-label-small flex-grow visible-xs-inline-block visible-sm-inline-block\"\n >{{ column.label | translate }}</small\n >\n <span>\n {{ dp.diffPercentValue | number: dp.diffPercentFractionSize }}\n </span>\n </div>\n </div>\n }\n @case ('asset') {\n <div\n class=\"col-md-3 flex-grow\"\n [attr.data-cy]=\"'datapointlist-' + column.id\"\n >\n <div class=\"d-flex a-i-center d-contents-md p-t-4 p-b-4 separator-bottom\">\n <small\n class=\"text-label-small flex-grow visible-xs-inline-block visible-sm-inline-block\"\n >{{ column.label | translate }}</small\n >\n @let ariaLabel =\n 'Navigate to asset: \"{{ name }}\"'\n | translate: { name: dp.__target?.name };\n <button\n class=\"btn-clean d-flex a-i-center gap-4 text-muted\"\n [attr.aria-label]=\"ariaLabel\"\n type=\"button\"\n (click)=\"redirectToAsset(dp.__target?.id)\"\n >\n @if (dp.__target?.id && getTargetManagedObject(dp.__target.id); as mo) {\n <c8y-device-status\n [mo]=\"mo\"\n [size]=\"16\"\n ></c8y-device-status>\n }\n <small\n class=\"text-truncate\"\n [title]=\"dp.__target?.name\"\n >{{ dp.__target?.name }}</small\n >\n </button>\n </div>\n </div>\n }\n }\n }\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n } @else {\n <ng-container [ngTemplateOutlet]=\"emptyState\"></ng-container>\n }\n }\n} @else {\n <div class=\"p-t-24 p-r-16 p-l-16 p-b-16 d-flex\">\n <div class=\"center-block\">\n <c8y-dynamic-component-alerts\n [alerts]=\"missingAllPermissionsAlert\"\n ></c8y-dynamic-component-alerts>\n </div>\n </div>\n}\n\n<ng-template #loading>\n <c8y-loading></c8y-loading>\n</ng-template>\n\n<ng-template #emptyState>\n <div class=\"p-relative p-l-24\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-alert-idle'\"\n [title]=\"'No data to display.' | translate\"\n [horizontal]=\"true\"\n data-cy=\"datapoints-list--empty-state\"\n >\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/widgets-collection/#data-point-list\"\n >user documentation</a\n >.\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n</ng-template>\n","import { CdkDragDrop, DragDropModule } from '@angular/cdk/drag-drop';\nimport { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n inject,\n input,\n OnInit,\n signal,\n TemplateRef,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AbstractControl,\n FormArray,\n FormBuilder,\n FormGroup,\n NgForm,\n ReactiveFormsModule,\n ValidationErrors,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport {\n C8yTranslatePipe,\n DynamicComponentModule,\n FormGroupComponent,\n IconDirective,\n ListGroupModule\n} from '@c8y/ngx-components';\nimport { WidgetConfigService } from '@c8y/ngx-components/context-dashboard';\nimport {\n LocalControlsComponent,\n PRESET_NAME,\n PresetName\n} from '@c8y/ngx-components/global-context';\nimport { isEqual } from 'lodash-es';\nimport { debounceTime, distinctUntilChanged, filter, Observable, take } from 'rxjs';\nimport { DatapointsListViewComponent } from '../datapoints-list-view/datapoints-list-view.component';\nimport { ColumnConfig, DatapointsListConfig } from '../datapoints-list-widget.model';\nimport { DEFAULT_DATAPOINTS_LIST_COLUMNS } from '../datapoints-list.constants';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\n\nconst DEFAULT_DECIMAL_PLACES = 2;\nconst MIN_DECIMAL_PLACES = 0;\nconst MAX_DECIMAL_PLACES = 10;\n\n@Component({\n selector: 'c8y-datapoints-list-view-config',\n templateUrl: './datapoints-list-config.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n C8yTranslatePipe,\n DatapointsListViewComponent,\n DragDropModule,\n DynamicComponentModule,\n FormGroupComponent,\n IconDirective,\n ListGroupModule,\n LocalControlsComponent,\n ReactiveFormsModule,\n PopoverModule\n ]\n})\nexport class DatapointsListConfigComponent implements OnInit, AfterViewInit {\n config = input.required<DatapointsListConfig>();\n private readonly previewTemplate = viewChild<TemplateRef<unknown>>('dataPointsListPreview');\n\n private readonly defaultColumns = DEFAULT_DATAPOINTS_LIST_COLUMNS;\n private readonly destroyRef = inject(DestroyRef);\n private readonly form = inject(NgForm);\n private readonly formBuilder = inject(FormBuilder);\n private readonly widgetConfigService = inject(WidgetConfigService);\n\n readonly controls: PresetName = PRESET_NAME.DATA_POINTS_LIST;\n readonly minDecimalPlaces = MIN_DECIMAL_PLACES;\n readonly maxDecimalPlaces = MAX_DECIMAL_PLACES;\n configForm = signal<ReturnType<DatapointsListConfigComponent['createForm']> | undefined>(\n undefined\n );\n readonly columnsFormArray = computed(() => this.configForm()?.get('columns') as FormArray);\n\n /**\n * Debounced config for preview to prevent multiple series requests on initial load.\n * Uses debounceTime to batch rapid emissions (e.g., from initConfig + GlobalContext processing).\n */\n previewConfig$ = this.widgetConfigService.currentConfig$.pipe(\n filter(config => !!config?.dateTimeContext),\n debounceTime(300)\n ) as Observable<DatapointsListConfig>;\n\n ngOnInit(): void {\n this.widgetConfigService.currentConfig$\n .pipe(\n filter(config => !!config?.dateTimeContext),\n take(1),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => this.initForm());\n }\n\n ngAfterViewInit(): void {\n this.widgetConfigService.setPreview(this.previewTemplate() ?? null);\n }\n\n onColumnDrop(event: CdkDragDrop<ColumnConfig[]>): void {\n const columnsArray = this.columnsFormArray();\n const item = columnsArray.at(event.previousIndex);\n columnsArray.removeAt(event.previousIndex);\n columnsArray.insert(event.currentIndex, item);\n columnsArray.controls.forEach((control, index) => control.patchValue({ order: index }));\n }\n\n private initForm(): void {\n const form = this.createForm();\n this.form.form.addControl('config', form);\n form.patchValue(this.config(), { emitEvent: false });\n\n this.pushFormToService(form.value);\n\n form.valueChanges\n .pipe(\n distinctUntilChanged((prev, curr) => isEqual(prev, curr)),\n debounceTime(300),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(formValue => {\n if (form.invalid) {\n return;\n }\n\n const { decimalPlaces } = formValue;\n if (\n typeof decimalPlaces === 'number' &&\n (decimalPlaces < MIN_DECIMAL_PLACES || decimalPlaces > MAX_DECIMAL_PLACES)\n ) {\n return;\n }\n\n this.pushFormToService(formValue);\n });\n\n this.configForm.set(form);\n }\n\n private pushFormToService(formValue: unknown): void {\n const formData = formValue as { columns?: ColumnConfig[]; [key: string]: unknown };\n const { columns, ...formValueWithoutColumns } = formData;\n const currentOptions = this.widgetConfigService.currentConfig?.options;\n this.widgetConfigService.updateConfig({\n ...formValueWithoutColumns,\n options: {\n ...currentOptions,\n columns: columns || []\n }\n });\n }\n\n private createForm() {\n const currentConfig = this.config();\n const columns = this.migrateColumnsConfig(currentConfig);\n\n return this.formBuilder.group({\n decimalPlaces: [\n currentConfig?.decimalPlaces ?? DEFAULT_DECIMAL_PLACES,\n [\n Validators.required,\n Validators.min(MIN_DECIMAL_PLACES),\n Validators.max(MAX_DECIMAL_PLACES),\n Validators.pattern('^[0-9]+$')\n ]\n ],\n columns: this.formBuilder.array(\n columns.map(col => this.createColumnFormGroup(col)),\n [Validators.required, Validators.minLength(1), this.minOneColumnVisible()]\n )\n });\n }\n\n private createColumnFormGroup(column: ColumnConfig): FormGroup {\n return this.formBuilder.group({\n id: [column.id, Validators.required],\n label: [column.label, Validators.required],\n visible: [column.visible],\n order: [column.order]\n });\n }\n\n private migrateColumnsConfig(config: DatapointsListConfig): ColumnConfig[] {\n if (config?.options?.columns?.length > 0) {\n return [...config.options.columns].sort((a, b) => a.order - b.order);\n }\n\n return this.defaultColumns.map(defaultCol => ({\n ...defaultCol,\n visible: config?.options?.[defaultCol.id] ?? defaultCol.visible\n }));\n }\n\n private minOneColumnVisible(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const columns: ColumnConfig[] = control.value;\n\n if (!columns?.length) {\n return null;\n }\n\n const visibleColumns = columns.filter(column => column.visible);\n return visibleColumns.length >= 1 ? null : { atLeastOneColumnMustBeVisible: true };\n };\n }\n}\n","@if (configForm(); as form) {\n <form\n class=\"no-card-context\"\n [formGroup]=\"form\"\n >\n <fieldset class=\"c8y-fieldset\">\n <legend>{{ 'Columns (drag to reorder)' | translate }}</legend>\n <c8y-list-group\n formArrayName=\"columns\"\n cdkDropList\n (cdkDropListDropped)=\"onColumnDrop($event)\"\n >\n @if (columnsFormArray().errors?.atLeastOneColumnMustBeVisible) {\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n >\n {{ 'At least 1 column must be visible.' | translate }}\n </div>\n }\n\n @for (column of columnsFormArray().controls; track column.value.id; let i = $index) {\n <c8y-li\n class=\"c8y-list__item__collapse--container-small\"\n [formGroupName]=\"i\"\n cdkDrag\n >\n <c8y-li-drag-handle\n [title]=\"'Click and drag to reorder' | translate\"\n cdkDragHandle\n >\n <i c8yIcon=\"drag-reorder\"></i>\n </c8y-li-drag-handle>\n <c8y-li-checkbox\n class=\"a-s-center p-r-0\"\n [displayAsSwitch]=\"true\"\n formControlName=\"visible\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-li-checkbox>\n <c8y-li-body>\n <div class=\"d-flex a-i-center\">\n <span class=\"text-truncate\">{{ column.value.label | translate }}</span>\n @switch (column.value.label) {\n @case ('Target') {\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help content' | translate\"\n [popover]=\"\n 'The Target column shows the value set on the target field of the data point'\n | translate\n \"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n }\n @case ('Diff') {\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help content' | translate\"\n [popover]=\"\n 'The Diff column shows the difference between the current value and the target value of the data point'\n | translate\n \"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n }\n }\n </div>\n </c8y-li-body>\n </c8y-li>\n }\n </c8y-list-group>\n </fieldset>\n\n <!-- decimal input -->\n <fieldset class=\"c8y-fieldset\">\n <legend>\n {{ 'Decimal places' | translate }}\n </legend>\n <c8y-form-group class=\"p-t-8\">\n <input\n class=\"form-control\"\n name=\"decimalPlaces\"\n type=\"number\"\n formControlName=\"decimalPlaces\"\n step=\"1\"\n [min]=\"minDecimalPlaces\"\n [max]=\"maxDecimalPlaces\"\n />\n </c8y-form-group>\n </fieldset>\n </form>\n}\n\n<ng-template #dataPointsListPreview>\n @let previewConfig = previewConfig$ | async;\n @if (previewConfig && previewConfig.displayMode !== 'dashboard') {\n <c8y-local-controls\n [controls]=\"controls\"\n [displayMode]=\"previewConfig.displayMode!\"\n [config]=\"previewConfig\"\n [disabled]=\"true\"\n ></c8y-local-controls>\n }\n\n @if (previewConfig) {\n <c8y-datapoints-list\n [config]=\"previewConfig\"\n [isInPreviewMode]=\"true\"\n data-cy=\"c8y-datapoints-list-widget-config--preview-datapoints-list\"\n ></c8y-datapoints-list>\n }\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-widgets-implementations-datapoints-list.mjs","sources":["../../widgets/implementations/datapoints-list/datapoints-list.constants.ts","../../widgets/implementations/datapoints-list/datapoints-list-view/datapoints-list-view.service.ts","../../widgets/implementations/datapoints-list/datapoints-list-view/datapoints-list-fetch.service.ts","../../widgets/implementations/datapoints-list/datapoints-list-view/datapoints-list-view.component.ts","../../widgets/implementations/datapoints-list/datapoints-list-view/datapoints-list-view.component.html","../../widgets/implementations/datapoints-list/datapoints-list-config/datapoints-list-config.component.ts","../../widgets/implementations/datapoints-list/datapoints-list-config/datapoints-list-config.component.html","../../widgets/implementations/datapoints-list/c8y-ngx-components-widgets-implementations-datapoints-list.ts"],"sourcesContent":["import {\n GLOBAL_CONTEXT_DISPLAY_MODE,\n GlobalContextState,\n REFRESH_OPTION,\n TIME_INTERVAL\n} from '@c8y/ngx-components/global-context';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { ColumnConfig } from './datapoints-list-widget.model';\n\n/**\n * Default column configuration for datapoints list widget\n */\nexport const DEFAULT_DATAPOINTS_LIST_COLUMNS: ColumnConfig[] = [\n { id: 'kpi', label: gettext('Label'), visible: true, order: 0 },\n { id: 'target', label: gettext('Target'), visible: true, order: 1 },\n { id: 'current', label: gettext('Current'), visible: true, order: 2 },\n { id: 'diff', label: gettext('Diff'), visible: true, order: 3 },\n { id: 'diffPercentage', label: gettext('Diff %'), visible: true, order: 4 },\n { id: 'asset', label: gettext('Asset'), visible: true, order: 5 }\n];\n\n/**\n * Defaults for legacy AngularJS datapoints list widgets that arrive without any\n * time-context fields. Mirrors the legacy \"show all data\" behavior. Factory so\n * `dateTo` is read at call time.\n */\nexport function getLegacyDatapointsListDefaults(): Partial<GlobalContextState> {\n return {\n displayMode: GLOBAL_CONTEXT_DISPLAY_MODE.CONFIG,\n dateTimeContext: {\n dateFrom: '1970-01-01T00:00:00.000Z',\n dateTo: new Date().toISOString(),\n interval: TIME_INTERVAL.CUSTOM\n },\n isAutoRefreshEnabled: true,\n refreshOption: REFRESH_OPTION.LIVE\n };\n}\n","import { Injectable } from '@angular/core';\nimport { IMeasurement } from '@c8y/client';\nimport { KPIDetails } from '@c8y/ngx-components/datapoint-selector';\nimport { DatapointWithMeasurement } from '../datapoints-list-widget.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DatapointsListService {\n /**\n * Calculate difference between current value and target\n * @param datapoint - Datapoint record\n * @returns Difference value or null if value/target is undefined\n */\n diff(datapoint: DatapointWithMeasurement): number | null {\n const { currentValue, target } = datapoint;\n // != checks both null and undefined\n if (currentValue != null && target != null) {\n return currentValue - target;\n }\n return null;\n }\n\n /**\n * Calculate percentage difference between current value and target\n * @param datapoint - Datapoint record\n * @returns Percentage difference or null if target is undefined\n */\n diffPercent(datapoint: DatapointWithMeasurement): number | null {\n const target = datapoint.target;\n\n if (target !== null && target !== undefined) {\n const _diff = this.diff(datapoint);\n if (_diff !== null) {\n // Intentionally allows division by zero to return Infinity\n // when target is 0, representing mathematically undefined percentage.\n // This follows the previous AngularJS implementation behavior.\n return (_diff / target) * 100;\n }\n }\n\n return null;\n }\n\n /**\n * Get fraction size format based on whether the value is an integer\n * @param value - Number to check\n * @param defaultFractionSize - Default fraction size format to use for non-integers\n * @returns Fraction size format ('1.0-0' for integers, defaultFractionSize for decimals)\n */\n getFractionSize(value: number | null | undefined, defaultFractionSize: string): string {\n if (value === null || value === undefined) {\n return defaultFractionSize;\n }\n return value % 1 === 0 ? '1.0-0' : defaultFractionSize;\n }\n\n /**\n * Extract current value and timestamp from a measurement\n * @param datapoint - Datapoint configuration (contains fragment and series)\n * @param measurement - Measurement to extract value from\n * @returns Object containing extracted value and timestamp (null if not found)\n */\n extractMeasurementValue(\n datapoint: KPIDetails,\n measurement: IMeasurement | undefined\n ): { value: number | null; timestamp: Date | null } {\n // Return null values if measurement is missing\n if (!measurement) {\n return { value: null, timestamp: null };\n }\n\n // Return null values if datapoint configuration is incomplete\n if (!datapoint.fragment || !datapoint.series) {\n return { value: null, timestamp: null };\n }\n\n // Access the fragment (e.g., \"c8y_Steam\")\n const fragmentData = measurement[datapoint.fragment];\n if (!fragmentData) {\n return { value: null, timestamp: null };\n }\n\n // Access the series within the fragment (e.g., \"Temperature\")\n const seriesData = fragmentData[datapoint.series];\n if (!seriesData || seriesData.value === undefined) {\n return { value: null, timestamp: null };\n }\n\n // Extract and return the value and timestamp\n return {\n value: seriesData.value,\n timestamp: new Date(measurement.time)\n };\n }\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport {\n IManagedObject,\n IMeasurement,\n IMeasurementFilter,\n InventoryService,\n MeasurementService\n} from '@c8y/client';\nimport { AlertService } from '@c8y/ngx-components';\nimport { KPIDetails } from '@c8y/ngx-components/datapoint-selector';\nimport { DatapointWithMeasurement } from '../datapoints-list-widget.model';\nimport { DatapointsListService } from './datapoints-list-view.service';\n\ninterface FetchConfig {\n fractionSize: string;\n dateFrom?: string;\n dateTo?: string;\n}\n\ninterface FetchResult {\n dataPoints: DatapointWithMeasurement[];\n seriesWithoutPermissionCount: number;\n targetManagedObjects: Map<string, IManagedObject>;\n}\n\ninterface SingleDatapointResult {\n datapoint: DatapointWithMeasurement;\n hasPermissionError: boolean;\n}\n\n/**\n * Service that handles all data-fetching operations for the datapoints list widget.\n * Encapsulates measurement fetching, data enrichment, and error handling.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class DatapointsListFetchService {\n private alertService = inject(AlertService);\n private measurementService = inject(MeasurementService);\n private inventoryService = inject(InventoryService);\n private datapointsListService = inject(DatapointsListService);\n\n /**\n * Fetch measurements for all active datapoints and enrich them with calculated values.\n */\n async fetchDatapointsWithMeasurements(\n datapoints: KPIDetails[],\n config: FetchConfig\n ): Promise<FetchResult> {\n const targetManagedObjects = new Map<string, IManagedObject>();\n\n const results = await this.fetchAllDatapoints(datapoints, config);\n\n const enrichedDataPoints = results.map(r => r.datapoint);\n const seriesWithoutPermissionCount = results.filter(r => r.hasPermissionError).length;\n\n await this.fetchTargetManagedObjects(enrichedDataPoints, targetManagedObjects);\n\n return {\n dataPoints: enrichedDataPoints,\n seriesWithoutPermissionCount,\n targetManagedObjects\n };\n }\n\n /**\n * Fetch and enrich all datapoints in parallel.\n * Each datapoint fetch is independent - one failure doesn't affect others.\n */\n private fetchAllDatapoints(\n datapoints: KPIDetails[],\n config: FetchConfig\n ): Promise<SingleDatapointResult[]> {\n return Promise.all(\n datapoints.map((datapoint, index) => this.fetchSingleDatapoint(datapoint, index, config))\n );\n }\n\n /**\n * Fetch measurement for a single datapoint and return enriched result.\n * Handles errors gracefully - returns empty datapoint on failure.\n */\n private async fetchSingleDatapoint(\n datapoint: KPIDetails,\n index: number,\n config: FetchConfig\n ): Promise<SingleDatapointResult> {\n try {\n const measurement = await this.getMeasurementForDatapoint(datapoint, config);\n const measurementValue = this.datapointsListService.extractMeasurementValue(\n datapoint,\n measurement\n );\n\n return {\n datapoint: this.createEnrichedDatapoint(datapoint, index, measurementValue, config),\n hasPermissionError: false\n };\n } catch (error) {\n return this.handleFetchError(error, datapoint, index, config);\n }\n }\n\n /**\n * Handle fetch error and return appropriate result.\n */\n private handleFetchError(\n error: unknown,\n datapoint: KPIDetails,\n index: number,\n config: FetchConfig\n ): SingleDatapointResult {\n const isPermissionError = (error as HttpErrorResponse)?.status === 403;\n\n if (!isPermissionError) {\n this.alertService.addServerFailure(error);\n }\n\n return {\n datapoint: this.createEnrichedDatapoint(\n datapoint,\n index,\n { value: null, timestamp: null },\n config\n ),\n hasPermissionError: isPermissionError\n };\n }\n\n /**\n * Create an enriched datapoint with measurement value and all calculated fields.\n */\n private createEnrichedDatapoint(\n datapoint: KPIDetails,\n index: number,\n measurementValue: { value: number | null; timestamp: Date | null },\n config: FetchConfig\n ): DatapointWithMeasurement {\n const enrichedDatapoint: DatapointWithMeasurement = {\n ...datapoint,\n id: this.getDatapointId(datapoint, index),\n currentValue: measurementValue.value,\n timestamp: measurementValue.timestamp\n };\n\n this.calculateDerivedFields(enrichedDatapoint, config.fractionSize);\n\n return enrichedDatapoint;\n }\n\n /**\n * Calculate and set all derived fields on a datapoint.\n * Includes diff, diffPercent, and fraction sizes for display formatting.\n */\n private calculateDerivedFields(datapoint: DatapointWithMeasurement, fractionSize: string): void {\n datapoint.diffValue = this.datapointsListService.diff(datapoint);\n datapoint.diffPercentValue = this.datapointsListService.diffPercent(datapoint);\n datapoint.currentFractionSize = this.datapointsListService.getFractionSize(\n datapoint.currentValue,\n fractionSize\n );\n datapoint.diffFractionSize = this.datapointsListService.getFractionSize(\n datapoint.diffValue,\n fractionSize\n );\n datapoint.diffPercentFractionSize = this.datapointsListService.getFractionSize(\n datapoint.diffPercentValue,\n fractionSize\n );\n }\n\n /**\n * Fetch managed objects for device status display.\n */\n private async fetchTargetManagedObjects(\n dataPoints: DatapointWithMeasurement[],\n targetManagedObjects: Map<string, IManagedObject>\n ): Promise<void> {\n const uniqueTargetIds = this.getUniqueTargetIds(dataPoints);\n\n if (uniqueTargetIds.size === 0) {\n return;\n }\n\n await Promise.all(\n Array.from(uniqueTargetIds).map(targetId =>\n this.fetchManagedObject(targetId, targetManagedObjects)\n )\n );\n }\n\n /**\n * Get unique target IDs from datapoints.\n */\n private getUniqueTargetIds(dataPoints: DatapointWithMeasurement[]): Set<string> {\n const uniqueTargetIds = new Set<string>();\n\n for (const dp of dataPoints) {\n if (dp.__target?.id) {\n uniqueTargetIds.add(dp.__target.id.toString());\n }\n }\n\n return uniqueTargetIds;\n }\n\n /**\n * Fetch a single managed object and add to the map.\n */\n private async fetchManagedObject(\n targetId: string,\n targetManagedObjects: Map<string, IManagedObject>\n ): Promise<void> {\n try {\n const { data } = await this.inventoryService.detail(targetId);\n targetManagedObjects.set(targetId, data);\n } catch (error) {\n this.alertService.addServerFailure(error);\n }\n }\n\n /**\n * Fetch the most recent measurement for a datapoint within the specified date range.\n */\n private async getMeasurementForDatapoint(\n datapoint: KPIDetails,\n config: FetchConfig\n ): Promise<IMeasurement | null> {\n const sourceId = datapoint.__target?.id;\n if (!sourceId || !datapoint.fragment || !datapoint.series) {\n return null;\n }\n\n const filter: IMeasurementFilter = {\n dateFrom: config.dateFrom || '1970-01-01',\n dateTo: config.dateTo || new Date().toISOString(),\n source: sourceId,\n valueFragmentSeries: datapoint.series,\n valueFragmentType: datapoint.fragment,\n pageSize: 1,\n revert: true\n };\n\n const { data } = await this.measurementService.list(filter);\n return data?.[0] ?? null;\n }\n\n /**\n * Get unique ID for a datapoint.\n * Uses target ID if available, otherwise generates fallback based on index.\n */\n private getDatapointId(datapoint: KPIDetails, fallbackIndex: number): string {\n return datapoint.__target?.id?.toString() || `dp-${fallbackIndex}`;\n }\n}\n","import { DecimalPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n linkedSignal,\n OnInit,\n signal\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { Router } from '@angular/router';\nimport { IManagedObject, InventoryService } from '@c8y/client';\nimport {\n AlertService,\n ApplyRangeClassPipe,\n C8yTranslateDirective,\n C8yTranslatePipe,\n ColorRangeBoundaries,\n DashboardChildComponent,\n DatePipe,\n DeviceStatusComponent,\n DynamicComponentAlert,\n DynamicComponentAlertAggregator,\n DynamicComponentModule,\n EmptyStateComponent,\n ForOfDirective,\n GroupService,\n GuideDocsComponent,\n GuideHrefDirective,\n IconDirective,\n ListGroupModule,\n LoadingComponent,\n VirtualScrollListenerDirective,\n WidgetActionWrapperComponent\n} from '@c8y/ngx-components';\nimport { KPIDetails } from '@c8y/ngx-components/datapoint-selector';\nimport {\n DatapointsExportSelectorComponent,\n ExportConfig\n} from '@c8y/ngx-components/datapoints-export-selector';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n CONTEXT_FEATURE,\n DisplayMode,\n GLOBAL_CONTEXT_DISPLAY_MODE,\n GlobalContextConnectorComponent,\n GlobalContextState,\n LocalControlsComponent,\n PRESET_NAME,\n PresetName,\n REFRESH_OPTION,\n WidgetConfigMigrationService\n} from '@c8y/ngx-components/global-context';\nimport { isEqual, merge } from 'lodash-es';\nimport { pairwise } from 'rxjs';\nimport { DatapointsListConfig, DatapointWithMeasurement } from '../datapoints-list-widget.model';\nimport {\n DEFAULT_DATAPOINTS_LIST_COLUMNS,\n getLegacyDatapointsListDefaults\n} from '../datapoints-list.constants';\nimport { DatapointsListFetchService } from './datapoints-list-fetch.service';\n\n@Component({\n selector: 'c8y-datapoints-list',\n templateUrl: './datapoints-list-view.component.html',\n host: { class: 'd-col fit-h' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ApplyRangeClassPipe,\n C8yTranslateDirective,\n C8yTranslatePipe,\n DatapointsExportSelectorComponent,\n DatePipe,\n DecimalPipe,\n DeviceStatusComponent,\n DynamicComponentModule,\n EmptyStateComponent,\n ForOfDirective,\n GlobalContextConnectorComponent,\n GuideDocsComponent,\n GuideHrefDirective,\n IconDirective,\n ListGroupModule,\n LoadingComponent,\n LocalControlsComponent,\n NgTemplateOutlet,\n VirtualScrollListenerDirective,\n WidgetActionWrapperComponent\n ]\n})\nexport class DatapointsListViewComponent implements OnInit {\n config = input.required<DatapointsListConfig>();\n isInPreviewMode = input(false);\n\n private readonly alertService = inject(AlertService);\n private readonly dashboardChild = inject(DashboardChildComponent, { optional: true });\n private readonly defaultColumns = DEFAULT_DATAPOINTS_LIST_COLUMNS;\n private readonly fetchService = inject(DatapointsListFetchService);\n private readonly groupService = inject(GroupService);\n private readonly inventoryService = inject(InventoryService);\n private readonly router = inject(Router);\n private readonly widgetConfigMigrationService = inject(WidgetConfigMigrationService);\n\n readonly CONTEXT_FEATURE = CONTEXT_FEATURE;\n readonly GLOBAL_CONTEXT_DISPLAY_MODE = GLOBAL_CONTEXT_DISPLAY_MODE;\n missingAllPermissionsAlert = new DynamicComponentAlertAggregator();\n targetManagedObjects = new Map<string, IManagedObject>();\n\n configSignal = linkedSignal(() => this.config());\n contextConfig = signal<GlobalContextState>({});\n dataPoints = signal<DatapointWithMeasurement[]>([]);\n displayMode = signal<DisplayMode>(GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD);\n hasLoadedOnce = signal(false);\n hasNoPermissionsToReadAnyMeasurement = signal(false);\n isLinkedToGlobal = signal<boolean | undefined>(undefined);\n isLoading = signal(false);\n widgetControls = signal<PresetName>(PRESET_NAME.DATA_POINTS_LIST);\n\n fractionSize = computed(() => {\n const decimalPlaces = this.configSignal()?.decimalPlaces;\n if (typeof decimalPlaces === 'number' && !Number.isNaN(decimalPlaces)) {\n return `1.${decimalPlaces}-${decimalPlaces}`;\n }\n return '1.2-2';\n });\n\n columns = computed(() => {\n const options = this.configSignal()?.options;\n\n if (options?.columns?.length > 0) {\n return [...options.columns].sort((a, b) => a.order - b.order);\n }\n\n return this.defaultColumns.map(defaultCol => ({\n ...defaultCol,\n visible: options?.[defaultCol.id] ?? defaultCol.visible\n }));\n });\n\n visibleColumns = computed(() => {\n return this.columns().filter(col => col.visible !== false);\n });\n\n exportConfig = computed<ExportConfig | null>(() => {\n const effectiveConfig = { ...this.configSignal(), ...this.contextConfig() };\n const dateFrom = effectiveConfig.dateTimeContext?.dateFrom;\n const dateTo = effectiveConfig.dateTimeContext?.dateTo;\n\n if (!dateFrom || !dateTo || (this.isLoading() && !this.hasLoadedOnce())) {\n return null;\n }\n\n return {\n exportType: 'latestWithDetails',\n datapointDetails:\n effectiveConfig.datapoints\n ?.filter(dp => dp.__active === true)\n .map(dp => ({\n deviceName: dp.__target?.name || '',\n source: dp.__target?.id || '',\n valueFragmentSeries: dp.series,\n valueFragmentType: dp.fragment,\n target: dp.target,\n label: dp.label\n })) || [],\n dateFrom: dateFrom instanceof Date ? dateFrom.toISOString() : dateFrom,\n dateTo: dateTo instanceof Date ? dateTo.toISOString() : dateTo,\n columns: this.columns()\n .filter(col => col.visible)\n .map(col => ({\n id: col.id,\n label: col.label,\n visible: col.visible,\n order: col.order\n }))\n };\n });\n\n activeDataPoints = computed(() => {\n return this.configSignal()?.datapoints?.filter(dp => dp.__active === true) ?? [];\n });\n\n private loadRequestId = 0;\n private readonly seriesWithoutPermissionToReadCount = signal(0);\n\n constructor() {\n toObservable(this.config)\n .pipe(pairwise(), takeUntilDestroyed())\n .subscribe(([prevConfig, currentConfig]) => {\n if (!this.isInPreviewMode()) {\n return;\n }\n\n const prevContext = this.extractContextState(prevConfig);\n const newContext = this.extractContextState(currentConfig);\n this.contextConfig.set(newContext);\n\n const datapointsChanged = !isEqual(prevConfig.datapoints, currentConfig.datapoints);\n const decimalPlacesChanged = prevConfig.decimalPlaces !== currentConfig.decimalPlaces;\n const contextChanged = !isEqual(prevContext, newContext);\n\n if (datapointsChanged || decimalPlacesChanged || contextChanged) {\n this.isLoading.set(true);\n this.loadDatapoints();\n }\n });\n }\n\n ngOnInit(): void {\n this.applyConfigMigration();\n\n const config = this.configSignal();\n\n const displayMode = config.displayMode || GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD;\n this.displayMode.set(displayMode as DisplayMode);\n\n this.contextConfig.set(this.extractContextState(config));\n // First fetch is triggered by the global-context connector's initial configChange,\n // except in preview mode where the connector is not rendered (see template).\n if (this.isInPreviewMode()) {\n this.loadDatapoints();\n }\n }\n\n onContextChange(event: { context: GlobalContextState; diff: GlobalContextState }): void {\n const { diff, context } = event;\n this.contextConfig.set(context);\n\n if (\n diff.isAutoRefreshEnabled === false &&\n Object.keys(diff).length === 1 &&\n context.refreshOption === REFRESH_OPTION.LIVE\n ) {\n return;\n }\n\n this.isLoading.set(true);\n this.loadDatapoints();\n }\n\n onRefresh(): void {\n this.isLoading.set(true);\n this.loadDatapoints();\n }\n\n onExportModalOpen(isOpened: boolean): void {\n this.setAutoRefreshPaused(isOpened);\n }\n\n async redirectToAsset(assetId: string | number | undefined): Promise<void> {\n if (this.isInPreviewMode() || !assetId) {\n return;\n }\n\n try {\n const { data: mo } = await this.inventoryService.detail(assetId);\n\n if (mo) {\n const assetPath = this.groupService.getAssetPath(mo);\n this.router.navigateByUrl(`/${assetPath}/${mo.id}`);\n }\n } catch (error) {\n this.alertService.addServerFailure(error);\n }\n }\n\n getTargetManagedObject(targetId: string | number): IManagedObject | undefined {\n return this.targetManagedObjects.get(targetId.toString());\n }\n\n getDashboardChild(): DashboardChildComponent | null {\n return this.dashboardChild ?? null;\n }\n\n getRangeValues(dp: KPIDetails): ColorRangeBoundaries {\n return {\n yellowRangeMin: dp.yellowRangeMin,\n yellowRangeMax: dp.yellowRangeMax,\n redRangeMin: dp.redRangeMin,\n redRangeMax: dp.redRangeMax\n };\n }\n\n onListScrolled(): void {\n this.setAutoRefreshPaused(true);\n }\n\n onListScrolledToTop(): void {\n this.setAutoRefreshPaused(false);\n }\n\n /** Runs once on init; subsequent input changes are already in the new format. */\n private applyConfigMigration(): void {\n const raw = this.config();\n const options = this.widgetConfigMigrationService.hasNoTimeContextFields(raw)\n ? { legacyTimeContextDefaults: getLegacyDatapointsListDefaults() }\n : undefined;\n const migrated = this.widgetConfigMigrationService.migrateWidgetConfig(raw, options);\n if (migrated !== raw) {\n this.configSignal.set(merge({}, raw, migrated) as DatapointsListConfig);\n }\n }\n\n private extractContextState(config: Partial<GlobalContextState>): GlobalContextState {\n return {\n dateTimeContext: config.dateTimeContext,\n aggregation: config.aggregation,\n isAutoRefreshEnabled: config.isAutoRefreshEnabled,\n refreshInterval: config.refreshInterval,\n refreshOption: config.refreshOption\n };\n }\n\n private setAutoRefreshPaused(paused: boolean): void {\n if (this.isInPreviewMode()) {\n return;\n }\n\n const current = this.contextConfig();\n if (current.refreshOption === REFRESH_OPTION.HISTORY) {\n return;\n }\n\n this.contextConfig.set({\n ...current,\n isAutoRefreshEnabled: !paused\n });\n this.isLinkedToGlobal.set(!paused);\n }\n\n private loadDatapoints(): void {\n if (this.activeDataPoints().length > 0) {\n this.fetchMeasurements();\n } else {\n this.dataPoints.set([]);\n this.hasLoadedOnce.set(true);\n this.isLoading.set(false);\n }\n }\n\n private async fetchMeasurements(): Promise<void> {\n const requestId = ++this.loadRequestId;\n\n try {\n this.isLoading.set(true);\n\n const effectiveConfig = {\n ...this.configSignal(),\n ...this.contextConfig()\n };\n\n const dateFrom = effectiveConfig.dateTimeContext?.dateFrom;\n const dateTo = effectiveConfig.dateTimeContext?.dateTo;\n\n const dateFromStr = dateFrom instanceof Date ? dateFrom.toISOString() : dateFrom;\n const dateToStr = dateTo instanceof Date ? dateTo.toISOString() : dateTo;\n\n const result = await this.fetchService.fetchDatapointsWithMeasurements(\n this.activeDataPoints(),\n { fractionSize: this.fractionSize(), dateFrom: dateFromStr, dateTo: dateToStr }\n );\n\n if (requestId === this.loadRequestId) {\n this.dataPoints.set(result.dataPoints);\n this.targetManagedObjects = result.targetManagedObjects;\n this.hasLoadedOnce.set(true);\n this.seriesWithoutPermissionToReadCount.set(result.seriesWithoutPermissionCount);\n this.checkAndDisplayPermissionErrors();\n }\n } finally {\n if (requestId === this.loadRequestId) {\n this.isLoading.set(false);\n }\n }\n }\n\n private checkAndDisplayPermissionErrors(): void {\n if (this.seriesWithoutPermissionToReadCount()) {\n this.missingAllPermissionsAlert.clear();\n this.handleNoPermissionErrorMessage();\n }\n }\n\n private handleNoPermissionErrorMessage(): void {\n const noPermissions =\n this.seriesWithoutPermissionToReadCount() === this.activeDataPoints().length;\n this.hasNoPermissionsToReadAnyMeasurement.set(noPermissions);\n\n if (noPermissions) {\n this.showMessageForMissingPermissionsForAllSeries();\n }\n }\n\n private showMessageForMissingPermissionsForAllSeries(): void {\n this.missingAllPermissionsAlert.addAlerts(\n new DynamicComponentAlert({\n allowHtml: true,\n text: gettext(`<p>To view data, you must meet at least one of these criteria:</p>\n <ul>\n <li>\n Have\n <b>READ permission for \"Measurements\" permission type</b>\n (either as a global role or for the specific source)\n </li>\n <li>\n Be the\n <b>owner of the source</b>\n you want to export data from\n </li>\n </ul>\n <p>Don't meet these requirements? Contact your system administrator for assistance.</p>`),\n type: 'system'\n })\n );\n }\n}\n","@if (!isInPreviewMode()) {\n <div class=\"d-flex gap-16 p-r-16 inner-scroll h-auto min-width-0\">\n @if (displayMode() === GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD) {\n <c8y-global-context-connector\n [controls]=\"widgetControls()\"\n [config]=\"contextConfig()\"\n [isLoading]=\"isLoading()\"\n [dashboardChild]=\"getDashboardChild()!\"\n [linked]=\"isLinkedToGlobal()\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n ></c8y-global-context-connector>\n } @else {\n <c8y-local-controls\n [controls]=\"widgetControls()\"\n [displayMode]=\"displayMode()\"\n [config]=\"contextConfig()\"\n [isLoading]=\"isLoading()\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n ></c8y-local-controls>\n }\n </div>\n}\n\n@if (!isInPreviewMode() && exportConfig(); as config) {\n <c8y-widget-action>\n <c8y-datapoints-export-selector\n [displayMode]=\"'icon-only'\"\n [exportConfig]=\"config\"\n [containerClass]=\"'d-contents'\"\n (isOpen)=\"onExportModalOpen($event)\"\n ></c8y-datapoints-export-selector>\n </c8y-widget-action>\n}\n\n@if (!hasNoPermissionsToReadAnyMeasurement()) {\n <!-- the .page-sticky-header -->\n @if (dataPoints().length > 0) {\n <div class=\"hidden-xs hidden-sm c8y-list__item\">\n <div class=\"c8y-list__item__block flex-grow min-width-0\">\n <div class=\"c8y-list__item__icon\">\n <i style=\"width: 22px\"></i>\n </div>\n <div class=\"c8y-list__item__body\">\n <div class=\"d-flex-md row\">\n @for (column of visibleColumns(); track column.id) {\n <div\n [class]=\"\n column.id === 'kpi' || column.id === 'asset'\n ? 'col-md-3 flex-grow min-width-0'\n : column.id == 'diff' || column.id == 'diffPercentage'\n ? 'col-md-1 flex-grow min-width-0'\n : 'col-md-2 flex-grow min-width-0'\n \"\n [class.text-right]=\"column.id !== 'asset' && column.id !== 'kpi'\"\n >\n <span class=\"text-medium text-truncate\">\n {{ column.label | translate }}\n </span>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n }\n <!-- The record list -->\n @if (isLoading() && !hasLoadedOnce()) {\n <!-- Initial load: full spinner -->\n <ng-container [ngTemplateOutlet]=\"loading\"></ng-container>\n } @else {\n @if (isLoading()) {\n <!-- Refresh: inline loading overlay -->\n <div class=\"p-absolute fit-w overflow-hidden p-b-4\">\n <c8y-loading [layout]=\"'page'\"></c8y-loading>\n </div>\n }\n @if (dataPoints().length) {\n <c8y-list-group\n class=\"flex-grow\"\n role=\"list\"\n c8yVirtualScrollListener\n (scrolled)=\"onListScrolled()\"\n (scrolledToTop)=\"onListScrolledToTop()\"\n >\n <c8y-li\n role=\"listitem\"\n *c8yFor=\"\n let dp of { data: dataPoints(), res: null! };\n enableVirtualScroll: true;\n virtualScrollElementSize: 48;\n virtualScrollStrategy: 'fixed'\n \"\n >\n <c8y-li-icon>\n <i\n c8yIcon=\"circle\"\n [style.color]=\"dp.color\"\n ></i>\n </c8y-li-icon>\n <c8y-li-body>\n <div class=\"d-flex-md row\">\n @for (column of visibleColumns(); track column.id) {\n @switch (column.id) {\n @case ('kpi') {\n <div\n class=\"col-md-3 flex-grow\"\n [attr.data-cy]=\"'datapointlist-' + column.id\"\n >\n <div class=\"d-flex a-i-center d-contents-md p-t-4 p-b-4 separator-bottom\">\n <small\n class=\"text-label-small flex-grow visible-xs-inline-block visible-sm-inline-block\"\n >{{ column.label | translate }}</small\n >\n {{ dp.label | translate }}\n @if (dp.unit) {\n <small class=\"text-muted\">{{ dp.unit }}</small>\n }\n </div>\n </div>\n }\n @case ('target') {\n <div\n class=\"col-md-2 text-right-md flex-grow\"\n [attr.data-cy]=\"'datapointlist-' + column.id\"\n >\n <div class=\"d-flex a-i-center d-contents-md p-t-4 p-b-4 separator-bottom\">\n <small\n class=\"text-label-small flex-grow visible-xs-inline-block visible-sm-inline-block\"\n >{{ column.label | translate }}</small\n >\n <span>{{ dp.target }}</span>\n </div>\n </div>\n }\n @case ('current') {\n <div\n class=\"col-md-2 text-right-md flex-grow\"\n [attr.data-cy]=\"'datapointlist-' + column.id\"\n >\n <div class=\"d-flex a-i-center d-contents-md p-t-4 p-b-4 separator-bottom\">\n <small\n class=\"text-label-small flex-grow visible-xs-inline-block visible-sm-inline-block\"\n >{{ column.label | translate }}</small\n >\n @let ariaLabel =\n 'Last updated: {{ date }}'\n | translate: { date: dp.timestamp | c8yDate: 'medium' };\n <span\n [class]=\"dp.currentValue | applyRangeClass: getRangeValues(dp)\"\n [title]=\"dp.timestamp | c8yDate: 'medium'\"\n [attr.aria-label]=\"ariaLabel\"\n >\n {{ dp.currentValue | number: dp.currentFractionSize }}\n </span>\n </div>\n </div>\n }\n @case ('diff') {\n <div\n class=\"col-md-1 text-right-md flex-grow\"\n [attr.data-cy]=\"'datapointlist-' + column.id\"\n >\n <div class=\"d-flex a-i-center d-contents-md p-t-4 p-b-4 separator-bottom\">\n <small\n class=\"text-label-small flex-grow visible-xs-inline-block visible-sm-inline-block\"\n >{{ column.label | translate }}</small\n >\n <span>\n {{ dp.diffValue | number: dp.diffFractionSize }}\n </span>\n </div>\n </div>\n }\n @case ('diffPercentage') {\n <div\n class=\"col-md-1 text-right-md flex-grow\"\n [attr.data-cy]=\"'datapointlist-' + column.id\"\n >\n <div class=\"d-flex a-i-center d-contents-md p-t-4 p-b-4 separator-bottom\">\n <small\n class=\"text-label-small flex-grow visible-xs-inline-block visible-sm-inline-block\"\n >{{ column.label | translate }}</small\n >\n <span>\n {{ dp.diffPercentValue | number: dp.diffPercentFractionSize }}\n </span>\n </div>\n </div>\n }\n @case ('asset') {\n <div\n class=\"col-md-3 flex-grow\"\n [attr.data-cy]=\"'datapointlist-' + column.id\"\n >\n <div class=\"d-flex a-i-center d-contents-md p-t-4 p-b-4 separator-bottom\">\n <small\n class=\"text-label-small flex-grow visible-xs-inline-block visible-sm-inline-block\"\n >{{ column.label | translate }}</small\n >\n @let ariaLabel =\n 'Navigate to asset: \"{{ name }}\"'\n | translate: { name: dp.__target?.name };\n <button\n class=\"btn-clean d-flex a-i-center gap-4 text-muted\"\n [attr.aria-label]=\"ariaLabel\"\n type=\"button\"\n (click)=\"redirectToAsset(dp.__target?.id)\"\n >\n @if (dp.__target?.id && getTargetManagedObject(dp.__target.id); as mo) {\n <c8y-device-status\n [mo]=\"mo\"\n [size]=\"16\"\n ></c8y-device-status>\n }\n <small\n class=\"text-truncate\"\n [title]=\"dp.__target?.name\"\n >{{ dp.__target?.name }}</small\n >\n </button>\n </div>\n </div>\n }\n }\n }\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n } @else {\n <ng-container [ngTemplateOutlet]=\"emptyState\"></ng-container>\n }\n }\n} @else {\n <div class=\"p-t-24 p-r-16 p-l-16 p-b-16 d-flex\">\n <div class=\"center-block\">\n <c8y-dynamic-component-alerts\n [alerts]=\"missingAllPermissionsAlert\"\n ></c8y-dynamic-component-alerts>\n </div>\n </div>\n}\n\n<ng-template #loading>\n <c8y-loading></c8y-loading>\n</ng-template>\n\n<ng-template #emptyState>\n <div class=\"p-relative p-l-24\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-alert-idle'\"\n [title]=\"'No data to display.' | translate\"\n [horizontal]=\"true\"\n data-cy=\"datapoints-list--empty-state\"\n >\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/widgets-collection/#data-point-list\"\n >user documentation</a\n >.\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n</ng-template>\n","import { CdkDragDrop, DragDropModule } from '@angular/cdk/drag-drop';\nimport { AsyncPipe } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n inject,\n input,\n OnInit,\n signal,\n TemplateRef,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport {\n AbstractControl,\n FormArray,\n FormBuilder,\n FormGroup,\n NgForm,\n ReactiveFormsModule,\n ValidationErrors,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport {\n C8yTranslatePipe,\n DynamicComponentModule,\n FormGroupComponent,\n IconDirective,\n ListGroupModule\n} from '@c8y/ngx-components';\nimport { WidgetConfigService } from '@c8y/ngx-components/context-dashboard';\nimport {\n LocalControlsComponent,\n PRESET_NAME,\n PresetName,\n WidgetConfigMigrationService\n} from '@c8y/ngx-components/global-context';\nimport { isEqual } from 'lodash-es';\nimport { PopoverModule } from 'ngx-bootstrap/popover';\nimport { debounceTime, distinctUntilChanged, filter, Observable, take } from 'rxjs';\nimport { DatapointsListViewComponent } from '../datapoints-list-view/datapoints-list-view.component';\nimport { ColumnConfig, DatapointsListConfig } from '../datapoints-list-widget.model';\nimport {\n DEFAULT_DATAPOINTS_LIST_COLUMNS,\n getLegacyDatapointsListDefaults\n} from '../datapoints-list.constants';\n\nconst DEFAULT_DECIMAL_PLACES = 2;\nconst MIN_DECIMAL_PLACES = 0;\nconst MAX_DECIMAL_PLACES = 10;\n\n@Component({\n selector: 'c8y-datapoints-list-view-config',\n templateUrl: './datapoints-list-config.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n AsyncPipe,\n C8yTranslatePipe,\n DatapointsListViewComponent,\n DragDropModule,\n DynamicComponentModule,\n FormGroupComponent,\n IconDirective,\n ListGroupModule,\n LocalControlsComponent,\n ReactiveFormsModule,\n PopoverModule\n ]\n})\nexport class DatapointsListConfigComponent implements OnInit, AfterViewInit {\n config = input.required<DatapointsListConfig>();\n private readonly previewTemplate = viewChild<TemplateRef<unknown>>('dataPointsListPreview');\n\n private readonly defaultColumns = DEFAULT_DATAPOINTS_LIST_COLUMNS;\n private readonly destroyRef = inject(DestroyRef);\n private readonly form = inject(NgForm);\n private readonly formBuilder = inject(FormBuilder);\n private readonly widgetConfigMigrationService = inject(WidgetConfigMigrationService);\n private readonly widgetConfigService = inject(WidgetConfigService);\n\n readonly controls: PresetName = PRESET_NAME.DATA_POINTS_LIST;\n readonly minDecimalPlaces = MIN_DECIMAL_PLACES;\n readonly maxDecimalPlaces = MAX_DECIMAL_PLACES;\n configForm = signal<ReturnType<DatapointsListConfigComponent['createForm']> | undefined>(\n undefined\n );\n readonly columnsFormArray = computed(() => this.configForm()?.get('columns') as FormArray);\n\n /**\n * Debounced config for preview to prevent multiple series requests on initial load.\n * Uses debounceTime to batch rapid emissions (e.g., from initConfig + GlobalContext processing).\n */\n previewConfig$ = this.widgetConfigService.currentConfig$.pipe(\n filter(config => !!config?.dateTimeContext),\n debounceTime(300)\n ) as Observable<DatapointsListConfig>;\n\n ngOnInit(): void {\n this.applyLegacyEpochDefaults();\n\n this.widgetConfigService.currentConfig$\n .pipe(\n filter(config => !!config?.dateTimeContext),\n take(1),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(() => this.initForm());\n }\n\n ngAfterViewInit(): void {\n this.widgetConfigService.setPreview(this.previewTemplate() ?? null);\n }\n\n onColumnDrop(event: CdkDragDrop<ColumnConfig[]>): void {\n const columnsArray = this.columnsFormArray();\n const item = columnsArray.at(event.previousIndex);\n columnsArray.removeAt(event.previousIndex);\n columnsArray.insert(event.currentIndex, item);\n columnsArray.controls.forEach((control, index) => control.patchValue({ order: index }));\n }\n\n private initForm(): void {\n const form = this.createForm();\n this.form.form.addControl('config', form);\n form.patchValue(this.config(), { emitEvent: false });\n\n this.pushFormToService(form.value);\n\n form.valueChanges\n .pipe(\n distinctUntilChanged((prev, curr) => isEqual(prev, curr)),\n debounceTime(300),\n takeUntilDestroyed(this.destroyRef)\n )\n .subscribe(formValue => {\n if (form.invalid) {\n return;\n }\n\n const { decimalPlaces } = formValue;\n if (\n typeof decimalPlaces === 'number' &&\n (decimalPlaces < MIN_DECIMAL_PLACES || decimalPlaces > MAX_DECIMAL_PLACES)\n ) {\n return;\n }\n\n this.pushFormToService(formValue);\n });\n\n this.configForm.set(form);\n }\n\n private pushFormToService(formValue: unknown): void {\n const formData = formValue as { columns?: ColumnConfig[]; [key: string]: unknown };\n const { columns, ...formValueWithoutColumns } = formData;\n const currentOptions = this.widgetConfigService.currentConfig?.options;\n this.widgetConfigService.updateConfig({\n ...formValueWithoutColumns,\n options: {\n ...currentOptions,\n columns: columns || []\n }\n });\n }\n\n private createForm() {\n const currentConfig = this.config();\n const columns = this.migrateColumnsConfig(currentConfig);\n\n return this.formBuilder.group({\n decimalPlaces: [\n currentConfig?.decimalPlaces ?? DEFAULT_DECIMAL_PLACES,\n [\n Validators.required,\n Validators.min(MIN_DECIMAL_PLACES),\n Validators.max(MAX_DECIMAL_PLACES),\n Validators.pattern('^[0-9]+$')\n ]\n ],\n columns: this.formBuilder.array(\n columns.map(col => this.createColumnFormGroup(col)),\n [Validators.required, Validators.minLength(1), this.minOneColumnVisible()]\n )\n });\n }\n\n private createColumnFormGroup(column: ColumnConfig): FormGroup {\n return this.formBuilder.group({\n id: [column.id, Validators.required],\n label: [column.label, Validators.required],\n visible: [column.visible],\n order: [column.order]\n });\n }\n\n private migrateColumnsConfig(config: DatapointsListConfig): ColumnConfig[] {\n if (config?.options?.columns?.length > 0) {\n return [...config.options.columns].sort((a, b) => a.order - b.order);\n }\n\n return this.defaultColumns.map(defaultCol => ({\n ...defaultCol,\n visible: config?.options?.[defaultCol.id] ?? defaultCol.visible\n }));\n }\n\n private minOneColumnVisible(): ValidatorFn {\n return (control: AbstractControl): ValidationErrors | null => {\n const columns: ColumnConfig[] = control.value;\n\n if (!columns?.length) {\n return null;\n }\n\n const visibleColumns = columns.filter(column => column.visible);\n return visibleColumns.length >= 1 ? null : { atLeastOneColumnMustBeVisible: true };\n };\n }\n\n /** Stamp epoch defaults so the editor opens matching the AngularJS predecessor. */\n private applyLegacyEpochDefaults(): void {\n const currentConfig = this.widgetConfigService.currentConfig;\n if (!currentConfig) {\n return;\n }\n\n if (this.widgetConfigMigrationService.hasNoTimeContextFields(currentConfig)) {\n this.widgetConfigService.updateConfig(getLegacyDatapointsListDefaults());\n }\n }\n}\n","@if (configForm(); as form) {\n <form\n class=\"no-card-context\"\n [formGroup]=\"form\"\n >\n <fieldset class=\"c8y-fieldset\">\n <legend>{{ 'Columns (drag to reorder)' | translate }}</legend>\n <c8y-list-group\n formArrayName=\"columns\"\n cdkDropList\n (cdkDropListDropped)=\"onColumnDrop($event)\"\n >\n @if (columnsFormArray().errors?.atLeastOneColumnMustBeVisible) {\n <div\n class=\"alert alert-warning m-t-8\"\n role=\"alert\"\n >\n {{ 'At least 1 column must be visible.' | translate }}\n </div>\n }\n\n @for (column of columnsFormArray().controls; track column.value.id; let i = $index) {\n <c8y-li\n class=\"c8y-list__item__collapse--container-small\"\n [formGroupName]=\"i\"\n cdkDrag\n >\n <c8y-li-drag-handle\n [title]=\"'Click and drag to reorder' | translate\"\n cdkDragHandle\n >\n <i c8yIcon=\"drag-reorder\"></i>\n </c8y-li-drag-handle>\n <c8y-li-checkbox\n class=\"a-s-center p-r-0\"\n [displayAsSwitch]=\"true\"\n formControlName=\"visible\"\n (click)=\"$event.stopPropagation()\"\n ></c8y-li-checkbox>\n <c8y-li-body>\n <div class=\"d-flex a-i-center\">\n <span class=\"text-truncate\">{{ column.value.label | translate }}</span>\n @switch (column.value.label) {\n @case ('Target') {\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help content' | translate\"\n [popover]=\"\n 'The Target column shows the value set on the target field of the data point'\n | translate\n \"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n }\n @case ('Diff') {\n <button\n class=\"btn-help\"\n [attr.aria-label]=\"'Help content' | translate\"\n [popover]=\"\n 'The Diff column shows the difference between the current value and the target value of the data point'\n | translate\n \"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n }\n }\n </div>\n </c8y-li-body>\n </c8y-li>\n }\n </c8y-list-group>\n </fieldset>\n\n <!-- decimal input -->\n <fieldset class=\"c8y-fieldset\">\n <legend>\n {{ 'Decimal places' | translate }}\n </legend>\n <c8y-form-group class=\"p-t-8\">\n <input\n class=\"form-control\"\n name=\"decimalPlaces\"\n type=\"number\"\n formControlName=\"decimalPlaces\"\n step=\"1\"\n [min]=\"minDecimalPlaces\"\n [max]=\"maxDecimalPlaces\"\n />\n </c8y-form-group>\n </fieldset>\n </form>\n}\n\n<ng-template #dataPointsListPreview>\n @let previewConfig = previewConfig$ | async;\n @if (previewConfig && previewConfig.displayMode !== 'dashboard') {\n <c8y-local-controls\n [controls]=\"controls\"\n [displayMode]=\"previewConfig.displayMode!\"\n [config]=\"previewConfig\"\n [disabled]=\"true\"\n ></c8y-local-controls>\n }\n\n @if (previewConfig) {\n <c8y-datapoints-list\n [config]=\"previewConfig\"\n [isInPreviewMode]=\"true\"\n data-cy=\"c8y-datapoints-list-widget-config--preview-datapoints-list\"\n ></c8y-datapoints-list>\n }\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
@@ -1046,6 +1046,15 @@ interface LegacyWidgetConfig {
1046
1046
  /** Generic nested configuration */
1047
1047
  config?: Record<string, unknown>;
1048
1048
  }
1049
+ /** Options for `WidgetConfigMigrationService.migrateWidgetConfig`. */
1050
+ interface MigrateWidgetConfigOptions {
1051
+ /**
1052
+ * Defaults applied when a config has no time-context fields. Without this, such
1053
+ * configs fall back to the generic "last hour" default — wrong for widgets whose
1054
+ * AngularJS predecessor displayed full history (e.g. datapoints list).
1055
+ */
1056
+ legacyTimeContextDefaults?: Partial<GlobalContextState>;
1057
+ }
1049
1058
  declare class WidgetConfigMigrationService {
1050
1059
  private dateTimeContextPickerService;
1051
1060
  constructor(dateTimeContextPickerService: DateTimeContextPickerService);
@@ -1095,7 +1104,13 @@ declare class WidgetConfigMigrationService {
1095
1104
  * // }
1096
1105
  * ```
1097
1106
  */
1098
- migrateWidgetConfig<T extends object = object>(config: T): Partial<GlobalContextState>;
1107
+ migrateWidgetConfig<T extends object = object>(config: T, options?: MigrateWidgetConfigOptions): Partial<GlobalContextState>;
1108
+ /**
1109
+ * True when a config carries neither the new `dateTimeContext` nor any legacy time
1110
+ * field (`dateFrom`, `dateTo`, `dateFilter`, `date`, `interval`). Use to decide
1111
+ * whether widget-specific legacy defaults should be applied.
1112
+ */
1113
+ hasNoTimeContextFields(config: object): boolean;
1099
1114
  /**
1100
1115
  * Creates a flattened configuration by excluding nested configuration objects.
1101
1116
  *
@@ -3999,5 +4014,5 @@ declare class DateTimeContextUtil {
3999
4014
  }
4000
4015
 
4001
4016
  export { AGGREGATIONS, AGGREGATION_ICONS, AGGREGATION_ICON_TYPE, AGGREGATION_LABELS, AGGREGATION_LIMITS, AGGREGATION_TEXTS, AGGREGATION_VALUES, AGGREGATION_VALUES_ARR, AggregationDisplayComponent, AggregationPickerComponent, AggregationPickerService, AggregationValidationService, AutoRefreshControlComponent, CONTEXT_FEATURE, CONTROL_PRESETS, ConfigContextSelectorComponent, ConfigModeControls, ConfigModeControls as ConfigModeControlsComponent, ConfigurationCollapseComponent, ConfigurationControlsComponent, ContextControlsComponent, DEFAULT_WIDGET_TEMPLATE, DateContextQueryParamNames, DateTimeContextPickerComponent, DateTimeContextPickerService, DateTimeContextUtil, GLOBAL_CONTEXT_DASHBOARD_PATHS, GLOBAL_CONTEXT_DEFAULTS, GLOBAL_CONTEXT_DISPLAY_MODE, GLOBAL_CONTEXT_EVENTS, GLOBAL_CONTEXT_SOURCE, GlobalContextComponent, GlobalContextConfigComponent, GlobalContextConnectorComponent, GlobalContextEventService, GlobalContextFormService, GlobalContextInlineComponent, GlobalContextLinkControlsComponent, GlobalContextModule, GlobalContextNavigationService, GlobalContextQueryService, GlobalContextService, GlobalContextUtilsService, GlobalContextValidationService, GlobalContextWidgetConfigComponent, GlobalContextWidgetWrapperComponent, HistoryModeConfigurationControlsComponent, INTERVALS, INTERVAL_TITLES, IntervalPickerComponent, LINK_BTNS_CONFIG, LinkButtonsComponent, LiveModeConfigurationControlsComponent, LocalControlsComponent, PRESET_NAME, PreviewControlsComponent, REFRESH_OPTION, ROUTE_PATHS, RealtimeControlComponent, TIME_DURATION, TIME_INTERVAL, TIME_SPAN_MS, TIMING, TimeRangeDisplayComponent, UI_PRIORITIES, WIDGET_DISPLAY_MODE, WIDGET_FEATURE_MAP, WidgetConfigMigrationService, WidgetControlService, applyModeConstraints, buildAggregationExtensions, buildBaselineControls, buildWidgetControlsFromPresets, controlsToSettings, createAutoRefreshHandlers, createResult, defineWidgetControls, getSupportedModes, guards, isAggregationLinked, isAggregationUnlinked, isAutoRefreshDisabled, isAutoRefreshEnabled, isConfig, isDashboard, isDateTimeContextLinked, isDateTimeContextUnlinked, isHistory, isLive, isViewAndConfig, mergePartialControls, resolveWidgetControlsInput, setAutoRefreshControlsVisibility, setAutoRefreshLinks, updateBothSettings };
4002
- export type { Aggregation, AggregationCalculationResult, AggregationIconType, AggregationOption, AggregationOptionStatus, AggregationState, AlarmFilterInterval, ContextConfig, ContextFeature, ControlConfigsMap, DateContextParams, DateTimeContext, DateTimeContextPickerConfig, DisplayMode, GlobalContextDisplayMode, GlobalContextEvent, GlobalContextEventBase, GlobalContextEventRegistry, GlobalContextEventType, GlobalContextEventUnion, GlobalContextInstance, GlobalContextKeys, GlobalContextSettings, GlobalContextSource, GlobalContextState, GuardState, InputDateContextQueryParams, Interval, LegacyWidgetConfig, LinkStatesMap, LinkToggleEvent, OutputDateContextQueryParams, ParameterValidationStatus, PartialWidgetControls, PresetDefinition, PresetName, RefreshOption, RoutePath, TimeInterval, WidgetControlHandler, WidgetControlSettings, WidgetControls, WidgetControlsPresetConfig, WidgetDisplayMode, WidgetFeature, WidgetPresetName, WidgetPresetSelection, WidgetSettingsResult, WidgetState, WidgetStateHandlerResult };
4017
+ export type { Aggregation, AggregationCalculationResult, AggregationIconType, AggregationOption, AggregationOptionStatus, AggregationState, AlarmFilterInterval, ContextConfig, ContextFeature, ControlConfigsMap, DateContextParams, DateTimeContext, DateTimeContextPickerConfig, DisplayMode, GlobalContextDisplayMode, GlobalContextEvent, GlobalContextEventBase, GlobalContextEventRegistry, GlobalContextEventType, GlobalContextEventUnion, GlobalContextInstance, GlobalContextKeys, GlobalContextSettings, GlobalContextSource, GlobalContextState, GuardState, InputDateContextQueryParams, Interval, LegacyWidgetConfig, LinkStatesMap, LinkToggleEvent, MigrateWidgetConfigOptions, OutputDateContextQueryParams, ParameterValidationStatus, PartialWidgetControls, PresetDefinition, PresetName, RefreshOption, RoutePath, TimeInterval, WidgetControlHandler, WidgetControlSettings, WidgetControls, WidgetControlsPresetConfig, WidgetDisplayMode, WidgetFeature, WidgetPresetName, WidgetPresetSelection, WidgetSettingsResult, WidgetState, WidgetStateHandlerResult };
4003
4018
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sources":["../../global-context/models/auto-refresh.model.ts","../../global-context/models/control-flow.model.ts","../../global-context/models/interval-picker.model.ts","../../global-context/models/date-time-context-picker.model.ts","../../global-context/models/global-context.model.ts","../../global-context/models/global-context-defaults.ts","../../global-context/models/aggregation.model.ts","../../global-context/models/context-config.model.ts","../../global-context/models/constants.ts","../../global-context/services/state/global-context.service.ts","../../global-context/services/state/global-context-form.service.ts","../../global-context/services/state/global-context-event.service.ts","../../global-context/services/domain/widget-control.service.ts","../../global-context/services/domain/date-time-context-picker.service.ts","../../global-context/services/domain/widget-config-migration.service.ts","../../global-context/services/domain/global-context-validation.service.ts","../../global-context/services/domain/aggregation-picker.service.ts","../../global-context/services/domain/aggregation-validation.service.ts","../../global-context/services/infrastructure/global-context-utils.service.ts","../../global-context/services/infrastructure/global-context-navigation.service.ts","../../global-context/services/infrastructure/global-context-query.service.ts","../../global-context/features/configuration/configuration-collapse/configuration-collapse.component.ts","../../global-context/core/global-context.component.ts","../../global-context/core/global-context-inline.component.ts","../../global-context/core/global-context-config.component.ts","../../global-context/core/global-context-widget-config.component.ts","../../global-context/core/widget-inline/inline-context.models.ts","../../global-context/core/widget-inline/inline-link-controls.component.ts","../../global-context/features/time-context/time-range-picker/date-time-context-picker.component.ts","../../global-context/features/time-context/time-range-display/time-range-display.component.ts","../../global-context/features/time-context/interval-picker/interval-picker.component.ts","../../global-context/features/aggregation/aggregation-picker/aggregation-picker.component.ts","../../global-context/features/aggregation/aggregation-display/aggregation-display.component.ts","../../global-context/features/refresh/auto-refresh/auto-refresh-control.component.ts","../../global-context/features/refresh/realtime-control/realtime-control.component.ts","../../global-context/features/configuration/config-context-selector/config-context-selector.component.ts","../../global-context/features/configuration/configuration-controls/configuration-controls.component.ts","../../global-context/features/configuration/live-mode-configuration-controls/live-mode-configuration-controls.component.ts","../../global-context/features/configuration/history-mode-configuration-controls/history-mode-configuration-controls.component.ts","../../global-context/shared/context-controls/context-controls.component.ts","../../global-context/shared/preview-controls/preview-controls.component.ts","../../global-context/integration/widget-controls/widget-controls-factory.ts","../../global-context/integration/widget-controls/guards.ts","../../global-context/integration/widget-controls/update-helpers.ts","../../global-context/integration/widget-controls/default-widget-template.ts","../../global-context/integration/widget-controls/widget-controls-presets.ts","../../global-context/integration/widget-wrapper/global-context-widget-wrapper.component.ts","../../global-context/integration/presets/control-presets.ts","../../global-context/integration/config-mode-controls/config-mode-controls.component.ts","../../global-context/integration/global-context-connector/global-context-connector.component.ts","../../global-context/integration/link-buttons/link-buttons.component.ts","../../global-context/integration/local-controls/local-controls.component.ts","../../global-context/global-context.module.ts","../../global-context/integration/widget-controls/widget-controls-presets.helpers.ts","../../global-context/utils/date-time-context.util.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sources":["../../global-context/models/auto-refresh.model.ts","../../global-context/models/control-flow.model.ts","../../global-context/models/interval-picker.model.ts","../../global-context/models/date-time-context-picker.model.ts","../../global-context/models/global-context.model.ts","../../global-context/models/global-context-defaults.ts","../../global-context/models/aggregation.model.ts","../../global-context/models/context-config.model.ts","../../global-context/models/constants.ts","../../global-context/services/state/global-context.service.ts","../../global-context/services/state/global-context-form.service.ts","../../global-context/services/state/global-context-event.service.ts","../../global-context/services/domain/widget-control.service.ts","../../global-context/services/domain/date-time-context-picker.service.ts","../../global-context/services/domain/widget-config-migration.service.ts","../../global-context/services/domain/global-context-validation.service.ts","../../global-context/services/domain/aggregation-picker.service.ts","../../global-context/services/domain/aggregation-validation.service.ts","../../global-context/services/infrastructure/global-context-utils.service.ts","../../global-context/services/infrastructure/global-context-navigation.service.ts","../../global-context/services/infrastructure/global-context-query.service.ts","../../global-context/features/configuration/configuration-collapse/configuration-collapse.component.ts","../../global-context/core/global-context.component.ts","../../global-context/core/global-context-inline.component.ts","../../global-context/core/global-context-config.component.ts","../../global-context/core/global-context-widget-config.component.ts","../../global-context/core/widget-inline/inline-context.models.ts","../../global-context/core/widget-inline/inline-link-controls.component.ts","../../global-context/features/time-context/time-range-picker/date-time-context-picker.component.ts","../../global-context/features/time-context/time-range-display/time-range-display.component.ts","../../global-context/features/time-context/interval-picker/interval-picker.component.ts","../../global-context/features/aggregation/aggregation-picker/aggregation-picker.component.ts","../../global-context/features/aggregation/aggregation-display/aggregation-display.component.ts","../../global-context/features/refresh/auto-refresh/auto-refresh-control.component.ts","../../global-context/features/refresh/realtime-control/realtime-control.component.ts","../../global-context/features/configuration/config-context-selector/config-context-selector.component.ts","../../global-context/features/configuration/configuration-controls/configuration-controls.component.ts","../../global-context/features/configuration/live-mode-configuration-controls/live-mode-configuration-controls.component.ts","../../global-context/features/configuration/history-mode-configuration-controls/history-mode-configuration-controls.component.ts","../../global-context/shared/context-controls/context-controls.component.ts","../../global-context/shared/preview-controls/preview-controls.component.ts","../../global-context/integration/widget-controls/widget-controls-factory.ts","../../global-context/integration/widget-controls/guards.ts","../../global-context/integration/widget-controls/update-helpers.ts","../../global-context/integration/widget-controls/default-widget-template.ts","../../global-context/integration/widget-controls/widget-controls-presets.ts","../../global-context/integration/widget-wrapper/global-context-widget-wrapper.component.ts","../../global-context/integration/presets/control-presets.ts","../../global-context/integration/config-mode-controls/config-mode-controls.component.ts","../../global-context/integration/global-context-connector/global-context-connector.component.ts","../../global-context/integration/link-buttons/link-buttons.component.ts","../../global-context/integration/local-controls/local-controls.component.ts","../../global-context/global-context.module.ts","../../global-context/integration/widget-controls/widget-controls-presets.helpers.ts","../../global-context/utils/date-time-context.util.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}
package/locales/de.po CHANGED
@@ -1906,6 +1906,9 @@ msgstr "Ein Fehler ist aufgetreten"
1906
1906
  msgid "An error occurred while communicating with the AI agent."
1907
1907
  msgstr "Bei der Kommunikation mit dem KI-Agenten ist ein Fehler aufgetreten."
1908
1908
 
1909
+ msgid "An error occurred while processing the response from the AI agent."
1910
+ msgstr "Bei der Verarbeitung der Antwort des KI-Agents ist ein Fehler aufgetreten."
1911
+
1909
1912
  msgid "An error occurred, please contact support."
1910
1913
  msgstr "Ein Fehler ist aufgetreten. Bitte kontaktieren Sie den Support."
1911
1914
 
package/locales/es.po CHANGED
@@ -1915,6 +1915,9 @@ msgstr "Se ha producido un error"
1915
1915
  msgid "An error occurred while communicating with the AI agent."
1916
1916
  msgstr "Se ha producido un error al comunicarse con el agente de IA."
1917
1917
 
1918
+ msgid "An error occurred while processing the response from the AI agent."
1919
+ msgstr "Se ha producido un error al procesar la respuesta del agente de IA."
1920
+
1918
1921
  msgid "An error occurred, please contact support."
1919
1922
  msgstr "Se ha producido un error. Póngase en contacto con el soporte técnico."
1920
1923
 
package/locales/fr.po CHANGED
@@ -1912,6 +1912,9 @@ msgstr "Une erreur s'est produite"
1912
1912
  msgid "An error occurred while communicating with the AI agent."
1913
1913
  msgstr "Une erreur s'est produite lors de la communication avec l'agent IA."
1914
1914
 
1915
+ msgid "An error occurred while processing the response from the AI agent."
1916
+ msgstr "Une erreur s'est produite lors du traitement de la réponse de l'agent IA."
1917
+
1915
1918
  msgid "An error occurred, please contact support."
1916
1919
  msgstr "Une erreur s'est produite, veuillez contacter notre équipe de support technique."
1917
1920
 
package/locales/ja_JP.po CHANGED
@@ -1859,6 +1859,9 @@ msgstr "エラーが発生しました"
1859
1859
  msgid "An error occurred while communicating with the AI agent."
1860
1860
  msgstr ""
1861
1861
 
1862
+ msgid "An error occurred while processing the response from the AI agent."
1863
+ msgstr ""
1864
+
1862
1865
  msgid "An error occurred, please contact support."
1863
1866
  msgstr "エラーが発生しました。サポートに連絡してください。"
1864
1867
 
package/locales/ko.po CHANGED
@@ -1893,6 +1893,9 @@ msgstr "오류가 발생했습니다"
1893
1893
  msgid "An error occurred while communicating with the AI agent."
1894
1894
  msgstr "AI 에이전트와 통신하는 동안 오류가 발생했습니다."
1895
1895
 
1896
+ msgid "An error occurred while processing the response from the AI agent."
1897
+ msgstr "AI 에이전트의 응답을 처리하는 과정에서 오류가 발생했습니다."
1898
+
1896
1899
  msgid "An error occurred, please contact support."
1897
1900
  msgstr "오류가 발생했습니다. 지원 팀에 문의하십시오."
1898
1901
 
@@ -1806,6 +1806,9 @@ msgstr ""
1806
1806
  msgid "An error occurred while communicating with the AI agent."
1807
1807
  msgstr ""
1808
1808
 
1809
+ msgid "An error occurred while processing the response from the AI agent."
1810
+ msgstr ""
1811
+
1809
1812
  msgid "An error occurred, please contact support."
1810
1813
  msgstr ""
1811
1814
 
package/locales/nl.po CHANGED
@@ -1913,6 +1913,9 @@ msgstr "Er is een fout opgetreden"
1913
1913
  msgid "An error occurred while communicating with the AI agent."
1914
1914
  msgstr "Er is een fout opgetreden tijdens de communicatie met de AI-agent."
1915
1915
 
1916
+ msgid "An error occurred while processing the response from the AI agent."
1917
+ msgstr "Er is een fout opgetreden bij het verwerken van het antwoord van de AI-agent."
1918
+
1916
1919
  msgid "An error occurred, please contact support."
1917
1920
  msgstr "Er is een fout opgetreden, neem contact op met de ondersteuning."
1918
1921
 
package/locales/pl.po CHANGED
@@ -1952,6 +1952,9 @@ msgstr "Wystąpił błąd"
1952
1952
  msgid "An error occurred while communicating with the AI agent."
1953
1953
  msgstr "Wystąpił błąd podczas komunikacji z agentem AI."
1954
1954
 
1955
+ msgid "An error occurred while processing the response from the AI agent."
1956
+ msgstr "Podczas przetwarzania odpowiedzi od agenta AI wystąpił błąd."
1957
+
1955
1958
  msgid "An error occurred, please contact support."
1956
1959
  msgstr "Wystąpił błąd. Skontaktuj się z pomocą techniczną."
1957
1960
 
package/locales/pt_BR.po CHANGED
@@ -1914,6 +1914,9 @@ msgstr "Ocorreu um erro"
1914
1914
  msgid "An error occurred while communicating with the AI agent."
1915
1915
  msgstr "Ocorreu um erro durante a comunicação com o agente de IA."
1916
1916
 
1917
+ msgid "An error occurred while processing the response from the AI agent."
1918
+ msgstr "Ocorreu um erro ao processar a resposta do agente de IA."
1919
+
1917
1920
  msgid "An error occurred, please contact support."
1918
1921
  msgstr "Ocorreu um erro, entre em contato com o suporte."
1919
1922