@quicdata/analytics 0.0.11 → 0.0.13

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/core/auth.d.ts CHANGED
@@ -1,19 +1,43 @@
1
1
  /**
2
- * Analytics API auth: Bearer token for all requests (reports, widgets, datasets).
3
- * Set once via setAnalyticsApiKey(); every fetch in this package will include it.
2
+ * Analytics API request configuration.
3
+ *
4
+ * Supports two header source types:
5
+ * - Static: fixed value set at config time (e.g. Bearer token)
6
+ * - localStorage: value read from localStorage on each request (e.g. org ID)
4
7
  */
8
+ export interface AnalyticsHeaderSource {
9
+ /** Header name (e.g. 'Authorization', 'X-Organization-Id') */
10
+ header: string;
11
+ /** Fixed value — sent as-is on every request */
12
+ value?: string;
13
+ /** localStorage key — read on each request, header omitted if key is absent */
14
+ localStorageKey?: string;
15
+ }
5
16
  /**
6
- * Set the API key (Bearer token) for all subsequent analytics API requests.
7
- * Pass null or '' to clear. Used by report, chart widget, and table widget requests.
17
+ * Configure custom headers for all analytics API requests.
18
+ * Replaces any previously configured headers.
19
+ *
20
+ * @example
21
+ * // Bearer token (static)
22
+ * setAnalyticsHeaders([
23
+ * { header: 'Authorization', value: 'Bearer xxx' },
24
+ * ]);
25
+ *
26
+ * // Org ID from localStorage (dynamic)
27
+ * setAnalyticsHeaders([
28
+ * { header: 'X-Organization-Id', localStorageKey: 'current_org_id' },
29
+ * ]);
30
+ *
31
+ * // Both
32
+ * setAnalyticsHeaders([
33
+ * { header: 'Authorization', value: 'Bearer xxx' },
34
+ * { header: 'X-Organization-Id', localStorageKey: 'current_org_id' },
35
+ * ]);
8
36
  */
9
- export declare function setAnalyticsApiKey(key: string | null): void;
37
+ export declare function setAnalyticsHeaders(sources: AnalyticsHeaderSource[]): void;
10
38
  /**
11
- * Get the current API key (for tests or inspection). Prefer setAnalyticsApiKey for configuration.
12
- */
13
- export declare function getAnalyticsApiKey(): string | null;
14
- /**
15
- * Request init options for fetch: credentials and optional Authorization header.
16
- * Use in all analytics fetch() calls so Bearer token is applied when set.
39
+ * Request init options for fetch: credentials + configured headers.
40
+ * Use in all analytics fetch() calls.
17
41
  */
18
42
  export declare function getAnalyticsRequestInit(init?: RequestInit): RequestInit;
19
43
  //# sourceMappingURL=auth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../libs/analytics/src/core/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAE3D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAElD;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,WAAW,CAWvE"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../libs/analytics/src/core/auth.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,qBAAqB;IACpC,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAID;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAG1E;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,WAAW,CA2BvE"}
package/core/auth.js CHANGED
@@ -1,34 +1,62 @@
1
1
  /**
2
- * Analytics API auth: Bearer token for all requests (reports, widgets, datasets).
3
- * Set once via setAnalyticsApiKey(); every fetch in this package will include it.
2
+ * Analytics API request configuration.
3
+ *
4
+ * Supports two header source types:
5
+ * - Static: fixed value set at config time (e.g. Bearer token)
6
+ * - localStorage: value read from localStorage on each request (e.g. org ID)
4
7
  */
5
- let apiKey = null;
8
+ const headerSources = [];
6
9
  /**
7
- * Set the API key (Bearer token) for all subsequent analytics API requests.
8
- * Pass null or '' to clear. Used by report, chart widget, and table widget requests.
10
+ * Configure custom headers for all analytics API requests.
11
+ * Replaces any previously configured headers.
12
+ *
13
+ * @example
14
+ * // Bearer token (static)
15
+ * setAnalyticsHeaders([
16
+ * { header: 'Authorization', value: 'Bearer xxx' },
17
+ * ]);
18
+ *
19
+ * // Org ID from localStorage (dynamic)
20
+ * setAnalyticsHeaders([
21
+ * { header: 'X-Organization-Id', localStorageKey: 'current_org_id' },
22
+ * ]);
23
+ *
24
+ * // Both
25
+ * setAnalyticsHeaders([
26
+ * { header: 'Authorization', value: 'Bearer xxx' },
27
+ * { header: 'X-Organization-Id', localStorageKey: 'current_org_id' },
28
+ * ]);
9
29
  */
10
- export function setAnalyticsApiKey(key) {
11
- apiKey = key && String(key).trim() ? String(key).trim() : null;
30
+ export function setAnalyticsHeaders(sources) {
31
+ headerSources.length = 0;
32
+ headerSources.push(...sources);
12
33
  }
13
34
  /**
14
- * Get the current API key (for tests or inspection). Prefer setAnalyticsApiKey for configuration.
15
- */
16
- export function getAnalyticsApiKey() {
17
- return apiKey;
18
- }
19
- /**
20
- * Request init options for fetch: credentials and optional Authorization header.
21
- * Use in all analytics fetch() calls so Bearer token is applied when set.
35
+ * Request init options for fetch: credentials + configured headers.
36
+ * Use in all analytics fetch() calls.
22
37
  */
23
38
  export function getAnalyticsRequestInit(init) {
24
39
  const base = {
25
40
  credentials: 'same-origin',
26
41
  ...init,
27
42
  };
28
- if (apiKey) {
29
- const headers = new Headers(init?.headers);
30
- headers.set('Authorization', `Bearer ${apiKey}`);
31
- return { ...base, headers };
43
+ if (headerSources.length === 0) {
44
+ return base;
45
+ }
46
+ const headers = new Headers(init?.headers);
47
+ let added = false;
48
+ for (const src of headerSources) {
49
+ if (src.value) {
50
+ headers.set(src.header, src.value);
51
+ added = true;
52
+ }
53
+ else if (src.localStorageKey && typeof localStorage !== 'undefined') {
54
+ const val = localStorage.getItem(src.localStorageKey);
55
+ if (val) {
56
+ headers.set(src.header, val);
57
+ added = true;
58
+ }
59
+ }
32
60
  }
33
- return base;
61
+ return added ? { ...base, headers } : base;
34
62
  }
@@ -108,6 +108,8 @@ export interface WidgetDataApiResponse {
108
108
  refresh_rate?: number;
109
109
  /** When true, widget filter toolbar is hidden and widget filter params are not sent. */
110
110
  hide_filter?: boolean;
111
+ /** ECharts option overrides from widget definition (merged on top of buildOption result). */
112
+ options?: Record<string, unknown>;
111
113
  }
112
114
  /**
113
115
  * Fetch widget data from Laravel widget/data endpoint. Returns full response including filters and refresh_rate.
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-data.d.ts","sourceRoot":"","sources":["../../../../libs/analytics/src/core/fetch-data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-data.d.ts","sourceRoot":"","sources":["../../../../libs/analytics/src/core/fetch-data.ts"],"names":[],"mappings":"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"}
@@ -211,5 +211,6 @@ export async function fetchWidgetData(dataUrl, params) {
211
211
  filters: json.filters ?? [],
212
212
  refresh_rate: json.refresh_rate,
213
213
  hide_filter: json.hide_filter ?? false,
214
+ options: json.options,
214
215
  };
215
216
  }
package/core/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- export { setAnalyticsApiKey, getAnalyticsApiKey, getAnalyticsRequestInit } from './auth.js';
1
+ export { setAnalyticsHeaders, getAnalyticsRequestInit } from './auth.js';
2
+ export type { AnalyticsHeaderSource } from './auth.js';
2
3
  export { buildWidgetDataUrl, buildWidgetDefinitionUrl, buildDatasetDataUrl, fetchAnalyticsData, fetchWidgetData, fetchWidgetDefinition, buildReportDefinitionUrl, buildReportFiltersUrl, buildReportPreviewUrl, buildReportPdfUrl, buildReportExcelUrl, fetchReportDefinition, fetchReportFilters, } from './fetch-data.js';
3
4
  export type { AnalyticsRequestParams, WidgetDataApiResponse, WidgetChartType, WidgetDefinitionApiResponse, WidgetDefinitionSubset, ReportDefinitionApiResponse, ReportDefinitionResult, } from './fetch-data.js';
4
5
  export type { AnalyticsDataResponse, AnalyticsDataMeta, WidgetDataResponse, WidgetDataOptions, DatetimeGranularity, DimensionRef, MeasureRef, FilterItem, FilterDefinition, FilterOption, CommonChartConfig, BarChartConfig, LineChartConfig, DonutPieChartConfig, NumberKpiChartConfig, TableChartConfig, ChartType, WidgetDefinitionConfig, LazyWidgetOptions, WorkerWidgetOptions, } from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../libs/analytics/src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAC5F,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,2BAA2B,EAC3B,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,SAAS,EACT,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,YAAY,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACjG,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,YAAY,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACnG,YAAY,EACV,MAAM,EACN,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../libs/analytics/src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AACzE,YAAY,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,EACf,2BAA2B,EAC3B,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,SAAS,EACT,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,YAAY,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACjG,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,YAAY,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACnG,YAAY,EACV,MAAM,EACN,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,WAAW,CAAC"}
package/core/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { setAnalyticsApiKey, getAnalyticsApiKey, getAnalyticsRequestInit } from './auth.js';
1
+ export { setAnalyticsHeaders, getAnalyticsRequestInit } from './auth.js';
2
2
  export { buildWidgetDataUrl, buildWidgetDefinitionUrl, buildDatasetDataUrl, fetchAnalyticsData, fetchWidgetData, fetchWidgetDefinition, buildReportDefinitionUrl, buildReportFiltersUrl, buildReportPreviewUrl, buildReportPdfUrl, buildReportExcelUrl, fetchReportDefinition, fetchReportFilters, } from './fetch-data.js';
3
3
  export { observeViewport } from './viewport-observer.js';
4
4
  export { runWidgetTransform } from './widget-transform-runner.js';
package/core/types.d.ts CHANGED
@@ -180,6 +180,7 @@ export interface NumberKpiWidgetData {
180
180
  prefix?: string;
181
181
  suffix?: string;
182
182
  }>;
183
+ shorten_numbers?: boolean;
183
184
  }
184
185
  /** Single header cell: key maps to data column; missing key = presentational only. */
185
186
  export interface TableHeaderCell {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../libs/analytics/src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../libs/analytics/src/core/types.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { LitElement } from 'lit';
2
2
  import type { FilterDefinition } from '../core/types.js';
3
3
  import '../filters/index.js';
4
- import 'gridstack/dist/gridstack.min.css';
5
4
  export interface DashboardSlot {
6
5
  /** Widget type: analytics-bar-chart, analytics-line-chart, analytics-pie-chart, analytics-table, etc. */
7
6
  type: string;
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-container.d.ts","sourceRoot":"","sources":["../../../../libs/analytics/src/dashboard/dashboard-container.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard-container.d.ts","sourceRoot":"","sources":["../../../../libs/analytics/src/dashboard/dashboard-container.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,6 @@ import { LitElement, html, css } from 'lit';
3
3
  import { customElement, property, state } from 'lit/decorators.js';
4
4
  import { GridStack } from 'gridstack';
5
5
  import '../filters/index.js';
6
- import 'gridstack/dist/gridstack.min.css';
7
6
  /** Normalized layout: children always array (possibly empty), slots always array. */
8
7
  function getLayoutChildren(layout) {
9
8
  return layout.children ?? [];
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export { setAnalyticsApiKey, getAnalyticsApiKey, buildWidgetDataUrl, fetchAnalyticsData, fetchWidgetData, } from './core/index.js';
2
- export type { AnalyticsDataResponse, AnalyticsDataMeta, AnalyticsRequestParams, WidgetDataResponse, WidgetDataApiResponse, WidgetDataOptions, DatetimeGranularity, DimensionRef, MeasureRef, FilterDefinition, FilterOption, BarChartConfig, LineChartConfig, DonutPieChartConfig, NumberKpiChartConfig, TableChartConfig, ChartType, WidgetDefinitionConfig, } from './core/index.js';
1
+ export { setAnalyticsHeaders, buildWidgetDataUrl, fetchAnalyticsData, fetchWidgetData, } from './core/index.js';
2
+ export type { AnalyticsHeaderSource, AnalyticsDataResponse, AnalyticsDataMeta, AnalyticsRequestParams, WidgetDataResponse, WidgetDataApiResponse, WidgetDataOptions, DatetimeGranularity, DimensionRef, MeasureRef, FilterDefinition, FilterOption, BarChartConfig, LineChartConfig, DonutPieChartConfig, NumberKpiChartConfig, TableChartConfig, ChartType, WidgetDefinitionConfig, } from './core/index.js';
3
3
  export { BaseChartWidget, BarChartWidget, LineChartWidget, PieChartWidget, TableWidget, AnalyticsWidget, AnalyticsReport, } from './widgets/index.js';
4
4
  export { DashboardContainer, EVENT_DASHBOARD_FILTER_CHANGE, EVENT_DASHBOARD_REFRESH, EVENT_DASHBOARD_LAYOUT_CHANGE, } from './dashboard/index.js';
5
5
  export type { DashboardLayout, DashboardSlot, GridsterGridItem } from './dashboard/index.js';
package/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { setAnalyticsApiKey, getAnalyticsApiKey, buildWidgetDataUrl, fetchAnalyticsData, fetchWidgetData, } from './core/index.js';
1
+ export { setAnalyticsHeaders, buildWidgetDataUrl, fetchAnalyticsData, fetchWidgetData, } from './core/index.js';
2
2
  export { BaseChartWidget, BarChartWidget, LineChartWidget, PieChartWidget, TableWidget, AnalyticsWidget, AnalyticsReport, } from './widgets/index.js';
3
3
  export { DashboardContainer, EVENT_DASHBOARD_FILTER_CHANGE, EVENT_DASHBOARD_REFRESH, EVENT_DASHBOARD_LAYOUT_CHANGE, } from './dashboard/index.js';
4
4
  export { AnalyticsFilterBar, AnalyticsFilterButton, AnalyticsWidgetToolbar } from './filters/index.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quicdata/analytics",
3
- "version": "0.0.11",
3
+ "version": "0.0.13",
4
4
  "type": "module",
5
5
  "main": "index.js",
6
6
  "module": "index.js",
@@ -1 +1 @@
1
- {"version":3,"file":"bar-chart.d.ts","sourceRoot":"","sources":["../../../../libs/analytics/src/widgets/bar-chart.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAuBlD;;;;GAIG;AACH,qBACa,cAAe,SAAQ,eAAe;IACxC,WAAW,CAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EACvC,UAAU,CAAC,EAAE,OAAO,GACnB,aAAa;CAsDjB"}
1
+ {"version":3,"file":"bar-chart.d.ts","sourceRoot":"","sources":["../../../../libs/analytics/src/widgets/bar-chart.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAwBlD;;;;GAIG;AACH,qBACa,cAAe,SAAQ,eAAe;IACxC,WAAW,CAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EACvC,UAAU,CAAC,EAAE,OAAO,GACnB,aAAa;CA+DjB"}
@@ -27,7 +27,15 @@ let BarChartWidget = class BarChartWidget extends BaseChartWidget {
27
27
  const series = seriesList.map((s) => ({
28
28
  name: String(s?.name ?? ''),
29
29
  type: 'bar',
30
- data: Array.isArray(s?.data) ? s.data.map((v) => Number(v) || 0) : [],
30
+ data: Array.isArray(s?.data)
31
+ ? s.data.map((v) => {
32
+ if (typeof v === 'object' && v !== null && 'value' in v) {
33
+ const obj = v;
34
+ return { ...obj, value: Number(obj.value) || 0 };
35
+ }
36
+ return Number(v) || 0;
37
+ })
38
+ : [],
31
39
  stack: wd.stack ? 'total' : undefined,
32
40
  }));
33
41
  const multiSeries = series.length > 1;
@@ -44,6 +52,7 @@ let BarChartWidget = class BarChartWidget extends BaseChartWidget {
44
52
  xAxis: isHorizontal ? { type: 'value' } : { type: 'category', data: categories },
45
53
  yAxis: isHorizontal ? { type: 'category', data: categories } : { type: 'value' },
46
54
  series,
55
+ ...(wd.colors?.length ? { color: wd.colors } : {}),
47
56
  };
48
57
  }
49
58
  const keys = data.length ? Object.keys(data[0]) : Object.keys(meta);
@@ -50,11 +50,15 @@ export declare abstract class BaseChartWidget extends LitElement {
50
50
  private _widgetFilterParams;
51
51
  private _hideFilter;
52
52
  private _widgetData;
53
+ /** ECharts options from API response (widget definition options). */
54
+ private _apiOptions;
53
55
  private _chart;
54
56
  private _dashboardEl;
55
57
  private _resizeObserver;
56
58
  /** Single debounce: each resize cancels previous, then we wait and call chart.resize() once. */
57
59
  private _resizeTimeoutId;
60
+ /** Bound window resize handler (fallback for shadow DOM nesting). */
61
+ private _boundWindowResize;
58
62
  /** Delay (ms) after last resize event before calling chart.resize(). */
59
63
  private static readonly _RESIZE_DELAY_MS;
60
64
  private _viewportVisible;
@@ -70,6 +74,8 @@ export declare abstract class BaseChartWidget extends LitElement {
70
74
  updated(changed: Map<string, unknown>): void;
71
75
  private _attachDashboard;
72
76
  private _detachDashboard;
77
+ /** Shared debounce logic for resize events (ResizeObserver + window resize). */
78
+ private _scheduleResize;
73
79
  firstUpdated(): void;
74
80
  private _getEffectiveDataUrl;
75
81
  /** Display title: optional host `title` overrides definition title from API. */
@@ -79,6 +85,12 @@ export declare abstract class BaseChartWidget extends LitElement {
79
85
  private _getEffectiveParams;
80
86
  private _loadData;
81
87
  private _renderChart;
88
+ /**
89
+ * Deep merge plain objects. Arrays and non-object values are replaced, not merged.
90
+ * Allows widget definition options like { yAxis: { inverse: true } } to extend
91
+ * the base chart option without overwriting existing keys (type, data, etc.).
92
+ */
93
+ private _deepMerge;
82
94
  /**
83
95
  * Build ECharts option from API data. Override in subclasses (bar, line, pie).
84
96
  * When widgetData has categories + series (e.g. from split_by), use those for bar/line.
@@ -1 +1 @@
1
- {"version":3,"file":"base-chart.d.ts","sourceRoot":"","sources":["../../../../libs/analytics/src/widgets/base-chart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG/D,OAAO,KAAK,EAA0B,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAO5F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAM9E,OAAO,qBAAqB,CAAC;AAE7B;;;;;GAKG;AACH,8BAAsB,eAAgB,SAAQ,UAAU;IACtD,OAAgB,MAAM,0BAoPpB;IAEF,8FAA8F;IAC1D,KAAK,EAAE,MAAM,CAAC;IAElD,8JAA8J;IACnG,OAAO,EAAE,MAAM,CAAC;IAE3E,0EAA0E;IAC1E,qFAAqF;IACzB,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAEtF,+FAA+F;IACrC,MAAM,EAAE,MAAM,CAAC;IAEzE,iHAAiH;IAC7E,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IAE1F,2GAA2G;IACvE,SAAS,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAEzE,8DAA8D;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC;IAE3E,oDAAoD;IAChB,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IAEzF,sEAAsE;IAClC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAEpE,oGAAoG;IAC/D,IAAI,EAAE,OAAO,CAAC;IAEnD,uGAAuG;IACrC,cAAc,EAAE,MAAM,CAAC;IAEzF,yHAAyH;IACrF,iBAAiB,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAE1F,QAAyB,QAAQ,CAAU;IAC3C,QAAyB,MAAM,CAAgB;IAC/C,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,uBAAuB,CAAS;IACxC,QAAyB,gBAAgB,CAA4C;IACrF,QAAyB,cAAc,CAAqB;IAC5D,QAAyB,mBAAmB,CAA4C;IACxF,QAAyB,WAAW,CAAU;IAC9C,QAAyB,WAAW,CAAU;IAC9C,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,YAAY,CAAmC;IACvD,OAAO,CAAC,eAAe,CAA+B;IACtD,gGAAgG;IAChG,OAAO,CAAC,gBAAgB,CAA8C;IAEtE,wEAAwE;IACxE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAO;IAC/C,QAAyB,gBAAgB,CAAU;IACnD,qFAAqF;IACrF,QAAyB,gBAAgB,CAAS;IAClD,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,kBAAkB,CAA6B;;IA0BvD,OAAO,CAAC,6BAA6B,CAInC;IACF,OAAO,CAAC,wBAAwB,CAG9B;IAEO,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;IAc5B,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IA0CrD,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,gBAAgB;IASf,YAAY,IAAI,IAAI;IAiC7B,OAAO,CAAC,oBAAoB;IAO5B,gFAAgF;IAChF,OAAO,KAAK,eAAe,GAE1B;IAED,6FAA6F;IAC7F,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,mBAAmB;YA2Bb,SAAS;IAmFvB,OAAO,CAAC,YAAY;IAuBpB;;;;OAIG;IACH,WAAW,CACT,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EACxC,WAAW,CAAC,EAAE,OAAO,GACpB,aAAa;IAShB,OAAO,CAAC,qBAAqB;IAI7B,OAAO,CAAC,UAAU;IAKT,MAAM;CA4GhB"}
1
+ {"version":3,"file":"base-chart.d.ts","sourceRoot":"","sources":["../../../../libs/analytics/src/widgets/base-chart.ts"],"names":[],"mappings":"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"}
@@ -23,8 +23,8 @@ export class BaseChartWidget extends LitElement {
23
23
  }
24
24
  .chart {
25
25
  width: 100%;
26
- height: 100%;
27
- min-height: 120px;
26
+ flex: 1;
27
+ min-height: 0;
28
28
  }
29
29
  .error {
30
30
  color: #c00;
@@ -225,10 +225,12 @@ export class BaseChartWidget extends LitElement {
225
225
  min-height: 0;
226
226
  position: relative;
227
227
  box-sizing: border-box;
228
+ display: flex;
229
+ flex-direction: column;
228
230
  }
229
231
  .widget-body .chart {
230
- height: 100%;
231
- min-height: 100px;
232
+ flex: 1;
233
+ min-height: 0;
232
234
  }
233
235
  .btn-refresh {
234
236
  flex-shrink: 0;
@@ -265,11 +267,15 @@ export class BaseChartWidget extends LitElement {
265
267
  this._loadGeneration = 0;
266
268
  this._loadDataScheduled = false;
267
269
  this._ignoreNextFilterChange = false;
270
+ /** ECharts options from API response (widget definition options). */
271
+ this._apiOptions = {};
268
272
  this._chart = null;
269
273
  this._dashboardEl = null;
270
274
  this._resizeObserver = null;
271
275
  /** Single debounce: each resize cancels previous, then we wait and call chart.resize() once. */
272
276
  this._resizeTimeoutId = null;
277
+ /** Bound window resize handler (fallback for shadow DOM nesting). */
278
+ this._boundWindowResize = null;
273
279
  this._hasLoadedOnce = false;
274
280
  this._viewportUnobserve = null;
275
281
  this._boundOnDashboardFilterChange = (e) => {
@@ -307,6 +313,13 @@ export class BaseChartWidget extends LitElement {
307
313
  connectedCallback() {
308
314
  super.connectedCallback();
309
315
  this._attachDashboard();
316
+ // Re-attach window resize listener on reconnect (firstUpdated only runs once)
317
+ if (this._boundWindowResize) {
318
+ window.addEventListener('resize', this._boundWindowResize);
319
+ }
320
+ if (this._resizeObserver) {
321
+ this._resizeObserver.observe(this);
322
+ }
310
323
  }
311
324
  disconnectedCallback() {
312
325
  this._viewportUnobserve?.();
@@ -316,6 +329,9 @@ export class BaseChartWidget extends LitElement {
316
329
  clearTimeout(this._resizeTimeoutId);
317
330
  this._resizeTimeoutId = null;
318
331
  }
332
+ if (this._boundWindowResize) {
333
+ window.removeEventListener('resize', this._boundWindowResize);
334
+ }
319
335
  this._resizeObserver?.disconnect();
320
336
  this._chart?.dispose();
321
337
  this._chart = null;
@@ -378,21 +394,25 @@ export class BaseChartWidget extends LitElement {
378
394
  this._dashboardEl = null;
379
395
  this._dashboardParams = {};
380
396
  }
381
- firstUpdated() {
382
- const container = this.renderRoot.querySelector('.chart');
383
- if (container) {
384
- this._resizeObserver = new ResizeObserver(() => {
385
- if (this._resizeTimeoutId != null) {
386
- clearTimeout(this._resizeTimeoutId);
387
- this._resizeTimeoutId = null;
388
- }
389
- this._resizeTimeoutId = setTimeout(() => {
390
- this._resizeTimeoutId = null;
391
- this._chart?.resize();
392
- }, BaseChartWidget._RESIZE_DELAY_MS);
393
- });
394
- this._resizeObserver.observe(container);
397
+ /** Shared debounce logic for resize events (ResizeObserver + window resize). */
398
+ _scheduleResize() {
399
+ if (this._resizeTimeoutId != null) {
400
+ clearTimeout(this._resizeTimeoutId);
401
+ this._resizeTimeoutId = null;
395
402
  }
403
+ this._resizeTimeoutId = setTimeout(() => {
404
+ this._resizeTimeoutId = null;
405
+ this._chart?.resize();
406
+ }, BaseChartWidget._RESIZE_DELAY_MS);
407
+ }
408
+ firstUpdated() {
409
+ // ResizeObserver on host — catches container-specific resizes (sidebar toggle, grid reflow).
410
+ this._resizeObserver = new ResizeObserver(() => this._scheduleResize());
411
+ this._resizeObserver.observe(this);
412
+ // Window resize listener — reliable fallback that always fires on window resize,
413
+ // regardless of shadow DOM nesting depth.
414
+ this._boundWindowResize = () => this._scheduleResize();
415
+ window.addEventListener('resize', this._boundWindowResize);
396
416
  if (this.lazy) {
397
417
  this._viewportVisible = false;
398
418
  this._viewportUnobserve = observeViewport(this, { rootMargin: this.prefetchMargin || '200px', threshold: 0 }, {
@@ -506,6 +526,7 @@ export class BaseChartWidget extends LitElement {
506
526
  this.data = data;
507
527
  this.meta = meta;
508
528
  this._widgetData = widgetData;
529
+ this._apiOptions = res.options ?? {};
509
530
  if (filters?.length)
510
531
  this._widgetFilters = filters;
511
532
  if (hideFilter !== undefined)
@@ -554,10 +575,7 @@ export class BaseChartWidget extends LitElement {
554
575
  const rows = this.data ?? [];
555
576
  const meta = this.meta?.columns ?? {};
556
577
  const baseOption = this.buildOption(rows, meta, this._widgetData ?? null);
557
- const merged = {
558
- ...baseOption,
559
- ...this.options,
560
- };
578
+ const merged = this._deepMerge(baseOption, this._apiOptions, this.options);
561
579
  // Re-init if container changed (e.g. after loading/error view replaced DOM)
562
580
  if (this._chart && this._chart.getDom() !== container) {
563
581
  this._chart.dispose();
@@ -568,6 +586,26 @@ export class BaseChartWidget extends LitElement {
568
586
  }
569
587
  this._chart.setOption(merged, { notMerge: true });
570
588
  }
589
+ /**
590
+ * Deep merge plain objects. Arrays and non-object values are replaced, not merged.
591
+ * Allows widget definition options like { yAxis: { inverse: true } } to extend
592
+ * the base chart option without overwriting existing keys (type, data, etc.).
593
+ */
594
+ _deepMerge(...objects) {
595
+ const result = {};
596
+ for (const obj of objects) {
597
+ for (const [key, value] of Object.entries(obj)) {
598
+ if (value !== null && typeof value === 'object' && !Array.isArray(value)
599
+ && result[key] !== null && typeof result[key] === 'object' && !Array.isArray(result[key])) {
600
+ result[key] = this._deepMerge(result[key], value);
601
+ }
602
+ else {
603
+ result[key] = value;
604
+ }
605
+ }
606
+ }
607
+ return result;
608
+ }
571
609
  /**
572
610
  * Build ECharts option from API data. Override in subclasses (bar, line, pie).
573
611
  * When widgetData has categories + series (e.g. from split_by), use those for bar/line.
@@ -1 +1 @@
1
- {"version":3,"file":"line-chart.d.ts","sourceRoot":"","sources":["../../../../libs/analytics/src/widgets/line-chart.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAuBlD;;;;GAIG;AACH,qBACa,eAAgB,SAAQ,eAAe;IACzC,WAAW,CAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EACvC,UAAU,CAAC,EAAE,OAAO,GACnB,aAAa;CAgDjB"}
1
+ {"version":3,"file":"line-chart.d.ts","sourceRoot":"","sources":["../../../../libs/analytics/src/widgets/line-chart.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAwBlD;;;;GAIG;AACH,qBACa,eAAgB,SAAQ,eAAe;IACzC,WAAW,CAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EACvC,UAAU,CAAC,EAAE,OAAO,GACnB,aAAa;CAiDjB"}
@@ -38,6 +38,7 @@ let LineChartWidget = class LineChartWidget extends BaseChartWidget {
38
38
  xAxis: { type: 'category', data: categories },
39
39
  yAxis: { type: 'value' },
40
40
  series,
41
+ ...(wd.colors?.length ? { color: wd.colors } : {}),
41
42
  };
42
43
  }
43
44
  const keys = data.length ? Object.keys(data[0]) : Object.keys(meta);
@@ -1,6 +1,7 @@
1
1
  import { LitElement } from 'lit';
2
2
  import type { WidgetDefinitionSubset } from '../core/fetch-data.js';
3
3
  import type { DashboardContainer } from '../dashboard/dashboard-container.js';
4
+ import '../filters/index.js';
4
5
  /**
5
6
  * Number KPI widget. Displays one or more large formatted numbers with labels.
6
7
  * Data shape from backend transformNumber(): { chartType: 'Number', values, labels, options }.
@@ -21,10 +22,14 @@ export declare class NumberKpiWidget extends LitElement {
21
22
  private _loading;
22
23
  private _error;
23
24
  private _dashboardParams;
25
+ private _widgetFilters;
26
+ private _widgetFilterParams;
27
+ private _hideFilter;
24
28
  private _viewportVisible;
25
29
  private _definitionTitle;
26
30
  private _loadGeneration;
27
31
  private _hasLoadedOnce;
32
+ private _ignoreNextFilterChange;
28
33
  private _dashboardEl;
29
34
  private _viewportUnobserve;
30
35
  private _loadDataInFlight;
@@ -45,7 +50,8 @@ export declare class NumberKpiWidget extends LitElement {
45
50
  private _defer;
46
51
  private _loadData;
47
52
  private _onRefresh;
48
- /** Format a number: apply decimal places, shorten_numbers (1234 → 1.2K). */
53
+ private _onWidgetFilterChange;
54
+ /** Format a number: apply decimal places, optionally shorten (1234 → 1.2K). */
49
55
  private _formatValue;
50
56
  render(): import("lit-html").TemplateResult<1>;
51
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"number-kpi.d.ts","sourceRoot":"","sources":["../../../../libs/analytics/src/widgets/number-kpi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAGrD,OAAO,KAAK,EAA0B,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAM5F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAO9E;;;GAGG;AACH,qBACa,eAAgB,SAAQ,UAAU;IAC7C,OAAgB,MAAM,0BAsMpB;IAEkC,KAAK,EAAE,MAAM,CAAC;IACqB,iBAAiB,EAAE,OAAO,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACtD,SAAS,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACpC,IAAI,EAAE,OAAO,CAAC;IACe,cAAc,EAAE,MAAM,CAAC;IACrD,iBAAiB,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAE1F,QAAyB,QAAQ,CAA6B;IAC9D,QAAyB,QAAQ,CAAU;IAC3C,QAAyB,MAAM,CAAgB;IAC/C,QAAyB,gBAAgB,CAA4C;IACrF,QAAyB,gBAAgB,CAAU;IACnD,QAAyB,gBAAgB,CAAS;IAElD,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,YAAY,CAAmC;IACvD,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,kBAAkB,CAAS;;IAsBnC,OAAO,CAAC,6BAA6B,CAInC;IAEF,OAAO,CAAC,wBAAwB,CAG9B;IAEO,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;IAO5B,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IA2B5C,YAAY,IAAI,IAAI;IAkB7B,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,KAAK,eAAe,GAE1B;IAED,OAAO,CAAC,MAAM;YAQA,SAAS;IA+DvB,OAAO,CAAC,UAAU;IAKlB,4EAA4E;IAC5E,OAAO,CAAC,YAAY;IAqBX,MAAM;CAqFhB"}
1
+ {"version":3,"file":"number-kpi.d.ts","sourceRoot":"","sources":["../../../../libs/analytics/src/widgets/number-kpi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAGrD,OAAO,KAAK,EAA0B,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAM5F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAM9E,OAAO,qBAAqB,CAAC;AAE7B;;;GAGG;AACH,qBACa,eAAgB,SAAQ,UAAU;IAC7C,OAAgB,MAAM,0BAsMpB;IAEkC,KAAK,EAAE,MAAM,CAAC;IACqB,iBAAiB,EAAE,OAAO,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACtD,SAAS,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACpC,IAAI,EAAE,OAAO,CAAC;IACe,cAAc,EAAE,MAAM,CAAC;IACrD,iBAAiB,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAE1F,QAAyB,QAAQ,CAA6B;IAC9D,QAAyB,QAAQ,CAAU;IAC3C,QAAyB,MAAM,CAAgB;IAC/C,QAAyB,gBAAgB,CAA4C;IACrF,QAAyB,cAAc,CAAqB;IAC5D,QAAyB,mBAAmB,CAA4C;IACxF,QAAyB,WAAW,CAAU;IAC9C,QAAyB,gBAAgB,CAAU;IACnD,QAAyB,gBAAgB,CAAS;IAElD,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,YAAY,CAAmC;IACvD,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,kBAAkB,CAAS;;IAyBnC,OAAO,CAAC,6BAA6B,CAInC;IAEF,OAAO,CAAC,wBAAwB,CAG9B;IAEO,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;IAO5B,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAuC5C,YAAY,IAAI,IAAI;IAkB7B,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,KAAK,eAAe,GAE1B;IAED,OAAO,CAAC,MAAM;YAQA,SAAS;IA6EvB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,qBAAqB;IAI7B,+EAA+E;IAC/E,OAAO,CAAC,YAAY;IAsBX,MAAM;CAmGhB"}
@@ -4,6 +4,7 @@ import { customElement, property, state } from 'lit/decorators.js';
4
4
  import { buildWidgetDataUrl, fetchWidgetData, fetchWidgetDefinition, } from '../core/fetch-data.js';
5
5
  import { EVENT_DASHBOARD_FILTER_CHANGE, EVENT_DASHBOARD_REFRESH, } from '../dashboard/index.js';
6
6
  import { observeViewport } from '../core/viewport-observer.js';
7
+ import '../filters/index.js';
7
8
  /**
8
9
  * Number KPI widget. Displays one or more large formatted numbers with labels.
9
10
  * Data shape from backend transformNumber(): { chartType: 'Number', values, labels, options }.
@@ -212,6 +213,7 @@ let NumberKpiWidget = class NumberKpiWidget extends LitElement {
212
213
  super();
213
214
  this._loadGeneration = 0;
214
215
  this._hasLoadedOnce = false;
216
+ this._ignoreNextFilterChange = false;
215
217
  this._dashboardEl = null;
216
218
  this._viewportUnobserve = null;
217
219
  this._loadDataInFlight = false;
@@ -241,6 +243,9 @@ let NumberKpiWidget = class NumberKpiWidget extends LitElement {
241
243
  this._loading = false;
242
244
  this._error = null;
243
245
  this._dashboardParams = {};
246
+ this._widgetFilters = [];
247
+ this._widgetFilterParams = {};
248
+ this._hideFilter = false;
244
249
  this._viewportVisible = true;
245
250
  this._definitionTitle = '';
246
251
  }
@@ -261,11 +266,23 @@ let NumberKpiWidget = class NumberKpiWidget extends LitElement {
261
266
  }
262
267
  if (changed.has('widgetId') || changed.has('apiUrl')) {
263
268
  this._definitionTitle = '';
269
+ this._widgetFilters = [];
270
+ this._widgetFilterParams = {};
271
+ this._ignoreNextFilterChange = true;
264
272
  }
265
- if (changed.has('dataUrl') ||
273
+ const onlyFilterState = (changed.has('_widgetFilterParams') || changed.has('_widgetFilters')) &&
274
+ !changed.has('dataUrl') &&
275
+ !changed.has('dataParams') &&
276
+ !changed.has('widgetId') &&
277
+ !changed.has('apiUrl');
278
+ if (onlyFilterState && this._ignoreNextFilterChange) {
279
+ this._ignoreNextFilterChange = false;
280
+ }
281
+ else if (changed.has('dataUrl') ||
266
282
  changed.has('dataParams') ||
267
283
  changed.has('widgetId') ||
268
- changed.has('apiUrl')) {
284
+ changed.has('apiUrl') ||
285
+ changed.has('_widgetFilterParams')) {
269
286
  if (this._getEffectiveDataUrl() && !this._loadDataScheduled) {
270
287
  this._loadDataScheduled = true;
271
288
  queueMicrotask(() => {
@@ -321,7 +338,26 @@ let NumberKpiWidget = class NumberKpiWidget extends LitElement {
321
338
  return this.dataUrl;
322
339
  }
323
340
  _getEffectiveParams() {
324
- const out = { ...(this.dataParams ?? {}) };
341
+ let widgetFilterParams = {};
342
+ if (this._hideFilter) {
343
+ for (const f of this._widgetFilters) {
344
+ if (f.default_value !== undefined && f.default_value !== null) {
345
+ widgetFilterParams[f.param_name] = f.default_value;
346
+ }
347
+ }
348
+ }
349
+ else if (this._widgetFilters.length > 0) {
350
+ for (const f of this._widgetFilters) {
351
+ const setByUser = f.param_name in this._widgetFilterParams;
352
+ widgetFilterParams[f.param_name] = setByUser
353
+ ? (this._widgetFilterParams[f.param_name] ?? '')
354
+ : (f.default_value ?? '');
355
+ }
356
+ }
357
+ else {
358
+ widgetFilterParams = { ...this._widgetFilterParams };
359
+ }
360
+ const out = { ...widgetFilterParams, ...(this.dataParams ?? {}) };
325
361
  if (Object.keys(this._dashboardParams).length > 0) {
326
362
  out.dashboard_params = this._dashboardParams;
327
363
  }
@@ -358,29 +394,45 @@ let NumberKpiWidget = class NumberKpiWidget extends LitElement {
358
394
  try {
359
395
  const useWidgetApi = Boolean(this.apiUrl && this.widgetId);
360
396
  let params;
361
- if (useWidgetApi && !this._definitionTitle) {
397
+ if (useWidgetApi && this._widgetFilters.length === 0) {
362
398
  const def = this.initialDefinition ?? (await fetchWidgetDefinition(this.apiUrl, this.widgetId));
363
399
  this._definitionTitle = def.title ?? '';
364
- params = { ...(this.dataParams ?? {}) };
400
+ this._widgetFilters = def.filters ?? [];
401
+ this._hideFilter = def.hide_filter ?? false;
402
+ const defaultParams = {};
403
+ for (const f of (def.filters ?? [])) {
404
+ if (f.default_value !== undefined && f.default_value !== null) {
405
+ defaultParams[f.param_name] = f.default_value;
406
+ }
407
+ }
408
+ this._widgetFilterParams = { ...defaultParams, ...this._widgetFilterParams };
409
+ this._ignoreNextFilterChange = true;
410
+ params = { ...defaultParams, ...(this.dataParams ?? {}) };
411
+ if (Object.keys(this._dashboardParams).length > 0) {
412
+ params.dashboard_params = this._dashboardParams;
413
+ }
365
414
  }
366
415
  else {
367
416
  params = this._getEffectiveParams();
368
417
  }
369
- if (Object.keys(this._dashboardParams).length > 0) {
370
- params.dashboard_params = this._dashboardParams;
371
- }
372
418
  const res = await fetchWidgetData(dataUrl, params);
373
419
  if (gen !== this._loadGeneration)
374
420
  return;
375
421
  const wd = res.widgetData;
376
422
  const kpiData = wd && wd.chartType === 'Number'
377
- ? { chartType: 'Number', values: wd.values ?? [], labels: wd.labels ?? [], options: wd.options }
423
+ ? { chartType: 'Number', values: wd.values ?? [], labels: wd.labels ?? [], options: wd.options, shorten_numbers: wd.shorten_numbers }
378
424
  : null;
425
+ const filters = res.filters;
426
+ const hideFilter = res.hide_filter;
379
427
  this._defer(() => {
380
428
  if (gen !== this._loadGeneration)
381
429
  return;
382
430
  this._loadDataInFlight = false;
383
431
  this._kpiData = kpiData;
432
+ if (filters?.length)
433
+ this._widgetFilters = filters;
434
+ if (hideFilter !== undefined)
435
+ this._hideFilter = hideFilter;
384
436
  this._hasLoadedOnce = true;
385
437
  this._loading = false;
386
438
  if (this._loadDataPendingRefresh) {
@@ -410,31 +462,37 @@ let NumberKpiWidget = class NumberKpiWidget extends LitElement {
410
462
  return;
411
463
  this._loadData();
412
464
  }
413
- /** Format a number: apply decimal places, shorten_numbers (1234 → 1.2K). */
414
- _formatValue(value, decimal) {
465
+ _onWidgetFilterChange(e) {
466
+ this._widgetFilterParams = { ...(e.detail?.params ?? {}) };
467
+ }
468
+ /** Format a number: apply decimal places, optionally shorten (1234 → 1.2K). */
469
+ _formatValue(value, decimal, shorten) {
415
470
  const dec = decimal != null && decimal !== '' ? parseInt(decimal, 10) : undefined;
416
471
  const abs = Math.abs(value);
417
- // shorten_numbers: from widget config (checked via options or future config)
418
- if (abs >= 1_000_000_000) {
419
- const v = value / 1_000_000_000;
420
- return (dec != null ? v.toFixed(dec) : v.toFixed(1)) + 'B';
421
- }
422
- if (abs >= 1_000_000) {
423
- const v = value / 1_000_000;
424
- return (dec != null ? v.toFixed(dec) : v.toFixed(1)) + 'M';
425
- }
426
- if (abs >= 10_000) {
427
- const v = value / 1_000;
428
- return (dec != null ? v.toFixed(dec) : v.toFixed(1)) + 'K';
472
+ if (shorten) {
473
+ if (abs >= 1_000_000_000) {
474
+ const v = value / 1_000_000_000;
475
+ return (dec != null ? v.toFixed(dec) : v.toFixed(1)) + 'B';
476
+ }
477
+ if (abs >= 1_000_000) {
478
+ const v = value / 1_000_000;
479
+ return (dec != null ? v.toFixed(dec) : v.toFixed(1)) + 'M';
480
+ }
481
+ if (abs >= 10_000) {
482
+ const v = value / 1_000;
483
+ return (dec != null ? v.toFixed(dec) : v.toFixed(1)) + 'K';
484
+ }
429
485
  }
430
486
  if (dec != null)
431
- return value.toFixed(dec);
487
+ return value.toLocaleString(undefined, { minimumFractionDigits: dec, maximumFractionDigits: dec });
432
488
  if (Number.isInteger(value))
433
489
  return value.toLocaleString();
434
490
  return value.toLocaleString(undefined, { maximumFractionDigits: 2 });
435
491
  }
436
492
  render() {
437
493
  const canRefresh = Boolean(this._getEffectiveDataUrl()) && !this.hideRefreshButton;
494
+ const hasWidgetFilters = this._widgetFilters.length > 0 && !this._hideFilter;
495
+ const widgetActiveCount = Object.keys(this._widgetFilterParams).filter((k) => this._widgetFilterParams[k] !== '' && this._widgetFilterParams[k] != null).length;
438
496
  const showSkeleton = this._loading && !this._hasLoadedOnce;
439
497
  const showSpinnerOverlay = this._loading && this._hasLoadedOnce;
440
498
  const showTitlePlaceholder = !this._effectiveTitle && !this.hideRefreshButton;
@@ -488,7 +546,7 @@ let NumberKpiWidget = class NumberKpiWidget extends LitElement {
488
546
  const opt = this._kpiData.options?.[i];
489
547
  const prefix = opt?.prefix ?? '';
490
548
  const suffix = opt?.suffix ?? '';
491
- const formatted = this._formatValue(value, opt?.decimal);
549
+ const formatted = this._formatValue(value, opt?.decimal, this._kpiData.shorten_numbers);
492
550
  return html `
493
551
  <div class="kpi-block">
494
552
  <span class="kpi-value">
@@ -511,6 +569,16 @@ let NumberKpiWidget = class NumberKpiWidget extends LitElement {
511
569
  <div class="loading-spinner" aria-hidden="true"></div>
512
570
  </div>`
513
571
  : nothing}
572
+ ${hasWidgetFilters
573
+ ? html `
574
+ <analytics-widget-toolbar
575
+ .filters=${this._widgetFilters}
576
+ .values=${this._widgetFilterParams}
577
+ .activeCount=${widgetActiveCount}
578
+ @analytics-filter-change=${this._onWidgetFilterChange}
579
+ ></analytics-widget-toolbar>
580
+ `
581
+ : ''}
514
582
  </div>
515
583
  `;
516
584
  }
@@ -557,6 +625,15 @@ __decorate([
557
625
  __decorate([
558
626
  state()
559
627
  ], NumberKpiWidget.prototype, "_dashboardParams", void 0);
628
+ __decorate([
629
+ state()
630
+ ], NumberKpiWidget.prototype, "_widgetFilters", void 0);
631
+ __decorate([
632
+ state()
633
+ ], NumberKpiWidget.prototype, "_widgetFilterParams", void 0);
634
+ __decorate([
635
+ state()
636
+ ], NumberKpiWidget.prototype, "_hideFilter", void 0);
560
637
  __decorate([
561
638
  state()
562
639
  ], NumberKpiWidget.prototype, "_viewportVisible", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"pie-chart.d.ts","sourceRoot":"","sources":["../../../../libs/analytics/src/widgets/pie-chart.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAQlD;;;;GAIG;AACH,qBACa,cAAe,SAAQ,eAAe;IACxC,WAAW,CAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EACvC,UAAU,CAAC,EAAE,OAAO,GACnB,aAAa;CA2CjB"}
1
+ {"version":3,"file":"pie-chart.d.ts","sourceRoot":"","sources":["../../../../libs/analytics/src/widgets/pie-chart.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AASlD;;;;GAIG;AACH,qBACa,cAAe,SAAQ,eAAe;IACxC,WAAW,CAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EACvC,UAAU,CAAC,EAAE,OAAO,GACnB,aAAa;CAqDjB"}
@@ -10,11 +10,17 @@ let PieChartWidget = class PieChartWidget extends BaseChartWidget {
10
10
  buildOption(data, meta, widgetData) {
11
11
  const wd = widgetData;
12
12
  if (wd && typeof wd === 'object' && Array.isArray(wd.items) && wd.items.length > 0) {
13
- const pieData = wd.items.map((item) => ({
14
- name: String(item?.name ?? ''),
15
- value: Number(item?.value) || 0,
16
- }));
17
- return {
13
+ const pieData = wd.items.map((item) => {
14
+ const d = {
15
+ name: String(item?.name ?? ''),
16
+ value: Number(item?.value) || 0,
17
+ };
18
+ if (item?.itemStyle?.color) {
19
+ d.itemStyle = { color: item.itemStyle.color };
20
+ }
21
+ return d;
22
+ });
23
+ const opt = {
18
24
  tooltip: { trigger: 'item' },
19
25
  series: [
20
26
  {
@@ -25,6 +31,10 @@ let PieChartWidget = class PieChartWidget extends BaseChartWidget {
25
31
  },
26
32
  ],
27
33
  };
34
+ if (wd.colors && wd.colors.length > 0) {
35
+ opt.color = wd.colors;
36
+ }
37
+ return opt;
28
38
  }
29
39
  const keys = data.length ? Object.keys(data[0]) : Object.keys(meta);
30
40
  if (keys.length === 0) {