@acorex-platform/module-dashboard-management-client 0.0.53 → 0.0.56

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 (31) hide show
  1. package/fesm2022/{acorex-platform-module-dashboard-management-client-acorex-platform-module-dashboard-management-client-61Q_QY8l.mjs → acorex-platform-module-dashboard-management-client-acorex-platform-module-dashboard-management-client-CdZ2jDXz.mjs} +44 -72
  2. package/fesm2022/acorex-platform-module-dashboard-management-client-acorex-platform-module-dashboard-management-client-CdZ2jDXz.mjs.map +1 -0
  3. package/fesm2022/{acorex-platform-module-dashboard-management-client-bar-chart-widget.component-kw130ESN.mjs → acorex-platform-module-dashboard-management-client-bar-chart-widget.component-Domj78lq.mjs} +3 -3
  4. package/fesm2022/{acorex-platform-module-dashboard-management-client-bar-chart-widget.component-kw130ESN.mjs.map → acorex-platform-module-dashboard-management-client-bar-chart-widget.component-Domj78lq.mjs.map} +1 -1
  5. package/fesm2022/{acorex-platform-module-dashboard-management-client-chart-card-widget.component-B2ztaswG.mjs → acorex-platform-module-dashboard-management-client-chart-card-widget.component-cBoP551S.mjs} +2 -2
  6. package/fesm2022/{acorex-platform-module-dashboard-management-client-chart-card-widget.component-B2ztaswG.mjs.map → acorex-platform-module-dashboard-management-client-chart-card-widget.component-cBoP551S.mjs.map} +1 -1
  7. package/fesm2022/{acorex-platform-module-dashboard-management-client-chart-configurator-widget-edit.component-BgR51eZ1.mjs → acorex-platform-module-dashboard-management-client-chart-configurator-widget-edit.component-B6HXu6Z2.mjs} +2 -2
  8. package/fesm2022/{acorex-platform-module-dashboard-management-client-chart-configurator-widget-edit.component-BgR51eZ1.mjs.map → acorex-platform-module-dashboard-management-client-chart-configurator-widget-edit.component-B6HXu6Z2.mjs.map} +1 -1
  9. package/fesm2022/{acorex-platform-module-dashboard-management-client-chart-widget-data.util-BLtv9sOm.mjs → acorex-platform-module-dashboard-management-client-chart-widget-data.util-wm_NIFra.mjs} +2 -2
  10. package/fesm2022/{acorex-platform-module-dashboard-management-client-chart-widget-data.util-BLtv9sOm.mjs.map → acorex-platform-module-dashboard-management-client-chart-widget-data.util-wm_NIFra.mjs.map} +1 -1
  11. package/fesm2022/{acorex-platform-module-dashboard-management-client-donut-chart-widget.component-DB_7rLmK.mjs → acorex-platform-module-dashboard-management-client-donut-chart-widget.component-CimxD1qS.mjs} +3 -3
  12. package/fesm2022/{acorex-platform-module-dashboard-management-client-donut-chart-widget.component-DB_7rLmK.mjs.map → acorex-platform-module-dashboard-management-client-donut-chart-widget.component-CimxD1qS.mjs.map} +1 -1
  13. package/fesm2022/{acorex-platform-module-dashboard-management-client-funnel-chart-widget.component-CltmXb8c.mjs → acorex-platform-module-dashboard-management-client-funnel-chart-widget.component-Bk8cKqbj.mjs} +3 -3
  14. package/fesm2022/{acorex-platform-module-dashboard-management-client-funnel-chart-widget.component-CltmXb8c.mjs.map → acorex-platform-module-dashboard-management-client-funnel-chart-widget.component-Bk8cKqbj.mjs.map} +1 -1
  15. package/fesm2022/{acorex-platform-module-dashboard-management-client-gauge-chart-widget.component-Ci1cRFmt.mjs → acorex-platform-module-dashboard-management-client-gauge-chart-widget.component-hPdwIgKj.mjs} +3 -3
  16. package/fesm2022/{acorex-platform-module-dashboard-management-client-gauge-chart-widget.component-Ci1cRFmt.mjs.map → acorex-platform-module-dashboard-management-client-gauge-chart-widget.component-hPdwIgKj.mjs.map} +1 -1
  17. package/fesm2022/{acorex-platform-module-dashboard-management-client-heatmap-chart-widget.component-CzJTc6rm.mjs → acorex-platform-module-dashboard-management-client-heatmap-chart-widget.component-D3BHWQEn.mjs} +3 -3
  18. package/fesm2022/{acorex-platform-module-dashboard-management-client-heatmap-chart-widget.component-CzJTc6rm.mjs.map → acorex-platform-module-dashboard-management-client-heatmap-chart-widget.component-D3BHWQEn.mjs.map} +1 -1
  19. package/fesm2022/{acorex-platform-module-dashboard-management-client-index-z10pHL3b.mjs → acorex-platform-module-dashboard-management-client-index-BWCfAI1f.mjs} +2 -2
  20. package/fesm2022/{acorex-platform-module-dashboard-management-client-index-z10pHL3b.mjs.map → acorex-platform-module-dashboard-management-client-index-BWCfAI1f.mjs.map} +1 -1
  21. package/fesm2022/{acorex-platform-module-dashboard-management-client-line-chart-widget.component-Fu_lheQe.mjs → acorex-platform-module-dashboard-management-client-line-chart-widget.component-DblTSNpm.mjs} +3 -3
  22. package/fesm2022/{acorex-platform-module-dashboard-management-client-line-chart-widget.component-Fu_lheQe.mjs.map → acorex-platform-module-dashboard-management-client-line-chart-widget.component-DblTSNpm.mjs.map} +1 -1
  23. package/fesm2022/acorex-platform-module-dashboard-management-client.mjs +1 -1
  24. package/i18n/en-AU/dashboard-management.json +115 -0
  25. package/i18n/en-AU/dashboard.json +387 -0
  26. package/i18n/en-US/dashboard-management.json +115 -0
  27. package/i18n/en-US/dashboard.json +391 -0
  28. package/i18n/fa-IR/dashboard-management.json +115 -0
  29. package/i18n/fa-IR/dashboard.json +391 -0
  30. package/package.json +1 -1
  31. package/fesm2022/acorex-platform-module-dashboard-management-client-acorex-platform-module-dashboard-management-client-61Q_QY8l.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-dashboard-management-client-index-z10pHL3b.mjs","sources":["../../../../libs/modules/dashboard-management/client/src/lib/features/dashboard-layout-page/dashboard-layout-page-component.provider.ts","../../../../libs/modules/dashboard-management/client/src/lib/features/dashboard-layout-page/dashboard-layout-page.component.ts","../../../../libs/modules/dashboard-management/client/src/lib/features/dashboard-layout-page/dashboard-layout-page.component.html"],"sourcesContent":["import {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex-platform/framework-client/layout/components';\nimport { Injectable } from '@angular/core';\nimport { DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY } from '@acorex-platform/module-dashboard-management-client/contracts';\n\n//#region ---- Dashboard layout page provider ----\n\n@Injectable()\nexport class AXMDashboardLayoutPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./dashboard-layout-page.component').then((m) => m.AXMDashboardLayoutPageComponent),\n },\n ];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPActionMenuItem, AXPExecuteCommand } from '@acorex-platform/framework-shared/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n input,\n signal,\n} from '@angular/core';\n\nimport { resolveMultiLanguageString } from '@acorex/core/translation';\n\nimport { AXPDesignerService } from '@acorex-platform/framework-client/layout/designer';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent } from '@acorex-platform/framework-client/layout/views';\n\nimport { AXMCommonDashboardEntityModel } from '@acorex-platform/module-dashboard-management-client/contracts';\nimport { AXMDashboardStore } from '../dashboard-services/home-dashboard.store';\nimport { AXMDashboardGridLayoutSectionComponent } from '../shared/dashboard-grid-layout-section';\nimport { DASHBOARD_LAYOUT_ENTITY_MODE } from './dashboard-layout-entity-mode.token';\n\n//#endregion\n\n@Component({\n selector: 'axm-dashboard-layout-page',\n templateUrl: './dashboard-layout-page.component.html',\n imports: [AXMDashboardGridLayoutSectionComponent],\n providers: [\n AXPDesignerService,\n { provide: DASHBOARD_LAYOUT_ENTITY_MODE, useValue: true },\n AXMDashboardStore,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMDashboardLayoutPageComponent,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMDashboardLayoutPageComponent extends AXPPageLayoutBaseComponent {\n //#region ---- Services & Dependencies ----\n\n protected readonly store = inject(AXMDashboardStore);\n\n //#endregion\n\n //#region ---- Inputs (entity page renderer) ----\n\n rootContext = input<Record<string, unknown>>();\n pageConfig = input<Record<string, unknown>>();\n\n //#endregion\n\n //#region ---- Local state ----\n\n protected readonly context = signal<Record<string, unknown>>({});\n\n //#endregion\n\n //#region ---- Effects ----\n\n #syncFromRootContext = effect(() => {\n const ctx = this.rootContext();\n if (!ctx || typeof ctx['id'] !== 'string') {\n return;\n }\n this.store.hydrateFromEntityDetailModel(ctx as unknown as AXMCommonDashboardEntityModel);\n this.context.set({ ...ctx });\n });\n\n //#endregion\n\n //#region ---- Page chrome (AXPPageLayoutBase) ----\n\n override getPageTitle(): string {\n const title = this.store.selectedDashboard()?.title;\n if (title == null || title === '') {\n return '';\n }\n return resolveMultiLanguageString(title, 'en-US');\n }\n\n override async getPageDescription(): Promise<string> {\n const raw = this.store.selectedDashboard()?.description;\n if (raw == null || raw === '') {\n return '';\n }\n if (typeof raw === 'object' && !Array.isArray(raw) && this.translateService.isValidMultiLanguageObject(raw)) {\n return this.translateService.resolve(raw);\n }\n return String(raw);\n }\n\n override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n return [\n {\n title: await this.translateService.translateAsync('@general:actions.add-item.title'),\n icon: 'fa-light fa-square-plus',\n color: 'primary',\n items: [\n {\n title: await this.translateService.translateAsync('@dashboard:widget'),\n icon: 'fa-light fa-window-restore',\n command: { name: 'new-widget' },\n disabled: this.store.readonly(),\n },\n ],\n },\n ];\n }\n\n override async execute(command: AXPExecuteCommand): Promise<void> {\n switch (command.name) {\n case 'new-widget':\n await this.store.addWidget();\n this.recompute();\n break;\n }\n }\n\n //#endregion\n}\n","<axm-dashboard-grid-layout-section\n [widgetsContext]=\"context()\"\n (addWidget)=\"execute({ name: 'new-widget' })\"\n></axm-dashboard-grid-layout-section>\n"],"names":[],"mappings":";;;;;;;;;;AAOA;MAGa,uCAAuC,CAAA;AAClD,IAAA,MAAM,UAAU,GAAA;QACd,OAAO;AACL,YAAA;AACE,gBAAA,GAAG,EAAE,mCAAmC;AACxC,gBAAA,MAAM,EAAE,MACN,6EAA2C,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,+BAA+B,CAAC;AAC7F,aAAA;SACF;IACH;8GATW,uCAAuC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAvC,uCAAuC,EAAA,CAAA,CAAA;;2FAAvC,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBADnD;;;ACaD;AAiBM,MAAO,+BAAgC,SAAQ,0BAA0B,CAAA;AAf/E,IAAA,WAAA,GAAA;;;AAkBqB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;;;AAMpD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK;mGAA2B;AAC9C,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK;kGAA2B;;;QAM1B,IAAA,CAAA,OAAO,GAAG,MAAM,CAA0B,EAAE;oFAAC;;;AAMhE,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,MAAK;AACjC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE;YAC9B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE;gBACzC;YACF;AACA,YAAA,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,GAA+C,CAAC;YACxF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC;QAC9B,CAAC;iGAAC;AAqDH,IAAA;;;AA5DC,IAAA,oBAAoB;;;IAaX,YAAY,GAAA;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,KAAK;QACnD,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;AACjC,YAAA,OAAO,EAAE;QACX;AACA,QAAA,OAAO,0BAA0B,CAAC,KAAK,EAAE,OAAO,CAAC;IACnD;AAES,IAAA,MAAM,kBAAkB,GAAA;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,WAAW;QACvD,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE,EAAE;AAC7B,YAAA,OAAO,EAAE;QACX;QACA,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,GAAG,CAAC,EAAE;YAC3G,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC;QAC3C;AACA,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC;IACpB;AAES,IAAA,MAAM,mBAAmB,GAAA;QAChC,OAAO;AACL,YAAA;gBACE,KAAK,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,iCAAiC,CAAC;AACpF,gBAAA,IAAI,EAAE,yBAAyB;AAC/B,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE;AACL,oBAAA;wBACE,KAAK,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,mBAAmB,CAAC;AACtE,wBAAA,IAAI,EAAE,4BAA4B;AAClC,wBAAA,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC/B,wBAAA,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AAChC,qBAAA;AACF,iBAAA;AACF,aAAA;SACF;IACH;IAES,MAAM,OAAO,CAAC,OAA0B,EAAA;AAC/C,QAAA,QAAQ,OAAO,CAAC,IAAI;AAClB,YAAA,KAAK,YAAY;AACf,gBAAA,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBAC5B,IAAI,CAAC,SAAS,EAAE;gBAChB;;IAEN;8GA/EW,+BAA+B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAX/B;YACT,kBAAkB;AAClB,YAAA,EAAE,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,IAAI,EAAE;YACzD,iBAAiB;AACjB,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,+BAA+B;AAC7C,aAAA;SACF,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpCH,kKAIA,4CDuBY,sCAAsC,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAYrC,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAf3C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAAA,OAAA,EAE5B,CAAC,sCAAsC,CAAC,EAAA,SAAA,EACtC;wBACT,kBAAkB;AAClB,wBAAA,EAAE,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,IAAI,EAAE;wBACzD,iBAAiB;AACjB,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,+BAAiC;AAC7C,yBAAA;qBACF,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,kKAAA,EAAA;;;;;;;;"}
1
+ {"version":3,"file":"acorex-platform-module-dashboard-management-client-index-BWCfAI1f.mjs","sources":["../../../../libs/modules/dashboard-management/client/src/lib/features/dashboard-layout-page/dashboard-layout-page-component.provider.ts","../../../../libs/modules/dashboard-management/client/src/lib/features/dashboard-layout-page/dashboard-layout-page.component.ts","../../../../libs/modules/dashboard-management/client/src/lib/features/dashboard-layout-page/dashboard-layout-page.component.html"],"sourcesContent":["import {\n AXPPageComponentDefinition,\n AXPPageComponentProvider,\n} from '@acorex-platform/framework-client/layout/components';\nimport { Injectable } from '@angular/core';\nimport { DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY } from '@acorex-platform/module-dashboard-management-client/contracts';\n\n//#region ---- Dashboard layout page provider ----\n\n@Injectable()\nexport class AXMDashboardLayoutPageComponentProvider implements AXPPageComponentProvider {\n async components(): Promise<AXPPageComponentDefinition[]> {\n return [\n {\n key: DASHBOARD_LAYOUT_PAGE_COMPONENT_KEY,\n loader: () =>\n import('./dashboard-layout-page.component').then((m) => m.AXMDashboardLayoutPageComponent),\n },\n ];\n }\n}\n\n//#endregion\n","//#region ---- Imports ----\n\nimport { AXPActionMenuItem, AXPExecuteCommand } from '@acorex-platform/framework-shared/core';\nimport {\n ChangeDetectionStrategy,\n Component,\n effect,\n inject,\n input,\n signal,\n} from '@angular/core';\n\nimport { resolveMultiLanguageString } from '@acorex/core/translation';\n\nimport { AXPDesignerService } from '@acorex-platform/framework-client/layout/designer';\nimport { AXPPageLayoutBase, AXPPageLayoutBaseComponent } from '@acorex-platform/framework-client/layout/views';\n\nimport { AXMCommonDashboardEntityModel } from '@acorex-platform/module-dashboard-management-client/contracts';\nimport { AXMDashboardStore } from '../dashboard-services/home-dashboard.store';\nimport { AXMDashboardGridLayoutSectionComponent } from '../shared/dashboard-grid-layout-section';\nimport { DASHBOARD_LAYOUT_ENTITY_MODE } from './dashboard-layout-entity-mode.token';\n\n//#endregion\n\n@Component({\n selector: 'axm-dashboard-layout-page',\n templateUrl: './dashboard-layout-page.component.html',\n imports: [AXMDashboardGridLayoutSectionComponent],\n providers: [\n AXPDesignerService,\n { provide: DASHBOARD_LAYOUT_ENTITY_MODE, useValue: true },\n AXMDashboardStore,\n {\n provide: AXPPageLayoutBase,\n useExisting: AXMDashboardLayoutPageComponent,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXMDashboardLayoutPageComponent extends AXPPageLayoutBaseComponent {\n //#region ---- Services & Dependencies ----\n\n protected readonly store = inject(AXMDashboardStore);\n\n //#endregion\n\n //#region ---- Inputs (entity page renderer) ----\n\n rootContext = input<Record<string, unknown>>();\n pageConfig = input<Record<string, unknown>>();\n\n //#endregion\n\n //#region ---- Local state ----\n\n protected readonly context = signal<Record<string, unknown>>({});\n\n //#endregion\n\n //#region ---- Effects ----\n\n #syncFromRootContext = effect(() => {\n const ctx = this.rootContext();\n if (!ctx || typeof ctx['id'] !== 'string') {\n return;\n }\n this.store.hydrateFromEntityDetailModel(ctx as unknown as AXMCommonDashboardEntityModel);\n this.context.set({ ...ctx });\n });\n\n //#endregion\n\n //#region ---- Page chrome (AXPPageLayoutBase) ----\n\n override getPageTitle(): string {\n const title = this.store.selectedDashboard()?.title;\n if (title == null || title === '') {\n return '';\n }\n return resolveMultiLanguageString(title, 'en-US');\n }\n\n override async getPageDescription(): Promise<string> {\n const raw = this.store.selectedDashboard()?.description;\n if (raw == null || raw === '') {\n return '';\n }\n if (typeof raw === 'object' && !Array.isArray(raw) && this.translateService.isValidMultiLanguageObject(raw)) {\n return this.translateService.resolve(raw);\n }\n return String(raw);\n }\n\n override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n return [\n {\n title: await this.translateService.translateAsync('@general:actions.add-item.title'),\n icon: 'fa-light fa-square-plus',\n color: 'primary',\n items: [\n {\n title: await this.translateService.translateAsync('@dashboard:widget'),\n icon: 'fa-light fa-window-restore',\n command: { name: 'new-widget' },\n disabled: this.store.readonly(),\n },\n ],\n },\n ];\n }\n\n override async execute(command: AXPExecuteCommand): Promise<void> {\n switch (command.name) {\n case 'new-widget':\n await this.store.addWidget();\n this.recompute();\n break;\n }\n }\n\n //#endregion\n}\n","<axm-dashboard-grid-layout-section\n [widgetsContext]=\"context()\"\n (addWidget)=\"execute({ name: 'new-widget' })\"\n></axm-dashboard-grid-layout-section>\n"],"names":[],"mappings":";;;;;;;;;;AAOA;MAGa,uCAAuC,CAAA;AAClD,IAAA,MAAM,UAAU,GAAA;QACd,OAAO;AACL,YAAA;AACE,gBAAA,GAAG,EAAE,mCAAmC;AACxC,gBAAA,MAAM,EAAE,MACN,6EAA2C,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,+BAA+B,CAAC;AAC7F,aAAA;SACF;IACH;8GATW,uCAAuC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAvC,uCAAuC,EAAA,CAAA,CAAA;;2FAAvC,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBADnD;;;ACaD;AAiBM,MAAO,+BAAgC,SAAQ,0BAA0B,CAAA;AAf/E,IAAA,WAAA,GAAA;;;AAkBqB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC;;;AAMpD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK;mGAA2B;AAC9C,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK;kGAA2B;;;QAM1B,IAAA,CAAA,OAAO,GAAG,MAAM,CAA0B,EAAE;oFAAC;;;AAMhE,QAAA,IAAA,CAAA,oBAAoB,GAAG,MAAM,CAAC,MAAK;AACjC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE;YAC9B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE;gBACzC;YACF;AACA,YAAA,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,GAA+C,CAAC;YACxF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC;QAC9B,CAAC;iGAAC;AAqDH,IAAA;;;AA5DC,IAAA,oBAAoB;;;IAaX,YAAY,GAAA;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,KAAK;QACnD,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;AACjC,YAAA,OAAO,EAAE;QACX;AACA,QAAA,OAAO,0BAA0B,CAAC,KAAK,EAAE,OAAO,CAAC;IACnD;AAES,IAAA,MAAM,kBAAkB,GAAA;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,WAAW;QACvD,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE,EAAE;AAC7B,YAAA,OAAO,EAAE;QACX;QACA,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,GAAG,CAAC,EAAE;YAC3G,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC;QAC3C;AACA,QAAA,OAAO,MAAM,CAAC,GAAG,CAAC;IACpB;AAES,IAAA,MAAM,mBAAmB,GAAA;QAChC,OAAO;AACL,YAAA;gBACE,KAAK,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,iCAAiC,CAAC;AACpF,gBAAA,IAAI,EAAE,yBAAyB;AAC/B,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,KAAK,EAAE;AACL,oBAAA;wBACE,KAAK,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,mBAAmB,CAAC;AACtE,wBAAA,IAAI,EAAE,4BAA4B;AAClC,wBAAA,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;AAC/B,wBAAA,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AAChC,qBAAA;AACF,iBAAA;AACF,aAAA;SACF;IACH;IAES,MAAM,OAAO,CAAC,OAA0B,EAAA;AAC/C,QAAA,QAAQ,OAAO,CAAC,IAAI;AAClB,YAAA,KAAK,YAAY;AACf,gBAAA,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBAC5B,IAAI,CAAC,SAAS,EAAE;gBAChB;;IAEN;8GA/EW,+BAA+B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA/B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,+BAA+B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAX/B;YACT,kBAAkB;AAClB,YAAA,EAAE,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,IAAI,EAAE;YACzD,iBAAiB;AACjB,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,+BAA+B;AAC7C,aAAA;SACF,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpCH,kKAIA,4CDuBY,sCAAsC,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAAA,yBAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAYrC,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAf3C,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAAA,OAAA,EAE5B,CAAC,sCAAsC,CAAC,EAAA,SAAA,EACtC;wBACT,kBAAkB;AAClB,wBAAA,EAAE,OAAO,EAAE,4BAA4B,EAAE,QAAQ,EAAE,IAAI,EAAE;wBACzD,iBAAiB;AACjB,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAA,+BAAiC;AAC7C,yBAAA;qBACF,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,kKAAA,EAAA;;;;;;;;"}
@@ -4,8 +4,8 @@ import { AXTranslationService } from '@acorex/core/translation';
4
4
  import { AXPQueryExecutor } from '@acorex-platform/framework-client/runtime';
5
5
  import * as i0 from '@angular/core';
6
6
  import { inject, signal, effect, computed, ChangeDetectionStrategy, Component } from '@angular/core';
7
- import { e as AXPDashboardWidgetComponent, f as resolveChartQueryTabs, g as AXPChartQueryTabsComponent } from './acorex-platform-module-dashboard-management-client-acorex-platform-module-dashboard-management-client-61Q_QY8l.mjs';
8
- import { r as resolveChartAxisLabels, e as loadLineChartSeries } from './acorex-platform-module-dashboard-management-client-chart-widget-data.util-BLtv9sOm.mjs';
7
+ import { e as AXPDashboardWidgetComponent, f as resolveChartQueryTabs, g as AXPChartQueryTabsComponent } from './acorex-platform-module-dashboard-management-client-acorex-platform-module-dashboard-management-client-CdZ2jDXz.mjs';
8
+ import { r as resolveChartAxisLabels, e as loadLineChartSeries } from './acorex-platform-module-dashboard-management-client-chart-widget-data.util-wm_NIFra.mjs';
9
9
  import { A as AXP_CHART_LEGEND_OPTIONS_SERIES, o as omitChartFixedSize } from './acorex-platform-module-dashboard-management-client-chart-legend.util-C1zqTQEf.mjs';
10
10
 
11
11
  /**
@@ -155,4 +155,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
155
155
  }], ctorParameters: () => [] });
156
156
 
157
157
  export { AXPLineChartWidgetViewComponent };
158
- //# sourceMappingURL=acorex-platform-module-dashboard-management-client-line-chart-widget.component-Fu_lheQe.mjs.map
158
+ //# sourceMappingURL=acorex-platform-module-dashboard-management-client-line-chart-widget.component-DblTSNpm.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-dashboard-management-client-line-chart-widget.component-Fu_lheQe.mjs","sources":["../../../../libs/modules/dashboard-management/client/src/lib/features/shared/widgets/chart/line-chart/line-chart-widget.component.ts","../../../../libs/modules/dashboard-management/client/src/lib/features/shared/widgets/chart/line-chart/line-chart-widget.component.html"],"sourcesContent":["import { AXChartLegendComponent } from '@acorex/charts/chart-legend';\nimport {\n AXLineChartComponent,\n AXLineChartData,\n AXLineChartOption,\n AXLineChartPointClickEvent,\n} from '@acorex/charts/line-chart';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport { AXPQueryExecutor } from '@acorex-platform/framework-client/runtime';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { AXPDashboardWidgetComponent } from '../../dashboard-widget-base';\nimport { resolveChartQueryTabs } from '../chart-query-load.util';\nimport { loadLineChartSeries, resolveChartAxisLabels } from '../chart-widget-data.util';\nimport { AXPChartQueryTabsComponent } from '../chart-query-tabs.component';\nimport { AXP_CHART_LEGEND_OPTIONS_SERIES, omitChartFixedSize } from '../chart-legend.util';\n\n/**\n * Line Chart Widget Component\n * Renders data as lines with interactive hover effects and animations\n */\n@Component({\n templateUrl: './line-chart-widget.component.html',\n styleUrls: ['./line-chart-widget.component.css'],\n standalone: true,\n imports: [AXLineChartComponent, AXChartLegendComponent, AXPChartQueryTabsComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPLineChartWidgetViewComponent extends AXPDashboardWidgetComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly queryExecutor = inject(AXPQueryExecutor);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- Chart state -----\n\n protected data = signal<AXLineChartData[]>([]);\n\n /** Options passed to the chart with resolved string labels (multi-language and @i18n keys). */\n protected lineChartOptions = signal<AXLineChartOption & { title: string }>(\n {} as AXLineChartOption & { title: string },\n );\n\n protected readonly legendOptions = AXP_CHART_LEGEND_OPTIONS_SERIES;\n\n private labelResolveGeneration = 0;\n\n //#endregion\n\n //#region ----- Localization -----\n\n private async resolveChartOptionLabel(value: unknown): Promise<string> {\n if (value != null && typeof value === 'object' && !Array.isArray(value)) {\n return this.translationService.resolve(value as AXPMultiLanguageString);\n }\n const s = String(value ?? '');\n if (s.startsWith('@')) {\n return this.translationService.translateAsync(s);\n }\n return s;\n }\n\n /**\n * Resolves series labels from plain text, @i18n keys, or multi-language maps.\n */\n private async resolveLocalizedChartText(value: unknown): Promise<string> {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n if (value.startsWith('@')) {\n return this.translationService.translateAsync(value);\n }\n return value;\n }\n if (\n typeof value === 'object' &&\n !Array.isArray(value) &&\n this.translationService.isValidMultiLanguageObject(value)\n ) {\n return this.translationService.resolve(value as AXPMultiLanguageString);\n }\n return String(value);\n }\n\n private readonly resolveChartLabelKeysEffect = effect(() => {\n const raw = this.options() as Record<string, unknown>;\n const generation = ++this.labelResolveGeneration;\n const axisLabels = resolveChartAxisLabels(raw);\n void Promise.all([\n this.resolveChartOptionLabel(raw['title']),\n this.resolveChartOptionLabel(axisLabels.xAxisLabel),\n this.resolveChartOptionLabel(axisLabels.yAxisLabel),\n ]).then(([title, xAxisLabel, yAxisLabel]) => {\n if (generation !== this.labelResolveGeneration) {\n return;\n }\n const base = omitChartFixedSize(raw) as unknown as AXLineChartOption & { title: string };\n this.lineChartOptions.set({\n ...base,\n title,\n xAxisLabel,\n yAxisLabel,\n });\n });\n });\n\n //#endregion\n\n //#region ----- Query tabs -----\n\n protected readonly queryTabs = computed(() =>\n resolveChartQueryTabs(this.options() as Record<string, unknown>, this.entityContext()?.entityId),\n );\n\n protected readonly activeTabIndex = signal(0);\n\n private readonly activeQuery = computed(() => {\n const tabs = this.queryTabs();\n if (tabs.length === 0) {\n return undefined;\n }\n const index = Math.min(Math.max(this.activeTabIndex(), 0), tabs.length - 1);\n return tabs[index];\n });\n\n protected selectQueryTab(index: number): void {\n this.activeTabIndex.set(index);\n }\n\n private readonly clampTabIndexEffect = effect(() => {\n const tabs = this.queryTabs();\n if (this.activeTabIndex() >= tabs.length) {\n this.activeTabIndex.set(0);\n }\n });\n\n //#endregion\n\n //#region ----- Query loading -----\n\n private readonly dataLoadEffect = effect(async () => {\n const opts = this.options() as Record<string, unknown>;\n const active = this.activeQuery();\n const series = await loadLineChartSeries(opts, {\n queryExecutor: this.queryExecutor,\n queryKey: active?.query,\n queryInput: active?.queryInput,\n });\n const resolved = await Promise.all(\n series.map(async (s) => ({\n ...s,\n label: await this.resolveLocalizedChartText(s.label),\n })),\n );\n this.data.set(resolved as AXLineChartData[]);\n });\n\n //#endregion\n\n constructor() {\n super();\n this.setOptions({\n showXAxis: true,\n showYAxis: true,\n yAxisStartsAtZero: true,\n showGrid: true,\n showVerticalGrid: true,\n lineWidth: 2,\n smoothLine: true,\n showPoints: true,\n pointRadius: 4,\n fillOpacity: 80,\n showTooltip: true,\n showCrosshair: true,\n animationEasing: 'cubic-out',\n animationDuration: 800,\n ...omitChartFixedSize(this.options() as Record<string, unknown>),\n });\n this.lineChartOptions.set(\n omitChartFixedSize(this.options() as Record<string, unknown>) as unknown as AXLineChartOption & {\n title: string;\n },\n );\n }\n\n handleLineChartPointClick(_event: AXLineChartPointClickEvent) {\n // reserved for future drill-down\n }\n}\n","<div class=\"axp-chart-widget-host\">\n <axp-chart-query-tabs [tabs]=\"queryTabs()\" [activeIndex]=\"activeTabIndex()\" (activeIndexChange)=\"selectQueryTab($event)\" />\n <div class=\"axp-chart-widget-host__body axp-chart-widget-host__body--with-legend\">\n <div class=\"axp-chart-widget-host__chart\">\n <ax-line-chart #chart (pointClick)=\"handleLineChartPointClick($event)\" [data]=\"data()\" [options]=\"lineChartOptions()\"></ax-line-chart>\n </div>\n <!-- ----- Series indicator (legend) ----- -->\n @if (data().length > 1) {\n <div class=\"axp-chart-widget-host__legend\">\n <ax-chart-legend [chart]=\"chart\" [options]=\"legendOptions\"></ax-chart-legend>\n </div>\n }\n </div>\n</div>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-dashboard-management-client-line-chart-widget.component-DblTSNpm.mjs","sources":["../../../../libs/modules/dashboard-management/client/src/lib/features/shared/widgets/chart/line-chart/line-chart-widget.component.ts","../../../../libs/modules/dashboard-management/client/src/lib/features/shared/widgets/chart/line-chart/line-chart-widget.component.html"],"sourcesContent":["import { AXChartLegendComponent } from '@acorex/charts/chart-legend';\nimport {\n AXLineChartComponent,\n AXLineChartData,\n AXLineChartOption,\n AXLineChartPointClickEvent,\n} from '@acorex/charts/line-chart';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport { AXPQueryExecutor } from '@acorex-platform/framework-client/runtime';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\nimport { AXPDashboardWidgetComponent } from '../../dashboard-widget-base';\nimport { resolveChartQueryTabs } from '../chart-query-load.util';\nimport { loadLineChartSeries, resolveChartAxisLabels } from '../chart-widget-data.util';\nimport { AXPChartQueryTabsComponent } from '../chart-query-tabs.component';\nimport { AXP_CHART_LEGEND_OPTIONS_SERIES, omitChartFixedSize } from '../chart-legend.util';\n\n/**\n * Line Chart Widget Component\n * Renders data as lines with interactive hover effects and animations\n */\n@Component({\n templateUrl: './line-chart-widget.component.html',\n styleUrls: ['./line-chart-widget.component.css'],\n standalone: true,\n imports: [AXLineChartComponent, AXChartLegendComponent, AXPChartQueryTabsComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPLineChartWidgetViewComponent extends AXPDashboardWidgetComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly queryExecutor = inject(AXPQueryExecutor);\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- Chart state -----\n\n protected data = signal<AXLineChartData[]>([]);\n\n /** Options passed to the chart with resolved string labels (multi-language and @i18n keys). */\n protected lineChartOptions = signal<AXLineChartOption & { title: string }>(\n {} as AXLineChartOption & { title: string },\n );\n\n protected readonly legendOptions = AXP_CHART_LEGEND_OPTIONS_SERIES;\n\n private labelResolveGeneration = 0;\n\n //#endregion\n\n //#region ----- Localization -----\n\n private async resolveChartOptionLabel(value: unknown): Promise<string> {\n if (value != null && typeof value === 'object' && !Array.isArray(value)) {\n return this.translationService.resolve(value as AXPMultiLanguageString);\n }\n const s = String(value ?? '');\n if (s.startsWith('@')) {\n return this.translationService.translateAsync(s);\n }\n return s;\n }\n\n /**\n * Resolves series labels from plain text, @i18n keys, or multi-language maps.\n */\n private async resolveLocalizedChartText(value: unknown): Promise<string> {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n if (value.startsWith('@')) {\n return this.translationService.translateAsync(value);\n }\n return value;\n }\n if (\n typeof value === 'object' &&\n !Array.isArray(value) &&\n this.translationService.isValidMultiLanguageObject(value)\n ) {\n return this.translationService.resolve(value as AXPMultiLanguageString);\n }\n return String(value);\n }\n\n private readonly resolveChartLabelKeysEffect = effect(() => {\n const raw = this.options() as Record<string, unknown>;\n const generation = ++this.labelResolveGeneration;\n const axisLabels = resolveChartAxisLabels(raw);\n void Promise.all([\n this.resolveChartOptionLabel(raw['title']),\n this.resolveChartOptionLabel(axisLabels.xAxisLabel),\n this.resolveChartOptionLabel(axisLabels.yAxisLabel),\n ]).then(([title, xAxisLabel, yAxisLabel]) => {\n if (generation !== this.labelResolveGeneration) {\n return;\n }\n const base = omitChartFixedSize(raw) as unknown as AXLineChartOption & { title: string };\n this.lineChartOptions.set({\n ...base,\n title,\n xAxisLabel,\n yAxisLabel,\n });\n });\n });\n\n //#endregion\n\n //#region ----- Query tabs -----\n\n protected readonly queryTabs = computed(() =>\n resolveChartQueryTabs(this.options() as Record<string, unknown>, this.entityContext()?.entityId),\n );\n\n protected readonly activeTabIndex = signal(0);\n\n private readonly activeQuery = computed(() => {\n const tabs = this.queryTabs();\n if (tabs.length === 0) {\n return undefined;\n }\n const index = Math.min(Math.max(this.activeTabIndex(), 0), tabs.length - 1);\n return tabs[index];\n });\n\n protected selectQueryTab(index: number): void {\n this.activeTabIndex.set(index);\n }\n\n private readonly clampTabIndexEffect = effect(() => {\n const tabs = this.queryTabs();\n if (this.activeTabIndex() >= tabs.length) {\n this.activeTabIndex.set(0);\n }\n });\n\n //#endregion\n\n //#region ----- Query loading -----\n\n private readonly dataLoadEffect = effect(async () => {\n const opts = this.options() as Record<string, unknown>;\n const active = this.activeQuery();\n const series = await loadLineChartSeries(opts, {\n queryExecutor: this.queryExecutor,\n queryKey: active?.query,\n queryInput: active?.queryInput,\n });\n const resolved = await Promise.all(\n series.map(async (s) => ({\n ...s,\n label: await this.resolveLocalizedChartText(s.label),\n })),\n );\n this.data.set(resolved as AXLineChartData[]);\n });\n\n //#endregion\n\n constructor() {\n super();\n this.setOptions({\n showXAxis: true,\n showYAxis: true,\n yAxisStartsAtZero: true,\n showGrid: true,\n showVerticalGrid: true,\n lineWidth: 2,\n smoothLine: true,\n showPoints: true,\n pointRadius: 4,\n fillOpacity: 80,\n showTooltip: true,\n showCrosshair: true,\n animationEasing: 'cubic-out',\n animationDuration: 800,\n ...omitChartFixedSize(this.options() as Record<string, unknown>),\n });\n this.lineChartOptions.set(\n omitChartFixedSize(this.options() as Record<string, unknown>) as unknown as AXLineChartOption & {\n title: string;\n },\n );\n }\n\n handleLineChartPointClick(_event: AXLineChartPointClickEvent) {\n // reserved for future drill-down\n }\n}\n","<div class=\"axp-chart-widget-host\">\n <axp-chart-query-tabs [tabs]=\"queryTabs()\" [activeIndex]=\"activeTabIndex()\" (activeIndexChange)=\"selectQueryTab($event)\" />\n <div class=\"axp-chart-widget-host__body axp-chart-widget-host__body--with-legend\">\n <div class=\"axp-chart-widget-host__chart\">\n <ax-line-chart #chart (pointClick)=\"handleLineChartPointClick($event)\" [data]=\"data()\" [options]=\"lineChartOptions()\"></ax-line-chart>\n </div>\n <!-- ----- Series indicator (legend) ----- -->\n @if (data().length > 1) {\n <div class=\"axp-chart-widget-host__legend\">\n <ax-chart-legend [chart]=\"chart\" [options]=\"legendOptions\"></ax-chart-legend>\n </div>\n }\n </div>\n</div>\n"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { m as AXMAddDashboardPopup, n as AXMChartConfiguratorWidget, p as AXMConfigurationPopup, q as AXMDashboardHomeComponent, s as AXMDashboardManagementModule, t as AXMDashboardPopupService, b as AXMDashboardStore, u as AXMDashboardWidgetWrapperComponent, v as AXPBarChartWidget, w as AXPChartCardWidget, x as AXPClockCalendarWidget, y as AXPClockCalendarWidgetViewComponent, z as AXPDASHBOARD_ENTITY_CONTEXT_KEY, e as AXPDashboardWidgetComponent, B as AXPDonutChartWidget, C as AXPFunnelChartWidget, E as AXPGaugeChartWidget, F as AXPHeatmapChartWidget, G as AXPKpiDetailsWidget, H as AXPKpiDetailsWidgetViewComponent, I as AXPKpiProgressWidget, J as AXPKpiProgressWidgetViewComponent, K as AXPKpiSegmentedWidget, L as AXPKpiSegmentedWidgetViewComponent, M as AXPKpiStatCardWidget, N as AXPKpiStatCardWidgetViewComponent, O as AXPLineChartWidget, P as AXPShortcutWidget, Q as AXPShortcutWidgetViewComponent, R as AXPStickyNoteWidget, S as AXPStickyNoteWidgetViewComponent, A as AXP_CHART_CONFIGURATOR_DEFAULT_TYPE, T as AXP_CHART_FUNNEL_DIMENSIONS, U as AXP_CHART_GAUGE_DIMENSIONS, V as AXP_CHART_SQUARE_DIMENSIONS, W as AXP_CHART_WIDE_DIMENSIONS, X as AXP_DASHBOARD_SHARED_SUB_CHART_CARTESIAN, Y as AXP_DASHBOARD_SHARED_SUB_CHART_KPI, Z as AXP_DASHBOARD_SHARED_SUB_CHART_RADIAL, _ as AXP_DASHBOARD_SHARED_SUB_CHART_SPECIALIZED, $ as AXP_DASHBOARD_SHARED_SUB_UTILITY_NOTES, a0 as AXP_DASHBOARD_SHARED_SUB_UTILITY_SHORTCUT, a1 as AXP_DASHBOARD_SHARED_SUB_UTILITY_TIME, a2 as AXP_DASHBOARD_SHARED_SUB_UTILITY_WEATHER, a3 as AXP_KPI_DETAILS_DIMENSIONS, a4 as AXP_KPI_GRID_HEIGHT_OPTION, a5 as AXP_KPI_GRID_WIDTH_OPTION, a6 as AXP_KPI_PROGRESS_SEGMENTED_DIMENSIONS, a7 as AXP_KPI_STANDARD_DIMENSIONS, a8 as AXP_KPI_STAT_CARD_DIMENSIONS, a9 as AXP_UTILITY_CLOCK_CALENDAR_DIMENSIONS, aa as AXP_UTILITY_COMPACT_SQUARE_DIMENSIONS, ab as AXP_UTILITY_SHORTCUT_DIMENSIONS, ac as AXP_UTILITY_WEATHER_DIMENSIONS, ad as AXP_WIDGETS_CHART_CATEGORY, ae as AXP_WIDGETS_UTILITY_CATEGORY, a4 as DASHBOARD_WIDGET_GRID_HEIGHT_OPTION, a5 as DASHBOARD_WIDGET_GRID_WIDTH_OPTION, af as STICKY_NOTE_COLOR_PRESETS, ag as STICKY_NOTE_DEFAULT_BACKGROUND, ah as areChartCardTabsConfigured, h as asChartTabWidgetNode, ai as buildDashboardChartCardWidget, aj as buildDashboardChartWidget, ak as buildDashboardChartWidgetWithQuery, al as buildDashboardClockCalendar, am as buildDashboardKpiStatCard, an as buildDashboardKpiTile, ao as buildDashboardShortcut, ap as buildDashboardStickyNote, aq as buildDashboardWeatherWidget, ar as buildDashboardWidgetsContext, as as chartResultTypeForWidget, a as chartTypeUsesAxisLabels, c as chartTypeUsesColorRules, at as defineDashboardWidgetDimensions, au as enrichDashboardLayoutNode, av as formatDashboardGridSizeToken, av as formatKpiGridSizeToken, aw as formatKpiValue, ax as formatUtcOffsetLabel, ay as getIanaTimeZoneOffsetMinutes, az as hasKpiQueryConfigured, i as isChartTabConfigured, aA as isStickyNoteEmpty, aB as layoutFromDimensions, aC as loadKpiQueryResult, aD as normalizeKpiPercent, o as optionsAfterChartTypeSwitch, aE as readChartTabQuery, j as readChartTabTitle, aF as readDashboardEntityContext, aG as readDashboardGridSizeToken, aG as readKpiGridSizeToken, r as readStashedChartAppearance, aH as resolveDashboardLayoutNode, aI as resolveDashboardMetaDimensionsForBreakpoint, aJ as resolveDashboardMetaLayoutNode, aK as resolveKpiIconToneTheme, aL as resolveKpiIconToneValueColor, aM as resolveKpiProgressBarTone, aN as resolveKpiSegmentPaletteColor, aO as resolveKpiText, aP as resolveStickyNoteBackgroundColor, aQ as resolveStickyNoteLayoutVariant, aR as resolveStickyNoteMutedTextColor, aS as resolveStickyNoteText, aT as resolveStickyNoteTextColor, aU as resolveTimeZoneCode, aV as shouldShowStickyNoteEmptyHint, aW as stripHtmlToPlainText, aX as withDashboardGridSizeOptions } from './acorex-platform-module-dashboard-management-client-acorex-platform-module-dashboard-management-client-61Q_QY8l.mjs';
1
+ export { m as AXMAddDashboardPopup, n as AXMChartConfiguratorWidget, p as AXMConfigurationPopup, q as AXMDashboardHomeComponent, s as AXMDashboardManagementModule, t as AXMDashboardPopupService, b as AXMDashboardStore, u as AXMDashboardWidgetWrapperComponent, v as AXPBarChartWidget, w as AXPChartCardWidget, x as AXPClockCalendarWidget, y as AXPClockCalendarWidgetViewComponent, z as AXPDASHBOARD_ENTITY_CONTEXT_KEY, e as AXPDashboardWidgetComponent, B as AXPDonutChartWidget, C as AXPFunnelChartWidget, E as AXPGaugeChartWidget, F as AXPHeatmapChartWidget, G as AXPKpiDetailsWidget, H as AXPKpiDetailsWidgetViewComponent, I as AXPKpiProgressWidget, J as AXPKpiProgressWidgetViewComponent, K as AXPKpiSegmentedWidget, L as AXPKpiSegmentedWidgetViewComponent, M as AXPKpiStatCardWidget, N as AXPKpiStatCardWidgetViewComponent, O as AXPLineChartWidget, P as AXPShortcutWidget, Q as AXPShortcutWidgetViewComponent, R as AXPStickyNoteWidget, S as AXPStickyNoteWidgetViewComponent, A as AXP_CHART_CONFIGURATOR_DEFAULT_TYPE, T as AXP_CHART_FUNNEL_DIMENSIONS, U as AXP_CHART_GAUGE_DIMENSIONS, V as AXP_CHART_SQUARE_DIMENSIONS, W as AXP_CHART_WIDE_DIMENSIONS, X as AXP_DASHBOARD_SHARED_SUB_CHART_CARTESIAN, Y as AXP_DASHBOARD_SHARED_SUB_CHART_KPI, Z as AXP_DASHBOARD_SHARED_SUB_CHART_RADIAL, _ as AXP_DASHBOARD_SHARED_SUB_CHART_SPECIALIZED, $ as AXP_DASHBOARD_SHARED_SUB_UTILITY_NOTES, a0 as AXP_DASHBOARD_SHARED_SUB_UTILITY_SHORTCUT, a1 as AXP_DASHBOARD_SHARED_SUB_UTILITY_TIME, a2 as AXP_DASHBOARD_SHARED_SUB_UTILITY_WEATHER, a3 as AXP_KPI_DETAILS_DIMENSIONS, a4 as AXP_KPI_GRID_HEIGHT_OPTION, a5 as AXP_KPI_GRID_WIDTH_OPTION, a6 as AXP_KPI_PROGRESS_SEGMENTED_DIMENSIONS, a7 as AXP_KPI_STANDARD_DIMENSIONS, a8 as AXP_KPI_STAT_CARD_DIMENSIONS, a9 as AXP_UTILITY_CLOCK_CALENDAR_DIMENSIONS, aa as AXP_UTILITY_COMPACT_SQUARE_DIMENSIONS, ab as AXP_UTILITY_SHORTCUT_DIMENSIONS, ac as AXP_UTILITY_WEATHER_DIMENSIONS, ad as AXP_WIDGETS_CHART_CATEGORY, ae as AXP_WIDGETS_UTILITY_CATEGORY, a4 as DASHBOARD_WIDGET_GRID_HEIGHT_OPTION, a5 as DASHBOARD_WIDGET_GRID_WIDTH_OPTION, af as STICKY_NOTE_COLOR_PRESETS, ag as STICKY_NOTE_DEFAULT_BACKGROUND, ah as areChartCardTabsConfigured, h as asChartTabWidgetNode, ai as buildDashboardChartCardWidget, aj as buildDashboardChartWidget, ak as buildDashboardChartWidgetWithQuery, al as buildDashboardClockCalendar, am as buildDashboardKpiStatCard, an as buildDashboardKpiTile, ao as buildDashboardShortcut, ap as buildDashboardStickyNote, aq as buildDashboardWeatherWidget, ar as buildDashboardWidgetsContext, as as chartResultTypeForWidget, a as chartTypeUsesAxisLabels, c as chartTypeUsesColorRules, at as defineDashboardWidgetDimensions, au as enrichDashboardLayoutNode, av as formatDashboardGridSizeToken, av as formatKpiGridSizeToken, aw as formatKpiValue, ax as formatUtcOffsetLabel, ay as getIanaTimeZoneOffsetMinutes, az as hasKpiQueryConfigured, i as isChartTabConfigured, aA as isStickyNoteEmpty, aB as layoutFromDimensions, aC as loadKpiQueryResult, aD as normalizeKpiPercent, o as optionsAfterChartTypeSwitch, aE as readChartTabQuery, j as readChartTabTitle, aF as readDashboardEntityContext, aG as readDashboardGridSizeToken, aG as readKpiGridSizeToken, r as readStashedChartAppearance, aH as resolveDashboardLayoutNode, aI as resolveDashboardMetaDimensionsForBreakpoint, aJ as resolveDashboardMetaLayoutNode, aK as resolveKpiIconToneTheme, aL as resolveKpiIconToneValueColor, aM as resolveKpiProgressBarTone, aN as resolveKpiSegmentPaletteColor, aO as resolveKpiText, aP as resolveStickyNoteBackgroundColor, aQ as resolveStickyNoteLayoutVariant, aR as resolveStickyNoteMutedTextColor, aS as resolveStickyNoteText, aT as resolveStickyNoteTextColor, aU as resolveTimeZoneCode, aV as shouldShowStickyNoteEmptyHint, aW as stripHtmlToPlainText, aX as withDashboardGridSizeOptions } from './acorex-platform-module-dashboard-management-client-acorex-platform-module-dashboard-management-client-CdZ2jDXz.mjs';
2
2
  //# sourceMappingURL=acorex-platform-module-dashboard-management-client.mjs.map
@@ -0,0 +1,115 @@
1
+ {
2
+ "module": {
3
+ "title": "Dashboard Management",
4
+ "description": "Manage dashboards and widgets",
5
+ "menus": {
6
+ "root": {
7
+ "title": "Dashboard Management",
8
+ "description": "Manage dashboards"
9
+ }
10
+ }
11
+ },
12
+ "dashboards": {
13
+ "entities": {
14
+ "dashboard": {
15
+ "pages": {
16
+ "layout": {
17
+ "title": "Layout",
18
+ "description": "Arrange widgets on the grid"
19
+ }
20
+ },
21
+ "groups": {
22
+ "access": {
23
+ "title": "Access & Visibility"
24
+ }
25
+ },
26
+ "fields": {
27
+ "description": {
28
+ "title": "Description"
29
+ },
30
+ "scope": {
31
+ "title": "Scope",
32
+ "options": {
33
+ "tenant": "Tenant",
34
+ "personal": "Personal",
35
+ "entity": "Entity"
36
+ }
37
+ },
38
+ "locked": {
39
+ "title": "Locked"
40
+ }
41
+ },
42
+ "views": {
43
+ "tenant": "Tenant dashboards",
44
+ "personal": "Personal dashboards"
45
+ }
46
+ }
47
+ },
48
+ "actions": {
49
+ "open-entity-dashboard": "Open dashboard"
50
+ },
51
+ "widget": {
52
+ "entity-dashboard": {
53
+ "title": "Entity dashboard",
54
+ "description": "Dashboard scoped to the current entity record"
55
+ }
56
+ },
57
+ "terms": {
58
+ "dashboard": "Dashboard",
59
+ "dashboards": "Dashboards"
60
+ },
61
+ "menus": {
62
+ "dashboards": {
63
+ "title": "Dashboards",
64
+ "description": "Manage dashboards"
65
+ }
66
+ },
67
+ "permissions": {
68
+ "manage": {
69
+ "title": "Dashboard Management",
70
+ "description": "Manage all dashboards"
71
+ },
72
+ "dashboards": {
73
+ "title": "Dashboards",
74
+ "actions": {
75
+ "manage": {
76
+ "title": "Dashboard Management",
77
+ "description": "Manage dashboards"
78
+ },
79
+ "view": {
80
+ "title": "@general:actions.view.title",
81
+ "description": "View dashboards"
82
+ },
83
+ "create": {
84
+ "title": "@general:actions.create.title",
85
+ "description": "Create new dashboards"
86
+ },
87
+ "edit": {
88
+ "title": "@general:actions.edit.title",
89
+ "description": "Edit existing dashboards"
90
+ },
91
+ "delete": {
92
+ "title": "@general:actions.delete.title",
93
+ "description": "Delete dashboards"
94
+ }
95
+ }
96
+ }
97
+ }
98
+ },
99
+ "shared-widgets": {
100
+ "widget-picker-category": {
101
+ "chart": "Charts",
102
+ "utility": "Utilities"
103
+ },
104
+ "widget-picker-sub-categories": {
105
+ "chart-kpi": "Key Metrics",
106
+ "chart-cartesian": "Bar & line",
107
+ "chart-radial": "Donut & gauge",
108
+ "chart-specialized": "Heatmap & funnel",
109
+ "utility-shortcut": "Shortcuts",
110
+ "utility-time": "Time & calendar",
111
+ "utility-weather": "Weather",
112
+ "utility-notes": "Notes"
113
+ }
114
+ }
115
+ }
@@ -0,0 +1,387 @@
1
+ {
2
+ "widget": "Widget",
3
+ "root-menu": "Dashboard Management",
4
+ "dashboard": "Dashboard",
5
+ "dashboards": "Dashboards",
6
+ "dashboardPlural": "Dashboards",
7
+ "delete-current-dashboard": "Delete Current Dashboard",
8
+ "empty-state": {
9
+ "title": "No Dashboards Found",
10
+ "description": "No Dashboards Found, Create one to get started!"
11
+ },
12
+ "no-widgets": {
13
+ "title": "No Widgets Found",
14
+ "description": "No widgets have been added to this dashboard yet. Add your first widget to get started!"
15
+ },
16
+
17
+ "add-first-dashboard": "Create one to get started!",
18
+ "add-first-widget": "Create one to get started!",
19
+
20
+ "add-dashboard": "Add Dashboard",
21
+ "new-dashboard": "New Dashboard",
22
+ "add-widget": "Add Widget",
23
+ "clone-title-suffix": " (Copy)",
24
+ "configuration": "Configuration",
25
+ "roles": "Roles",
26
+ "select-roles": "Select Roles",
27
+ "disable": "Disable",
28
+ "lock": "Lock",
29
+ "unlock": "Unlock",
30
+ "dashboard-info": "Dashboard Info",
31
+ "widget-configuration": "Widget Configuration",
32
+ "weather": {
33
+ "error": {
34
+ "title": "Weather unavailable",
35
+ "network": "Network connection error",
36
+ "api": "Weather service unavailable",
37
+ "general": "Unable to load weather data"
38
+ },
39
+ "retry": "Retry",
40
+ "loading": "Loading weather data...",
41
+ "loading-forecast": "Loading forecast...",
42
+ "no-data": {
43
+ "title": "No Weather Data",
44
+ "description": "Unable to load weather information. Please check your connection and try again."
45
+ },
46
+ "load-data": "Load Data",
47
+ "refresh": "Refresh",
48
+ "last-updated": "Last updated",
49
+ "forecast": "Forecast",
50
+ "hourly-forecast": "Hourly forecast",
51
+ "feels-like": "Feels like",
52
+ "uv-index": "UV index",
53
+ "updated-ago": "Updated",
54
+ "humidity": "Humidity",
55
+ "wind": "Wind",
56
+ "conditions": {
57
+ "sunny": "Sunny",
58
+ "clear-night": "Clear",
59
+ "partly-cloudy-night": "Partly cloudy",
60
+ "showers": "Showers",
61
+ "snow": "Snow",
62
+ "thunderstorm": "Thunderstorm",
63
+ "partly-cloudy": "Partly Cloudy",
64
+ "cloudy": "Cloudy",
65
+ "rain": "Rain",
66
+ "overcast": "Overcast",
67
+ "mist": "Mist",
68
+ "patchy-rain": "Patchy Rain",
69
+ "patchy-snow": "Patchy Snow",
70
+ "patchy-sleet": "Patchy Sleet",
71
+ "patchy-freezing-drizzle": "Patchy Freezing Drizzle",
72
+ "thundery-outbreaks": "Thundery Outbreaks",
73
+ "blowing-snow": "Blowing Snow",
74
+ "blizzard": "Blizzard",
75
+ "fog": "Fog",
76
+ "freezing-fog": "Freezing Fog",
77
+ "patchy-light-drizzle": "Patchy Light Drizzle",
78
+ "light-drizzle": "Light Drizzle",
79
+ "freezing-drizzle": "Freezing Drizzle",
80
+ "heavy-freezing-drizzle": "Heavy Freezing Drizzle",
81
+ "patchy-light-rain": "Patchy Light Rain",
82
+ "light-rain": "Light Rain",
83
+ "moderate-rain": "Moderate Rain",
84
+ "heavy-rain": "Heavy Rain",
85
+ "light-freezing-rain": "Light Freezing Rain",
86
+ "moderate-freezing-rain": "Moderate Freezing Rain",
87
+ "heavy-freezing-rain": "Heavy Freezing Rain",
88
+ "light-sleet": "Light Sleet",
89
+ "moderate-sleet": "Moderate Sleet",
90
+ "light-snow": "Light Snow",
91
+ "moderate-snow": "Moderate Snow",
92
+ "heavy-snow": "Heavy Snow",
93
+ "ice-pellets": "Ice Pellets",
94
+ "light-rain-shower": "Light Rain Shower",
95
+ "moderate-rain-shower": "Moderate Rain Shower",
96
+ "heavy-rain-shower": "Heavy Rain Shower",
97
+ "torrential-rain-shower": "Torrential Rain Shower",
98
+ "light-sleet-shower": "Light Sleet Shower",
99
+ "moderate-sleet-shower": "Moderate Sleet Shower",
100
+ "light-snow-shower": "Light Snow Shower",
101
+ "moderate-snow-shower": "Moderate Snow Shower",
102
+ "light-ice-pellets": "Light Ice Pellets",
103
+ "moderate-ice-pellets": "Moderate Ice Pellets",
104
+ "heavy-ice-pellets": "Heavy Ice Pellets",
105
+ "light-ice-pellets-shower": "Light Ice Pellets Shower",
106
+ "moderate-ice-pellets-shower": "Moderate Ice Pellets Shower",
107
+ "heavy-ice-pellets-shower": "Heavy Ice Pellets Shower",
108
+ "patchy-light-rain-with-thunder": "Patchy Light Rain with Thunder",
109
+ "moderate-rain-with-thunder": "Moderate Rain with Thunder",
110
+ "heavy-rain-with-thunder": "Heavy Rain with Thunder",
111
+ "patchy-light-snow-with-thunder": "Patchy Light Snow with Thunder",
112
+ "moderate-snow-with-thunder": "Moderate Snow with Thunder",
113
+ "heavy-snow-with-thunder": "Heavy Snow with Thunder",
114
+ "unknown": "Unknown"
115
+ },
116
+ "units": {
117
+ "celsius": "°C",
118
+ "fahrenheit": "°F",
119
+ "kmh": "km/h",
120
+ "mph": "mph"
121
+ },
122
+ "days": {
123
+ "today": "Today",
124
+ "tomorrow": "Tomorrow",
125
+ "monday": "Monday",
126
+ "tuesday": "Tuesday",
127
+ "wednesday": "Wednesday",
128
+ "thursday": "Thursday",
129
+ "friday": "Friday",
130
+ "saturday": "Saturday",
131
+ "sunday": "Sunday"
132
+ }
133
+ },
134
+ "task-board": {
135
+ "title": "Tasks",
136
+ "pending": "pending",
137
+ "completed": "completed",
138
+ "noTasks": "No tasks available",
139
+ "user": "User",
140
+ "addTask": "Add a new task to get started",
141
+ "no-tasks-found": {
142
+ "title": "No Tasks Available",
143
+ "description": "No tasks match your current filter. Try adjusting your filter settings to see more tasks."
144
+ },
145
+ "task-board-title": "Task Board Title",
146
+ "max-items": "Max Items",
147
+ "task-type": "Task Type",
148
+ "sort-by": "Sort By",
149
+ "asigned-to": "Asigned To"
150
+ },
151
+ "widgets": {
152
+ "shared": {
153
+ "chart-title-placeholder": "Enter chart title",
154
+ "animation-easing-options": {
155
+ "linear": "Linear",
156
+ "ease": "Ease",
157
+ "ease-in": "Ease In",
158
+ "ease-out": "Ease Out",
159
+ "ease-in-out": "Ease In Out",
160
+ "cubic": "Cubic",
161
+ "cubic-in": "Cubic In",
162
+ "cubic-out": "Cubic Out",
163
+ "cubic-in-out": "Cubic In Out"
164
+ }
165
+ },
166
+ "clock-calendar": {
167
+ "widget-title": "Clock & calendar",
168
+ "widget-description": "Show the current time and date with digital and analog layouts.",
169
+ "title-placeholder": "Enter chart title",
170
+ "layout-both": "Digital & analog",
171
+ "layout-digital": "Digital only",
172
+ "layout-analog": "Analog only",
173
+ "chart-title": "Chart Title",
174
+ "display-layout": "Display Layout",
175
+ "show-date": "Show Date",
176
+ "show-day-of-week": "Show Day of Week",
177
+ "use-24-hour": "Use 24 Hour Format",
178
+ "show-seconds": "Show Seconds",
179
+ "date-format": "Date Format",
180
+ "timezone": "Timezone"
181
+ },
182
+ "bar-chart": {
183
+ "widget-title": "Bar chart",
184
+ "widget-description": "Compare values across categories with vertical bars.",
185
+ "title-placeholder": "Enter chart title",
186
+ "chart-title": "Chart Title",
187
+ "width": "Width",
188
+ "height": "Height",
189
+ "show-x-axis": "Show X Axis",
190
+ "x-axis-label": "X Axis Label",
191
+ "show-y-axis": "Show Y Axis",
192
+ "y-axis-label": "Y Axis Label",
193
+ "bar-width": "Bar Width",
194
+ "corner-radius": "Corner Radius",
195
+ "show-grid": "Show Grid Lines",
196
+ "show-data-labels": "Show Data Labels",
197
+ "show-tooltip": "Show Tooltip",
198
+ "animation-easing": "Animation Easing",
199
+ "animation-duration": "Animation Duration"
200
+ },
201
+ "donut-chart": {
202
+ "widget-title": "Donut chart",
203
+ "widget-description": "Show proportions as segments of a ring.",
204
+ "title-placeholder": "Enter chart title",
205
+ "chart-title": "Chart Title",
206
+ "width": "Width",
207
+ "height": "Height",
208
+ "show-data-labels": "Show Data Labels",
209
+ "donut-width": "Donut Width",
210
+ "corner-radius": "Corner Radius",
211
+ "show-tooltip": "Show Tooltip",
212
+ "animation-easing": "Animation Easing",
213
+ "animation-duration": "Animation Duration"
214
+ },
215
+ "gauge-chart": {
216
+ "widget-title": "Gauge chart",
217
+ "widget-description": "Display a single metric on a radial gauge.",
218
+ "title-placeholder": "Enter chart title",
219
+ "chart-title": "Chart Title",
220
+ "width": "Width",
221
+ "height": "Height",
222
+ "min-value": "Minimum Value",
223
+ "max-value": "Maximum Value",
224
+ "show-tooltip": "Show Tooltip",
225
+ "gauge-width": "Gauge Width",
226
+ "corner-radius": "Corner Radius",
227
+ "label": "Label Text",
228
+ "animation-easing": "Animation Easing",
229
+ "animation-duration": "Animation Duration"
230
+ },
231
+ "line-chart": {
232
+ "widget-title": "Line chart",
233
+ "widget-description": "Plot trends and series over a continuous axis.",
234
+ "title-placeholder": "Enter chart title",
235
+ "chart-title": "Chart Title",
236
+ "width": "Width",
237
+ "height": "Height",
238
+ "show-x-axis": "Show X Axis",
239
+ "x-axis-label": "X Axis Label",
240
+ "show-y-axis": "Show Y Axis",
241
+ "y-axis-label": "Y Axis Label",
242
+ "y-axis-starts-at-zero": "Y Axis Starts At Zero",
243
+ "show-grid": "Show Grid Lines",
244
+ "show-vertical-grid": "Show Vertical Grid",
245
+ "line-width": "Line Width",
246
+ "smooth-line": "Smooth Line",
247
+ "show-points": "Show Points",
248
+ "point-radius": "Point Size",
249
+ "fill-area": "Fill Area",
250
+ "fill-opacity": "Fill Opacity",
251
+ "show-tooltip": "Show Tooltip",
252
+ "show-crosshair": "Show Crosshair",
253
+ "animation-easing": "Animation Easing",
254
+ "animation-duration": "Animation Duration"
255
+ },
256
+ "sticky-note": {
257
+ "widget-title": "Sticky note",
258
+ "widget-description": "A simple note with custom text and background color.",
259
+ "note-text": "Note Text",
260
+ "background-color": "Background Color",
261
+ "placeholder": "Write a note...",
262
+ "empty-hint": "Double-click to write",
263
+ "color-palette": "Note Color"
264
+ },
265
+ "funnel-chart": {
266
+ "widget-title": "Funnel chart",
267
+ "widget-description": "Show a funnel chart with customizable colors and labels.",
268
+ "title-placeholder": "Enter chart title",
269
+ "chart-title": "Chart Title"
270
+ },
271
+ "heatmap-chart": {
272
+ "widget-title": "Heatmap chart",
273
+ "widget-description": "Show a heatmap chart with customizable colors and labels.",
274
+ "title-placeholder": "Enter chart title",
275
+ "chart-title": "Chart Title"
276
+ },
277
+ "weather": {
278
+ "widget-title": "Weather",
279
+ "widget-description": "Responsive weather tile that adapts from compact to full forecast layout.",
280
+ "city": "City",
281
+ "show-humidity": "Show Humidity",
282
+ "show-wind": "Show Wind Speed",
283
+ "show-forecast": "Show Forecast",
284
+ "forecast-days": "Forecast Days",
285
+ "forecast-hours": "Forecast Hours",
286
+ "temperature-unit": "Temperature Unit",
287
+ "wind-speed-unit": "Wind Speed Unit",
288
+ "auto-refresh": "Auto Refresh",
289
+ "refresh-interval": "Refresh Interval (minutes)",
290
+ "refresh-weather": "Refresh weather"
291
+ },
292
+ "analog-clock": {
293
+ "widget-title": "Analog clock",
294
+ "widget-description": "Analog clock with primary and additional timezones.",
295
+ "timezone": "Timezone",
296
+ "other-timezones": "Other Timezones"
297
+ },
298
+ "shortcut": {
299
+ "widget-title": "Shortcut",
300
+ "widget-description": "Quick access to key pages and actions from your dashboard.",
301
+ "color": "Color",
302
+ "add-shortcut": "Add Shortcut",
303
+ "click-to-add": "Click to add",
304
+ "get-started": "Get Started",
305
+ "ai-assist-description": "Start a new chat with this AI assist.",
306
+ "ai-agent-description": "Start a new chat with this AI agent."
307
+ },
308
+ "kpi-progress": {
309
+ "widget-title": "KPI + progress",
310
+ "widget-description": "Highlight a key metric with progress toward a target.",
311
+ "title": "Title",
312
+ "value": "Value",
313
+ "subtitle": "Subtitle",
314
+ "target-value": "Target value",
315
+ "target-label": "Target",
316
+ "progress-percent": "Progress percent"
317
+ },
318
+ "kpi-details": {
319
+ "widget-title": "KPI + details",
320
+ "widget-description": "Show a key metric with title, value, and subtitle.",
321
+ "title": "Title",
322
+ "value": "Value",
323
+ "subtitle": "Subtitle"
324
+ },
325
+ "kpi-stat-card": {
326
+ "widget-title": "KPI card",
327
+ "widget-description": "A compact card with title, icon, value, and optional trend.",
328
+ "title": "Title",
329
+ "title-badge-text": "Title badge",
330
+ "title-badge-tone": "Title badge style",
331
+ "value": "Value",
332
+ "value-prefix": "Value prefix",
333
+ "value-suffix": "Value suffix",
334
+ "trend-value": "Trend value",
335
+ "trend-label": "Trend label",
336
+ "trend-status": "Trend status",
337
+ "icon": "Icon (Font Awesome class)",
338
+ "icon-tone": "Icon style"
339
+ },
340
+ "kpi-segmented": {
341
+ "widget-title": "KPI + segmented breakdown",
342
+ "widget-description": "Break down a key metric by segments or categories.",
343
+ "title": "Title"
344
+ },
345
+ "chart-card": {
346
+ "widget-title": "Chart Card",
347
+ "widget-description": "Group related charts of different types in one card with tabs.",
348
+ "card-title": "Title",
349
+ "card-title-placeholder": "Enter Title",
350
+ "tabs": "Tabs",
351
+ "empty-title": "No Charts",
352
+ "empty-description": "Add chart tabs in the widget configuration.",
353
+ "untitled-tab": "Untitled Chart",
354
+ "incomplete-title": "Query Required",
355
+ "incomplete-description": "Choose a query for this tab in widget configuration.",
356
+ "incomplete-tabs": "Each chart tab needs a query before you can save."
357
+ },
358
+ "chart-configurator": {
359
+ "widget-title": "Chart Configurator",
360
+ "widget-description": "Choose a chart type and set its query, tab label, and color rules.",
361
+ "label": "Type",
362
+ "tab-label": "Tab Label",
363
+ "tab-label-placeholder": "Enter Tab Label",
364
+ "query": "Query",
365
+ "query-required": "Query is required.",
366
+ "color-rules": "Color Rules",
367
+ "color-rule-field-id": "Id",
368
+ "color-rule-field-label": "Label",
369
+ "color-rule-field-name": "Name",
370
+ "color-rule-field-value": "Value"
371
+ },
372
+ "task-board-widget": {
373
+ "widget-title": "Task board",
374
+ "widget-description": "View and manage tasks on your dashboard.",
375
+ "title-placeholder": "Enter task board title"
376
+ },
377
+ "task-board-shortcut": {
378
+ "widget-title": "Task board shortcut",
379
+ "widget-description": "Open the task board with preset filters from a compact summary."
380
+ },
381
+ "my-notification": {
382
+ "widget-title": "My notifications",
383
+ "widget-description": "Shows recent notifications in a compact list on your dashboard.",
384
+ "title-placeholder": "Enter widget title"
385
+ }
386
+ }
387
+ }