@c8y/ngx-components 1023.68.0 → 1023.68.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/ai/agent-chat/index.d.ts +28 -5
  2. package/ai/agent-chat/index.d.ts.map +1 -1
  3. package/context-dashboard/index.d.ts +1 -0
  4. package/context-dashboard/index.d.ts.map +1 -1
  5. package/echart/index.d.ts +6 -2
  6. package/echart/index.d.ts.map +1 -1
  7. package/echart/models/index.d.ts +6 -1
  8. package/echart/models/index.d.ts.map +1 -1
  9. package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs +33 -5
  10. package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs.map +1 -1
  11. package/fesm2022/c8y-ngx-components-ai-agents-html.mjs +4 -0
  12. package/fesm2022/c8y-ngx-components-ai-agents-html.mjs.map +1 -1
  13. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +1 -0
  14. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  15. package/fesm2022/c8y-ngx-components-echart-models.mjs.map +1 -1
  16. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  17. package/fesm2022/c8y-ngx-components-global-context.mjs +67 -10
  18. package/fesm2022/c8y-ngx-components-global-context.mjs.map +1 -1
  19. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +4 -106
  20. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
  21. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs +7 -2
  22. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs.map +1 -1
  23. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +67 -38
  24. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  25. package/fesm2022/c8y-ngx-components.mjs +5 -12
  26. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  27. package/global-context/index.d.ts +7 -1
  28. package/global-context/index.d.ts.map +1 -1
  29. package/index.d.ts +8 -1
  30. package/index.d.ts.map +1 -1
  31. package/locales/locales.pot +3 -0
  32. package/package.json +1 -1
  33. package/widgets/implementations/alarms/index.d.ts +4 -0
  34. package/widgets/implementations/alarms/index.d.ts.map +1 -1
  35. package/widgets/implementations/datapoints-graph/index.d.ts +25 -17
  36. package/widgets/implementations/datapoints-graph/index.d.ts.map +1 -1
  37. package/widgets/implementations/datapoints-list/index.d.ts +2 -0
  38. package/widgets/implementations/datapoints-list/index.d.ts.map +1 -1
@@ -6,111 +6,9 @@ import { map } from 'rxjs';
6
6
  import { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';
7
7
  import cloneDeep from 'lodash/cloneDeep';
8
8
  import { importConfigWithTargets, exportConfigWithTargets } from '@c8y/ngx-components/widgets/import-export-config';
9
- import { createAutoRefreshHandlers, defineWidgetControls } from '@c8y/ngx-components/global-context';
9
+ import { PRESET_NAME } from '@c8y/ngx-components/global-context';
10
10
  import { hookWidgetConfig } from '@c8y/ngx-components/context-dashboard';
11
11
 
12
- const autoRefreshHandlers = createAutoRefreshHandlers();
13
- const datapointsGraphWidgetControls = defineWidgetControls({
14
- name: 'datapoints-graph-widget',
15
- supports: [
16
- 'timeRange',
17
- 'liveRefresh',
18
- 'displayMode',
19
- 'refreshInterval',
20
- 'refreshOption',
21
- 'dataAggregation',
22
- 'source',
23
- 'eventSourceId'
24
- ],
25
- handlers: {
26
- disableAutoRefresh: {
27
- handler: state => {
28
- const result = autoRefreshHandlers.disableAutoRefresh(state);
29
- return {
30
- inlineControlSettings: result?.inlineControlSettings ?? {},
31
- dashboardControlSettings: result?.dashboardControlSettings ?? {},
32
- links: result?.links ?? {},
33
- options: result?.options
34
- };
35
- }
36
- }
37
- },
38
- settings: {
39
- dashboard: {
40
- live: {
41
- inline: {
42
- showAutoRefresh: true,
43
- showTimeContext: true
44
- }
45
- },
46
- history: {
47
- inline: {
48
- showTimeContext: true,
49
- showAggregation: true
50
- }
51
- }
52
- },
53
- config: {
54
- live: {
55
- inline: {
56
- showAutoRefresh: true,
57
- showRefreshInterval: true
58
- },
59
- configuration: {
60
- showAutoRefresh: true,
61
- showRefreshInterval: true,
62
- showTimeContext: true
63
- }
64
- },
65
- history: {
66
- inline: {},
67
- configuration: {
68
- showTimeContext: true,
69
- showAggregation: true
70
- }
71
- }
72
- },
73
- viewAndConfig: {
74
- live: {
75
- inline: {
76
- showAutoRefresh: true,
77
- showTimeContext: true,
78
- showRefreshInterval: true
79
- },
80
- configuration: {
81
- showAutoRefresh: true,
82
- showRefreshInterval: true,
83
- showTimeContext: true
84
- }
85
- },
86
- history: {
87
- inline: {
88
- showTimeContext: true,
89
- showAggregation: true
90
- },
91
- configuration: {
92
- showTimeContext: true,
93
- showAggregation: true
94
- }
95
- }
96
- },
97
- defaultLinks: {
98
- dashboard: {
99
- live: {
100
- dateTimeContext: true,
101
- isAutoRefreshEnabled: true
102
- },
103
- history: {
104
- dateTimeContext: true,
105
- aggregation: true
106
- }
107
- },
108
- config: {},
109
- viewAndConfig: {}
110
- }
111
- }
112
- });
113
-
114
12
  class DatapointGraphFactory {
115
13
  constructor() {
116
14
  this.previewFeatureService = inject(PreviewService);
@@ -128,7 +26,7 @@ class DatapointGraphFactory {
128
26
  schema: () => import('c8y-schema-loader?interfaceName=DatapointsGraphWidgetConfig!@c8y/ngx-components/echart'),
129
27
  export: exportConfigWithTargets,
130
28
  import: importConfigWithTargets,
131
- widgetControls: datapointsGraphWidgetControls,
29
+ controls: PRESET_NAME.DATAPOINTS_GRAPH,
132
30
  settings: {
133
31
  noNewWidgets: false,
134
32
  widgetDefaults: {
@@ -189,7 +87,7 @@ const datapointGraphWidgetproviders = [
189
87
  priority: 10,
190
88
  label: gettext('Time context'),
191
89
  initialState: {
192
- widgetControls: datapointsGraphWidgetControls
90
+ controls: PRESET_NAME.DATAPOINTS_GRAPH_CONFIG
193
91
  },
194
92
  loadComponent: () => import('@c8y/ngx-components/context-dashboard').then(m => m.GlobalContextSectionComponent)
195
93
  }),
@@ -198,7 +96,7 @@ const datapointGraphWidgetproviders = [
198
96
  priority: 10,
199
97
  label: gettext('Time context'),
200
98
  initialState: {
201
- widgetControls: datapointsGraphWidgetControls
99
+ controls: PRESET_NAME.DATAPOINTS_GRAPH_CONFIG
202
100
  },
203
101
  loadComponent: () => import('@c8y/ngx-components/context-dashboard').then(m => m.GlobalContextSectionComponent)
204
102
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-widgets-definitions-datapoints-graph.mjs","sources":["../../widgets/definitions/datapoints-graph/datapoint-graph-widget-controls-definition.ts","../../widgets/definitions/datapoints-graph/datapoint-graph-widget-factory.ts","../../widgets/definitions/datapoints-graph/datapoint-graph.constants.ts","../../widgets/definitions/datapoints-graph/index.ts","../../widgets/definitions/datapoints-graph/c8y-ngx-components-widgets-definitions-datapoints-graph.ts"],"sourcesContent":["import {\n defineWidgetControls,\n createAutoRefreshHandlers\n} from '@c8y/ngx-components/global-context';\n\nconst autoRefreshHandlers = createAutoRefreshHandlers();\n\nexport const datapointsGraphWidgetControls = defineWidgetControls({\n name: 'datapoints-graph-widget',\n supports: [\n 'timeRange',\n 'liveRefresh',\n 'displayMode',\n 'refreshInterval',\n 'refreshOption',\n 'dataAggregation',\n 'source',\n 'eventSourceId'\n ],\n handlers: {\n disableAutoRefresh: {\n handler: state => {\n const result = autoRefreshHandlers.disableAutoRefresh(state);\n return {\n inlineControlSettings: result?.inlineControlSettings ?? {},\n dashboardControlSettings: result?.dashboardControlSettings ?? {},\n links: result?.links ?? {},\n options: result?.options\n };\n }\n }\n },\n settings: {\n dashboard: {\n live: {\n inline: {\n showAutoRefresh: true,\n showTimeContext: true\n }\n },\n history: {\n inline: {\n showTimeContext: true,\n showAggregation: true\n }\n }\n },\n config: {\n live: {\n inline: {\n showAutoRefresh: true,\n showRefreshInterval: true\n },\n configuration: {\n showAutoRefresh: true,\n showRefreshInterval: true,\n showTimeContext: true\n }\n },\n history: {\n inline: {},\n configuration: {\n showTimeContext: true,\n showAggregation: true\n }\n }\n },\n viewAndConfig: {\n live: {\n inline: {\n showAutoRefresh: true,\n showTimeContext: true,\n showRefreshInterval: true\n },\n configuration: {\n showAutoRefresh: true,\n showRefreshInterval: true,\n showTimeContext: true\n }\n },\n history: {\n inline: {\n showTimeContext: true,\n showAggregation: true\n },\n configuration: {\n showTimeContext: true,\n showAggregation: true\n }\n }\n },\n defaultLinks: {\n dashboard: {\n live: {\n dateTimeContext: true,\n isAutoRefreshEnabled: true\n },\n history: {\n dateTimeContext: true,\n aggregation: true\n }\n },\n config: {},\n viewAndConfig: {}\n }\n }\n});\n","import { inject, Injectable } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n DynamicDatapointsResolver,\n PreviewService,\n DynamicWidgetDefinition\n} from '@c8y/ngx-components';\nimport { map, Observable } from 'rxjs';\nimport { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';\nimport cloneDeep from 'lodash/cloneDeep';\nimport {\n exportConfigWithTargets,\n importConfigWithTargets\n} from '@c8y/ngx-components/widgets/import-export-config';\nimport { datapointsGraphWidgetControls } from './datapoint-graph-widget-controls-definition';\n\n@Injectable()\nexport class DatapointGraphFactory {\n private readonly previewFeatureService = inject(PreviewService);\n\n private readonly baseWidgetDefinition: DynamicWidgetDefinition = {\n id: defaultWidgetIds.DATAPOINTS_GRAPH,\n label: gettext('Data graph'),\n description: gettext('Displays a graph of selected data points'),\n loadComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/datapoints-graph').then(\n m => m.DatapointsGraphWidgetViewComponent\n ),\n loadConfigComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/datapoints-graph').then(\n m => m.DatapointsGraphWidgetConfigComponent\n ),\n previewImage: 'c8y-style-assets/datapoints-graph-widget.png',\n resolve: {\n datapoints: DynamicDatapointsResolver\n },\n data: {\n schema: () =>\n import(\n 'c8y-schema-loader?interfaceName=DatapointsGraphWidgetConfig!@c8y/ngx-components/echart'\n ),\n export: exportConfigWithTargets,\n import: importConfigWithTargets,\n widgetControls: datapointsGraphWidgetControls,\n settings: {\n noNewWidgets: false,\n widgetDefaults: {\n _width: 8,\n _height: 4\n },\n noDeviceTarget: true,\n groupsSelectable: false\n },\n displaySettings: {\n globalTimeContext: true,\n globalAggregationContext: true,\n globalRealtimeContext: true\n }\n }\n };\n\n get(): Observable<DynamicWidgetDefinition[]> {\n return this.previewFeatureService.getState$('ui.datapoint-graph.v2').pipe(\n map(state => {\n if (state) {\n const newWidgetDefinition = cloneDeep(this.baseWidgetDefinition);\n newWidgetDefinition.id = defaultWidgetIds.DATAPOINTS_GRAPH_NEW;\n newWidgetDefinition.data.settings.noNewWidgets = true;\n\n return [this.baseWidgetDefinition, newWidgetDefinition];\n }\n return [];\n })\n );\n }\n}\n","import { DatapointAttributesFormConfig } from '@c8y/ngx-components/datapoint-selector';\n\nexport const DATAPOINT_SELECT_DEFAULT_OPTIONS: Partial<DatapointAttributesFormConfig> = {\n showRange: true,\n showChart: true\n};\n\nexport const MIN_ACTIVE_COUNT = 1;\n","import { hookPreview, hookWidget } from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { DatapointGraphFactory } from './datapoint-graph-widget-factory';\nimport {\n hookWidgetConfig,\n GlobalContextSectionComponent\n} from '@c8y/ngx-components/context-dashboard';\nimport { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';\nimport { datapointsGraphWidgetControls } from './datapoint-graph-widget-controls-definition';\nimport { DATAPOINT_SELECT_DEFAULT_OPTIONS, MIN_ACTIVE_COUNT } from './datapoint-graph.constants';\n\nexport const datapointGraphWidgetproviders = [\n hookWidget(DatapointGraphFactory),\n hookPreview({\n key: 'ui.datapoint-graph.v2',\n label: 'Data graph',\n description: () =>\n import('@c8y/style/markdown-files/datapoint-graph-preview.md').then(m => m.default),\n settings: {\n reload: true\n }\n }),\n /* We need to register the widget config for both the new and old widget IDs. This ensures compatibility for widgets\n created with the new data graph id (e.g. if a data point graph widget was created via community plugins)\n and widgets using the default one (toggled via preview feature)\n */\n hookWidgetConfig<GlobalContextSectionComponent>({\n widgetId: defaultWidgetIds.DATAPOINTS_GRAPH_NEW,\n priority: 10,\n label: gettext('Time context'),\n initialState: {\n widgetControls: datapointsGraphWidgetControls\n },\n loadComponent: () =>\n import('@c8y/ngx-components/context-dashboard').then(m => m.GlobalContextSectionComponent)\n }),\n hookWidgetConfig<GlobalContextSectionComponent>({\n widgetId: defaultWidgetIds.DATAPOINTS_GRAPH,\n priority: 10,\n label: gettext('Time context'),\n initialState: {\n widgetControls: datapointsGraphWidgetControls\n },\n loadComponent: () =>\n import('@c8y/ngx-components/context-dashboard').then(m => m.GlobalContextSectionComponent)\n }),\n hookWidgetConfig({\n widgetId: defaultWidgetIds.DATAPOINTS_GRAPH,\n label: gettext('Alarm selection'),\n loadComponent: () =>\n import('@c8y/ngx-components/alarm-event-selector').then(m => m.WidgetAlarmSelectorComponent),\n initialState: {\n configStoreMode: 'MIXED'\n },\n priority: 100\n }),\n hookWidgetConfig({\n widgetId: defaultWidgetIds.DATAPOINTS_GRAPH,\n label: gettext('Event selection'),\n loadComponent: () =>\n import('@c8y/ngx-components/alarm-event-selector').then(m => m.WidgetEventSelectorComponent),\n initialState: {\n configStoreMode: 'MIXED'\n },\n priority: 110\n }),\n hookWidgetConfig({\n widgetId: defaultWidgetIds.DATAPOINTS_GRAPH,\n label: gettext('Data point selection'),\n loadComponent: () =>\n import('@c8y/ngx-components/datapoint-selector').then(\n m => m.WidgetDatapointsSelectorComponent\n ),\n initialState: {\n minActiveCount: MIN_ACTIVE_COUNT,\n defaultFormOptions: DATAPOINT_SELECT_DEFAULT_OPTIONS,\n useAdvancedChartOptions: true\n },\n expanded: true,\n priority: 120\n })\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-widgets-definitions-datapoints-graph.mjs","sources":["../../widgets/definitions/datapoints-graph/datapoint-graph-widget-factory.ts","../../widgets/definitions/datapoints-graph/datapoint-graph.constants.ts","../../widgets/definitions/datapoints-graph/index.ts","../../widgets/definitions/datapoints-graph/c8y-ngx-components-widgets-definitions-datapoints-graph.ts"],"sourcesContent":["import { inject, Injectable } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n DynamicDatapointsResolver,\n PreviewService,\n DynamicWidgetDefinition\n} from '@c8y/ngx-components';\nimport { map, Observable } from 'rxjs';\nimport { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';\nimport cloneDeep from 'lodash/cloneDeep';\nimport {\n exportConfigWithTargets,\n importConfigWithTargets\n} from '@c8y/ngx-components/widgets/import-export-config';\nimport { PRESET_NAME } from '@c8y/ngx-components/global-context';\n\n@Injectable()\nexport class DatapointGraphFactory {\n private readonly previewFeatureService = inject(PreviewService);\n\n private readonly baseWidgetDefinition: DynamicWidgetDefinition = {\n id: defaultWidgetIds.DATAPOINTS_GRAPH,\n label: gettext('Data graph'),\n description: gettext('Displays a graph of selected data points'),\n loadComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/datapoints-graph').then(\n m => m.DatapointsGraphWidgetViewComponent\n ),\n loadConfigComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/datapoints-graph').then(\n m => m.DatapointsGraphWidgetConfigComponent\n ),\n previewImage: 'c8y-style-assets/datapoints-graph-widget.png',\n resolve: {\n datapoints: DynamicDatapointsResolver\n },\n data: {\n schema: () =>\n import(\n 'c8y-schema-loader?interfaceName=DatapointsGraphWidgetConfig!@c8y/ngx-components/echart'\n ),\n export: exportConfigWithTargets,\n import: importConfigWithTargets,\n controls: PRESET_NAME.DATAPOINTS_GRAPH,\n settings: {\n noNewWidgets: false,\n widgetDefaults: {\n _width: 8,\n _height: 4\n },\n noDeviceTarget: true,\n groupsSelectable: false\n },\n displaySettings: {\n globalTimeContext: true,\n globalAggregationContext: true,\n globalRealtimeContext: true\n }\n }\n };\n\n get(): Observable<DynamicWidgetDefinition[]> {\n return this.previewFeatureService.getState$('ui.datapoint-graph.v2').pipe(\n map(state => {\n if (state) {\n const newWidgetDefinition = cloneDeep(this.baseWidgetDefinition);\n newWidgetDefinition.id = defaultWidgetIds.DATAPOINTS_GRAPH_NEW;\n newWidgetDefinition.data.settings.noNewWidgets = true;\n\n return [this.baseWidgetDefinition, newWidgetDefinition];\n }\n return [];\n })\n );\n }\n}\n","import { DatapointAttributesFormConfig } from '@c8y/ngx-components/datapoint-selector';\n\nexport const DATAPOINT_SELECT_DEFAULT_OPTIONS: Partial<DatapointAttributesFormConfig> = {\n showRange: true,\n showChart: true\n};\n\nexport const MIN_ACTIVE_COUNT = 1;\n","import { hookPreview, hookWidget } from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { DatapointGraphFactory } from './datapoint-graph-widget-factory';\nimport {\n hookWidgetConfig,\n GlobalContextSectionComponent\n} from '@c8y/ngx-components/context-dashboard';\nimport { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';\nimport { DATAPOINT_SELECT_DEFAULT_OPTIONS, MIN_ACTIVE_COUNT } from './datapoint-graph.constants';\nimport { PRESET_NAME } from '@c8y/ngx-components/global-context';\n\nexport const datapointGraphWidgetproviders = [\n hookWidget(DatapointGraphFactory),\n hookPreview({\n key: 'ui.datapoint-graph.v2',\n label: 'Data graph',\n description: () =>\n import('@c8y/style/markdown-files/datapoint-graph-preview.md').then(m => m.default),\n settings: {\n reload: true\n }\n }),\n /* We need to register the widget config for both the new and old widget IDs. This ensures compatibility for widgets\n created with the new data graph id (e.g. if a data point graph widget was created via community plugins)\n and widgets using the default one (toggled via preview feature)\n */\n hookWidgetConfig<GlobalContextSectionComponent>({\n widgetId: defaultWidgetIds.DATAPOINTS_GRAPH_NEW,\n priority: 10,\n label: gettext('Time context'),\n initialState: {\n controls: PRESET_NAME.DATAPOINTS_GRAPH_CONFIG\n },\n loadComponent: () =>\n import('@c8y/ngx-components/context-dashboard').then(m => m.GlobalContextSectionComponent)\n }),\n hookWidgetConfig<GlobalContextSectionComponent>({\n widgetId: defaultWidgetIds.DATAPOINTS_GRAPH,\n priority: 10,\n label: gettext('Time context'),\n initialState: {\n controls: PRESET_NAME.DATAPOINTS_GRAPH_CONFIG\n },\n loadComponent: () =>\n import('@c8y/ngx-components/context-dashboard').then(m => m.GlobalContextSectionComponent)\n }),\n hookWidgetConfig({\n widgetId: defaultWidgetIds.DATAPOINTS_GRAPH,\n label: gettext('Alarm selection'),\n loadComponent: () =>\n import('@c8y/ngx-components/alarm-event-selector').then(m => m.WidgetAlarmSelectorComponent),\n initialState: {\n configStoreMode: 'MIXED'\n },\n priority: 100\n }),\n hookWidgetConfig({\n widgetId: defaultWidgetIds.DATAPOINTS_GRAPH,\n label: gettext('Event selection'),\n loadComponent: () =>\n import('@c8y/ngx-components/alarm-event-selector').then(m => m.WidgetEventSelectorComponent),\n initialState: {\n configStoreMode: 'MIXED'\n },\n priority: 110\n }),\n hookWidgetConfig({\n widgetId: defaultWidgetIds.DATAPOINTS_GRAPH,\n label: gettext('Data point selection'),\n loadComponent: () =>\n import('@c8y/ngx-components/datapoint-selector').then(\n m => m.WidgetDatapointsSelectorComponent\n ),\n initialState: {\n minActiveCount: MIN_ACTIVE_COUNT,\n defaultFormOptions: DATAPOINT_SELECT_DEFAULT_OPTIONS,\n useAdvancedChartOptions: true\n },\n expanded: true,\n priority: 120\n })\n];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
- import { hookWidgetConfig } from '@c8y/ngx-components/context-dashboard';
1
+ import { WidgetConfigService, hookWidgetConfig } from '@c8y/ngx-components/context-dashboard';
2
2
  import * as i0 from '@angular/core';
3
3
  import { inject, Injector, Injectable } from '@angular/core';
4
4
  import { PreviewService } from '@c8y/ngx-components';
5
5
  import { gettext } from '@c8y/ngx-components/gettext';
6
6
  import { AIService } from '@c8y/ngx-components/ai';
7
7
  import { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';
8
- import { combineLatest, from, first, map } from 'rxjs';
8
+ import { map, combineLatest, from, first } from 'rxjs';
9
9
  import { HTML_AGENT } from '@c8y/ngx-components/ai/agents/html';
10
10
 
11
11
  const HTML_WIDGET_AGENT_DEFINITIONS = {
@@ -19,6 +19,7 @@ class AIHtmlWidgetConfigFactory {
19
19
  this.betaPreviewService = inject(PreviewService);
20
20
  this.aiService = inject(AIService);
21
21
  this.injector = inject(Injector);
22
+ this.widgetConfigService = inject(WidgetConfigService);
22
23
  this.aiWidgetConfigDefinition = {
23
24
  widgetId: defaultWidgetIds.HTML,
24
25
  label: gettext('AI Code Assistant'),
@@ -27,6 +28,10 @@ class AIHtmlWidgetConfigFactory {
27
28
  agent: HTML_WIDGET_AGENT_DEFINITIONS,
28
29
  title: gettext('I’m your AI Code Assistant, here to help you build powerful widgets for your dashboard.'),
29
30
  welcomeText: gettext('Describe the widget you want or select one of the options below to get started.'),
31
+ variables: this.widgetConfigService.currentConfig$.pipe(map((htmlWidgetConfig) => ({
32
+ currentHtmlWidgetCode: htmlWidgetConfig?.config?.code || '',
33
+ c8yContext: htmlWidgetConfig?.device || {}
34
+ }))),
30
35
  loadRenderStepComponent: () => import('@c8y/ngx-components/widgets/implementations/html-widget').then(m => m.HtmlAiChatFeedbackComponent),
31
36
  suggestions: [
32
37
  {
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs","sources":["../../widgets/definitions/html-widget-ai-config/html-widget-agent.definitions.ts","../../widgets/definitions/html-widget-ai-config/ai-html-widget-config.factory.ts","../../widgets/definitions/html-widget-ai-config/index.ts","../../widgets/definitions/html-widget-ai-config/c8y-ngx-components-widgets-definitions-html-widget-ai-config.ts"],"sourcesContent":["import type { ClientAgentDefinition } from '@c8y/ngx-components/ai';\nimport { HTML_AGENT } from '@c8y/ngx-components/ai/agents/html';\nimport { gettext } from '@c8y/ngx-components/gettext';\n\ndeclare const __MODE__: 'development' | 'production';\n\nexport const HTML_WIDGET_AGENT_DEFINITIONS: ClientAgentDefinition = {\n snapshot: __MODE__ === 'development',\n label: gettext('HTML Widget Code assistant'),\n definition: HTML_AGENT\n};\n","import { inject, Injectable, Injector } from '@angular/core';\nimport { ExtensionFactory, PreviewService } from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { AIService } from '@c8y/ngx-components/ai';\nimport type { WidgetAiChatSectionComponent } from '@c8y/ngx-components/ai/agent-chat';\nimport type { WidgetConfigSectionDefinition } from '@c8y/ngx-components/context-dashboard';\nimport { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';\nimport { combineLatest, first, from, map, Observable } from 'rxjs';\nimport { HTML_WIDGET_AGENT_DEFINITIONS } from './html-widget-agent.definitions';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AIHtmlWidgetConfigFactory implements ExtensionFactory<WidgetConfigSectionDefinition> {\n private readonly betaPreviewService = inject(PreviewService);\n private readonly aiService = inject(AIService);\n private readonly injector = inject(Injector);\n private readonly aiWidgetConfigDefinition: WidgetConfigSectionDefinition<WidgetAiChatSectionComponent> =\n {\n widgetId: defaultWidgetIds.HTML,\n label: gettext('AI Code Assistant'),\n loadComponent: () =>\n import('@c8y/ngx-components/ai/agent-chat').then(m => m.WidgetAiChatSectionComponent),\n initialState: {\n agent: HTML_WIDGET_AGENT_DEFINITIONS,\n title: gettext(\n 'I’m your AI Code Assistant, here to help you build powerful widgets for your dashboard.'\n ),\n welcomeText: gettext(\n 'Describe the widget you want or select one of the options below to get started.'\n ),\n\n loadRenderStepComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/html-widget').then(\n m => m.HtmlAiChatFeedbackComponent\n ),\n\n suggestions: [\n {\n label: gettext('Measurement widget'),\n prompt: gettext('Create a widget that shows the current measurement of this device.')\n },\n {\n label: gettext('Device status widget'),\n prompt: gettext('Create a widget that shows the status of my devices.')\n },\n {\n label: gettext('Critical alarm widget'),\n prompt: gettext('Create a widget that shows all critical alarms.')\n }\n ]\n },\n priority: 100,\n injector: this.injector\n };\n\n get(): Observable<WidgetConfigSectionDefinition[]> {\n return combineLatest([\n from(this.aiService.getAgentHealth()),\n this.betaPreviewService.getState$('ui.html-widget.v2').pipe(first())\n ]).pipe(\n map(([aiHealthCheck, state]) => {\n if (state && aiHealthCheck.isProviderConfigured) {\n return [this.aiWidgetConfigDefinition];\n }\n return [];\n })\n );\n }\n}\n","import { hookWidgetConfig } from '@c8y/ngx-components/context-dashboard';\nimport { AIHtmlWidgetConfigFactory } from './ai-html-widget-config.factory';\n\nexport const htmlWidgetAIChatProviders = [hookWidgetConfig(AIHtmlWidgetConfigFactory)];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;AAMO,MAAM,6BAA6B,GAA0B;IAClE,QAAQ,EAAE,QAAQ,KAAK,aAAa;AACpC,IAAA,KAAK,EAAE,OAAO,CAAC,4BAA4B,CAAC;AAC5C,IAAA,UAAU,EAAE;CACb;;MCGY,yBAAyB,CAAA;AAHtC,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,cAAc,CAAC;AAC3C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAC7B,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC3B,QAAA,IAAA,CAAA,wBAAwB,GACvC;YACE,QAAQ,EAAE,gBAAgB,CAAC,IAAI;AAC/B,YAAA,KAAK,EAAE,OAAO,CAAC,mBAAmB,CAAC;AACnC,YAAA,aAAa,EAAE,MACb,OAAO,mCAAmC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,4BAA4B,CAAC;AACvF,YAAA,YAAY,EAAE;AACZ,gBAAA,KAAK,EAAE,6BAA6B;AACpC,gBAAA,KAAK,EAAE,OAAO,CACZ,yFAAyF,CAC1F;AACD,gBAAA,WAAW,EAAE,OAAO,CAClB,iFAAiF,CAClF;AAED,gBAAA,uBAAuB,EAAE,MACvB,OAAO,yDAAyD,CAAC,CAAC,IAAI,CACpE,CAAC,IAAI,CAAC,CAAC,2BAA2B,CACnC;AAEH,gBAAA,WAAW,EAAE;AACX,oBAAA;AACE,wBAAA,KAAK,EAAE,OAAO,CAAC,oBAAoB,CAAC;AACpC,wBAAA,MAAM,EAAE,OAAO,CAAC,oEAAoE;AACrF,qBAAA;AACD,oBAAA;AACE,wBAAA,KAAK,EAAE,OAAO,CAAC,sBAAsB,CAAC;AACtC,wBAAA,MAAM,EAAE,OAAO,CAAC,sDAAsD;AACvE,qBAAA;AACD,oBAAA;AACE,wBAAA,KAAK,EAAE,OAAO,CAAC,uBAAuB,CAAC;AACvC,wBAAA,MAAM,EAAE,OAAO,CAAC,iDAAiD;AAClE;AACF;AACF,aAAA;AACD,YAAA,QAAQ,EAAE,GAAG;YACb,QAAQ,EAAE,IAAI,CAAC;SAChB;AAeJ,IAAA;IAbC,GAAG,GAAA;AACD,QAAA,OAAO,aAAa,CAAC;AACnB,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;AACrC,YAAA,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE;AACpE,SAAA,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,KAAK,CAAC,KAAI;AAC7B,YAAA,IAAI,KAAK,IAAI,aAAa,CAAC,oBAAoB,EAAE;AAC/C,gBAAA,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC;YACxC;AACA,YAAA,OAAO,EAAE;QACX,CAAC,CAAC,CACH;IACH;+GAvDW,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,cAFxB,MAAM,EAAA,CAAA,CAAA;;4FAEP,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACTM,MAAM,yBAAyB,GAAG,CAAC,gBAAgB,CAAC,yBAAyB,CAAC;;ACHrF;;AAEG;;;;"}
1
+ {"version":3,"file":"c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs","sources":["../../widgets/definitions/html-widget-ai-config/html-widget-agent.definitions.ts","../../widgets/definitions/html-widget-ai-config/ai-html-widget-config.factory.ts","../../widgets/definitions/html-widget-ai-config/index.ts","../../widgets/definitions/html-widget-ai-config/c8y-ngx-components-widgets-definitions-html-widget-ai-config.ts"],"sourcesContent":["import type { ClientAgentDefinition } from '@c8y/ngx-components/ai';\nimport { HTML_AGENT } from '@c8y/ngx-components/ai/agents/html';\nimport { gettext } from '@c8y/ngx-components/gettext';\n\ndeclare const __MODE__: 'development' | 'production';\n\nexport const HTML_WIDGET_AGENT_DEFINITIONS: ClientAgentDefinition = {\n snapshot: __MODE__ === 'development',\n label: gettext('HTML Widget Code assistant'),\n definition: HTML_AGENT\n};\n","import { inject, Injectable, Injector } from '@angular/core';\nimport { ExtensionFactory, PreviewService } from '@c8y/ngx-components';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { AIService } from '@c8y/ngx-components/ai';\nimport type { WidgetAiChatSectionComponent } from '@c8y/ngx-components/ai/agent-chat';\nimport type { WidgetConfigSectionDefinition } from '@c8y/ngx-components/context-dashboard';\nimport { WidgetConfigService } from '@c8y/ngx-components/context-dashboard';\nimport { defaultWidgetIds } from '@c8y/ngx-components/widgets/definitions';\nimport { combineLatest, first, from, map, Observable } from 'rxjs';\nimport { HTML_WIDGET_AGENT_DEFINITIONS } from './html-widget-agent.definitions';\nimport type { HtmlWidgetConfig } from '@c8y/ngx-components/widgets/implementations/html-widget';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AIHtmlWidgetConfigFactory implements ExtensionFactory<WidgetConfigSectionDefinition> {\n private readonly betaPreviewService = inject(PreviewService);\n private readonly aiService = inject(AIService);\n private readonly injector = inject(Injector);\n private readonly widgetConfigService = inject(WidgetConfigService);\n private readonly aiWidgetConfigDefinition: WidgetConfigSectionDefinition<WidgetAiChatSectionComponent> =\n {\n widgetId: defaultWidgetIds.HTML,\n label: gettext('AI Code Assistant'),\n loadComponent: () =>\n import('@c8y/ngx-components/ai/agent-chat').then(m => m.WidgetAiChatSectionComponent),\n initialState: {\n agent: HTML_WIDGET_AGENT_DEFINITIONS,\n title: gettext(\n 'I’m your AI Code Assistant, here to help you build powerful widgets for your dashboard.'\n ),\n welcomeText: gettext(\n 'Describe the widget you want or select one of the options below to get started.'\n ),\n\n variables: this.widgetConfigService.currentConfig$.pipe(\n map((htmlWidgetConfig: HtmlWidgetConfig) => ({\n currentHtmlWidgetCode: htmlWidgetConfig?.config?.code || '',\n c8yContext: htmlWidgetConfig?.device || {}\n }))\n ),\n\n loadRenderStepComponent: () =>\n import('@c8y/ngx-components/widgets/implementations/html-widget').then(\n m => m.HtmlAiChatFeedbackComponent\n ),\n\n suggestions: [\n {\n label: gettext('Measurement widget'),\n prompt: gettext('Create a widget that shows the current measurement of this device.')\n },\n {\n label: gettext('Device status widget'),\n prompt: gettext('Create a widget that shows the status of my devices.')\n },\n {\n label: gettext('Critical alarm widget'),\n prompt: gettext('Create a widget that shows all critical alarms.')\n }\n ]\n },\n priority: 100,\n injector: this.injector\n };\n\n get(): Observable<WidgetConfigSectionDefinition[]> {\n return combineLatest([\n from(this.aiService.getAgentHealth()),\n this.betaPreviewService.getState$('ui.html-widget.v2').pipe(first())\n ]).pipe(\n map(([aiHealthCheck, state]) => {\n if (state && aiHealthCheck.isProviderConfigured) {\n return [this.aiWidgetConfigDefinition];\n }\n return [];\n })\n );\n }\n}\n","import { hookWidgetConfig } from '@c8y/ngx-components/context-dashboard';\nimport { AIHtmlWidgetConfigFactory } from './ai-html-widget-config.factory';\n\nexport const htmlWidgetAIChatProviders = [hookWidgetConfig(AIHtmlWidgetConfigFactory)];\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}