@firestitch/report 18.6.1 → 18.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/app/reports/components/component-chart/component-chart.component.d.ts +6 -7
  2. package/app/reports/components/component-kpi/component-kpi.component.d.ts +17 -9
  3. package/app/reports/components/component-kpi/components/sparkline/sparkline.component.d.ts +8 -0
  4. package/app/reports/components/component-list/component-list.component.d.ts +39 -10
  5. package/app/reports/components/component-note/component-note.component.d.ts +12 -0
  6. package/app/reports/components/report-canvas/report-canvas.component.d.ts +0 -10
  7. package/app/reports/components/report-component/report-component.component.d.ts +5 -12
  8. package/app/reports/data/report.data.d.ts +2 -3
  9. package/app/reports/dialogs/component-settings/component-settings.component.d.ts +34 -2
  10. package/app/reports/dialogs/list-columns/list-columns.component.d.ts +23 -0
  11. package/app/reports/dialogs/report-settings/report-locale-patch.d.ts +5 -0
  12. package/app/reports/dialogs/report-settings/report-settings.component.d.ts +20 -2
  13. package/app/reports/enums/report-change-polarity.enum.d.ts +5 -0
  14. package/app/reports/enums/report-chart-color.enum.d.ts +12 -0
  15. package/app/reports/enums/report-chart-data-labels.enum.d.ts +6 -0
  16. package/app/reports/enums/report-chart-date-label.enum.d.ts +5 -0
  17. package/app/reports/enums/report-chart-line-style.enum.d.ts +5 -0
  18. package/app/reports/enums/report-chart-mark-stat.enum.d.ts +6 -0
  19. package/app/reports/enums/report-kpi-trend.enum.d.ts +5 -0
  20. package/app/reports/enums/report-list-column-format.enum.d.ts +6 -0
  21. package/app/reports/enums/report-number-units.enum.d.ts +6 -0
  22. package/app/reports/enums/report-value-format.enum.d.ts +5 -0
  23. package/app/reports/export/offscreen-chart.d.ts +2 -2
  24. package/app/reports/export/report-export-collector.service.d.ts +37 -8
  25. package/app/reports/export/report-pdf.service.d.ts +6 -0
  26. package/app/reports/export/report-pptx.service.d.ts +24 -0
  27. package/app/reports/format.d.ts +64 -3
  28. package/app/reports/interfaces/report-chat-viewer-filter.interface.d.ts +2 -0
  29. package/app/reports/interfaces/report.interface.d.ts +205 -14
  30. package/app/reports/kpi-card.d.ts +48 -0
  31. package/app/reports/layout.d.ts +0 -9
  32. package/app/reports/list-config.d.ts +16 -0
  33. package/app/reports/option-builder.d.ts +76 -9
  34. package/app/reports/output-notes.d.ts +14 -0
  35. package/app/reports/pipes/report-date.pipe.d.ts +2 -1
  36. package/app/reports/pipes/report-number.pipe.d.ts +8 -0
  37. package/app/reports/pipes/report-output.pipe.d.ts +10 -0
  38. package/app/reports/report-filter-items.d.ts +5 -2
  39. package/app/reports/report-url-state.d.ts +4 -0
  40. package/app/reports/services/report-filter-state.service.d.ts +27 -2
  41. package/app/reports/theme/palette.d.ts +6 -0
  42. package/app/reports/theme/typography.d.ts +2 -0
  43. package/esm2022/app/reports/components/component-chart/component-chart.component.mjs +23 -20
  44. package/esm2022/app/reports/components/component-kpi/component-kpi.component.mjs +56 -29
  45. package/esm2022/app/reports/components/component-kpi/components/sparkline/sparkline.component.mjs +19 -0
  46. package/esm2022/app/reports/components/component-list/component-list.component.mjs +218 -32
  47. package/esm2022/app/reports/components/component-note/component-note.component.mjs +30 -0
  48. package/esm2022/app/reports/components/report-canvas/report-canvas.component.mjs +7 -61
  49. package/esm2022/app/reports/components/report-component/report-component.component.mjs +99 -100
  50. package/esm2022/app/reports/data/report.data.mjs +20 -7
  51. package/esm2022/app/reports/dialogs/component-settings/component-settings.component.mjs +133 -13
  52. package/esm2022/app/reports/dialogs/list-columns/list-columns.component.mjs +56 -0
  53. package/esm2022/app/reports/dialogs/report-settings/report-locale-patch.mjs +13 -0
  54. package/esm2022/app/reports/dialogs/report-settings/report-settings.component.mjs +138 -20
  55. package/esm2022/app/reports/enums/report-change-polarity.enum.mjs +11 -0
  56. package/esm2022/app/reports/enums/report-chart-color.enum.mjs +19 -0
  57. package/esm2022/app/reports/enums/report-chart-data-labels.enum.mjs +13 -0
  58. package/esm2022/app/reports/enums/report-chart-date-label.enum.mjs +13 -0
  59. package/esm2022/app/reports/enums/report-chart-line-style.enum.mjs +12 -0
  60. package/esm2022/app/reports/enums/report-chart-mark-stat.enum.mjs +12 -0
  61. package/esm2022/app/reports/enums/report-kpi-trend.enum.mjs +10 -0
  62. package/esm2022/app/reports/enums/report-list-column-format.enum.mjs +14 -0
  63. package/esm2022/app/reports/enums/report-number-units.enum.mjs +14 -0
  64. package/esm2022/app/reports/enums/report-value-format.enum.mjs +13 -0
  65. package/esm2022/app/reports/export/offscreen-chart.mjs +5 -4
  66. package/esm2022/app/reports/export/report-export-collector.service.mjs +186 -40
  67. package/esm2022/app/reports/export/report-pdf.service.mjs +332 -67
  68. package/esm2022/app/reports/export/report-pptx.service.mjs +765 -106
  69. package/esm2022/app/reports/format.mjs +917 -57
  70. package/esm2022/app/reports/interfaces/report-chat-viewer-filter.interface.mjs +1 -1
  71. package/esm2022/app/reports/interfaces/report.interface.mjs +1 -1
  72. package/esm2022/app/reports/kpi-card.mjs +174 -0
  73. package/esm2022/app/reports/layout.mjs +1 -46
  74. package/esm2022/app/reports/list-config.mjs +106 -0
  75. package/esm2022/app/reports/option-builder.mjs +1457 -117
  76. package/esm2022/app/reports/output-notes.mjs +158 -0
  77. package/esm2022/app/reports/pipes/report-date.pipe.mjs +7 -6
  78. package/esm2022/app/reports/pipes/report-number.pipe.mjs +25 -0
  79. package/esm2022/app/reports/pipes/report-output.pipe.mjs +28 -0
  80. package/esm2022/app/reports/report-filter-items.mjs +28 -3
  81. package/esm2022/app/reports/report-url-state.mjs +56 -15
  82. package/esm2022/app/reports/services/report-filter-state.service.mjs +274 -22
  83. package/esm2022/app/reports/theme/echarts.mjs +8 -2
  84. package/esm2022/app/reports/theme/palette.mjs +35 -1
  85. package/esm2022/app/reports/theme/typography.mjs +8 -1
  86. package/esm2022/app/reports/views/report/fs-ai-report.component.mjs +2 -2
  87. package/esm2022/app/reports/views/report/report.component.mjs +3 -4
  88. package/esm2022/public_api.mjs +10 -1
  89. package/fesm2022/{firestitch-report-echarts-Djtmaxj1.mjs → firestitch-report-echarts-qCBE3LqM.mjs} +9 -3
  90. package/fesm2022/firestitch-report-echarts-qCBE3LqM.mjs.map +1 -0
  91. package/fesm2022/{firestitch-report-firestitch-report-D3zseBZc.mjs → firestitch-report-firestitch-report-DbsWbE-j.mjs} +5523 -875
  92. package/fesm2022/firestitch-report-firestitch-report-DbsWbE-j.mjs.map +1 -0
  93. package/fesm2022/firestitch-report.mjs +1 -1
  94. package/package.json +1 -1
  95. package/public_api.d.ts +9 -0
  96. package/fesm2022/firestitch-report-echarts-Djtmaxj1.mjs.map +0 -1
  97. package/fesm2022/firestitch-report-firestitch-report-D3zseBZc.mjs.map +0 -1
@@ -1,16 +1,15 @@
1
- import { OnChanges } from '@angular/core';
2
1
  import type { EChartsOption, ECharts } from 'echarts';
3
2
  import { ComponentData, ReportComponent } from '../../interfaces/report.interface';
4
3
  import * as i0 from "@angular/core";
5
- export declare class ComponentChartComponent implements OnChanges {
6
- component: ReportComponent;
7
- data: ComponentData | null;
8
- options: EChartsOption | null;
4
+ export declare class ComponentChartComponent {
5
+ readonly component: import("@angular/core").InputSignal<ReportComponent>;
6
+ readonly data: import("@angular/core").InputSignal<ComponentData>;
7
+ readonly options: import("@angular/core").Signal<EChartsOption>;
9
8
  private _chart;
10
- ngOnChanges(): void;
9
+ private readonly _filterState;
11
10
  onChartInit(chart: ECharts): void;
12
11
  resize(): void;
13
12
  getDataURL(pixelRatio?: number): string | null;
14
13
  static ɵfac: i0.ɵɵFactoryDeclaration<ComponentChartComponent, never>;
15
- static ɵcmp: i0.ɵɵComponentDeclaration<ComponentChartComponent, "app-report-component-chart", never, { "component": { "alias": "component"; "required": false; }; "data": { "alias": "data"; "required": false; }; }, {}, never, never, true, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<ComponentChartComponent, "app-report-component-chart", never, { "component": { "alias": "component"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
16
15
  }
@@ -1,13 +1,21 @@
1
- import { OnChanges } from '@angular/core';
1
+ import { ReportKpiTrend } from '../../enums/report-kpi-trend.enum';
2
2
  import { ComponentData, ReportComponent } from '../../interfaces/report.interface';
3
3
  import * as i0 from "@angular/core";
4
- export declare class ComponentKpiComponent implements OnChanges {
5
- component: ReportComponent;
6
- data: ComponentData | null;
7
- readonly ratioPercent: import("@angular/core").InputSignal<boolean>;
8
- value: string;
9
- label: string;
10
- ngOnChanges(): void;
4
+ export declare class ComponentKpiComponent {
5
+ readonly component: import("@angular/core").InputSignal<ReportComponent>;
6
+ readonly data: import("@angular/core").InputSignal<ComponentData>;
7
+ readonly ReportKpiTrend: typeof ReportKpiTrend;
8
+ readonly tokens: {
9
+ valueSize: string;
10
+ text: string;
11
+ good: string;
12
+ bad: string;
13
+ neutral: string;
14
+ sparkline: string;
15
+ };
16
+ readonly view: import("@angular/core").Signal<import("../../kpi-card").KpiCardView>;
17
+ readonly hasNote: import("@angular/core").Signal<boolean>;
18
+ private readonly _filterState;
11
19
  static ɵfac: i0.ɵɵFactoryDeclaration<ComponentKpiComponent, never>;
12
- static ɵcmp: i0.ɵɵComponentDeclaration<ComponentKpiComponent, "app-report-component-kpi", never, { "component": { "alias": "component"; "required": false; }; "data": { "alias": "data"; "required": false; }; "ratioPercent": { "alias": "ratioPercent"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
20
+ static ɵcmp: i0.ɵɵComponentDeclaration<ComponentKpiComponent, "app-report-component-kpi", never, { "component": { "alias": "component"; "required": true; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
13
21
  }
@@ -0,0 +1,8 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class SparklineComponent {
3
+ readonly values: import("@angular/core").InputSignal<number[]>;
4
+ readonly partial: import("@angular/core").InputSignal<boolean>;
5
+ readonly geometry: import("@angular/core").Signal<import("../../../../kpi-card").KpiSparklineGeometry>;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<SparklineComponent, never>;
7
+ static ɵcmp: i0.ɵɵComponentDeclaration<SparklineComponent, "app-component-kpi-sparkline", never, { "values": { "alias": "values"; "required": false; "isSignal": true; }; "partial": { "alias": "partial"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
8
+ }
@@ -1,27 +1,56 @@
1
1
  import { OnInit } from '@angular/core';
2
2
  import { FsListComponent, FsListConfig } from '@firestitch/list';
3
- import { ReportComponent } from '../../interfaces/report.interface';
3
+ import { ReportListColumnFormat } from '../../enums/report-list-column-format.enum';
4
+ import { ListColumn, ReportComponent } from '../../interfaces/report.interface';
5
+ import { ListOutputColumn, columnClasses } from '../../list-config';
6
+ import { ComponentNoteData } from '../../output-notes';
4
7
  import * as i0 from "@angular/core";
5
8
  export declare class ComponentListComponent implements OnInit {
6
- reportId: number;
7
- component: ReportComponent;
8
- listComponent: FsListComponent;
9
+ readonly reportId: import("@angular/core").InputSignal<number>;
10
+ readonly component: import("@angular/core").InputSignal<ReportComponent>;
11
+ readonly listComponent: import("@angular/core").Signal<FsListComponent<any>>;
9
12
  listConfig: FsListConfig;
10
- columns: import("@angular/core").WritableSignal<{
11
- column: string;
12
- label?: string;
13
- format?: string;
14
- }[]>;
13
+ columns: import("@angular/core").WritableSignal<(ListColumn & {
14
+ numeric: boolean;
15
+ })[]>;
15
16
  pivoted: import("@angular/core").WritableSignal<boolean>;
16
17
  truncated: import("@angular/core").WritableSignal<boolean>;
18
+ readonly searchNote: import("@angular/core").WritableSignal<string>;
19
+ readonly showTotals: import("@angular/core").WritableSignal<boolean>;
20
+ readonly totals: import("@angular/core").WritableSignal<Record<string, unknown>>;
21
+ readonly totalsNote: import("@angular/core").WritableSignal<string>;
22
+ readonly noteData: import("@angular/core").WritableSignal<ComponentNoteData>;
23
+ readonly rowCount: import("@angular/core").WritableSignal<{
24
+ shown: number;
25
+ total: number;
26
+ }>;
17
27
  readonly timezone: import("@angular/core").WritableSignal<string>;
28
+ readonly formatContext: import("@angular/core").WritableSignal<import("../../interfaces/report.interface").ReportFormatContext>;
29
+ readonly ReportListColumnFormat: typeof ReportListColumnFormat;
30
+ readonly pinned: import("@angular/core").Signal<number>;
31
+ readonly columnClasses: typeof columnClasses;
32
+ readonly hidden: import("@angular/core").Signal<Set<string>>;
33
+ readonly totalLabel = "Total";
34
+ readonly outputColumns: import("@angular/core").Signal<Record<string, ListOutputColumn>>;
35
+ readonly columnNotes: import("@angular/core").Signal<Record<string, string>>;
36
+ readonly totalsLabelColumn: import("@angular/core").Signal<string>;
37
+ readonly caption: import("@angular/core").Signal<string>;
18
38
  private _reportData;
19
39
  private _filterState;
20
40
  private _destroyRef;
41
+ private _elementRef;
42
+ private _injector;
43
+ private _pinOffsetsRef;
44
+ constructor();
21
45
  ngOnInit(): void;
22
46
  private _initListConfig;
23
47
  private _fetch;
24
48
  private _pivotColumns;
49
+ private _noteData;
50
+ private _alignOutputColumns;
51
+ private _observePinOffsets;
52
+ private _schedulePinOffsets;
53
+ private _updatePinOffsets;
25
54
  static ɵfac: i0.ɵɵFactoryDeclaration<ComponentListComponent, never>;
26
- static ɵcmp: i0.ɵɵComponentDeclaration<ComponentListComponent, "app-report-component-list", never, { "reportId": { "alias": "reportId"; "required": false; }; "component": { "alias": "component"; "required": false; }; }, {}, never, never, true, never>;
55
+ static ɵcmp: i0.ɵɵComponentDeclaration<ComponentListComponent, "app-report-component-list", never, { "reportId": { "alias": "reportId"; "required": true; "isSignal": true; }; "component": { "alias": "component"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
27
56
  }
@@ -0,0 +1,12 @@
1
+ import { ComponentNoteData } from '../../output-notes';
2
+ import * as i0 from "@angular/core";
3
+ export declare class ComponentNoteComponent {
4
+ readonly data: import("@angular/core").InputSignal<ComponentNoteData>;
5
+ readonly windows: import("@angular/core").InputSignal<boolean>;
6
+ readonly windowDescriptions: import("@angular/core").InputSignal<boolean>;
7
+ readonly windowNotes: import("@angular/core").InputSignal<boolean>;
8
+ readonly lines: import("@angular/core").Signal<string[]>;
9
+ private readonly _filterState;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<ComponentNoteComponent, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<ComponentNoteComponent, "app-report-component-note", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "windows": { "alias": "windows"; "required": false; "isSignal": true; }; "windowDescriptions": { "alias": "windowDescriptions"; "required": false; "isSignal": true; }; "windowNotes": { "alias": "windowNotes"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
12
+ }
@@ -39,7 +39,6 @@ export declare class ReportCanvasComponent implements OnChanges, AfterViewInit {
39
39
  private _viewport;
40
40
  private _guides;
41
41
  readonly PX = 96;
42
- readonly flowPadding = 0.25;
43
42
  readonly pages: import("@angular/core").WritableSignal<ReportPage[]>;
44
43
  readonly activePageIndex: import("@angular/core").WritableSignal<number>;
45
44
  readonly zoom: import("@angular/core").WritableSignal<number>;
@@ -58,8 +57,6 @@ export declare class ReportCanvasComponent implements OnChanges, AfterViewInit {
58
57
  ngOnChanges(changes: SimpleChanges): void;
59
58
  get headingSizePx(): number;
60
59
  ngAfterViewInit(): void;
61
- get isFlow(): boolean;
62
- get ratioPercent(): boolean;
63
60
  get activePage(): ReportPage | null;
64
61
  get bands(): ReportHeaderFooter;
65
62
  get masterComponents(): ReportComponent[];
@@ -71,7 +68,6 @@ export declare class ReportCanvasComponent implements OnChanges, AfterViewInit {
71
68
  addText(): void;
72
69
  onComponentRemoved(componentId: number): void;
73
70
  toggleMasterHidden(page: ReportPage): void;
74
- get flowComponents(): ReportComponent[];
75
71
  selectPage(index: number): void;
76
72
  addPage(): void;
77
73
  pageLabel(page: ReportPage, index: number): string;
@@ -89,12 +85,6 @@ export declare class ReportCanvasComponent implements OnChanges, AfterViewInit {
89
85
  onPositionChanged(position: {
90
86
  componentId: number;
91
87
  } & Record<string, number>): void;
92
- onFlowReorder(event: {
93
- componentId: number;
94
- clientX: number;
95
- clientY: number;
96
- }): void;
97
- private _flowDropIndex;
98
88
  private get _snapThreshold();
99
89
  private _snapMove;
100
90
  private _snapResize;
@@ -1,6 +1,6 @@
1
1
  import { EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core';
2
2
  import { FilterConfig } from '@firestitch/filter';
3
- import { ComponentData, ComponentSettings, ReportComponent as ReportComponentModel, ReportFilterGroup, ReportLayout } from '../../interfaces/report.interface';
3
+ import { ComponentData, ComponentSettings, ReportComponent as ReportComponentModel, ReportFilterGroup } from '../../interfaces/report.interface';
4
4
  import { ComponentChartComponent } from '../component-chart/component-chart.component';
5
5
  import { TextTokenContext } from '../../text';
6
6
  import { CanvasSnapper } from '../report-canvas/report-canvas.component';
@@ -12,7 +12,6 @@ export declare class ReportComponentComponent implements OnInit, OnChanges {
12
12
  component: ReportComponentModel;
13
13
  groups: Map<number, ReportFilterGroup>;
14
14
  editMode: boolean;
15
- layout: ReportLayout;
16
15
  zoom: number;
17
16
  snapper: CanvasSnapper | null;
18
17
  selected: boolean;
@@ -20,14 +19,8 @@ export declare class ReportComponentComponent implements OnInit, OnChanges {
20
19
  positionChanged: EventEmitter<{
21
20
  componentId: number;
22
21
  } & Record<string, number>>;
23
- flowReorder: EventEmitter<{
24
- componentId: number;
25
- clientX: number;
26
- clientY: number;
27
- }>;
28
22
  openSettings: EventEmitter<ReportComponentModel>;
29
23
  readonly tokens: import("@angular/core").InputSignal<TextTokenContext>;
30
- readonly ratioPercent: import("@angular/core").InputSignal<boolean>;
31
24
  readonly removed: import("@angular/core").OutputEmitterRef<number>;
32
25
  readonly textEditing: import("@angular/core").WritableSignal<boolean>;
33
26
  chartComponent: ComponentChartComponent;
@@ -42,6 +35,7 @@ export declare class ReportComponentComponent implements OnInit, OnChanges {
42
35
  private _process;
43
36
  private _message;
44
37
  private _prompt;
38
+ private _dialog;
45
39
  private _lastPress;
46
40
  private _destroyRef;
47
41
  private _zone;
@@ -57,6 +51,8 @@ export declare class ReportComponentComponent implements OnInit, OnChanges {
57
51
  get bodyPadding(): string;
58
52
  get componentFilterGroups(): ReportFilterGroup[];
59
53
  settings(): void;
54
+ get hidesColumns(): boolean;
55
+ chooseColumns(): void;
60
56
  applySettings(settings: ComponentSettings): void;
61
57
  exportCsv(): void;
62
58
  stopCanvasPan(event: Event): void;
@@ -64,8 +60,6 @@ export declare class ReportComponentComponent implements OnInit, OnChanges {
64
60
  onDragStart(event: PointerEvent): void;
65
61
  onResizeStart(event: PointerEvent, handle: Handle): void;
66
62
  private _buildFilterConfig;
67
- private _flowResize;
68
- private _flowDrag;
69
63
  private _origin;
70
64
  private _track;
71
65
  private _emitGeometry;
@@ -74,10 +68,9 @@ export declare class ReportComponentComponent implements OnInit, OnChanges {
74
68
  get heightAuto(): boolean;
75
69
  private _inches;
76
70
  private _round;
77
- private _snapFlowWidth;
78
71
  private _applyGeometry;
79
72
  private _load;
80
73
  static ɵfac: i0.ɵɵFactoryDeclaration<ReportComponentComponent, never>;
81
- static ɵcmp: i0.ɵɵComponentDeclaration<ReportComponentComponent, "app-report-component", never, { "reportId": { "alias": "reportId"; "required": false; }; "component": { "alias": "component"; "required": false; }; "groups": { "alias": "groups"; "required": false; }; "editMode": { "alias": "editMode"; "required": false; }; "layout": { "alias": "layout"; "required": false; }; "zoom": { "alias": "zoom"; "required": false; }; "snapper": { "alias": "snapper"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "tokens": { "alias": "tokens"; "required": false; "isSignal": true; }; "ratioPercent": { "alias": "ratioPercent"; "required": false; "isSignal": true; }; }, { "selectComponent": "selectComponent"; "positionChanged": "positionChanged"; "flowReorder": "flowReorder"; "openSettings": "openSettings"; "removed": "removed"; }, never, never, true, never>;
74
+ static ɵcmp: i0.ɵɵComponentDeclaration<ReportComponentComponent, "app-report-component", never, { "reportId": { "alias": "reportId"; "required": false; }; "component": { "alias": "component"; "required": false; }; "groups": { "alias": "groups"; "required": false; }; "editMode": { "alias": "editMode"; "required": false; }; "zoom": { "alias": "zoom"; "required": false; }; "snapper": { "alias": "snapper"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "tokens": { "alias": "tokens"; "required": false; "isSignal": true; }; }, { "selectComponent": "selectComponent"; "positionChanged": "positionChanged"; "openSettings": "openSettings"; "removed": "removed"; }, never, never, true, never>;
82
75
  }
83
76
  export {};
@@ -1,6 +1,6 @@
1
1
  import { RequestConfig } from '@firestitch/api';
2
2
  import { Observable } from 'rxjs';
3
- import { ChartGranularity, ComponentDataState, ComponentExportResponse, FilterGroupDefault, ReportComponentSql, ReportFilterLevel, ReportTree, ResolvedFilterValue } from '../interfaces/report.interface';
3
+ import { ChartGranularity, ComponentDataState, ComponentExportResponse, FilterGroupDefault, ReportComponentSql, ReportFilterLevel, ReportLocales, ReportTree, ResolvedFilterValue } from '../interfaces/report.interface';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class ReportData<T = any> {
6
6
  private _api;
@@ -46,8 +46,6 @@ export declare class ReportData<T = any> {
46
46
  y: number;
47
47
  w: number;
48
48
  h: number;
49
- flowWidth: number;
50
- order: number;
51
49
  }>)[], config?: RequestConfig): Observable<T>;
52
50
  componentData(reportId: number, componentId: number, filters?: ResolvedFilterValue[], state?: ComponentDataState, isExport?: boolean, config?: RequestConfig): Observable<T>;
53
51
  exportComponent(reportId: number, componentId: number, filters?: ResolvedFilterValue[], state?: ComponentDataState, config?: RequestConfig): Observable<ComponentExportResponse>;
@@ -77,6 +75,7 @@ export declare class ReportData<T = any> {
77
75
  semanticBuildStop(config?: RequestConfig): Observable<T>;
78
76
  semanticEntityFunctions(entity: string, config?: RequestConfig): Observable<T>;
79
77
  settings(config?: RequestConfig): Observable<T>;
78
+ locales(config?: RequestConfig): Observable<ReportLocales>;
80
79
  saveSettings(settings: {
81
80
  semanticBuildConcurrency: number;
82
81
  }, config?: RequestConfig): Observable<T>;
@@ -1,11 +1,17 @@
1
1
  import { EventEmitter, OnInit } from '@angular/core';
2
+ import { AbstractControl } from '@angular/forms';
2
3
  import { Observable } from 'rxjs';
3
- import { ComponentSettings, Report, ReportComponent, ReportFilterType } from '../../interfaces/report.interface';
4
+ import { ReportChangePolarity } from '../../enums/report-change-polarity.enum';
5
+ import { ChartGranularity, ComponentSettings, Report, ReportComponent, ReportFilterType } from '../../interfaces/report.interface';
4
6
  import * as i0 from "@angular/core";
5
7
  export interface ComponentSettingsResult {
6
8
  settings?: ComponentSettings;
7
9
  deleted?: boolean;
8
10
  }
11
+ interface ComponentSettingsResponse {
12
+ id: number;
13
+ config?: Record<string, unknown> | null;
14
+ }
9
15
  interface FilterRow {
10
16
  column: string;
11
17
  type: ReportFilterType;
@@ -24,6 +30,25 @@ export declare class ComponentSettingsComponent implements OnInit {
24
30
  paddingBottom: number | string;
25
31
  paddingLeft: number | string;
26
32
  configJson: string;
33
+ readonly kpiPolarityOptions: {
34
+ value: ReportChangePolarity;
35
+ name: string;
36
+ }[];
37
+ readonly granularityOptions: {
38
+ value: ChartGranularity;
39
+ name: string;
40
+ }[];
41
+ readonly sparklineMinPeriods = 2;
42
+ readonly sparklineMaxPeriods = 60;
43
+ readonly kpiCard: import("@angular/core").WritableSignal<boolean>;
44
+ readonly increaseIs: import("@angular/core").WritableSignal<ReportChangePolarity>;
45
+ readonly targetValue: import("@angular/core").WritableSignal<string | number>;
46
+ readonly targetLabel: import("@angular/core").WritableSignal<string>;
47
+ readonly targetPercent: import("@angular/core").WritableSignal<boolean>;
48
+ readonly hasTarget: import("@angular/core").Signal<boolean>;
49
+ readonly sparkline: import("@angular/core").WritableSignal<boolean>;
50
+ readonly sparklineGranularity: import("@angular/core").WritableSignal<ChartGranularity>;
51
+ readonly sparklinePeriods: import("@angular/core").WritableSignal<string | number>;
27
52
  readonly sql: import("@angular/core").WritableSignal<string>;
28
53
  readonly sqlBaseline: import("@angular/core").WritableSignal<boolean>;
29
54
  readonly sqlTimezone: import("@angular/core").WritableSignal<string>;
@@ -43,8 +68,15 @@ export declare class ComponentSettingsComponent implements OnInit {
43
68
  ngOnInit(): void;
44
69
  typeLabel(type: ReportFilterType): string;
45
70
  delete(): void;
46
- save: () => Observable<any>;
71
+ validateTarget: (control: AbstractControl) => void;
72
+ save: () => Observable<ComponentSettingsResponse>;
47
73
  setExposure(row: FilterRow, target: 'report' | 'component', on: boolean): void;
74
+ private _seedKpiCard;
75
+ private _savedKpiCard;
76
+ private _kpiCardSettings;
77
+ private _targetShown;
78
+ private _targetStored;
79
+ private _number;
48
80
  private _padding;
49
81
  private _run;
50
82
  private _rebuildRows;
@@ -0,0 +1,23 @@
1
+ import * as i0 from "@angular/core";
2
+ export interface ListColumnsDialogData {
3
+ columns: {
4
+ column: string;
5
+ label: string;
6
+ }[];
7
+ hidden: string[];
8
+ }
9
+ export declare class ListColumnsComponent {
10
+ readonly data: ListColumnsDialogData;
11
+ readonly columns: {
12
+ column: string;
13
+ label: string;
14
+ }[];
15
+ readonly hidden: import("@angular/core").WritableSignal<ReadonlySet<string>>;
16
+ readonly shownCount: import("@angular/core").Signal<number>;
17
+ private readonly _dialogRef;
18
+ isLastShown(name: string): boolean;
19
+ toggle(name: string, shown: boolean): void;
20
+ done(): void;
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<ListColumnsComponent, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<ListColumnsComponent, "ng-component", never, {}, {}, never, never, true, never>;
23
+ }
@@ -0,0 +1,5 @@
1
+ import { Report } from '../../interfaces/report.interface';
2
+ export declare function reportLocalePatch(report: Pick<Report, 'locale' | 'currency'>, locale: string, currency: string): {
3
+ locale?: string;
4
+ currency?: string;
5
+ };
@@ -1,6 +1,6 @@
1
1
  import { OnInit } from '@angular/core';
2
2
  import { Observable } from 'rxjs';
3
- import { ReportFilterGroup } from '../../interfaces/report.interface';
3
+ import { ReportFilterGroup, ReportLocales } from '../../interfaces/report.interface';
4
4
  import { relativeLabel } from '../../report-filter-items';
5
5
  import * as i0 from "@angular/core";
6
6
  export interface ReportSettingsResult {
@@ -22,6 +22,10 @@ interface FilterDefaultRow {
22
22
  value: unknown;
23
23
  }[]>;
24
24
  }
25
+ interface LocaleSelectOption {
26
+ value: string;
27
+ label: string;
28
+ }
25
29
  export declare class ReportSettingsComponent implements OnInit {
26
30
  selectedTab: string;
27
31
  name: string;
@@ -32,9 +36,15 @@ export declare class ReportSettingsComponent implements OnInit {
32
36
  headerHeight: number | string;
33
37
  footerHeight: number | string;
34
38
  readonly headerFooterMax = 3;
35
- layout: 'freeform' | 'flow';
36
39
  timezone: string;
37
40
  headingSize: number;
41
+ readonly locales: import("@angular/core").WritableSignal<ReportLocales>;
42
+ readonly locale: import("@angular/core").WritableSignal<string>;
43
+ readonly currency: import("@angular/core").WritableSignal<string>;
44
+ readonly ready: import("@angular/core").Signal<boolean>;
45
+ readonly localeOptions: import("@angular/core").Signal<LocaleSelectOption[]>;
46
+ readonly currencyOptions: import("@angular/core").Signal<LocaleSelectOption[]>;
47
+ readonly formatExample: import("@angular/core").Signal<string>;
38
48
  readonly filterRows: import("@angular/core").WritableSignal<FilterDefaultRow[]>;
39
49
  readonly relativeLabel: typeof relativeLabel;
40
50
  private readonly _data;
@@ -43,13 +53,21 @@ export declare class ReportSettingsComponent implements OnInit {
43
53
  private readonly _message;
44
54
  private readonly _prompt;
45
55
  private readonly _destroyRef;
56
+ private readonly _serverHasLocale;
57
+ private readonly _localesSettled;
58
+ private readonly _filtersReady;
59
+ private readonly _appliedLocale;
60
+ private readonly _defaultCurrency;
61
+ private readonly _appliedCurrency;
46
62
  ngOnInit(): void;
47
63
  delete(): void;
48
64
  save: () => Observable<[any, ...any[]]>;
49
65
  clearRelative(row: FilterDefaultRow): void;
50
66
  private _pageDimension;
51
67
  private _timezoneSetting;
68
+ private _storedOption;
52
69
  private _buildFilterRows;
70
+ private _publishFilterRows;
53
71
  private _rowDefault;
54
72
  private _defaultChanged;
55
73
  private _normalize;
@@ -0,0 +1,5 @@
1
+ export declare enum ReportChangePolarity {
2
+ Good = "good",
3
+ Bad = "bad",
4
+ Neutral = "neutral"
5
+ }
@@ -0,0 +1,12 @@
1
+ export declare enum ReportChartColor {
2
+ Blue = "blue",
3
+ Orange = "orange",
4
+ Red = "red",
5
+ Teal = "teal",
6
+ Green = "green",
7
+ Yellow = "yellow",
8
+ Purple = "purple",
9
+ Pink = "pink",
10
+ Brown = "brown",
11
+ Gray = "gray"
12
+ }
@@ -0,0 +1,6 @@
1
+ export declare enum ReportChartDataLabels {
2
+ None = "none",
3
+ All = "all",
4
+ Last = "last",
5
+ Auto = "auto"
6
+ }
@@ -0,0 +1,5 @@
1
+ export declare enum ReportChartDateLabel {
2
+ Short = "short",
3
+ Long = "long",
4
+ Numeric = "numeric"
5
+ }
@@ -0,0 +1,5 @@
1
+ export declare enum ReportChartLineStyle {
2
+ Solid = "solid",
3
+ Dashed = "dashed",
4
+ Dotted = "dotted"
5
+ }
@@ -0,0 +1,6 @@
1
+ export declare enum ReportChartMarkStat {
2
+ Average = "average",
3
+ Median = "median",
4
+ Min = "min",
5
+ Max = "max"
6
+ }
@@ -0,0 +1,5 @@
1
+ export declare enum ReportKpiTrend {
2
+ Up = "up",
3
+ Down = "down",
4
+ Flat = "flat"
5
+ }
@@ -0,0 +1,6 @@
1
+ export declare enum ReportListColumnFormat {
2
+ Date = "date",
3
+ Number = "number",
4
+ Percent = "percent",
5
+ Currency = "currency"
6
+ }
@@ -0,0 +1,6 @@
1
+ export declare enum ReportNumberUnits {
2
+ None = "none",
3
+ Thousands = "thousands",
4
+ Millions = "millions",
5
+ Auto = "auto"
6
+ }
@@ -0,0 +1,5 @@
1
+ export declare enum ReportValueFormat {
2
+ Number = "number",
3
+ Percent = "percent",
4
+ Currency = "currency"
5
+ }
@@ -1,2 +1,2 @@
1
- import { ComponentData, ReportComponent } from '../interfaces/report.interface';
2
- export declare function renderChartImage(component: ReportComponent, data: ComponentData, width: number, height: number, pixelRatio?: number): Promise<string>;
1
+ import { ComponentData, ReportComponent, ReportFormatContext } from '../interfaces/report.interface';
2
+ export declare function renderChartImage(component: ReportComponent, data: ComponentData, width: number, height: number, context: ReportFormatContext, pixelRatio?: number): Promise<string>;
@@ -1,9 +1,13 @@
1
1
  import { Observable } from 'rxjs';
2
- import { ComponentData, Report, ReportComponent, ReportPage } from '../interfaces/report.interface';
2
+ import { ComponentData, ListColumn, Report, ReportComponent, ReportFormatContext, ReportLocaleTag, ReportPage } from '../interfaces/report.interface';
3
+ import { KpiCardView } from '../kpi-card';
4
+ import { ListOutputColumn } from '../list-config';
3
5
  import * as i0 from "@angular/core";
4
6
  export interface CollectedComponent {
5
7
  component: ReportComponent;
6
8
  data: ComponentData | null;
9
+ search?: string;
10
+ hiddenColumns: string[];
7
11
  }
8
12
  export interface CollectedPage {
9
13
  page: ReportPage;
@@ -14,18 +18,43 @@ export interface CollectedReport {
14
18
  pages: CollectedPage[];
15
19
  filterSummary: string[];
16
20
  contextLines: string[];
21
+ formatContext: ReportFormatContext;
17
22
  }
18
- export interface ExportListColumn {
19
- column: string;
20
- label?: string;
21
- format?: string;
23
+ export type ExportListColumn = ListColumn & {
24
+ numeric: boolean;
25
+ output?: ListOutputColumn;
26
+ };
27
+ export interface KpiExportHeights {
28
+ value: number;
29
+ label: number;
30
+ delta: number;
31
+ window: number;
32
+ target: number;
33
+ sparkline: number;
34
+ note: number;
35
+ }
36
+ export interface KpiExportParts {
37
+ delta: boolean;
38
+ window: boolean;
39
+ target: boolean;
40
+ sparkline: boolean;
41
+ notes: string[];
22
42
  }
23
43
  export declare function emptyLabel(item: CollectedComponent): string;
44
+ export declare function exportTitle(component: ReportComponent, search?: string | null): string;
24
45
  export declare function isFailed(item: CollectedComponent): boolean;
25
46
  export declare function coverLines(collected: CollectedReport): string[];
26
- export declare function exportCell(value: unknown, columnFormat: string | undefined, timezone: string): string;
27
- export declare function listColumns(component: ReportComponent, data: ComponentData): ExportListColumn[];
28
- export declare function listHeadings(component: ReportComponent, data: ComponentData): string[];
47
+ export declare function exportCell(value: unknown, column: ListColumn & {
48
+ output?: ListOutputColumn;
49
+ }, timezone: string, context: ReportFormatContext, row?: Record<string, unknown> | null): string;
50
+ export declare function listColumns(component: ReportComponent, data: ComponentData, locale: ReportLocaleTag, hidden?: readonly string[]): ExportListColumn[];
51
+ export declare function listHeadings(component: ReportComponent, data: ComponentData, locale: ReportLocaleTag, hidden?: readonly string[]): string[];
52
+ export declare function listTotalsRow(data: ComponentData, columns: readonly ExportListColumn[], timezone: string, context: ReportFormatContext): string[] | null;
53
+ export declare function exportWindowsLine(item: CollectedComponent, timezone: string, locale: ReportLocaleTag): string;
54
+ export declare function exportNoteLines(item: CollectedComponent, timezone: string, locale: ReportLocaleTag): string[];
55
+ export declare function kpiCardHasExtras(view: KpiCardView, notes: readonly string[]): boolean;
56
+ export declare function kpiExportParts(view: KpiCardView, notes: readonly string[], available: number, heights: KpiExportHeights): KpiExportParts;
57
+ export declare function kpiExportHeight(view: KpiCardView, parts: KpiExportParts, heights: KpiExportHeights): number;
29
58
  export declare function moreRowsNotice(remaining: number): string;
30
59
  export declare function failedPageNames(collected: CollectedReport): string[];
31
60
  export declare class ReportExportCollectorService {
@@ -15,6 +15,8 @@ export declare class ReportPdfService {
15
15
  private _alignOffset;
16
16
  private _tokens;
17
17
  private _renderComponent;
18
+ private _smallLine;
19
+ private _fit;
18
20
  private _componentTitle;
19
21
  private _boxNote;
20
22
  private _renderTable;
@@ -27,6 +29,10 @@ export declare class ReportPdfService {
27
29
  private _continuationMargin;
28
30
  private _continuedTitle;
29
31
  private _renderKpi;
32
+ private _kpiDelta;
33
+ private _kpiTarget;
34
+ private _kpiSparkline;
35
+ private _pdfText;
30
36
  private _slug;
31
37
  static ɵfac: i0.ɵɵFactoryDeclaration<ReportPdfService, never>;
32
38
  static ɵprov: i0.ɵɵInjectableDeclaration<ReportPdfService>;