@acorex-platform/module-dashboard-management-client 0.0.46 → 0.0.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{acorex-platform-module-dashboard-management-client-acorex-platform-module-dashboard-management-client-Ey27MqFo.mjs → acorex-platform-module-dashboard-management-client-acorex-platform-module-dashboard-management-client-61Q_QY8l.mjs} +18 -18
- package/fesm2022/{acorex-platform-module-dashboard-management-client-acorex-platform-module-dashboard-management-client-Ey27MqFo.mjs.map → acorex-platform-module-dashboard-management-client-acorex-platform-module-dashboard-management-client-61Q_QY8l.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-dashboard-management-client-bar-chart-widget.component-5c4X-lEC.mjs → acorex-platform-module-dashboard-management-client-bar-chart-widget.component-kw130ESN.mjs} +5 -5
- package/fesm2022/{acorex-platform-module-dashboard-management-client-bar-chart-widget.component-5c4X-lEC.mjs.map → acorex-platform-module-dashboard-management-client-bar-chart-widget.component-kw130ESN.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-dashboard-management-client-chart-card-widget.component-BYdlIBv9.mjs → acorex-platform-module-dashboard-management-client-chart-card-widget.component-B2ztaswG.mjs} +4 -4
- package/fesm2022/{acorex-platform-module-dashboard-management-client-chart-card-widget.component-BYdlIBv9.mjs.map → acorex-platform-module-dashboard-management-client-chart-card-widget.component-B2ztaswG.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-dashboard-management-client-chart-configurator-widget-edit.component-FhtkU52L.mjs → acorex-platform-module-dashboard-management-client-chart-configurator-widget-edit.component-BgR51eZ1.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-dashboard-management-client-chart-configurator-widget-edit.component-FhtkU52L.mjs.map → acorex-platform-module-dashboard-management-client-chart-configurator-widget-edit.component-BgR51eZ1.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-dashboard-management-client-chart-widget-data.util-DgCBHS1p.mjs → acorex-platform-module-dashboard-management-client-chart-widget-data.util-BLtv9sOm.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-dashboard-management-client-chart-widget-data.util-DgCBHS1p.mjs.map → acorex-platform-module-dashboard-management-client-chart-widget-data.util-BLtv9sOm.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-dashboard-management-client-donut-chart-widget.component-DRiIRbhX.mjs → acorex-platform-module-dashboard-management-client-donut-chart-widget.component-DB_7rLmK.mjs} +5 -5
- package/fesm2022/{acorex-platform-module-dashboard-management-client-donut-chart-widget.component-DRiIRbhX.mjs.map → acorex-platform-module-dashboard-management-client-donut-chart-widget.component-DB_7rLmK.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-dashboard-management-client-funnel-chart-widget.component-BPY1NchM.mjs → acorex-platform-module-dashboard-management-client-funnel-chart-widget.component-CltmXb8c.mjs} +5 -5
- package/fesm2022/{acorex-platform-module-dashboard-management-client-funnel-chart-widget.component-BPY1NchM.mjs.map → acorex-platform-module-dashboard-management-client-funnel-chart-widget.component-CltmXb8c.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-dashboard-management-client-gauge-chart-widget.component-Cy6fgife.mjs → acorex-platform-module-dashboard-management-client-gauge-chart-widget.component-Ci1cRFmt.mjs} +5 -5
- package/fesm2022/{acorex-platform-module-dashboard-management-client-gauge-chart-widget.component-Cy6fgife.mjs.map → acorex-platform-module-dashboard-management-client-gauge-chart-widget.component-Ci1cRFmt.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-dashboard-management-client-heatmap-chart-widget.component-CTelqGbm.mjs → acorex-platform-module-dashboard-management-client-heatmap-chart-widget.component-CzJTc6rm.mjs} +5 -5
- package/fesm2022/{acorex-platform-module-dashboard-management-client-heatmap-chart-widget.component-CTelqGbm.mjs.map → acorex-platform-module-dashboard-management-client-heatmap-chart-widget.component-CzJTc6rm.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-dashboard-management-client-index-P-PzUrbN.mjs → acorex-platform-module-dashboard-management-client-index-z10pHL3b.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-dashboard-management-client-index-P-PzUrbN.mjs.map → acorex-platform-module-dashboard-management-client-index-z10pHL3b.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-dashboard-management-client-line-chart-widget.component-B18VZb9t.mjs → acorex-platform-module-dashboard-management-client-line-chart-widget.component-Fu_lheQe.mjs} +5 -5
- package/fesm2022/{acorex-platform-module-dashboard-management-client-line-chart-widget.component-B18VZb9t.mjs.map → acorex-platform-module-dashboard-management-client-line-chart-widget.component-Fu_lheQe.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-dashboard-management-client.mjs +1 -1
- package/package.json +1 -1
|
@@ -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, computed, effect, 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-
|
|
8
|
-
import { r as resolveChartAxisLabels, l as loadBarChartItems } from './acorex-platform-module-dashboard-management-client-chart-widget-data.util-
|
|
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, l as loadBarChartItems } from './acorex-platform-module-dashboard-management-client-chart-widget-data.util-BLtv9sOm.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
|
/**
|
|
@@ -140,12 +140,12 @@ class AXPBarChartWidgetViewComponent extends AXPDashboardWidgetComponent {
|
|
|
140
140
|
// reserved for future drill-down
|
|
141
141
|
}
|
|
142
142
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPBarChartWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
143
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPBarChartWidgetViewComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"axp-chart-widget-host\">\n <axp-chart-query-tabs\n [tabs]=\"queryTabs()\"\n [activeIndex]=\"activeTabIndex()\"\n (activeIndexChange)=\"selectQueryTab($event)\"\n />\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-bar-chart\n #chart\n [data]=\"data()\"\n [options]=\"barChartOptions()\"\n (barClick)=\"handleBarClick($event)\"\n ></ax-bar-chart>\n </div>\n <!-- ----- Series indicator (legend) ----- -->\n @if (data().length > 0) {\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", styles: ["@layer properties;:host{display:block;width:100%;height:100%;min-height:0px;overflow:hidden}:host:has(.axp-chart-widget-host__chart--heatmap){block-size:auto;overflow:visible;min-block-size:0}.axp-chart-widget-host{display:flex;height:100%;min-height:0px;width:100%;flex-direction:column;gap:var(--spacing, .25rem)}.axp-chart-widget-host:has(.axp-chart-widget-host__chart--heatmap){block-size:auto;min-block-size:0;overflow:visible}.axp-chart-widget-host__body{display:flex;min-height:0px;flex:1;flex-direction:column;gap:var(--spacing, .25rem);padding-bottom:calc(var(--spacing, .25rem) * 2)}.axp-chart-widget-host__body:not(.axp-chart-widget-host__body--with-legend)>.axp-chart-widget-host__chart--radial{flex:1 1 auto}.axp-chart-widget-host__body--with-legend{min-height:0px;flex:1;gap:var(--spacing, .25rem);display:grid;grid-template-rows:minmax(0,1fr) auto}.axp-chart-widget-host__chart{position:relative;min-height:calc(var(--spacing, .25rem) * 64);width:100%;overflow:hidden;grid-row:1}.axp-chart-widget-host__chart--radial{position:relative;margin-inline:auto;align-self:center;justify-self:center;overflow:hidden;grid-row:1;flex:0 0 auto;height:auto;width:min(100%,18rem);max-width:100%;min-height:12rem;min-width:8rem;aspect-ratio:1 / 1}.axp-chart-widget-host__chart--funnel{position:relative;width:100%;overflow:hidden;block-size:20rem;flex:0 0 auto;max-block-size:24rem;min-block-size:16rem}.axp-chart-widget-host__chart--funnel ax-funnel-chart,.axp-chart-widget-host__chart--funnel .ax-funnel-chart-container{display:block;block-size:100%;inline-size:100%;min-block-size:0}.axp-chart-widget-host__body:has(.axp-chart-widget-host__chart--funnel){flex:none}.axp-chart-widget-host__chart--heatmap{position:relative;width:100%;max-width:100%;inline-size:100%;block-size:auto;flex:0 0 auto;overflow:visible;min-height:0!important;min-block-size:0!important;max-block-size:none}.axp-chart-widget-host__chart--heatmap ax-heatmap-chart,.axp-chart-widget-host__chart--heatmap .ax-heatmap-chart-container{display:block;inline-size:100%;max-inline-size:100%;block-size:auto;min-block-size:0;overflow:visible}.axp-chart-widget-host__body:has(.axp-chart-widget-host__chart--heatmap){flex:none;block-size:auto;min-block-size:0;overflow:visible}.axp-chart-widget-host__legend{width:100%;flex:none;grid-row:2;min-height:0;min-width:0;max-width:100%;display:flex;justify-content:flex-start;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:rgb(var(--ax-sys-color-border-lighter-surface)) transparent}:host ::ng-deep ax-chart-legend{display:block!important;height:auto!important;max-height:none;width:max-content;min-width:100%;max-width:none}:host ::ng-deep .ax-chart-legend{--ax-legend-bg: var(--ax-sys-color-lighter-surface);--ax-legend-text: var(--ax-sys-color-on-lighter-surface);--ax-legend-border: var(--ax-sys-color-border-lighter-surface);--ax-legend-radius: .625rem;--ax-legend-padding: .375rem .5rem;--ax-legend-gap: .375rem;--ax-legend-item-height: auto;height:auto;max-height:none;width:100%;overflow:visible;padding:var(--ax-legend-padding);gap:var(--ax-legend-gap);color:rgb(var(--ax-legend-text))}:host ::ng-deep .ax-chart-legend.ax-legend-horizontal{flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:flex-start;width:max-content;min-width:100%;max-width:none;overflow:visible;border:none;background:transparent;background-color:transparent;padding:.125rem .75rem .7rem;gap:.5rem}:host ::ng-deep .ax-legend-item{align-items:center;flex-shrink:0;gap:.375rem;height:auto;min-height:1.5rem;padding-block:.2rem;padding-inline:.5rem;border-radius:9999px;border:1px solid rgb(var(--ax-sys-color-border-lightest-surface));background-color:rgb(var(--ax-sys-color-lightest-surface));white-space:nowrap;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease,transform .15s ease}:host ::ng-deep .ax-legend-item:hover{border-color:rgb(var(--ax-sys-color-primary-500));background-color:rgb(var(--ax-sys-color-primary-500));box-shadow:0 1px 2px #0f172a0f}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-item:hover{border-color:color-mix(in srgb,rgb(var(--ax-sys-color-primary-500)) 35%,rgb(var(--ax-sys-color-border-lightest-surface)))}}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-item:hover{background-color:color-mix(in srgb,rgb(var(--ax-sys-color-primary-500)) 6%,rgb(var(--ax-sys-color-lightest-surface)))}}:host ::ng-deep .ax-legend-item:active{transform:scale(.98)}:host ::ng-deep .ax-legend-item.ax-legend-item-hidden{opacity:.62}:host ::ng-deep .ax-legend-color{width:.625rem;height:.625rem;flex-shrink:0;border-radius:9999px;box-shadow:0 0 0 1px rgb(var(--ax-legend-text))}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-color{box-shadow:0 0 0 1px color-mix(in srgb,rgb(var(--ax-legend-text)) 18%,transparent)}}:host ::ng-deep .ax-legend-name{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);max-width:9rem;overflow:hidden;text-overflow:ellipsis}:host ::ng-deep .ax-legend-value{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);margin-inline-start:0;opacity:1;color:rgb(var(--ax-sys-color-on-lightest-surface))}:host ::ng-deep .ax-legend-percentage{margin-inline-start:0;border-radius:9999px;padding-inline:.4rem;padding-block:.125rem;font-size:.6875rem;line-height:1;font-weight:600;font-variant-numeric:tabular-nums;background-color:rgb(var(--ax-legend-text))}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-percentage{background-color:color-mix(in srgb,rgb(var(--ax-legend-text)) 12%,transparent)}}:host ::ng-deep ax-donut-chart,:host ::ng-deep ax-gauge-chart,:host ::ng-deep ax-bar-chart,:host ::ng-deep ax-line-chart,:host ::ng-deep ax-funnel-chart{display:block!important;width:100%!important;height:100%!important;min-height:0!important;max-height:100%!important}:host ::ng-deep .axp-chart-widget-host__chart--heatmap ax-heatmap-chart{display:block!important;width:100%!important;max-width:100%!important;height:auto!important;min-height:0!important;max-height:none!important;overflow:visible!important}:host ::ng-deep ax-donut-chart .ax-donut-chart,:host ::ng-deep ax-gauge-chart .ax-gauge-chart,:host ::ng-deep ax-bar-chart .ax-bar-chart,:host ::ng-deep ax-line-chart .ax-line-chart,:host ::ng-deep ax-funnel-chart .ax-funnel-chart-container{min-height:0!important;height:100%!important;width:100%!important;padding:.25rem!important}:host ::ng-deep .axp-chart-widget-host__chart--heatmap ax-heatmap-chart .ax-heatmap-chart-container,:host ::ng-deep .axp-chart-widget-host__chart--heatmap .ax-heatmap-chart{min-height:0!important;height:auto!important;width:100%!important;max-width:100%!important;padding:.25rem!important;overflow:visible!important}:host ::ng-deep .axp-chart-widget-host__chart--heatmap svg{display:block;width:100%!important;max-width:100%!important;height:auto!important;overflow:visible!important}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-ordinal{syntax: \"*\"; inherits: false;}@property --tw-slashed-zero{syntax: \"*\"; inherits: false;}@property --tw-numeric-figure{syntax: \"*\"; inherits: false;}@property --tw-numeric-spacing{syntax: \"*\"; inherits: false;}@property --tw-numeric-fraction{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial;--tw-ordinal: initial;--tw-slashed-zero: initial;--tw-numeric-figure: initial;--tw-numeric-spacing: initial;--tw-numeric-fraction: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: AXBarChartComponent, selector: "ax-bar-chart", inputs: ["data", "options"], outputs: ["barClick"] }, { kind: "component", type: AXChartLegendComponent, selector: "ax-chart-legend", inputs: ["chart", "options"], outputs: ["itemClick", "itemMouseEnter", "itemMouseLeave"] }, { kind: "component", type: AXPChartQueryTabsComponent, selector: "axp-chart-query-tabs", inputs: ["tabs", "activeIndex"], outputs: ["activeIndexChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
143
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPBarChartWidgetViewComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"axp-chart-widget-host\">\n <axp-chart-query-tabs\n [tabs]=\"queryTabs()\"\n [activeIndex]=\"activeTabIndex()\"\n (activeIndexChange)=\"selectQueryTab($event)\"\n />\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-bar-chart\n #chart\n [data]=\"data()\"\n [options]=\"barChartOptions()\"\n (barClick)=\"handleBarClick($event)\"\n ></ax-bar-chart>\n </div>\n <!-- ----- Series indicator (legend) ----- -->\n @if (data().length > 0) {\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", styles: ["@layer properties;:host{display:block;width:100%;height:100%;min-height:0px;overflow:hidden}:host:has(.axp-chart-widget-host__chart--heatmap){block-size:auto;overflow:visible;min-block-size:0}.axp-chart-widget-host{display:flex;height:100%;min-height:0px;width:100%;flex-direction:column;gap:var(--spacing, .25rem)}.axp-chart-widget-host:has(.axp-chart-widget-host__chart--heatmap){block-size:auto;min-block-size:0;overflow:visible}.axp-chart-widget-host__body{display:flex;min-height:0px;flex:1;flex-direction:column;gap:var(--spacing, .25rem);padding-bottom:calc(var(--spacing, .25rem) * 2)}.axp-chart-widget-host__body:not(.axp-chart-widget-host__body--with-legend)>.axp-chart-widget-host__chart--radial{flex:1 1 auto}.axp-chart-widget-host__body--with-legend{min-height:0px;flex:1;gap:var(--spacing, .25rem);display:grid;grid-template-rows:minmax(0,1fr) auto}.axp-chart-widget-host__chart{position:relative;min-height:calc(var(--spacing, .25rem) * 64);width:100%;overflow:hidden;grid-row:1}.axp-chart-widget-host__chart--radial{position:relative;margin-inline:auto;align-self:center;justify-self:center;overflow:hidden;grid-row:1;flex:0 0 auto;height:auto;width:min(100%,18rem);max-width:100%;min-height:12rem;min-width:8rem;aspect-ratio:1 / 1}.axp-chart-widget-host__chart--funnel{position:relative;width:100%;overflow:hidden;block-size:20rem;flex:0 0 auto;max-block-size:24rem;min-block-size:16rem}.axp-chart-widget-host__chart--funnel ax-funnel-chart,.axp-chart-widget-host__chart--funnel .ax-funnel-chart-container{display:block;block-size:100%;inline-size:100%;min-block-size:0}.axp-chart-widget-host__body:has(.axp-chart-widget-host__chart--funnel){flex:none}.axp-chart-widget-host__chart--heatmap{position:relative;width:100%;max-width:100%;inline-size:100%;block-size:auto;flex:0 0 auto;overflow:visible;min-height:0!important;min-block-size:0!important;max-block-size:none}.axp-chart-widget-host__chart--heatmap ax-heatmap-chart,.axp-chart-widget-host__chart--heatmap .ax-heatmap-chart-container{display:block;inline-size:100%;max-inline-size:100%;block-size:auto;min-block-size:0;overflow:visible}.axp-chart-widget-host__body:has(.axp-chart-widget-host__chart--heatmap){flex:none;block-size:auto;min-block-size:0;overflow:visible}.axp-chart-widget-host__legend{width:100%;flex:none;grid-row:2;min-height:0;min-width:0;max-width:100%;display:flex;justify-content:flex-start;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:rgb(var(--ax-sys-color-border-lighter-surface)) transparent}:host ::ng-deep ax-chart-legend{display:block!important;height:auto!important;max-height:none;width:max-content;min-width:100%;max-width:none}:host ::ng-deep .ax-chart-legend{--ax-legend-bg: var(--ax-sys-color-lighter-surface);--ax-legend-text: var(--ax-sys-color-on-lighter-surface);--ax-legend-border: var(--ax-sys-color-border-lighter-surface);--ax-legend-radius: .625rem;--ax-legend-padding: .375rem .5rem;--ax-legend-gap: .375rem;--ax-legend-item-height: auto;height:auto;max-height:none;width:100%;overflow:visible;padding:var(--ax-legend-padding);gap:var(--ax-legend-gap);color:rgb(var(--ax-legend-text))}:host ::ng-deep .ax-chart-legend.ax-legend-horizontal{flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:flex-start;width:max-content;min-width:100%;max-width:none;overflow:visible;border:none;background:transparent;background-color:transparent;padding:.125rem .75rem .7rem;gap:.5rem}:host ::ng-deep .ax-legend-item{align-items:center;flex-shrink:0;gap:.375rem;height:auto;min-height:1.5rem;padding-block:.2rem;padding-inline:.5rem;border-radius:9999px;border:1px solid rgb(var(--ax-sys-color-border-lightest-surface));background-color:rgb(var(--ax-sys-color-lightest-surface));white-space:nowrap;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease,transform .15s ease}:host ::ng-deep .ax-legend-item:hover{border-color:rgb(var(--ax-sys-color-primary-500));background-color:rgb(var(--ax-sys-color-primary-500));box-shadow:0 1px 2px #0f172a0f}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-item:hover{border-color:color-mix(in srgb,rgb(var(--ax-sys-color-primary-500)) 35%,rgb(var(--ax-sys-color-border-lightest-surface)))}}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-item:hover{background-color:color-mix(in srgb,rgb(var(--ax-sys-color-primary-500)) 6%,rgb(var(--ax-sys-color-lightest-surface)))}}:host ::ng-deep .ax-legend-item:active{transform:scale(.98)}:host ::ng-deep .ax-legend-item.ax-legend-item-hidden{opacity:.62}:host ::ng-deep .ax-legend-color{width:.625rem;height:.625rem;flex-shrink:0;border-radius:9999px;box-shadow:0 0 0 1px rgb(var(--ax-legend-text))}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-color{box-shadow:0 0 0 1px color-mix(in srgb,rgb(var(--ax-legend-text)) 18%,transparent)}}:host ::ng-deep .ax-legend-name{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);max-width:9rem;overflow:hidden;text-overflow:ellipsis}:host ::ng-deep .ax-legend-value{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);margin-inline-start:0;opacity:1;color:rgb(var(--ax-sys-color-on-lightest-surface))}:host ::ng-deep .ax-legend-percentage{margin-inline-start:0;border-radius:9999px;padding-inline:.4rem;padding-block:.125rem;font-size:.6875rem;line-height:1;font-weight:600;font-variant-numeric:tabular-nums;background-color:rgb(var(--ax-legend-text))}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-percentage{background-color:color-mix(in srgb,rgb(var(--ax-legend-text)) 12%,transparent)}}:host ::ng-deep ax-donut-chart,:host ::ng-deep ax-gauge-chart,:host ::ng-deep ax-bar-chart,:host ::ng-deep ax-line-chart,:host ::ng-deep ax-funnel-chart{display:block!important;width:100%!important;height:100%!important;min-height:0!important;max-height:100%!important}:host ::ng-deep .axp-chart-widget-host__chart--heatmap ax-heatmap-chart{display:block!important;width:100%!important;max-width:100%!important;height:auto!important;min-height:0!important;max-height:none!important;overflow:visible!important}:host ::ng-deep ax-donut-chart .ax-donut-chart,:host ::ng-deep ax-gauge-chart .ax-gauge-chart,:host ::ng-deep ax-bar-chart .ax-bar-chart,:host ::ng-deep ax-line-chart .ax-line-chart,:host ::ng-deep ax-funnel-chart .ax-funnel-chart-container{min-height:0!important;height:100%!important;width:100%!important;padding:.25rem!important}:host ::ng-deep .axp-chart-widget-host__chart--heatmap ax-heatmap-chart .ax-heatmap-chart-container,:host ::ng-deep .axp-chart-widget-host__chart--heatmap .ax-heatmap-chart{min-height:0!important;height:auto!important;width:100%!important;max-width:100%!important;padding:.25rem!important;overflow:visible!important}:host ::ng-deep .axp-chart-widget-host__chart--heatmap svg{display:block;width:100%!important;max-width:100%!important;height:auto!important;overflow:visible!important}:host:has(.ax-chart-empty){block-size:100%;overflow:hidden}.axp-chart-widget-host:has(.ax-chart-empty){block-size:100%;overflow:hidden}.axp-chart-widget-host__body:has(.ax-chart-empty){flex:1 1 auto;min-block-size:0;overflow:hidden}.axp-chart-widget-host__chart--heatmap:has(.ax-chart-empty){flex:1 1 auto;block-size:100%;min-block-size:16rem!important;overflow:hidden}:host ::ng-deep .axp-chart-widget-host__chart--heatmap:has(.ax-chart-empty) ax-heatmap-chart,:host ::ng-deep .axp-chart-widget-host__chart--heatmap:has(.ax-chart-empty) ax-heatmap-chart .ax-heatmap-chart-container{display:block!important;width:100%!important;max-width:100%!important;height:100%!important;min-height:16rem!important;max-height:none!important;overflow:hidden!important}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-ordinal{syntax: \"*\"; inherits: false;}@property --tw-slashed-zero{syntax: \"*\"; inherits: false;}@property --tw-numeric-figure{syntax: \"*\"; inherits: false;}@property --tw-numeric-spacing{syntax: \"*\"; inherits: false;}@property --tw-numeric-fraction{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial;--tw-ordinal: initial;--tw-slashed-zero: initial;--tw-numeric-figure: initial;--tw-numeric-spacing: initial;--tw-numeric-fraction: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "component", type: AXBarChartComponent, selector: "ax-bar-chart", inputs: ["data", "options"], outputs: ["barClick"] }, { kind: "component", type: AXChartLegendComponent, selector: "ax-chart-legend", inputs: ["chart", "options"], outputs: ["itemClick", "itemMouseEnter", "itemMouseLeave"] }, { kind: "component", type: AXPChartQueryTabsComponent, selector: "axp-chart-query-tabs", inputs: ["tabs", "activeIndex"], outputs: ["activeIndexChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
144
144
|
}
|
|
145
145
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPBarChartWidgetViewComponent, decorators: [{
|
|
146
146
|
type: Component,
|
|
147
|
-
args: [{ imports: [AXBarChartComponent, AXChartLegendComponent, AXPChartQueryTabsComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"axp-chart-widget-host\">\n <axp-chart-query-tabs\n [tabs]=\"queryTabs()\"\n [activeIndex]=\"activeTabIndex()\"\n (activeIndexChange)=\"selectQueryTab($event)\"\n />\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-bar-chart\n #chart\n [data]=\"data()\"\n [options]=\"barChartOptions()\"\n (barClick)=\"handleBarClick($event)\"\n ></ax-bar-chart>\n </div>\n <!-- ----- Series indicator (legend) ----- -->\n @if (data().length > 0) {\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", styles: ["@layer properties;:host{display:block;width:100%;height:100%;min-height:0px;overflow:hidden}:host:has(.axp-chart-widget-host__chart--heatmap){block-size:auto;overflow:visible;min-block-size:0}.axp-chart-widget-host{display:flex;height:100%;min-height:0px;width:100%;flex-direction:column;gap:var(--spacing, .25rem)}.axp-chart-widget-host:has(.axp-chart-widget-host__chart--heatmap){block-size:auto;min-block-size:0;overflow:visible}.axp-chart-widget-host__body{display:flex;min-height:0px;flex:1;flex-direction:column;gap:var(--spacing, .25rem);padding-bottom:calc(var(--spacing, .25rem) * 2)}.axp-chart-widget-host__body:not(.axp-chart-widget-host__body--with-legend)>.axp-chart-widget-host__chart--radial{flex:1 1 auto}.axp-chart-widget-host__body--with-legend{min-height:0px;flex:1;gap:var(--spacing, .25rem);display:grid;grid-template-rows:minmax(0,1fr) auto}.axp-chart-widget-host__chart{position:relative;min-height:calc(var(--spacing, .25rem) * 64);width:100%;overflow:hidden;grid-row:1}.axp-chart-widget-host__chart--radial{position:relative;margin-inline:auto;align-self:center;justify-self:center;overflow:hidden;grid-row:1;flex:0 0 auto;height:auto;width:min(100%,18rem);max-width:100%;min-height:12rem;min-width:8rem;aspect-ratio:1 / 1}.axp-chart-widget-host__chart--funnel{position:relative;width:100%;overflow:hidden;block-size:20rem;flex:0 0 auto;max-block-size:24rem;min-block-size:16rem}.axp-chart-widget-host__chart--funnel ax-funnel-chart,.axp-chart-widget-host__chart--funnel .ax-funnel-chart-container{display:block;block-size:100%;inline-size:100%;min-block-size:0}.axp-chart-widget-host__body:has(.axp-chart-widget-host__chart--funnel){flex:none}.axp-chart-widget-host__chart--heatmap{position:relative;width:100%;max-width:100%;inline-size:100%;block-size:auto;flex:0 0 auto;overflow:visible;min-height:0!important;min-block-size:0!important;max-block-size:none}.axp-chart-widget-host__chart--heatmap ax-heatmap-chart,.axp-chart-widget-host__chart--heatmap .ax-heatmap-chart-container{display:block;inline-size:100%;max-inline-size:100%;block-size:auto;min-block-size:0;overflow:visible}.axp-chart-widget-host__body:has(.axp-chart-widget-host__chart--heatmap){flex:none;block-size:auto;min-block-size:0;overflow:visible}.axp-chart-widget-host__legend{width:100%;flex:none;grid-row:2;min-height:0;min-width:0;max-width:100%;display:flex;justify-content:flex-start;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:rgb(var(--ax-sys-color-border-lighter-surface)) transparent}:host ::ng-deep ax-chart-legend{display:block!important;height:auto!important;max-height:none;width:max-content;min-width:100%;max-width:none}:host ::ng-deep .ax-chart-legend{--ax-legend-bg: var(--ax-sys-color-lighter-surface);--ax-legend-text: var(--ax-sys-color-on-lighter-surface);--ax-legend-border: var(--ax-sys-color-border-lighter-surface);--ax-legend-radius: .625rem;--ax-legend-padding: .375rem .5rem;--ax-legend-gap: .375rem;--ax-legend-item-height: auto;height:auto;max-height:none;width:100%;overflow:visible;padding:var(--ax-legend-padding);gap:var(--ax-legend-gap);color:rgb(var(--ax-legend-text))}:host ::ng-deep .ax-chart-legend.ax-legend-horizontal{flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:flex-start;width:max-content;min-width:100%;max-width:none;overflow:visible;border:none;background:transparent;background-color:transparent;padding:.125rem .75rem .7rem;gap:.5rem}:host ::ng-deep .ax-legend-item{align-items:center;flex-shrink:0;gap:.375rem;height:auto;min-height:1.5rem;padding-block:.2rem;padding-inline:.5rem;border-radius:9999px;border:1px solid rgb(var(--ax-sys-color-border-lightest-surface));background-color:rgb(var(--ax-sys-color-lightest-surface));white-space:nowrap;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease,transform .15s ease}:host ::ng-deep .ax-legend-item:hover{border-color:rgb(var(--ax-sys-color-primary-500));background-color:rgb(var(--ax-sys-color-primary-500));box-shadow:0 1px 2px #0f172a0f}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-item:hover{border-color:color-mix(in srgb,rgb(var(--ax-sys-color-primary-500)) 35%,rgb(var(--ax-sys-color-border-lightest-surface)))}}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-item:hover{background-color:color-mix(in srgb,rgb(var(--ax-sys-color-primary-500)) 6%,rgb(var(--ax-sys-color-lightest-surface)))}}:host ::ng-deep .ax-legend-item:active{transform:scale(.98)}:host ::ng-deep .ax-legend-item.ax-legend-item-hidden{opacity:.62}:host ::ng-deep .ax-legend-color{width:.625rem;height:.625rem;flex-shrink:0;border-radius:9999px;box-shadow:0 0 0 1px rgb(var(--ax-legend-text))}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-color{box-shadow:0 0 0 1px color-mix(in srgb,rgb(var(--ax-legend-text)) 18%,transparent)}}:host ::ng-deep .ax-legend-name{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);max-width:9rem;overflow:hidden;text-overflow:ellipsis}:host ::ng-deep .ax-legend-value{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);margin-inline-start:0;opacity:1;color:rgb(var(--ax-sys-color-on-lightest-surface))}:host ::ng-deep .ax-legend-percentage{margin-inline-start:0;border-radius:9999px;padding-inline:.4rem;padding-block:.125rem;font-size:.6875rem;line-height:1;font-weight:600;font-variant-numeric:tabular-nums;background-color:rgb(var(--ax-legend-text))}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-percentage{background-color:color-mix(in srgb,rgb(var(--ax-legend-text)) 12%,transparent)}}:host ::ng-deep ax-donut-chart,:host ::ng-deep ax-gauge-chart,:host ::ng-deep ax-bar-chart,:host ::ng-deep ax-line-chart,:host ::ng-deep ax-funnel-chart{display:block!important;width:100%!important;height:100%!important;min-height:0!important;max-height:100%!important}:host ::ng-deep .axp-chart-widget-host__chart--heatmap ax-heatmap-chart{display:block!important;width:100%!important;max-width:100%!important;height:auto!important;min-height:0!important;max-height:none!important;overflow:visible!important}:host ::ng-deep ax-donut-chart .ax-donut-chart,:host ::ng-deep ax-gauge-chart .ax-gauge-chart,:host ::ng-deep ax-bar-chart .ax-bar-chart,:host ::ng-deep ax-line-chart .ax-line-chart,:host ::ng-deep ax-funnel-chart .ax-funnel-chart-container{min-height:0!important;height:100%!important;width:100%!important;padding:.25rem!important}:host ::ng-deep .axp-chart-widget-host__chart--heatmap ax-heatmap-chart .ax-heatmap-chart-container,:host ::ng-deep .axp-chart-widget-host__chart--heatmap .ax-heatmap-chart{min-height:0!important;height:auto!important;width:100%!important;max-width:100%!important;padding:.25rem!important;overflow:visible!important}:host ::ng-deep .axp-chart-widget-host__chart--heatmap svg{display:block;width:100%!important;max-width:100%!important;height:auto!important;overflow:visible!important}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-ordinal{syntax: \"*\"; inherits: false;}@property --tw-slashed-zero{syntax: \"*\"; inherits: false;}@property --tw-numeric-figure{syntax: \"*\"; inherits: false;}@property --tw-numeric-spacing{syntax: \"*\"; inherits: false;}@property --tw-numeric-fraction{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial;--tw-ordinal: initial;--tw-slashed-zero: initial;--tw-numeric-figure: initial;--tw-numeric-spacing: initial;--tw-numeric-fraction: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
|
|
147
|
+
args: [{ imports: [AXBarChartComponent, AXChartLegendComponent, AXPChartQueryTabsComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"axp-chart-widget-host\">\n <axp-chart-query-tabs\n [tabs]=\"queryTabs()\"\n [activeIndex]=\"activeTabIndex()\"\n (activeIndexChange)=\"selectQueryTab($event)\"\n />\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-bar-chart\n #chart\n [data]=\"data()\"\n [options]=\"barChartOptions()\"\n (barClick)=\"handleBarClick($event)\"\n ></ax-bar-chart>\n </div>\n <!-- ----- Series indicator (legend) ----- -->\n @if (data().length > 0) {\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", styles: ["@layer properties;:host{display:block;width:100%;height:100%;min-height:0px;overflow:hidden}:host:has(.axp-chart-widget-host__chart--heatmap){block-size:auto;overflow:visible;min-block-size:0}.axp-chart-widget-host{display:flex;height:100%;min-height:0px;width:100%;flex-direction:column;gap:var(--spacing, .25rem)}.axp-chart-widget-host:has(.axp-chart-widget-host__chart--heatmap){block-size:auto;min-block-size:0;overflow:visible}.axp-chart-widget-host__body{display:flex;min-height:0px;flex:1;flex-direction:column;gap:var(--spacing, .25rem);padding-bottom:calc(var(--spacing, .25rem) * 2)}.axp-chart-widget-host__body:not(.axp-chart-widget-host__body--with-legend)>.axp-chart-widget-host__chart--radial{flex:1 1 auto}.axp-chart-widget-host__body--with-legend{min-height:0px;flex:1;gap:var(--spacing, .25rem);display:grid;grid-template-rows:minmax(0,1fr) auto}.axp-chart-widget-host__chart{position:relative;min-height:calc(var(--spacing, .25rem) * 64);width:100%;overflow:hidden;grid-row:1}.axp-chart-widget-host__chart--radial{position:relative;margin-inline:auto;align-self:center;justify-self:center;overflow:hidden;grid-row:1;flex:0 0 auto;height:auto;width:min(100%,18rem);max-width:100%;min-height:12rem;min-width:8rem;aspect-ratio:1 / 1}.axp-chart-widget-host__chart--funnel{position:relative;width:100%;overflow:hidden;block-size:20rem;flex:0 0 auto;max-block-size:24rem;min-block-size:16rem}.axp-chart-widget-host__chart--funnel ax-funnel-chart,.axp-chart-widget-host__chart--funnel .ax-funnel-chart-container{display:block;block-size:100%;inline-size:100%;min-block-size:0}.axp-chart-widget-host__body:has(.axp-chart-widget-host__chart--funnel){flex:none}.axp-chart-widget-host__chart--heatmap{position:relative;width:100%;max-width:100%;inline-size:100%;block-size:auto;flex:0 0 auto;overflow:visible;min-height:0!important;min-block-size:0!important;max-block-size:none}.axp-chart-widget-host__chart--heatmap ax-heatmap-chart,.axp-chart-widget-host__chart--heatmap .ax-heatmap-chart-container{display:block;inline-size:100%;max-inline-size:100%;block-size:auto;min-block-size:0;overflow:visible}.axp-chart-widget-host__body:has(.axp-chart-widget-host__chart--heatmap){flex:none;block-size:auto;min-block-size:0;overflow:visible}.axp-chart-widget-host__legend{width:100%;flex:none;grid-row:2;min-height:0;min-width:0;max-width:100%;display:flex;justify-content:flex-start;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:rgb(var(--ax-sys-color-border-lighter-surface)) transparent}:host ::ng-deep ax-chart-legend{display:block!important;height:auto!important;max-height:none;width:max-content;min-width:100%;max-width:none}:host ::ng-deep .ax-chart-legend{--ax-legend-bg: var(--ax-sys-color-lighter-surface);--ax-legend-text: var(--ax-sys-color-on-lighter-surface);--ax-legend-border: var(--ax-sys-color-border-lighter-surface);--ax-legend-radius: .625rem;--ax-legend-padding: .375rem .5rem;--ax-legend-gap: .375rem;--ax-legend-item-height: auto;height:auto;max-height:none;width:100%;overflow:visible;padding:var(--ax-legend-padding);gap:var(--ax-legend-gap);color:rgb(var(--ax-legend-text))}:host ::ng-deep .ax-chart-legend.ax-legend-horizontal{flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:flex-start;width:max-content;min-width:100%;max-width:none;overflow:visible;border:none;background:transparent;background-color:transparent;padding:.125rem .75rem .7rem;gap:.5rem}:host ::ng-deep .ax-legend-item{align-items:center;flex-shrink:0;gap:.375rem;height:auto;min-height:1.5rem;padding-block:.2rem;padding-inline:.5rem;border-radius:9999px;border:1px solid rgb(var(--ax-sys-color-border-lightest-surface));background-color:rgb(var(--ax-sys-color-lightest-surface));white-space:nowrap;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease,transform .15s ease}:host ::ng-deep .ax-legend-item:hover{border-color:rgb(var(--ax-sys-color-primary-500));background-color:rgb(var(--ax-sys-color-primary-500));box-shadow:0 1px 2px #0f172a0f}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-item:hover{border-color:color-mix(in srgb,rgb(var(--ax-sys-color-primary-500)) 35%,rgb(var(--ax-sys-color-border-lightest-surface)))}}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-item:hover{background-color:color-mix(in srgb,rgb(var(--ax-sys-color-primary-500)) 6%,rgb(var(--ax-sys-color-lightest-surface)))}}:host ::ng-deep .ax-legend-item:active{transform:scale(.98)}:host ::ng-deep .ax-legend-item.ax-legend-item-hidden{opacity:.62}:host ::ng-deep .ax-legend-color{width:.625rem;height:.625rem;flex-shrink:0;border-radius:9999px;box-shadow:0 0 0 1px rgb(var(--ax-legend-text))}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-color{box-shadow:0 0 0 1px color-mix(in srgb,rgb(var(--ax-legend-text)) 18%,transparent)}}:host ::ng-deep .ax-legend-name{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);max-width:9rem;overflow:hidden;text-overflow:ellipsis}:host ::ng-deep .ax-legend-value{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);margin-inline-start:0;opacity:1;color:rgb(var(--ax-sys-color-on-lightest-surface))}:host ::ng-deep .ax-legend-percentage{margin-inline-start:0;border-radius:9999px;padding-inline:.4rem;padding-block:.125rem;font-size:.6875rem;line-height:1;font-weight:600;font-variant-numeric:tabular-nums;background-color:rgb(var(--ax-legend-text))}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-percentage{background-color:color-mix(in srgb,rgb(var(--ax-legend-text)) 12%,transparent)}}:host ::ng-deep ax-donut-chart,:host ::ng-deep ax-gauge-chart,:host ::ng-deep ax-bar-chart,:host ::ng-deep ax-line-chart,:host ::ng-deep ax-funnel-chart{display:block!important;width:100%!important;height:100%!important;min-height:0!important;max-height:100%!important}:host ::ng-deep .axp-chart-widget-host__chart--heatmap ax-heatmap-chart{display:block!important;width:100%!important;max-width:100%!important;height:auto!important;min-height:0!important;max-height:none!important;overflow:visible!important}:host ::ng-deep ax-donut-chart .ax-donut-chart,:host ::ng-deep ax-gauge-chart .ax-gauge-chart,:host ::ng-deep ax-bar-chart .ax-bar-chart,:host ::ng-deep ax-line-chart .ax-line-chart,:host ::ng-deep ax-funnel-chart .ax-funnel-chart-container{min-height:0!important;height:100%!important;width:100%!important;padding:.25rem!important}:host ::ng-deep .axp-chart-widget-host__chart--heatmap ax-heatmap-chart .ax-heatmap-chart-container,:host ::ng-deep .axp-chart-widget-host__chart--heatmap .ax-heatmap-chart{min-height:0!important;height:auto!important;width:100%!important;max-width:100%!important;padding:.25rem!important;overflow:visible!important}:host ::ng-deep .axp-chart-widget-host__chart--heatmap svg{display:block;width:100%!important;max-width:100%!important;height:auto!important;overflow:visible!important}:host:has(.ax-chart-empty){block-size:100%;overflow:hidden}.axp-chart-widget-host:has(.ax-chart-empty){block-size:100%;overflow:hidden}.axp-chart-widget-host__body:has(.ax-chart-empty){flex:1 1 auto;min-block-size:0;overflow:hidden}.axp-chart-widget-host__chart--heatmap:has(.ax-chart-empty){flex:1 1 auto;block-size:100%;min-block-size:16rem!important;overflow:hidden}:host ::ng-deep .axp-chart-widget-host__chart--heatmap:has(.ax-chart-empty) ax-heatmap-chart,:host ::ng-deep .axp-chart-widget-host__chart--heatmap:has(.ax-chart-empty) ax-heatmap-chart .ax-heatmap-chart-container{display:block!important;width:100%!important;max-width:100%!important;height:100%!important;min-height:16rem!important;max-height:none!important;overflow:hidden!important}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-ordinal{syntax: \"*\"; inherits: false;}@property --tw-slashed-zero{syntax: \"*\"; inherits: false;}@property --tw-numeric-figure{syntax: \"*\"; inherits: false;}@property --tw-numeric-spacing{syntax: \"*\"; inherits: false;}@property --tw-numeric-fraction{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial;--tw-ordinal: initial;--tw-slashed-zero: initial;--tw-numeric-figure: initial;--tw-numeric-spacing: initial;--tw-numeric-fraction: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
|
|
148
148
|
}], ctorParameters: () => [] });
|
|
149
149
|
|
|
150
150
|
export { AXPBarChartWidgetViewComponent };
|
|
151
|
-
//# sourceMappingURL=acorex-platform-module-dashboard-management-client-bar-chart-widget.component-
|
|
151
|
+
//# sourceMappingURL=acorex-platform-module-dashboard-management-client-bar-chart-widget.component-kw130ESN.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-dashboard-management-client-bar-chart-widget.component-5c4X-lEC.mjs","sources":["../../../../libs/modules/dashboard-management/client/src/lib/features/shared/widgets/chart/bar-chart/bar-chart-widget.component.ts","../../../../libs/modules/dashboard-management/client/src/lib/features/shared/widgets/chart/bar-chart/bar-chart-widget.component.html"],"sourcesContent":["import { AXBarChartComponent, AXBarChartData, AXBarChartOption } from '@acorex/charts/bar-chart';\nimport { AXChartLegendComponent } from '@acorex/charts/chart-legend';\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 { loadBarChartItems, 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 * Bar Chart Widget Component\n * Renders data as vertical bars with interactive hover effects and animations\n */\n@Component({\n templateUrl: './bar-chart-widget.component.html',\n styleUrls: ['./bar-chart-widget.component.css'],\n imports: [AXBarChartComponent, AXChartLegendComponent, AXPChartQueryTabsComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPBarChartWidgetViewComponent 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<AXBarChartData[]>([]);\n\n /** Options for the chart with localized title and axis labels. */\n protected barChartOptions = signal<AXBarChartOption & { title: string }>({} as AXBarChartOption & { title: string });\n\n protected readonly legendOptions = AXP_CHART_LEGEND_OPTIONS_SERIES;\n\n private labelResolveGeneration = 0;\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 //#endregion\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 bar category 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 AXBarChartOption & { title: string };\n this.barChartOptions.set({\n ...base,\n title,\n xAxisLabel,\n yAxisLabel,\n });\n });\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 //#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 items = await loadBarChartItems(opts, {\n queryExecutor: this.queryExecutor,\n queryKey: active?.query,\n queryInput: active?.queryInput,\n });\n const resolved = await Promise.all(\n items.map(async (item) => ({\n ...item,\n label: await this.resolveLocalizedChartText(item.label),\n })),\n );\n this.data.set(resolved as AXBarChartData[]);\n });\n\n //#endregion\n\n constructor() {\n super();\n this.setOptions({\n showXAxis: true,\n showYAxis: true,\n barWidth: 80,\n cornerRadius: 4,\n showGrid: true,\n showDataLabels: false,\n showTooltip: true,\n animationEasing: 'cubic-out',\n animationDuration: 800,\n ...omitChartFixedSize(this.options() as Record<string, unknown>),\n });\n this.barChartOptions.set(\n omitChartFixedSize(this.options() as Record<string, unknown>) as unknown as AXBarChartOption & {\n title: string;\n },\n );\n }\n\n handleBarClick(_event: unknown) {\n // reserved for future drill-down\n }\n}\n","<div class=\"axp-chart-widget-host\">\n <axp-chart-query-tabs\n [tabs]=\"queryTabs()\"\n [activeIndex]=\"activeTabIndex()\"\n (activeIndexChange)=\"selectQueryTab($event)\"\n />\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-bar-chart\n #chart\n [data]=\"data()\"\n [options]=\"barChartOptions()\"\n (barClick)=\"handleBarClick($event)\"\n ></ax-bar-chart>\n </div>\n <!-- ----- Series indicator (legend) ----- -->\n @if (data().length > 0) {\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-bar-chart-widget.component-kw130ESN.mjs","sources":["../../../../libs/modules/dashboard-management/client/src/lib/features/shared/widgets/chart/bar-chart/bar-chart-widget.component.ts","../../../../libs/modules/dashboard-management/client/src/lib/features/shared/widgets/chart/bar-chart/bar-chart-widget.component.html"],"sourcesContent":["import { AXBarChartComponent, AXBarChartData, AXBarChartOption } from '@acorex/charts/bar-chart';\nimport { AXChartLegendComponent } from '@acorex/charts/chart-legend';\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 { loadBarChartItems, 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 * Bar Chart Widget Component\n * Renders data as vertical bars with interactive hover effects and animations\n */\n@Component({\n templateUrl: './bar-chart-widget.component.html',\n styleUrls: ['./bar-chart-widget.component.css'],\n imports: [AXBarChartComponent, AXChartLegendComponent, AXPChartQueryTabsComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPBarChartWidgetViewComponent 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<AXBarChartData[]>([]);\n\n /** Options for the chart with localized title and axis labels. */\n protected barChartOptions = signal<AXBarChartOption & { title: string }>({} as AXBarChartOption & { title: string });\n\n protected readonly legendOptions = AXP_CHART_LEGEND_OPTIONS_SERIES;\n\n private labelResolveGeneration = 0;\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 //#endregion\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 bar category 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 AXBarChartOption & { title: string };\n this.barChartOptions.set({\n ...base,\n title,\n xAxisLabel,\n yAxisLabel,\n });\n });\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 //#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 items = await loadBarChartItems(opts, {\n queryExecutor: this.queryExecutor,\n queryKey: active?.query,\n queryInput: active?.queryInput,\n });\n const resolved = await Promise.all(\n items.map(async (item) => ({\n ...item,\n label: await this.resolveLocalizedChartText(item.label),\n })),\n );\n this.data.set(resolved as AXBarChartData[]);\n });\n\n //#endregion\n\n constructor() {\n super();\n this.setOptions({\n showXAxis: true,\n showYAxis: true,\n barWidth: 80,\n cornerRadius: 4,\n showGrid: true,\n showDataLabels: false,\n showTooltip: true,\n animationEasing: 'cubic-out',\n animationDuration: 800,\n ...omitChartFixedSize(this.options() as Record<string, unknown>),\n });\n this.barChartOptions.set(\n omitChartFixedSize(this.options() as Record<string, unknown>) as unknown as AXBarChartOption & {\n title: string;\n },\n );\n }\n\n handleBarClick(_event: unknown) {\n // reserved for future drill-down\n }\n}\n","<div class=\"axp-chart-widget-host\">\n <axp-chart-query-tabs\n [tabs]=\"queryTabs()\"\n [activeIndex]=\"activeTabIndex()\"\n (activeIndexChange)=\"selectQueryTab($event)\"\n />\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-bar-chart\n #chart\n [data]=\"data()\"\n [options]=\"barChartOptions()\"\n (barClick)=\"handleBarClick($event)\"\n ></ax-bar-chart>\n </div>\n <!-- ----- Series indicator (legend) ----- -->\n @if (data().length > 0) {\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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"}
|
|
@@ -6,7 +6,7 @@ import * as i1 from '@acorex/components/tabs';
|
|
|
6
6
|
import { AXTabsModule } from '@acorex/components/tabs';
|
|
7
7
|
import * as i0 from '@angular/core';
|
|
8
8
|
import { inject, computed, signal, effect, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
9
|
-
import { e as AXPDashboardWidgetComponent, h as asChartTabWidgetNode, i as isChartTabConfigured, j as readChartTabTitle } from './acorex-platform-module-dashboard-management-client-acorex-platform-module-dashboard-management-client-
|
|
9
|
+
import { e as AXPDashboardWidgetComponent, h as asChartTabWidgetNode, i as isChartTabConfigured, j as readChartTabTitle } from './acorex-platform-module-dashboard-management-client-acorex-platform-module-dashboard-management-client-61Q_QY8l.mjs';
|
|
10
10
|
|
|
11
11
|
//#region ----- Imports -----
|
|
12
12
|
//#endregion
|
|
@@ -115,12 +115,12 @@ class AXPChartCardWidgetViewComponent extends AXPDashboardWidgetComponent {
|
|
|
115
115
|
return kept;
|
|
116
116
|
}
|
|
117
117
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPChartCardWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
118
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPChartCardWidgetViewComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"axp-chart-widget-host\">\n @if (tabNodes().length === 0) {\n <!-- ----- Empty card when no chart tabs are configured ----- -->\n <axp-state-message icon=\"fa-light fa-chart-mixed\" [title]=\"'@dashboard:widgets.chart-card.empty-title'\" [description]=\"'@dashboard:widgets.chart-card.empty-description'\" />\n }\n <!-- ----- Header-only ax-tabs; chart panes live outside the tab items ----- -->\n @else {\n <!--------------------------------------------------------------->\n <!-- ----- Tab strip when more than one chart is configured ----- -->\n @if (tabStrip().length > 1) {\n <ax-tabs class=\"axp-chart-query-tabs\" [look]=\"'with-line'\" [location]=\"'bottom'\" [fitParent]=\"true\" (onActiveTabChanged)=\"onActiveTabChanged($event)\">\n @for (tab of tabStrip(); track tabStripKey(tab, $index)) {\n <ax-tab-item [key]=\"tabStripKey(tab, $index)\" [text]=\"tab.label\" [active]=\"activeTabIndex() === $index\"></ax-tab-item>\n }\n </ax-tabs>\n }\n <div class=\"axp-chart-widget-host__body\">\n @for (pane of renderedPanes(); track pane.key) {\n <div\n class=\"axp-chart-widget-host__pane\"\n [class.axp-chart-widget-host__pane--inactive]=\"pane.index !== activeTabIndex()\"\n [style.visibility]=\"pane.index === activeTabIndex() ? 'visible' : 'hidden'\"\n [attr.aria-hidden]=\"pane.index !== activeTabIndex()\"\n >\n <!--------------------------------------------------------------->\n <!-- ----- Incomplete tab: type or query is missing ----- -->\n @if (!isTabConfigured(pane.node)) {\n <axp-state-message icon=\"fa-light fa-triangle-exclamation\" [title]=\"'@dashboard:widgets.chart-card.incomplete-title'\" [description]=\"'@dashboard:widgets.chart-card.incomplete-description'\" />\n }\n <!-- ----- Typed chart stays mounted after first visit ----- -->\n @else {\n <ng-container axp-widget-renderer [node]=\"pane.node\" [mode]=\"'view'\"></ng-container>\n }\n </div>\n }\n </div>\n }\n</div>\n", styles: ["@layer properties;:host{display:block;width:100%;height:100%;min-height:0px;overflow:hidden}:host:has(.axp-chart-widget-host__chart--heatmap){block-size:auto;overflow:visible;min-block-size:0}.axp-chart-widget-host{display:flex;height:100%;min-height:0px;width:100%;flex-direction:column;gap:var(--spacing, .25rem)}.axp-chart-widget-host:has(.axp-chart-widget-host__chart--heatmap){block-size:auto;min-block-size:0;overflow:visible}.axp-chart-widget-host__body{display:flex;min-height:0px;flex:1;flex-direction:column;gap:var(--spacing, .25rem);padding-bottom:calc(var(--spacing, .25rem) * 2)}.axp-chart-widget-host__body:not(.axp-chart-widget-host__body--with-legend)>.axp-chart-widget-host__chart--radial{flex:1 1 auto}.axp-chart-widget-host__body--with-legend{min-height:0px;flex:1;gap:var(--spacing, .25rem);display:grid;grid-template-rows:minmax(0,1fr) auto}.axp-chart-widget-host__chart{position:relative;min-height:calc(var(--spacing, .25rem) * 64);width:100%;overflow:hidden;grid-row:1}.axp-chart-widget-host__chart--radial{position:relative;margin-inline:auto;align-self:center;justify-self:center;overflow:hidden;grid-row:1;flex:0 0 auto;height:auto;width:min(100%,18rem);max-width:100%;min-height:12rem;min-width:8rem;aspect-ratio:1 / 1}.axp-chart-widget-host__chart--funnel{position:relative;width:100%;overflow:hidden;block-size:20rem;flex:0 0 auto;max-block-size:24rem;min-block-size:16rem}.axp-chart-widget-host__chart--funnel ax-funnel-chart,.axp-chart-widget-host__chart--funnel .ax-funnel-chart-container{display:block;block-size:100%;inline-size:100%;min-block-size:0}.axp-chart-widget-host__body:has(.axp-chart-widget-host__chart--funnel){flex:none}.axp-chart-widget-host__chart--heatmap{position:relative;width:100%;max-width:100%;inline-size:100%;block-size:auto;flex:0 0 auto;overflow:visible;min-height:0!important;min-block-size:0!important;max-block-size:none}.axp-chart-widget-host__chart--heatmap ax-heatmap-chart,.axp-chart-widget-host__chart--heatmap .ax-heatmap-chart-container{display:block;inline-size:100%;max-inline-size:100%;block-size:auto;min-block-size:0;overflow:visible}.axp-chart-widget-host__body:has(.axp-chart-widget-host__chart--heatmap){flex:none;block-size:auto;min-block-size:0;overflow:visible}.axp-chart-widget-host__legend{width:100%;flex:none;grid-row:2;min-height:0;min-width:0;max-width:100%;display:flex;justify-content:flex-start;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:rgb(var(--ax-sys-color-border-lighter-surface)) transparent}:host ::ng-deep ax-chart-legend{display:block!important;height:auto!important;max-height:none;width:max-content;min-width:100%;max-width:none}:host ::ng-deep .ax-chart-legend{--ax-legend-bg: var(--ax-sys-color-lighter-surface);--ax-legend-text: var(--ax-sys-color-on-lighter-surface);--ax-legend-border: var(--ax-sys-color-border-lighter-surface);--ax-legend-radius: .625rem;--ax-legend-padding: .375rem .5rem;--ax-legend-gap: .375rem;--ax-legend-item-height: auto;height:auto;max-height:none;width:100%;overflow:visible;padding:var(--ax-legend-padding);gap:var(--ax-legend-gap);color:rgb(var(--ax-legend-text))}:host ::ng-deep .ax-chart-legend.ax-legend-horizontal{flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:flex-start;width:max-content;min-width:100%;max-width:none;overflow:visible;border:none;background:transparent;background-color:transparent;padding:.125rem .75rem .7rem;gap:.5rem}:host ::ng-deep .ax-legend-item{align-items:center;flex-shrink:0;gap:.375rem;height:auto;min-height:1.5rem;padding-block:.2rem;padding-inline:.5rem;border-radius:9999px;border:1px solid rgb(var(--ax-sys-color-border-lightest-surface));background-color:rgb(var(--ax-sys-color-lightest-surface));white-space:nowrap;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease,transform .15s ease}:host ::ng-deep .ax-legend-item:hover{border-color:rgb(var(--ax-sys-color-primary-500));background-color:rgb(var(--ax-sys-color-primary-500));box-shadow:0 1px 2px #0f172a0f}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-item:hover{border-color:color-mix(in srgb,rgb(var(--ax-sys-color-primary-500)) 35%,rgb(var(--ax-sys-color-border-lightest-surface)))}}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-item:hover{background-color:color-mix(in srgb,rgb(var(--ax-sys-color-primary-500)) 6%,rgb(var(--ax-sys-color-lightest-surface)))}}:host ::ng-deep .ax-legend-item:active{transform:scale(.98)}:host ::ng-deep .ax-legend-item.ax-legend-item-hidden{opacity:.62}:host ::ng-deep .ax-legend-color{width:.625rem;height:.625rem;flex-shrink:0;border-radius:9999px;box-shadow:0 0 0 1px rgb(var(--ax-legend-text))}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-color{box-shadow:0 0 0 1px color-mix(in srgb,rgb(var(--ax-legend-text)) 18%,transparent)}}:host ::ng-deep .ax-legend-name{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);max-width:9rem;overflow:hidden;text-overflow:ellipsis}:host ::ng-deep .ax-legend-value{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);margin-inline-start:0;opacity:1;color:rgb(var(--ax-sys-color-on-lightest-surface))}:host ::ng-deep .ax-legend-percentage{margin-inline-start:0;border-radius:9999px;padding-inline:.4rem;padding-block:.125rem;font-size:.6875rem;line-height:1;font-weight:600;font-variant-numeric:tabular-nums;background-color:rgb(var(--ax-legend-text))}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-percentage{background-color:color-mix(in srgb,rgb(var(--ax-legend-text)) 12%,transparent)}}:host ::ng-deep ax-donut-chart,:host ::ng-deep ax-gauge-chart,:host ::ng-deep ax-bar-chart,:host ::ng-deep ax-line-chart,:host ::ng-deep ax-funnel-chart{display:block!important;width:100%!important;height:100%!important;min-height:0!important;max-height:100%!important}:host ::ng-deep .axp-chart-widget-host__chart--heatmap ax-heatmap-chart{display:block!important;width:100%!important;max-width:100%!important;height:auto!important;min-height:0!important;max-height:none!important;overflow:visible!important}:host ::ng-deep ax-donut-chart .ax-donut-chart,:host ::ng-deep ax-gauge-chart .ax-gauge-chart,:host ::ng-deep ax-bar-chart .ax-bar-chart,:host ::ng-deep ax-line-chart .ax-line-chart,:host ::ng-deep ax-funnel-chart .ax-funnel-chart-container{min-height:0!important;height:100%!important;width:100%!important;padding:.25rem!important}:host ::ng-deep .axp-chart-widget-host__chart--heatmap ax-heatmap-chart .ax-heatmap-chart-container,:host ::ng-deep .axp-chart-widget-host__chart--heatmap .ax-heatmap-chart{min-height:0!important;height:auto!important;width:100%!important;max-width:100%!important;padding:.25rem!important;overflow:visible!important}:host ::ng-deep .axp-chart-widget-host__chart--heatmap svg{display:block;width:100%!important;max-width:100%!important;height:auto!important;overflow:visible!important}.axp-chart-query-tabs{margin-bottom:.25rem}:host ::ng-deep ax-tabs.axp-chart-query-tabs.ax-tabs-fit.ax-bottom>ax-tab-item,:host ::ng-deep ax-tabs.axp-chart-query-tabs.ax-tabs-fit.ax-top>ax-tab-item{min-width:max-content}.axp-chart-widget-host__body{position:relative}.axp-chart-widget-host__pane{display:flex;flex:1 1 auto;min-height:0;flex-direction:column}.axp-chart-widget-host__pane--inactive{position:absolute;inset:0;pointer-events:none}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-ordinal{syntax: \"*\"; inherits: false;}@property --tw-slashed-zero{syntax: \"*\"; inherits: false;}@property --tw-numeric-figure{syntax: \"*\"; inherits: false;}@property --tw-numeric-spacing{syntax: \"*\"; inherits: false;}@property --tw-numeric-fraction{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial;--tw-ordinal: initial;--tw-slashed-zero: initial;--tw-numeric-figure: initial;--tw-numeric-spacing: initial;--tw-numeric-fraction: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i1.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "reorderable", "reorderDelay", "renderMode", "stacked", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged", "onTabsReordered"] }, { kind: "component", type: i1.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "directive", type: i3.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }, { kind: "component", type: AXPStateMessageComponent, selector: "axp-state-message", inputs: ["mode", "icon", "title", "description", "titleParams", "descriptionParams", "look"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
118
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPChartCardWidgetViewComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"axp-chart-widget-host\">\n @if (tabNodes().length === 0) {\n <!-- ----- Empty card when no chart tabs are configured ----- -->\n <axp-state-message icon=\"fa-light fa-chart-mixed\" [title]=\"'@dashboard:widgets.chart-card.empty-title'\" [description]=\"'@dashboard:widgets.chart-card.empty-description'\" />\n }\n <!-- ----- Header-only ax-tabs; chart panes live outside the tab items ----- -->\n @else {\n <!--------------------------------------------------------------->\n <!-- ----- Tab strip when more than one chart is configured ----- -->\n @if (tabStrip().length > 1) {\n <ax-tabs class=\"axp-chart-query-tabs\" [look]=\"'with-line'\" [location]=\"'bottom'\" [fitParent]=\"true\" (onActiveTabChanged)=\"onActiveTabChanged($event)\">\n @for (tab of tabStrip(); track tabStripKey(tab, $index)) {\n <ax-tab-item [key]=\"tabStripKey(tab, $index)\" [text]=\"tab.label\" [active]=\"activeTabIndex() === $index\"></ax-tab-item>\n }\n </ax-tabs>\n }\n <div class=\"axp-chart-widget-host__body\">\n @for (pane of renderedPanes(); track pane.key) {\n <div\n class=\"axp-chart-widget-host__pane\"\n [class.axp-chart-widget-host__pane--inactive]=\"pane.index !== activeTabIndex()\"\n [style.visibility]=\"pane.index === activeTabIndex() ? 'visible' : 'hidden'\"\n [attr.aria-hidden]=\"pane.index !== activeTabIndex()\"\n >\n <!--------------------------------------------------------------->\n <!-- ----- Incomplete tab: type or query is missing ----- -->\n @if (!isTabConfigured(pane.node)) {\n <axp-state-message icon=\"fa-light fa-triangle-exclamation\" [title]=\"'@dashboard:widgets.chart-card.incomplete-title'\" [description]=\"'@dashboard:widgets.chart-card.incomplete-description'\" />\n }\n <!-- ----- Typed chart stays mounted after first visit ----- -->\n @else {\n <ng-container axp-widget-renderer [node]=\"pane.node\" [mode]=\"'view'\"></ng-container>\n }\n </div>\n }\n </div>\n }\n</div>\n", styles: ["@layer properties;:host{display:block;width:100%;height:100%;min-height:0px;overflow:hidden}:host:has(.axp-chart-widget-host__chart--heatmap){block-size:auto;overflow:visible;min-block-size:0}.axp-chart-widget-host{display:flex;height:100%;min-height:0px;width:100%;flex-direction:column;gap:var(--spacing, .25rem)}.axp-chart-widget-host:has(.axp-chart-widget-host__chart--heatmap){block-size:auto;min-block-size:0;overflow:visible}.axp-chart-widget-host__body{display:flex;min-height:0px;flex:1;flex-direction:column;gap:var(--spacing, .25rem);padding-bottom:calc(var(--spacing, .25rem) * 2)}.axp-chart-widget-host__body:not(.axp-chart-widget-host__body--with-legend)>.axp-chart-widget-host__chart--radial{flex:1 1 auto}.axp-chart-widget-host__body--with-legend{min-height:0px;flex:1;gap:var(--spacing, .25rem);display:grid;grid-template-rows:minmax(0,1fr) auto}.axp-chart-widget-host__chart{position:relative;min-height:calc(var(--spacing, .25rem) * 64);width:100%;overflow:hidden;grid-row:1}.axp-chart-widget-host__chart--radial{position:relative;margin-inline:auto;align-self:center;justify-self:center;overflow:hidden;grid-row:1;flex:0 0 auto;height:auto;width:min(100%,18rem);max-width:100%;min-height:12rem;min-width:8rem;aspect-ratio:1 / 1}.axp-chart-widget-host__chart--funnel{position:relative;width:100%;overflow:hidden;block-size:20rem;flex:0 0 auto;max-block-size:24rem;min-block-size:16rem}.axp-chart-widget-host__chart--funnel ax-funnel-chart,.axp-chart-widget-host__chart--funnel .ax-funnel-chart-container{display:block;block-size:100%;inline-size:100%;min-block-size:0}.axp-chart-widget-host__body:has(.axp-chart-widget-host__chart--funnel){flex:none}.axp-chart-widget-host__chart--heatmap{position:relative;width:100%;max-width:100%;inline-size:100%;block-size:auto;flex:0 0 auto;overflow:visible;min-height:0!important;min-block-size:0!important;max-block-size:none}.axp-chart-widget-host__chart--heatmap ax-heatmap-chart,.axp-chart-widget-host__chart--heatmap .ax-heatmap-chart-container{display:block;inline-size:100%;max-inline-size:100%;block-size:auto;min-block-size:0;overflow:visible}.axp-chart-widget-host__body:has(.axp-chart-widget-host__chart--heatmap){flex:none;block-size:auto;min-block-size:0;overflow:visible}.axp-chart-widget-host__legend{width:100%;flex:none;grid-row:2;min-height:0;min-width:0;max-width:100%;display:flex;justify-content:flex-start;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:rgb(var(--ax-sys-color-border-lighter-surface)) transparent}:host ::ng-deep ax-chart-legend{display:block!important;height:auto!important;max-height:none;width:max-content;min-width:100%;max-width:none}:host ::ng-deep .ax-chart-legend{--ax-legend-bg: var(--ax-sys-color-lighter-surface);--ax-legend-text: var(--ax-sys-color-on-lighter-surface);--ax-legend-border: var(--ax-sys-color-border-lighter-surface);--ax-legend-radius: .625rem;--ax-legend-padding: .375rem .5rem;--ax-legend-gap: .375rem;--ax-legend-item-height: auto;height:auto;max-height:none;width:100%;overflow:visible;padding:var(--ax-legend-padding);gap:var(--ax-legend-gap);color:rgb(var(--ax-legend-text))}:host ::ng-deep .ax-chart-legend.ax-legend-horizontal{flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:flex-start;width:max-content;min-width:100%;max-width:none;overflow:visible;border:none;background:transparent;background-color:transparent;padding:.125rem .75rem .7rem;gap:.5rem}:host ::ng-deep .ax-legend-item{align-items:center;flex-shrink:0;gap:.375rem;height:auto;min-height:1.5rem;padding-block:.2rem;padding-inline:.5rem;border-radius:9999px;border:1px solid rgb(var(--ax-sys-color-border-lightest-surface));background-color:rgb(var(--ax-sys-color-lightest-surface));white-space:nowrap;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease,transform .15s ease}:host ::ng-deep .ax-legend-item:hover{border-color:rgb(var(--ax-sys-color-primary-500));background-color:rgb(var(--ax-sys-color-primary-500));box-shadow:0 1px 2px #0f172a0f}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-item:hover{border-color:color-mix(in srgb,rgb(var(--ax-sys-color-primary-500)) 35%,rgb(var(--ax-sys-color-border-lightest-surface)))}}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-item:hover{background-color:color-mix(in srgb,rgb(var(--ax-sys-color-primary-500)) 6%,rgb(var(--ax-sys-color-lightest-surface)))}}:host ::ng-deep .ax-legend-item:active{transform:scale(.98)}:host ::ng-deep .ax-legend-item.ax-legend-item-hidden{opacity:.62}:host ::ng-deep .ax-legend-color{width:.625rem;height:.625rem;flex-shrink:0;border-radius:9999px;box-shadow:0 0 0 1px rgb(var(--ax-legend-text))}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-color{box-shadow:0 0 0 1px color-mix(in srgb,rgb(var(--ax-legend-text)) 18%,transparent)}}:host ::ng-deep .ax-legend-name{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);max-width:9rem;overflow:hidden;text-overflow:ellipsis}:host ::ng-deep .ax-legend-value{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);margin-inline-start:0;opacity:1;color:rgb(var(--ax-sys-color-on-lightest-surface))}:host ::ng-deep .ax-legend-percentage{margin-inline-start:0;border-radius:9999px;padding-inline:.4rem;padding-block:.125rem;font-size:.6875rem;line-height:1;font-weight:600;font-variant-numeric:tabular-nums;background-color:rgb(var(--ax-legend-text))}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-percentage{background-color:color-mix(in srgb,rgb(var(--ax-legend-text)) 12%,transparent)}}:host ::ng-deep ax-donut-chart,:host ::ng-deep ax-gauge-chart,:host ::ng-deep ax-bar-chart,:host ::ng-deep ax-line-chart,:host ::ng-deep ax-funnel-chart{display:block!important;width:100%!important;height:100%!important;min-height:0!important;max-height:100%!important}:host ::ng-deep .axp-chart-widget-host__chart--heatmap ax-heatmap-chart{display:block!important;width:100%!important;max-width:100%!important;height:auto!important;min-height:0!important;max-height:none!important;overflow:visible!important}:host ::ng-deep ax-donut-chart .ax-donut-chart,:host ::ng-deep ax-gauge-chart .ax-gauge-chart,:host ::ng-deep ax-bar-chart .ax-bar-chart,:host ::ng-deep ax-line-chart .ax-line-chart,:host ::ng-deep ax-funnel-chart .ax-funnel-chart-container{min-height:0!important;height:100%!important;width:100%!important;padding:.25rem!important}:host ::ng-deep .axp-chart-widget-host__chart--heatmap ax-heatmap-chart .ax-heatmap-chart-container,:host ::ng-deep .axp-chart-widget-host__chart--heatmap .ax-heatmap-chart{min-height:0!important;height:auto!important;width:100%!important;max-width:100%!important;padding:.25rem!important;overflow:visible!important}:host ::ng-deep .axp-chart-widget-host__chart--heatmap svg{display:block;width:100%!important;max-width:100%!important;height:auto!important;overflow:visible!important}:host:has(.ax-chart-empty){block-size:100%;overflow:hidden}.axp-chart-widget-host:has(.ax-chart-empty){block-size:100%;overflow:hidden}.axp-chart-widget-host__body:has(.ax-chart-empty){flex:1 1 auto;min-block-size:0;overflow:hidden}.axp-chart-widget-host__chart--heatmap:has(.ax-chart-empty){flex:1 1 auto;block-size:100%;min-block-size:16rem!important;overflow:hidden}:host ::ng-deep .axp-chart-widget-host__chart--heatmap:has(.ax-chart-empty) ax-heatmap-chart,:host ::ng-deep .axp-chart-widget-host__chart--heatmap:has(.ax-chart-empty) ax-heatmap-chart .ax-heatmap-chart-container{display:block!important;width:100%!important;max-width:100%!important;height:100%!important;min-height:16rem!important;max-height:none!important;overflow:hidden!important}.axp-chart-query-tabs{margin-bottom:.25rem}:host ::ng-deep ax-tabs.axp-chart-query-tabs.ax-tabs-fit.ax-bottom>ax-tab-item,:host ::ng-deep ax-tabs.axp-chart-query-tabs.ax-tabs-fit.ax-top>ax-tab-item{min-width:max-content}.axp-chart-widget-host__body{position:relative}.axp-chart-widget-host__pane{display:flex;flex:1 1 auto;min-height:0;flex-direction:column}.axp-chart-widget-host__pane--inactive{position:absolute;inset:0;pointer-events:none}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-ordinal{syntax: \"*\"; inherits: false;}@property --tw-slashed-zero{syntax: \"*\"; inherits: false;}@property --tw-numeric-figure{syntax: \"*\"; inherits: false;}@property --tw-numeric-spacing{syntax: \"*\"; inherits: false;}@property --tw-numeric-fraction{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial;--tw-ordinal: initial;--tw-slashed-zero: initial;--tw-numeric-figure: initial;--tw-numeric-spacing: initial;--tw-numeric-fraction: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i1.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "reorderable", "reorderDelay", "renderMode", "stacked", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged", "onTabsReordered"] }, { kind: "component", type: i1.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "directive", type: i3.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }, { kind: "component", type: AXPStateMessageComponent, selector: "axp-state-message", inputs: ["mode", "icon", "title", "description", "titleParams", "descriptionParams", "look"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
119
119
|
}
|
|
120
120
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPChartCardWidgetViewComponent, decorators: [{
|
|
121
121
|
type: Component,
|
|
122
|
-
args: [{ imports: [AXTabsModule, AXPWidgetCoreModule, AXPStateMessageComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"axp-chart-widget-host\">\n @if (tabNodes().length === 0) {\n <!-- ----- Empty card when no chart tabs are configured ----- -->\n <axp-state-message icon=\"fa-light fa-chart-mixed\" [title]=\"'@dashboard:widgets.chart-card.empty-title'\" [description]=\"'@dashboard:widgets.chart-card.empty-description'\" />\n }\n <!-- ----- Header-only ax-tabs; chart panes live outside the tab items ----- -->\n @else {\n <!--------------------------------------------------------------->\n <!-- ----- Tab strip when more than one chart is configured ----- -->\n @if (tabStrip().length > 1) {\n <ax-tabs class=\"axp-chart-query-tabs\" [look]=\"'with-line'\" [location]=\"'bottom'\" [fitParent]=\"true\" (onActiveTabChanged)=\"onActiveTabChanged($event)\">\n @for (tab of tabStrip(); track tabStripKey(tab, $index)) {\n <ax-tab-item [key]=\"tabStripKey(tab, $index)\" [text]=\"tab.label\" [active]=\"activeTabIndex() === $index\"></ax-tab-item>\n }\n </ax-tabs>\n }\n <div class=\"axp-chart-widget-host__body\">\n @for (pane of renderedPanes(); track pane.key) {\n <div\n class=\"axp-chart-widget-host__pane\"\n [class.axp-chart-widget-host__pane--inactive]=\"pane.index !== activeTabIndex()\"\n [style.visibility]=\"pane.index === activeTabIndex() ? 'visible' : 'hidden'\"\n [attr.aria-hidden]=\"pane.index !== activeTabIndex()\"\n >\n <!--------------------------------------------------------------->\n <!-- ----- Incomplete tab: type or query is missing ----- -->\n @if (!isTabConfigured(pane.node)) {\n <axp-state-message icon=\"fa-light fa-triangle-exclamation\" [title]=\"'@dashboard:widgets.chart-card.incomplete-title'\" [description]=\"'@dashboard:widgets.chart-card.incomplete-description'\" />\n }\n <!-- ----- Typed chart stays mounted after first visit ----- -->\n @else {\n <ng-container axp-widget-renderer [node]=\"pane.node\" [mode]=\"'view'\"></ng-container>\n }\n </div>\n }\n </div>\n }\n</div>\n", styles: ["@layer properties;:host{display:block;width:100%;height:100%;min-height:0px;overflow:hidden}:host:has(.axp-chart-widget-host__chart--heatmap){block-size:auto;overflow:visible;min-block-size:0}.axp-chart-widget-host{display:flex;height:100%;min-height:0px;width:100%;flex-direction:column;gap:var(--spacing, .25rem)}.axp-chart-widget-host:has(.axp-chart-widget-host__chart--heatmap){block-size:auto;min-block-size:0;overflow:visible}.axp-chart-widget-host__body{display:flex;min-height:0px;flex:1;flex-direction:column;gap:var(--spacing, .25rem);padding-bottom:calc(var(--spacing, .25rem) * 2)}.axp-chart-widget-host__body:not(.axp-chart-widget-host__body--with-legend)>.axp-chart-widget-host__chart--radial{flex:1 1 auto}.axp-chart-widget-host__body--with-legend{min-height:0px;flex:1;gap:var(--spacing, .25rem);display:grid;grid-template-rows:minmax(0,1fr) auto}.axp-chart-widget-host__chart{position:relative;min-height:calc(var(--spacing, .25rem) * 64);width:100%;overflow:hidden;grid-row:1}.axp-chart-widget-host__chart--radial{position:relative;margin-inline:auto;align-self:center;justify-self:center;overflow:hidden;grid-row:1;flex:0 0 auto;height:auto;width:min(100%,18rem);max-width:100%;min-height:12rem;min-width:8rem;aspect-ratio:1 / 1}.axp-chart-widget-host__chart--funnel{position:relative;width:100%;overflow:hidden;block-size:20rem;flex:0 0 auto;max-block-size:24rem;min-block-size:16rem}.axp-chart-widget-host__chart--funnel ax-funnel-chart,.axp-chart-widget-host__chart--funnel .ax-funnel-chart-container{display:block;block-size:100%;inline-size:100%;min-block-size:0}.axp-chart-widget-host__body:has(.axp-chart-widget-host__chart--funnel){flex:none}.axp-chart-widget-host__chart--heatmap{position:relative;width:100%;max-width:100%;inline-size:100%;block-size:auto;flex:0 0 auto;overflow:visible;min-height:0!important;min-block-size:0!important;max-block-size:none}.axp-chart-widget-host__chart--heatmap ax-heatmap-chart,.axp-chart-widget-host__chart--heatmap .ax-heatmap-chart-container{display:block;inline-size:100%;max-inline-size:100%;block-size:auto;min-block-size:0;overflow:visible}.axp-chart-widget-host__body:has(.axp-chart-widget-host__chart--heatmap){flex:none;block-size:auto;min-block-size:0;overflow:visible}.axp-chart-widget-host__legend{width:100%;flex:none;grid-row:2;min-height:0;min-width:0;max-width:100%;display:flex;justify-content:flex-start;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:rgb(var(--ax-sys-color-border-lighter-surface)) transparent}:host ::ng-deep ax-chart-legend{display:block!important;height:auto!important;max-height:none;width:max-content;min-width:100%;max-width:none}:host ::ng-deep .ax-chart-legend{--ax-legend-bg: var(--ax-sys-color-lighter-surface);--ax-legend-text: var(--ax-sys-color-on-lighter-surface);--ax-legend-border: var(--ax-sys-color-border-lighter-surface);--ax-legend-radius: .625rem;--ax-legend-padding: .375rem .5rem;--ax-legend-gap: .375rem;--ax-legend-item-height: auto;height:auto;max-height:none;width:100%;overflow:visible;padding:var(--ax-legend-padding);gap:var(--ax-legend-gap);color:rgb(var(--ax-legend-text))}:host ::ng-deep .ax-chart-legend.ax-legend-horizontal{flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:flex-start;width:max-content;min-width:100%;max-width:none;overflow:visible;border:none;background:transparent;background-color:transparent;padding:.125rem .75rem .7rem;gap:.5rem}:host ::ng-deep .ax-legend-item{align-items:center;flex-shrink:0;gap:.375rem;height:auto;min-height:1.5rem;padding-block:.2rem;padding-inline:.5rem;border-radius:9999px;border:1px solid rgb(var(--ax-sys-color-border-lightest-surface));background-color:rgb(var(--ax-sys-color-lightest-surface));white-space:nowrap;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease,transform .15s ease}:host ::ng-deep .ax-legend-item:hover{border-color:rgb(var(--ax-sys-color-primary-500));background-color:rgb(var(--ax-sys-color-primary-500));box-shadow:0 1px 2px #0f172a0f}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-item:hover{border-color:color-mix(in srgb,rgb(var(--ax-sys-color-primary-500)) 35%,rgb(var(--ax-sys-color-border-lightest-surface)))}}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-item:hover{background-color:color-mix(in srgb,rgb(var(--ax-sys-color-primary-500)) 6%,rgb(var(--ax-sys-color-lightest-surface)))}}:host ::ng-deep .ax-legend-item:active{transform:scale(.98)}:host ::ng-deep .ax-legend-item.ax-legend-item-hidden{opacity:.62}:host ::ng-deep .ax-legend-color{width:.625rem;height:.625rem;flex-shrink:0;border-radius:9999px;box-shadow:0 0 0 1px rgb(var(--ax-legend-text))}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-color{box-shadow:0 0 0 1px color-mix(in srgb,rgb(var(--ax-legend-text)) 18%,transparent)}}:host ::ng-deep .ax-legend-name{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);max-width:9rem;overflow:hidden;text-overflow:ellipsis}:host ::ng-deep .ax-legend-value{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);margin-inline-start:0;opacity:1;color:rgb(var(--ax-sys-color-on-lightest-surface))}:host ::ng-deep .ax-legend-percentage{margin-inline-start:0;border-radius:9999px;padding-inline:.4rem;padding-block:.125rem;font-size:.6875rem;line-height:1;font-weight:600;font-variant-numeric:tabular-nums;background-color:rgb(var(--ax-legend-text))}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-percentage{background-color:color-mix(in srgb,rgb(var(--ax-legend-text)) 12%,transparent)}}:host ::ng-deep ax-donut-chart,:host ::ng-deep ax-gauge-chart,:host ::ng-deep ax-bar-chart,:host ::ng-deep ax-line-chart,:host ::ng-deep ax-funnel-chart{display:block!important;width:100%!important;height:100%!important;min-height:0!important;max-height:100%!important}:host ::ng-deep .axp-chart-widget-host__chart--heatmap ax-heatmap-chart{display:block!important;width:100%!important;max-width:100%!important;height:auto!important;min-height:0!important;max-height:none!important;overflow:visible!important}:host ::ng-deep ax-donut-chart .ax-donut-chart,:host ::ng-deep ax-gauge-chart .ax-gauge-chart,:host ::ng-deep ax-bar-chart .ax-bar-chart,:host ::ng-deep ax-line-chart .ax-line-chart,:host ::ng-deep ax-funnel-chart .ax-funnel-chart-container{min-height:0!important;height:100%!important;width:100%!important;padding:.25rem!important}:host ::ng-deep .axp-chart-widget-host__chart--heatmap ax-heatmap-chart .ax-heatmap-chart-container,:host ::ng-deep .axp-chart-widget-host__chart--heatmap .ax-heatmap-chart{min-height:0!important;height:auto!important;width:100%!important;max-width:100%!important;padding:.25rem!important;overflow:visible!important}:host ::ng-deep .axp-chart-widget-host__chart--heatmap svg{display:block;width:100%!important;max-width:100%!important;height:auto!important;overflow:visible!important}.axp-chart-query-tabs{margin-bottom:.25rem}:host ::ng-deep ax-tabs.axp-chart-query-tabs.ax-tabs-fit.ax-bottom>ax-tab-item,:host ::ng-deep ax-tabs.axp-chart-query-tabs.ax-tabs-fit.ax-top>ax-tab-item{min-width:max-content}.axp-chart-widget-host__body{position:relative}.axp-chart-widget-host__pane{display:flex;flex:1 1 auto;min-height:0;flex-direction:column}.axp-chart-widget-host__pane--inactive{position:absolute;inset:0;pointer-events:none}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-ordinal{syntax: \"*\"; inherits: false;}@property --tw-slashed-zero{syntax: \"*\"; inherits: false;}@property --tw-numeric-figure{syntax: \"*\"; inherits: false;}@property --tw-numeric-spacing{syntax: \"*\"; inherits: false;}@property --tw-numeric-fraction{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial;--tw-ordinal: initial;--tw-slashed-zero: initial;--tw-numeric-figure: initial;--tw-numeric-spacing: initial;--tw-numeric-fraction: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
|
|
122
|
+
args: [{ imports: [AXTabsModule, AXPWidgetCoreModule, AXPStateMessageComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"axp-chart-widget-host\">\n @if (tabNodes().length === 0) {\n <!-- ----- Empty card when no chart tabs are configured ----- -->\n <axp-state-message icon=\"fa-light fa-chart-mixed\" [title]=\"'@dashboard:widgets.chart-card.empty-title'\" [description]=\"'@dashboard:widgets.chart-card.empty-description'\" />\n }\n <!-- ----- Header-only ax-tabs; chart panes live outside the tab items ----- -->\n @else {\n <!--------------------------------------------------------------->\n <!-- ----- Tab strip when more than one chart is configured ----- -->\n @if (tabStrip().length > 1) {\n <ax-tabs class=\"axp-chart-query-tabs\" [look]=\"'with-line'\" [location]=\"'bottom'\" [fitParent]=\"true\" (onActiveTabChanged)=\"onActiveTabChanged($event)\">\n @for (tab of tabStrip(); track tabStripKey(tab, $index)) {\n <ax-tab-item [key]=\"tabStripKey(tab, $index)\" [text]=\"tab.label\" [active]=\"activeTabIndex() === $index\"></ax-tab-item>\n }\n </ax-tabs>\n }\n <div class=\"axp-chart-widget-host__body\">\n @for (pane of renderedPanes(); track pane.key) {\n <div\n class=\"axp-chart-widget-host__pane\"\n [class.axp-chart-widget-host__pane--inactive]=\"pane.index !== activeTabIndex()\"\n [style.visibility]=\"pane.index === activeTabIndex() ? 'visible' : 'hidden'\"\n [attr.aria-hidden]=\"pane.index !== activeTabIndex()\"\n >\n <!--------------------------------------------------------------->\n <!-- ----- Incomplete tab: type or query is missing ----- -->\n @if (!isTabConfigured(pane.node)) {\n <axp-state-message icon=\"fa-light fa-triangle-exclamation\" [title]=\"'@dashboard:widgets.chart-card.incomplete-title'\" [description]=\"'@dashboard:widgets.chart-card.incomplete-description'\" />\n }\n <!-- ----- Typed chart stays mounted after first visit ----- -->\n @else {\n <ng-container axp-widget-renderer [node]=\"pane.node\" [mode]=\"'view'\"></ng-container>\n }\n </div>\n }\n </div>\n }\n</div>\n", styles: ["@layer properties;:host{display:block;width:100%;height:100%;min-height:0px;overflow:hidden}:host:has(.axp-chart-widget-host__chart--heatmap){block-size:auto;overflow:visible;min-block-size:0}.axp-chart-widget-host{display:flex;height:100%;min-height:0px;width:100%;flex-direction:column;gap:var(--spacing, .25rem)}.axp-chart-widget-host:has(.axp-chart-widget-host__chart--heatmap){block-size:auto;min-block-size:0;overflow:visible}.axp-chart-widget-host__body{display:flex;min-height:0px;flex:1;flex-direction:column;gap:var(--spacing, .25rem);padding-bottom:calc(var(--spacing, .25rem) * 2)}.axp-chart-widget-host__body:not(.axp-chart-widget-host__body--with-legend)>.axp-chart-widget-host__chart--radial{flex:1 1 auto}.axp-chart-widget-host__body--with-legend{min-height:0px;flex:1;gap:var(--spacing, .25rem);display:grid;grid-template-rows:minmax(0,1fr) auto}.axp-chart-widget-host__chart{position:relative;min-height:calc(var(--spacing, .25rem) * 64);width:100%;overflow:hidden;grid-row:1}.axp-chart-widget-host__chart--radial{position:relative;margin-inline:auto;align-self:center;justify-self:center;overflow:hidden;grid-row:1;flex:0 0 auto;height:auto;width:min(100%,18rem);max-width:100%;min-height:12rem;min-width:8rem;aspect-ratio:1 / 1}.axp-chart-widget-host__chart--funnel{position:relative;width:100%;overflow:hidden;block-size:20rem;flex:0 0 auto;max-block-size:24rem;min-block-size:16rem}.axp-chart-widget-host__chart--funnel ax-funnel-chart,.axp-chart-widget-host__chart--funnel .ax-funnel-chart-container{display:block;block-size:100%;inline-size:100%;min-block-size:0}.axp-chart-widget-host__body:has(.axp-chart-widget-host__chart--funnel){flex:none}.axp-chart-widget-host__chart--heatmap{position:relative;width:100%;max-width:100%;inline-size:100%;block-size:auto;flex:0 0 auto;overflow:visible;min-height:0!important;min-block-size:0!important;max-block-size:none}.axp-chart-widget-host__chart--heatmap ax-heatmap-chart,.axp-chart-widget-host__chart--heatmap .ax-heatmap-chart-container{display:block;inline-size:100%;max-inline-size:100%;block-size:auto;min-block-size:0;overflow:visible}.axp-chart-widget-host__body:has(.axp-chart-widget-host__chart--heatmap){flex:none;block-size:auto;min-block-size:0;overflow:visible}.axp-chart-widget-host__legend{width:100%;flex:none;grid-row:2;min-height:0;min-width:0;max-width:100%;display:flex;justify-content:flex-start;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:rgb(var(--ax-sys-color-border-lighter-surface)) transparent}:host ::ng-deep ax-chart-legend{display:block!important;height:auto!important;max-height:none;width:max-content;min-width:100%;max-width:none}:host ::ng-deep .ax-chart-legend{--ax-legend-bg: var(--ax-sys-color-lighter-surface);--ax-legend-text: var(--ax-sys-color-on-lighter-surface);--ax-legend-border: var(--ax-sys-color-border-lighter-surface);--ax-legend-radius: .625rem;--ax-legend-padding: .375rem .5rem;--ax-legend-gap: .375rem;--ax-legend-item-height: auto;height:auto;max-height:none;width:100%;overflow:visible;padding:var(--ax-legend-padding);gap:var(--ax-legend-gap);color:rgb(var(--ax-legend-text))}:host ::ng-deep .ax-chart-legend.ax-legend-horizontal{flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:flex-start;width:max-content;min-width:100%;max-width:none;overflow:visible;border:none;background:transparent;background-color:transparent;padding:.125rem .75rem .7rem;gap:.5rem}:host ::ng-deep .ax-legend-item{align-items:center;flex-shrink:0;gap:.375rem;height:auto;min-height:1.5rem;padding-block:.2rem;padding-inline:.5rem;border-radius:9999px;border:1px solid rgb(var(--ax-sys-color-border-lightest-surface));background-color:rgb(var(--ax-sys-color-lightest-surface));white-space:nowrap;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease,opacity .15s ease,transform .15s ease}:host ::ng-deep .ax-legend-item:hover{border-color:rgb(var(--ax-sys-color-primary-500));background-color:rgb(var(--ax-sys-color-primary-500));box-shadow:0 1px 2px #0f172a0f}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-item:hover{border-color:color-mix(in srgb,rgb(var(--ax-sys-color-primary-500)) 35%,rgb(var(--ax-sys-color-border-lightest-surface)))}}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-item:hover{background-color:color-mix(in srgb,rgb(var(--ax-sys-color-primary-500)) 6%,rgb(var(--ax-sys-color-lightest-surface)))}}:host ::ng-deep .ax-legend-item:active{transform:scale(.98)}:host ::ng-deep .ax-legend-item.ax-legend-item-hidden{opacity:.62}:host ::ng-deep .ax-legend-color{width:.625rem;height:.625rem;flex-shrink:0;border-radius:9999px;box-shadow:0 0 0 1px rgb(var(--ax-legend-text))}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-color{box-shadow:0 0 0 1px color-mix(in srgb,rgb(var(--ax-legend-text)) 18%,transparent)}}:host ::ng-deep .ax-legend-name{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500);max-width:9rem;overflow:hidden;text-overflow:ellipsis}:host ::ng-deep .ax-legend-value{font-size:var(--text-xs, .75rem);line-height:var(--tw-leading, var(--text-xs--line-height, calc(1 / .75)));--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);margin-inline-start:0;opacity:1;color:rgb(var(--ax-sys-color-on-lightest-surface))}:host ::ng-deep .ax-legend-percentage{margin-inline-start:0;border-radius:9999px;padding-inline:.4rem;padding-block:.125rem;font-size:.6875rem;line-height:1;font-weight:600;font-variant-numeric:tabular-nums;background-color:rgb(var(--ax-legend-text))}@supports (color: color-mix(in lab,red,red)){:host ::ng-deep .ax-legend-percentage{background-color:color-mix(in srgb,rgb(var(--ax-legend-text)) 12%,transparent)}}:host ::ng-deep ax-donut-chart,:host ::ng-deep ax-gauge-chart,:host ::ng-deep ax-bar-chart,:host ::ng-deep ax-line-chart,:host ::ng-deep ax-funnel-chart{display:block!important;width:100%!important;height:100%!important;min-height:0!important;max-height:100%!important}:host ::ng-deep .axp-chart-widget-host__chart--heatmap ax-heatmap-chart{display:block!important;width:100%!important;max-width:100%!important;height:auto!important;min-height:0!important;max-height:none!important;overflow:visible!important}:host ::ng-deep ax-donut-chart .ax-donut-chart,:host ::ng-deep ax-gauge-chart .ax-gauge-chart,:host ::ng-deep ax-bar-chart .ax-bar-chart,:host ::ng-deep ax-line-chart .ax-line-chart,:host ::ng-deep ax-funnel-chart .ax-funnel-chart-container{min-height:0!important;height:100%!important;width:100%!important;padding:.25rem!important}:host ::ng-deep .axp-chart-widget-host__chart--heatmap ax-heatmap-chart .ax-heatmap-chart-container,:host ::ng-deep .axp-chart-widget-host__chart--heatmap .ax-heatmap-chart{min-height:0!important;height:auto!important;width:100%!important;max-width:100%!important;padding:.25rem!important;overflow:visible!important}:host ::ng-deep .axp-chart-widget-host__chart--heatmap svg{display:block;width:100%!important;max-width:100%!important;height:auto!important;overflow:visible!important}:host:has(.ax-chart-empty){block-size:100%;overflow:hidden}.axp-chart-widget-host:has(.ax-chart-empty){block-size:100%;overflow:hidden}.axp-chart-widget-host__body:has(.ax-chart-empty){flex:1 1 auto;min-block-size:0;overflow:hidden}.axp-chart-widget-host__chart--heatmap:has(.ax-chart-empty){flex:1 1 auto;block-size:100%;min-block-size:16rem!important;overflow:hidden}:host ::ng-deep .axp-chart-widget-host__chart--heatmap:has(.ax-chart-empty) ax-heatmap-chart,:host ::ng-deep .axp-chart-widget-host__chart--heatmap:has(.ax-chart-empty) ax-heatmap-chart .ax-heatmap-chart-container{display:block!important;width:100%!important;max-width:100%!important;height:100%!important;min-height:16rem!important;max-height:none!important;overflow:hidden!important}.axp-chart-query-tabs{margin-bottom:.25rem}:host ::ng-deep ax-tabs.axp-chart-query-tabs.ax-tabs-fit.ax-bottom>ax-tab-item,:host ::ng-deep ax-tabs.axp-chart-query-tabs.ax-tabs-fit.ax-top>ax-tab-item{min-width:max-content}.axp-chart-widget-host__body{position:relative}.axp-chart-widget-host__pane{display:flex;flex:1 1 auto;min-height:0;flex-direction:column}.axp-chart-widget-host__pane--inactive{position:absolute;inset:0;pointer-events:none}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-ordinal{syntax: \"*\"; inherits: false;}@property --tw-slashed-zero{syntax: \"*\"; inherits: false;}@property --tw-numeric-figure{syntax: \"*\"; inherits: false;}@property --tw-numeric-spacing{syntax: \"*\"; inherits: false;}@property --tw-numeric-fraction{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-font-weight: initial;--tw-ordinal: initial;--tw-slashed-zero: initial;--tw-numeric-figure: initial;--tw-numeric-spacing: initial;--tw-numeric-fraction: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
|
|
123
123
|
}] });
|
|
124
124
|
|
|
125
125
|
export { AXPChartCardWidgetViewComponent };
|
|
126
|
-
//# sourceMappingURL=acorex-platform-module-dashboard-management-client-chart-card-widget.component-
|
|
126
|
+
//# sourceMappingURL=acorex-platform-module-dashboard-management-client-chart-card-widget.component-B2ztaswG.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-dashboard-management-client-chart-card-widget.component-BYdlIBv9.mjs","sources":["../../../../libs/modules/dashboard-management/client/src/lib/features/shared/widgets/chart/chart-card/chart-card-widget.component.ts","../../../../libs/modules/dashboard-management/client/src/lib/features/shared/widgets/chart/chart-card/chart-card-widget.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXPStateMessageComponent } from '@acorex-platform/framework-client/layout/components';\nimport { AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXTabsModule, type AXTabStripChangedEvent } from '@acorex/components/tabs';\nimport { AXPMultiLanguageString, type AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\n\nimport { AXPDashboardWidgetComponent } from '../../dashboard-widget-base';\nimport {\n asChartTabWidgetNode,\n isChartTabConfigured,\n readChartTabTitle,\n} from '../chart-tab.util';\nimport type { AXPChartQueryTab } from '../chart-query-load.util';\n\n//#endregion\n\n//#region ----- Types -----\n\ninterface AXPChartCardRenderedPane {\n key: string;\n index: number;\n node: AXPWidgetNode;\n}\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n templateUrl: './chart-card-widget.component.html',\n styleUrls: ['./chart-card-widget.component.css'],\n imports: [AXTabsModule, AXPWidgetCoreModule, AXPStateMessageComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPChartCardWidgetViewComponent extends AXPDashboardWidgetComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly tabNodes = computed(() => {\n const raw = (this.options() as Record<string, unknown>)['tabs'];\n if (!Array.isArray(raw)) {\n return [] as AXPWidgetNode[];\n }\n return raw.map(asChartTabWidgetNode).filter((node): node is AXPWidgetNode => node != null);\n });\n\n protected readonly tabStrip = signal<AXPChartQueryTab[]>([]);\n\n protected readonly activeTabIndex = signal(0);\n\n /** Panes mounted on first visit. Existing entries keep the same node reference. */\n protected readonly renderedPanes = signal<readonly AXPChartCardRenderedPane[]>([]);\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected selectQueryTab(index: number): void {\n this.activeTabIndex.set(index);\n this.ensurePaneRendered(index);\n }\n\n protected onActiveTabChanged(event: AXTabStripChangedEvent): void {\n this.selectQueryTab(event.index);\n }\n\n protected isTabConfigured(node: AXPWidgetNode): boolean {\n return isChartTabConfigured(node);\n }\n\n protected tabStripKey(tab: AXPChartQueryTab, index: number): string {\n return `${tab.query}:${index}`;\n }\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n private readonly clampTabIndexEffect = effect(() => {\n const tabs = this.tabNodes();\n const current = this.activeTabIndex();\n const clamped = tabs.length === 0 ? 0 : Math.min(Math.max(current, 0), tabs.length - 1);\n if (clamped !== current) {\n this.activeTabIndex.set(clamped);\n }\n this.renderedPanes.update((panes) => this.reconcileRenderedPanes(panes, tabs, clamped));\n });\n\n private readonly resolveTabLabelsEffect = effect(() => {\n const nodes = this.tabNodes();\n void Promise.all(nodes.map((node) => this.resolveTabLabel(node))).then((labels) => {\n this.tabStrip.set(\n labels.map((label, index) => ({\n label,\n query: nodes[index]?.type ?? `tab-${index}`,\n queryInput: undefined,\n })),\n );\n });\n });\n\n //#endregion\n\n //#region ----- Localization -----\n\n private async resolveTabLabel(node: AXPWidgetNode): Promise<string> {\n const raw = readChartTabTitle(node);\n if (raw != null && typeof raw === 'object' && !Array.isArray(raw)) {\n return this.translationService.resolve(raw as AXPMultiLanguageString);\n }\n const text = String(raw ?? '').trim();\n if (text.startsWith('@')) {\n return this.translationService.translateAsync(text);\n }\n if (text) {\n return text;\n }\n return this.translationService.translateAsync('@dashboard:widgets.chart-card.untitled-tab');\n }\n\n //#endregion\n\n //#region ----- Tab panes -----\n\n private paneKey(node: AXPWidgetNode, index: number): string {\n const name = typeof node.name === 'string' ? node.name.trim() : '';\n return name || `${node.type}:${index}`;\n }\n\n private ensurePaneRendered(index: number): void {\n const tabs = this.tabNodes();\n this.renderedPanes.update((panes) => this.reconcileRenderedPanes(panes, tabs, index));\n }\n\n private reconcileRenderedPanes(\n panes: readonly AXPChartCardRenderedPane[],\n tabs: readonly AXPWidgetNode[],\n activateIndex: number,\n ): readonly AXPChartCardRenderedPane[] {\n const kept = panes.filter((pane) => pane.index >= 0 && pane.index < tabs.length);\n if (tabs.length > 0 && !kept.some((pane) => pane.index === activateIndex)) {\n const node = tabs[activateIndex];\n kept.push({\n key: this.paneKey(node, activateIndex),\n index: activateIndex,\n node,\n });\n }\n kept.sort((left, right) => left.index - right.index);\n if (kept.length === panes.length && kept.every((pane, index) => pane === panes[index])) {\n return panes;\n }\n return kept;\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"axp-chart-widget-host\">\n @if (tabNodes().length === 0) {\n <!-- ----- Empty card when no chart tabs are configured ----- -->\n <axp-state-message icon=\"fa-light fa-chart-mixed\" [title]=\"'@dashboard:widgets.chart-card.empty-title'\" [description]=\"'@dashboard:widgets.chart-card.empty-description'\" />\n }\n <!-- ----- Header-only ax-tabs; chart panes live outside the tab items ----- -->\n @else {\n <!--------------------------------------------------------------->\n <!-- ----- Tab strip when more than one chart is configured ----- -->\n @if (tabStrip().length > 1) {\n <ax-tabs class=\"axp-chart-query-tabs\" [look]=\"'with-line'\" [location]=\"'bottom'\" [fitParent]=\"true\" (onActiveTabChanged)=\"onActiveTabChanged($event)\">\n @for (tab of tabStrip(); track tabStripKey(tab, $index)) {\n <ax-tab-item [key]=\"tabStripKey(tab, $index)\" [text]=\"tab.label\" [active]=\"activeTabIndex() === $index\"></ax-tab-item>\n }\n </ax-tabs>\n }\n <div class=\"axp-chart-widget-host__body\">\n @for (pane of renderedPanes(); track pane.key) {\n <div\n class=\"axp-chart-widget-host__pane\"\n [class.axp-chart-widget-host__pane--inactive]=\"pane.index !== activeTabIndex()\"\n [style.visibility]=\"pane.index === activeTabIndex() ? 'visible' : 'hidden'\"\n [attr.aria-hidden]=\"pane.index !== activeTabIndex()\"\n >\n <!--------------------------------------------------------------->\n <!-- ----- Incomplete tab: type or query is missing ----- -->\n @if (!isTabConfigured(pane.node)) {\n <axp-state-message icon=\"fa-light fa-triangle-exclamation\" [title]=\"'@dashboard:widgets.chart-card.incomplete-title'\" [description]=\"'@dashboard:widgets.chart-card.incomplete-description'\" />\n }\n <!-- ----- Typed chart stays mounted after first visit ----- -->\n @else {\n <ng-container axp-widget-renderer [node]=\"pane.node\" [mode]=\"'view'\"></ng-container>\n }\n </div>\n }\n </div>\n }\n</div>\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-dashboard-management-client-chart-card-widget.component-B2ztaswG.mjs","sources":["../../../../libs/modules/dashboard-management/client/src/lib/features/shared/widgets/chart/chart-card/chart-card-widget.component.ts","../../../../libs/modules/dashboard-management/client/src/lib/features/shared/widgets/chart/chart-card/chart-card-widget.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXPStateMessageComponent } from '@acorex-platform/framework-client/layout/components';\nimport { AXPWidgetCoreModule } from '@acorex-platform/framework-client/layout/widget-core';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXTabsModule, type AXTabStripChangedEvent } from '@acorex/components/tabs';\nimport { AXPMultiLanguageString, type AXPWidgetNode } from '@acorex-platform/framework-shared/core';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, signal } from '@angular/core';\n\nimport { AXPDashboardWidgetComponent } from '../../dashboard-widget-base';\nimport {\n asChartTabWidgetNode,\n isChartTabConfigured,\n readChartTabTitle,\n} from '../chart-tab.util';\nimport type { AXPChartQueryTab } from '../chart-query-load.util';\n\n//#endregion\n\n//#region ----- Types -----\n\ninterface AXPChartCardRenderedPane {\n key: string;\n index: number;\n node: AXPWidgetNode;\n}\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n templateUrl: './chart-card-widget.component.html',\n styleUrls: ['./chart-card-widget.component.css'],\n imports: [AXTabsModule, AXPWidgetCoreModule, AXPStateMessageComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AXPChartCardWidgetViewComponent extends AXPDashboardWidgetComponent {\n //#region ----- Services & Dependencies -----\n\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- State Signals -----\n\n protected readonly tabNodes = computed(() => {\n const raw = (this.options() as Record<string, unknown>)['tabs'];\n if (!Array.isArray(raw)) {\n return [] as AXPWidgetNode[];\n }\n return raw.map(asChartTabWidgetNode).filter((node): node is AXPWidgetNode => node != null);\n });\n\n protected readonly tabStrip = signal<AXPChartQueryTab[]>([]);\n\n protected readonly activeTabIndex = signal(0);\n\n /** Panes mounted on first visit. Existing entries keep the same node reference. */\n protected readonly renderedPanes = signal<readonly AXPChartCardRenderedPane[]>([]);\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected selectQueryTab(index: number): void {\n this.activeTabIndex.set(index);\n this.ensurePaneRendered(index);\n }\n\n protected onActiveTabChanged(event: AXTabStripChangedEvent): void {\n this.selectQueryTab(event.index);\n }\n\n protected isTabConfigured(node: AXPWidgetNode): boolean {\n return isChartTabConfigured(node);\n }\n\n protected tabStripKey(tab: AXPChartQueryTab, index: number): string {\n return `${tab.query}:${index}`;\n }\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n private readonly clampTabIndexEffect = effect(() => {\n const tabs = this.tabNodes();\n const current = this.activeTabIndex();\n const clamped = tabs.length === 0 ? 0 : Math.min(Math.max(current, 0), tabs.length - 1);\n if (clamped !== current) {\n this.activeTabIndex.set(clamped);\n }\n this.renderedPanes.update((panes) => this.reconcileRenderedPanes(panes, tabs, clamped));\n });\n\n private readonly resolveTabLabelsEffect = effect(() => {\n const nodes = this.tabNodes();\n void Promise.all(nodes.map((node) => this.resolveTabLabel(node))).then((labels) => {\n this.tabStrip.set(\n labels.map((label, index) => ({\n label,\n query: nodes[index]?.type ?? `tab-${index}`,\n queryInput: undefined,\n })),\n );\n });\n });\n\n //#endregion\n\n //#region ----- Localization -----\n\n private async resolveTabLabel(node: AXPWidgetNode): Promise<string> {\n const raw = readChartTabTitle(node);\n if (raw != null && typeof raw === 'object' && !Array.isArray(raw)) {\n return this.translationService.resolve(raw as AXPMultiLanguageString);\n }\n const text = String(raw ?? '').trim();\n if (text.startsWith('@')) {\n return this.translationService.translateAsync(text);\n }\n if (text) {\n return text;\n }\n return this.translationService.translateAsync('@dashboard:widgets.chart-card.untitled-tab');\n }\n\n //#endregion\n\n //#region ----- Tab panes -----\n\n private paneKey(node: AXPWidgetNode, index: number): string {\n const name = typeof node.name === 'string' ? node.name.trim() : '';\n return name || `${node.type}:${index}`;\n }\n\n private ensurePaneRendered(index: number): void {\n const tabs = this.tabNodes();\n this.renderedPanes.update((panes) => this.reconcileRenderedPanes(panes, tabs, index));\n }\n\n private reconcileRenderedPanes(\n panes: readonly AXPChartCardRenderedPane[],\n tabs: readonly AXPWidgetNode[],\n activateIndex: number,\n ): readonly AXPChartCardRenderedPane[] {\n const kept = panes.filter((pane) => pane.index >= 0 && pane.index < tabs.length);\n if (tabs.length > 0 && !kept.some((pane) => pane.index === activateIndex)) {\n const node = tabs[activateIndex];\n kept.push({\n key: this.paneKey(node, activateIndex),\n index: activateIndex,\n node,\n });\n }\n kept.sort((left, right) => left.index - right.index);\n if (kept.length === panes.length && kept.every((pane, index) => pane === panes[index])) {\n return panes;\n }\n return kept;\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"axp-chart-widget-host\">\n @if (tabNodes().length === 0) {\n <!-- ----- Empty card when no chart tabs are configured ----- -->\n <axp-state-message icon=\"fa-light fa-chart-mixed\" [title]=\"'@dashboard:widgets.chart-card.empty-title'\" [description]=\"'@dashboard:widgets.chart-card.empty-description'\" />\n }\n <!-- ----- Header-only ax-tabs; chart panes live outside the tab items ----- -->\n @else {\n <!--------------------------------------------------------------->\n <!-- ----- Tab strip when more than one chart is configured ----- -->\n @if (tabStrip().length > 1) {\n <ax-tabs class=\"axp-chart-query-tabs\" [look]=\"'with-line'\" [location]=\"'bottom'\" [fitParent]=\"true\" (onActiveTabChanged)=\"onActiveTabChanged($event)\">\n @for (tab of tabStrip(); track tabStripKey(tab, $index)) {\n <ax-tab-item [key]=\"tabStripKey(tab, $index)\" [text]=\"tab.label\" [active]=\"activeTabIndex() === $index\"></ax-tab-item>\n }\n </ax-tabs>\n }\n <div class=\"axp-chart-widget-host__body\">\n @for (pane of renderedPanes(); track pane.key) {\n <div\n class=\"axp-chart-widget-host__pane\"\n [class.axp-chart-widget-host__pane--inactive]=\"pane.index !== activeTabIndex()\"\n [style.visibility]=\"pane.index === activeTabIndex() ? 'visible' : 'hidden'\"\n [attr.aria-hidden]=\"pane.index !== activeTabIndex()\"\n >\n <!--------------------------------------------------------------->\n <!-- ----- Incomplete tab: type or query is missing ----- -->\n @if (!isTabConfigured(pane.node)) {\n <axp-state-message icon=\"fa-light fa-triangle-exclamation\" [title]=\"'@dashboard:widgets.chart-card.incomplete-title'\" [description]=\"'@dashboard:widgets.chart-card.incomplete-description'\" />\n }\n <!-- ----- Typed chart stays mounted after first visit ----- -->\n @else {\n <ng-container axp-widget-renderer [node]=\"pane.node\" [mode]=\"'view'\"></ng-container>\n }\n </div>\n }\n </div>\n }\n</div>\n"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import * as i0 from '@angular/core';
|
|
|
3
3
|
import { model, input, computed, effect, untracked, ChangeDetectionStrategy, Component, signal } from '@angular/core';
|
|
4
4
|
import { isEqual } from 'lodash-es';
|
|
5
5
|
import { AXPItemConfiguratorComponent } from '@acorex-platform/framework-client/layout/components';
|
|
6
|
-
import { c as chartTypeUsesColorRules, a as chartTypeUsesAxisLabels, r as readStashedChartAppearance, A as AXP_CHART_CONFIGURATOR_DEFAULT_TYPE, o as optionsAfterChartTypeSwitch } from './acorex-platform-module-dashboard-management-client-acorex-platform-module-dashboard-management-client-
|
|
6
|
+
import { c as chartTypeUsesColorRules, a as chartTypeUsesAxisLabels, r as readStashedChartAppearance, A as AXP_CHART_CONFIGURATOR_DEFAULT_TYPE, o as optionsAfterChartTypeSwitch } from './acorex-platform-module-dashboard-management-client-acorex-platform-module-dashboard-management-client-61Q_QY8l.mjs';
|
|
7
7
|
import { AXPWidgetsCatalog, AXPWidgetsList, coerceUnknownToMultiLanguageString, hasMultiLanguageContent } from '@acorex-platform/framework-shared/core';
|
|
8
8
|
import { AXP_CHART_QUERY_RESULT_TYPE, RootConfig } from '@acorex-platform/module-dashboard-management-client/contracts';
|
|
9
9
|
import { AXP_APPEARANCE_PROPERTY_GROUP, AXP_DATA_PROPERTY_GROUP } from '@acorex-platform/framework-client/layout/widgets';
|
|
@@ -556,4 +556,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
556
556
|
}], propDecorators: { widgetModel: [{ type: i0.Input, args: [{ isSignal: true, alias: "widgetModel", required: false }] }, { type: i0.Output, args: ["widgetModelChange"] }] } });
|
|
557
557
|
|
|
558
558
|
export { AXMChartConfiguratorWidgetEditComponent };
|
|
559
|
-
//# sourceMappingURL=acorex-platform-module-dashboard-management-client-chart-configurator-widget-edit.component-
|
|
559
|
+
//# sourceMappingURL=acorex-platform-module-dashboard-management-client-chart-configurator-widget-edit.component-BgR51eZ1.mjs.map
|