@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.
- package/ai/agent-chat/index.d.ts +22 -11
- package/ai/agent-chat/index.d.ts.map +1 -1
- package/ai/ai-chat/index.d.ts +30 -9
- package/ai/ai-chat/index.d.ts.map +1 -1
- package/ai/index.d.ts +64 -49
- package/ai/index.d.ts.map +1 -1
- package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs +235 -127
- package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ai-ai-chat.mjs +104 -44
- package/fesm2022/c8y-ngx-components-ai-ai-chat.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ai.mjs +92 -61
- package/fesm2022/c8y-ngx-components-ai.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-global-context.mjs +23 -3
- package/fesm2022/c8y-ngx-components-global-context.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs +31 -29
- package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-list.mjs +47 -8
- package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-list.mjs.map +1 -1
- package/global-context/index.d.ts +17 -2
- package/global-context/index.d.ts.map +1 -1
- package/locales/de.po +3 -0
- package/locales/es.po +3 -0
- package/locales/fr.po +3 -0
- package/locales/ja_JP.po +3 -0
- package/locales/ko.po +3 -0
- package/locales/locales.pot +3 -0
- package/locales/nl.po +3 -0
- package/locales/pl.po +3 -0
- package/locales/pt_BR.po +3 -0
- package/locales/zh_CN.po +3 -0
- package/locales/zh_TW.po +3 -0
- package/package.json +1 -1
- package/widgets/implementations/datapoints-list/index.d.ts +5 -0
- 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
|
|
package/locales/locales.pot
CHANGED
|
@@ -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
|
|