@firestitch/report 18.5.0 → 18.6.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.
- package/app/reports/components/component-list/component-list.component.d.ts +3 -6
- package/app/reports/components/report-canvas/report-canvas.component.d.ts +4 -4
- package/app/reports/components/report-component/report-component.component.d.ts +5 -5
- package/app/reports/components/timezone-select/timezone-select.component.d.ts +4 -6
- package/app/reports/consts/report-week.const.d.ts +2 -0
- package/app/reports/data/report-ai-chat.data.d.ts +12 -0
- package/app/reports/data/report.data.d.ts +3 -3
- package/app/reports/dialogs/component-settings/component-settings.component.d.ts +6 -6
- package/app/reports/dialogs/report-settings/report-settings.component.d.ts +5 -0
- package/app/reports/export/report-export-collector.service.d.ts +14 -2
- package/app/reports/export/report-pdf.service.d.ts +14 -1
- package/app/reports/export/report-pptx.service.d.ts +2 -1
- package/app/reports/format.d.ts +7 -0
- package/app/reports/interfaces/report-chat-viewer-filter.interface.d.ts +7 -0
- package/app/reports/interfaces/report-chat-viewer-state.interface.d.ts +7 -0
- package/app/reports/interfaces/report.interface.d.ts +17 -2
- package/app/reports/pipes/report-date.pipe.d.ts +7 -0
- package/app/reports/report-filter-items.d.ts +5 -0
- package/app/reports/report-url-state.d.ts +14 -0
- package/app/reports/services/report-filter-state.service.d.ts +24 -2
- package/app/reports/theme/typography.d.ts +2 -0
- package/app/reports/views/report/fs-ai-report.component.d.ts +16 -8
- package/app/reports/views/report/report.component.d.ts +6 -6
- package/esm2022/app/reports/components/component-list/component-list.component.mjs +29 -104
- package/esm2022/app/reports/components/report-canvas/report-canvas.component.mjs +52 -44
- package/esm2022/app/reports/components/report-component/report-component.component.mjs +55 -35
- package/esm2022/app/reports/components/timezone-select/timezone-select.component.mjs +23 -23
- package/esm2022/app/reports/consts/report-week.const.mjs +7 -0
- package/esm2022/app/reports/data/report-ai-chat.data.mjs +25 -0
- package/esm2022/app/reports/data/report.data.mjs +22 -9
- package/esm2022/app/reports/dialogs/component-settings/component-settings.component.mjs +25 -26
- package/esm2022/app/reports/dialogs/report-settings/report-settings.component.mjs +38 -13
- package/esm2022/app/reports/export/report-export-collector.service.mjs +92 -28
- package/esm2022/app/reports/export/report-export.service.mjs +11 -8
- package/esm2022/app/reports/export/report-pdf.service.mjs +241 -81
- package/esm2022/app/reports/export/report-pptx.service.mjs +60 -45
- package/esm2022/app/reports/format.mjs +119 -8
- package/esm2022/app/reports/interfaces/report-chat-viewer-filter.interface.mjs +2 -0
- package/esm2022/app/reports/interfaces/report-chat-viewer-state.interface.mjs +2 -0
- package/esm2022/app/reports/interfaces/report.interface.mjs +1 -1
- package/esm2022/app/reports/option-builder.mjs +131 -15
- package/esm2022/app/reports/pipes/report-date.pipe.mjs +21 -0
- package/esm2022/app/reports/report-filter-items.mjs +42 -10
- package/esm2022/app/reports/report-url-state.mjs +144 -0
- package/esm2022/app/reports/services/report-filter-state.service.mjs +308 -64
- package/esm2022/app/reports/theme/echarts.mjs +6 -5
- package/esm2022/app/reports/theme/typography.mjs +6 -0
- package/esm2022/app/reports/views/report/fs-ai-report.component.mjs +191 -90
- package/esm2022/app/reports/views/report/report.component.mjs +64 -62
- package/fesm2022/{firestitch-report-echarts-CtKYuRcT.mjs → firestitch-report-echarts-B9nl9XKM.mjs} +6 -6
- package/fesm2022/firestitch-report-echarts-B9nl9XKM.mjs.map +1 -0
- package/fesm2022/{firestitch-report-firestitch-report-Df1IXrEs.mjs → firestitch-report-firestitch-report-Bb65HEYB.mjs} +1707 -703
- package/fesm2022/firestitch-report-firestitch-report-Bb65HEYB.mjs.map +1 -0
- package/fesm2022/firestitch-report.mjs +1 -1
- package/package.json +1 -1
- package/app/reports/dialogs/report-settings/report-settings-default.d.ts +0 -2
- package/esm2022/app/reports/dialogs/report-settings/report-settings-default.mjs +0 -22
- package/fesm2022/firestitch-report-echarts-CtKYuRcT.mjs.map +0 -1
- package/fesm2022/firestitch-report-firestitch-report-Df1IXrEs.mjs.map +0 -1
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { OnInit } from '@angular/core';
|
|
2
2
|
import { FsListComponent, FsListConfig } from '@firestitch/list';
|
|
3
|
-
import { ReportComponent
|
|
3
|
+
import { ReportComponent } from '../../interfaces/report.interface';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class ComponentListComponent implements OnInit {
|
|
6
6
|
reportId: number;
|
|
7
7
|
component: ReportComponent;
|
|
8
|
-
groups: Map<number, ReportFilterGroup>;
|
|
9
8
|
listComponent: FsListComponent;
|
|
10
9
|
listConfig: FsListConfig;
|
|
11
10
|
columns: import("@angular/core").WritableSignal<{
|
|
@@ -15,17 +14,15 @@ export declare class ComponentListComponent implements OnInit {
|
|
|
15
14
|
}[]>;
|
|
16
15
|
pivoted: import("@angular/core").WritableSignal<boolean>;
|
|
17
16
|
truncated: import("@angular/core").WritableSignal<boolean>;
|
|
17
|
+
readonly timezone: import("@angular/core").WritableSignal<string>;
|
|
18
18
|
private _reportData;
|
|
19
19
|
private _filterState;
|
|
20
20
|
private _destroyRef;
|
|
21
21
|
ngOnInit(): void;
|
|
22
22
|
private _initListConfig;
|
|
23
|
-
private _ownFilters;
|
|
24
|
-
private _filterItem;
|
|
25
23
|
private _fetch;
|
|
26
24
|
private _pivotColumns;
|
|
27
25
|
private _spansMultipleYears;
|
|
28
|
-
private _barValues;
|
|
29
26
|
static ɵfac: i0.ɵɵFactoryDeclaration<ComponentListComponent, never>;
|
|
30
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ComponentListComponent, "app-report-component-list", never, { "reportId": { "alias": "reportId"; "required": false; }; "component": { "alias": "component"; "required": false; };
|
|
27
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ComponentListComponent, "app-report-component-list", never, { "reportId": { "alias": "reportId"; "required": false; }; "component": { "alias": "component"; "required": false; }; }, {}, never, never, true, never>;
|
|
31
28
|
}
|
|
@@ -40,16 +40,16 @@ export declare class ReportCanvasComponent implements OnChanges, AfterViewInit {
|
|
|
40
40
|
private _guides;
|
|
41
41
|
readonly PX = 96;
|
|
42
42
|
readonly flowPadding = 0.25;
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
readonly pages: import("@angular/core").WritableSignal<ReportPage[]>;
|
|
44
|
+
readonly activePageIndex: import("@angular/core").WritableSignal<number>;
|
|
45
|
+
readonly zoom: import("@angular/core").WritableSignal<number>;
|
|
45
46
|
readonly masterMode: import("@angular/core").WritableSignal<boolean>;
|
|
46
47
|
groups: Map<number, ReportFilterGroup>;
|
|
47
|
-
selectedComponentId: number
|
|
48
|
+
readonly selectedComponentId: import("@angular/core").WritableSignal<number>;
|
|
48
49
|
readonly snapper: CanvasSnapper;
|
|
49
50
|
private _reportData;
|
|
50
51
|
private _prompt;
|
|
51
52
|
private _message;
|
|
52
|
-
private _cdRef;
|
|
53
53
|
private _destroyRef;
|
|
54
54
|
private _fitted;
|
|
55
55
|
private _tokens;
|
|
@@ -31,18 +31,18 @@ export declare class ReportComponentComponent implements OnInit, OnChanges {
|
|
|
31
31
|
readonly textEditing: import("@angular/core").WritableSignal<boolean>;
|
|
32
32
|
chartComponent: ComponentChartComponent;
|
|
33
33
|
get resizeHandles(): readonly Handle[];
|
|
34
|
-
filterConfig: FilterConfig
|
|
35
|
-
data: ComponentData
|
|
36
|
-
loading: boolean
|
|
37
|
-
error: string
|
|
34
|
+
readonly filterConfig: import("@angular/core").WritableSignal<FilterConfig>;
|
|
35
|
+
readonly data: import("@angular/core").WritableSignal<ComponentData>;
|
|
36
|
+
readonly loading: import("@angular/core").WritableSignal<boolean>;
|
|
37
|
+
readonly error: import("@angular/core").WritableSignal<string>;
|
|
38
38
|
private _refresh$;
|
|
39
39
|
private _reportData;
|
|
40
40
|
private _filterState;
|
|
41
41
|
private _process;
|
|
42
|
+
private _message;
|
|
42
43
|
private _prompt;
|
|
43
44
|
private _lastPress;
|
|
44
45
|
private _destroyRef;
|
|
45
|
-
private _cdRef;
|
|
46
46
|
private _zone;
|
|
47
47
|
private _host;
|
|
48
48
|
ngOnInit(): void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { EventEmitter
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class TimezoneSelectComponent
|
|
3
|
+
export declare class TimezoneSelectComponent {
|
|
4
4
|
placeholder: string;
|
|
5
5
|
required: boolean;
|
|
6
6
|
disabled: boolean;
|
|
@@ -8,10 +8,8 @@ export declare class TimezoneSelectComponent implements OnInit {
|
|
|
8
8
|
set timezone(value: string);
|
|
9
9
|
get timezone(): string;
|
|
10
10
|
guid: string;
|
|
11
|
-
timezones: string[]
|
|
12
|
-
private
|
|
13
|
-
private _timezone;
|
|
14
|
-
ngOnInit(): void;
|
|
11
|
+
readonly timezones: import("@angular/core").Signal<string[]>;
|
|
12
|
+
private readonly _timezone;
|
|
15
13
|
private _supportedTimezones;
|
|
16
14
|
static ɵfac: i0.ɵɵFactoryDeclaration<TimezoneSelectComponent, never>;
|
|
17
15
|
static ɵcmp: i0.ɵɵComponentDeclaration<TimezoneSelectComponent, "fs-ai-report-timezone-select", never, { "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "timezone": { "alias": "timezone"; "required": false; }; }, { "timezoneChange": "timezoneChange"; }, never, never, true, never>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { FsAiChatData } from '@firestitch/ai';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
type ChatStreamBody = Parameters<FsAiChatData['chatStream']>[1];
|
|
4
|
+
type ChatStreamConfig = Parameters<FsAiChatData['chatStream']>[2];
|
|
5
|
+
type ChatStream = ReturnType<FsAiChatData['chatStream']>;
|
|
6
|
+
export declare class ReportAiChatData extends FsAiChatData {
|
|
7
|
+
turnData: () => Record<string, unknown>;
|
|
8
|
+
chatStream(basePath: string, body: ChatStreamBody, config?: ChatStreamConfig): ChatStream;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ReportAiChatData, never>;
|
|
10
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ReportAiChatData>;
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { RequestConfig } from '@firestitch/api';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
|
-
import { ComponentDataState, FilterGroupDefault, ReportComponentSql, ReportFilterLevel, ReportTree, ResolvedFilterValue } from '../interfaces/report.interface';
|
|
3
|
+
import { ChartGranularity, ComponentDataState, ComponentExportResponse, FilterGroupDefault, ReportComponentSql, ReportFilterLevel, 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;
|
|
@@ -50,8 +50,8 @@ export declare class ReportData<T = any> {
|
|
|
50
50
|
order: number;
|
|
51
51
|
}>)[], config?: RequestConfig): Observable<T>;
|
|
52
52
|
componentData(reportId: number, componentId: number, filters?: ResolvedFilterValue[], state?: ComponentDataState, isExport?: boolean, config?: RequestConfig): Observable<T>;
|
|
53
|
-
exportComponent(reportId: number, componentId: number, filters?: ResolvedFilterValue[], state?: ComponentDataState, config?: RequestConfig): Observable<
|
|
54
|
-
exportReport(reportId: number, filters?: ResolvedFilterValue[], pageId?: number | null, config?: RequestConfig): Observable<T>;
|
|
53
|
+
exportComponent(reportId: number, componentId: number, filters?: ResolvedFilterValue[], state?: ComponentDataState, config?: RequestConfig): Observable<ComponentExportResponse>;
|
|
54
|
+
exportReport(reportId: number, filters?: ResolvedFilterValue[], pageId?: number | null, frequency?: ChartGranularity | null, filterSummary?: string[], config?: RequestConfig): Observable<T>;
|
|
55
55
|
filterOptions(reportId: number, filterId: number, config?: RequestConfig): Observable<T>;
|
|
56
56
|
componentSql(reportId: number, componentId: number, config?: RequestConfig): Observable<ReportComponentSql>;
|
|
57
57
|
componentColumns(reportId: number, componentId: number, config?: RequestConfig): Observable<T>;
|
|
@@ -24,11 +24,12 @@ export declare class ComponentSettingsComponent implements OnInit {
|
|
|
24
24
|
paddingBottom: number | string;
|
|
25
25
|
paddingLeft: number | string;
|
|
26
26
|
configJson: string;
|
|
27
|
-
sql: string
|
|
28
|
-
sqlBaseline: boolean
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
readonly sql: import("@angular/core").WritableSignal<string>;
|
|
28
|
+
readonly sqlBaseline: import("@angular/core").WritableSignal<boolean>;
|
|
29
|
+
readonly sqlTimezone: import("@angular/core").WritableSignal<string>;
|
|
30
|
+
readonly sqlError: import("@angular/core").WritableSignal<string>;
|
|
31
|
+
readonly rows: import("@angular/core").WritableSignal<FilterRow[]>;
|
|
32
|
+
readonly columnsError: import("@angular/core").WritableSignal<string>;
|
|
32
33
|
private _filterableColumns;
|
|
33
34
|
private _filters;
|
|
34
35
|
private _groupsById;
|
|
@@ -39,7 +40,6 @@ export declare class ComponentSettingsComponent implements OnInit {
|
|
|
39
40
|
private readonly _message;
|
|
40
41
|
private readonly _prompt;
|
|
41
42
|
private readonly _destroyRef;
|
|
42
|
-
private readonly _cdRef;
|
|
43
43
|
ngOnInit(): void;
|
|
44
44
|
typeLabel(type: ReportFilterType): string;
|
|
45
45
|
delete(): void;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { OnInit } from '@angular/core';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
3
|
import { ReportFilterGroup } from '../../interfaces/report.interface';
|
|
4
|
+
import { relativeLabel } from '../../report-filter-items';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export interface ReportSettingsResult {
|
|
6
7
|
action: 'saved' | 'deleted';
|
|
@@ -10,6 +11,7 @@ interface FilterDefaultRow {
|
|
|
10
11
|
label: string;
|
|
11
12
|
start: Date | null;
|
|
12
13
|
end: Date | null;
|
|
14
|
+
relative: string | null;
|
|
13
15
|
values: {
|
|
14
16
|
name: string;
|
|
15
17
|
value: unknown;
|
|
@@ -34,6 +36,7 @@ export declare class ReportSettingsComponent implements OnInit {
|
|
|
34
36
|
timezone: string;
|
|
35
37
|
headingSize: number;
|
|
36
38
|
readonly filterRows: import("@angular/core").WritableSignal<FilterDefaultRow[]>;
|
|
39
|
+
readonly relativeLabel: typeof relativeLabel;
|
|
37
40
|
private readonly _data;
|
|
38
41
|
private readonly _dialogRef;
|
|
39
42
|
private readonly _reportData;
|
|
@@ -43,7 +46,9 @@ export declare class ReportSettingsComponent implements OnInit {
|
|
|
43
46
|
ngOnInit(): void;
|
|
44
47
|
delete(): void;
|
|
45
48
|
save: () => Observable<[any, ...any[]]>;
|
|
49
|
+
clearRelative(row: FilterDefaultRow): void;
|
|
46
50
|
private _pageDimension;
|
|
51
|
+
private _timezoneSetting;
|
|
47
52
|
private _buildFilterRows;
|
|
48
53
|
private _rowDefault;
|
|
49
54
|
private _defaultChanged;
|
|
@@ -13,16 +13,28 @@ export interface CollectedReport {
|
|
|
13
13
|
report: Report;
|
|
14
14
|
pages: CollectedPage[];
|
|
15
15
|
filterSummary: string[];
|
|
16
|
+
contextLines: string[];
|
|
17
|
+
}
|
|
18
|
+
export interface ExportListColumn {
|
|
19
|
+
column: string;
|
|
20
|
+
label?: string;
|
|
21
|
+
format?: string;
|
|
16
22
|
}
|
|
17
23
|
export declare function emptyLabel(item: CollectedComponent): string;
|
|
18
24
|
export declare function isFailed(item: CollectedComponent): boolean;
|
|
25
|
+
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[];
|
|
29
|
+
export declare function moreRowsNotice(remaining: number): string;
|
|
19
30
|
export declare function failedPageNames(collected: CollectedReport): string[];
|
|
20
31
|
export declare class ReportExportCollectorService {
|
|
21
32
|
private _reportData;
|
|
22
33
|
private _filterState;
|
|
23
|
-
collect(report: Report): Observable<CollectedReport>;
|
|
34
|
+
collect(report: Report, listRows: number): Observable<CollectedReport>;
|
|
35
|
+
getFilterSummary(report: Report): Observable<string[]>;
|
|
24
36
|
private _componentData;
|
|
25
|
-
private
|
|
37
|
+
private _contextLines;
|
|
26
38
|
private _selectLine;
|
|
27
39
|
private _date;
|
|
28
40
|
static ɵfac: i0.ɵɵFactoryDeclaration<ReportExportCollectorService, never>;
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { CollectedReport } from './report-export-collector.service';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
export declare const PDF_LIST_ROWS = 500;
|
|
3
4
|
export declare class ReportPdfService {
|
|
4
5
|
export(collected: CollectedReport): Promise<void>;
|
|
6
|
+
private _context;
|
|
7
|
+
private _renderPage;
|
|
8
|
+
private _renderMaster;
|
|
5
9
|
private _titlePage;
|
|
6
10
|
private _renderText;
|
|
7
11
|
private _wrap;
|
|
@@ -11,9 +15,18 @@ export declare class ReportPdfService {
|
|
|
11
15
|
private _alignOffset;
|
|
12
16
|
private _tokens;
|
|
13
17
|
private _renderComponent;
|
|
18
|
+
private _componentTitle;
|
|
19
|
+
private _boxNote;
|
|
14
20
|
private _renderTable;
|
|
21
|
+
private _tableCells;
|
|
22
|
+
private _tableOptions;
|
|
23
|
+
private _noticeRow;
|
|
24
|
+
private _measure;
|
|
25
|
+
private _drawTable;
|
|
26
|
+
private _renderContinuation;
|
|
27
|
+
private _continuationMargin;
|
|
28
|
+
private _continuedTitle;
|
|
15
29
|
private _renderKpi;
|
|
16
|
-
private _cell;
|
|
17
30
|
private _slug;
|
|
18
31
|
static ɵfac: i0.ɵɵFactoryDeclaration<ReportPdfService, never>;
|
|
19
32
|
static ɵprov: i0.ɵɵInjectableDeclaration<ReportPdfService>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { CollectedReport } from './report-export-collector.service';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
export declare const PPTX_LIST_ROWS = 100;
|
|
3
4
|
export declare class ReportPptxService {
|
|
4
5
|
export(collected: CollectedReport): Promise<void>;
|
|
5
6
|
private _titleSlide;
|
|
@@ -7,6 +8,7 @@ export declare class ReportPptxService {
|
|
|
7
8
|
private _tokens;
|
|
8
9
|
private _renderComponent;
|
|
9
10
|
private _renderChart;
|
|
11
|
+
private _categoryOrderOptions;
|
|
10
12
|
private _addChart;
|
|
11
13
|
private _renderWaterfall;
|
|
12
14
|
private _waterfallSeries;
|
|
@@ -14,7 +16,6 @@ export declare class ReportPptxService {
|
|
|
14
16
|
private _axisTextOptions;
|
|
15
17
|
private _renderTable;
|
|
16
18
|
private _renderKpi;
|
|
17
|
-
private _cell;
|
|
18
19
|
private _slug;
|
|
19
20
|
static ɵfac: i0.ɵɵFactoryDeclaration<ReportPptxService, never>;
|
|
20
21
|
static ɵprov: i0.ɵɵInjectableDeclaration<ReportPptxService>;
|
package/app/reports/format.d.ts
CHANGED
|
@@ -1 +1,8 @@
|
|
|
1
|
+
import { Report } from './interfaces/report.interface';
|
|
1
2
|
export declare function formatMeasureValue(value: unknown, format?: string, precision?: number): string;
|
|
3
|
+
export declare const AXIS_SEPARATOR_THRESHOLD = 1000;
|
|
4
|
+
export declare function chartAxisFormatCode(series: (number | null)[][], stacked: boolean): string;
|
|
5
|
+
export declare function resolveReportTimezone(report: Pick<Report, 'effectiveTimezone'>): string;
|
|
6
|
+
export declare function formatReportDate(value: unknown, timezone: string): string;
|
|
7
|
+
export declare function getTimezoneLabel(timezone: string): string;
|
|
8
|
+
export declare function getZonedNow(timezone: string): Date;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ReportChatViewerFilter } from './report-chat-viewer-filter.interface';
|
|
2
|
+
import { ChartGranularity } from './report.interface';
|
|
3
|
+
export interface ReportChatViewerState {
|
|
4
|
+
granularity: ChartGranularity | null;
|
|
5
|
+
selectedComponentId: number | null;
|
|
6
|
+
filters: ReportChatViewerFilter[];
|
|
7
|
+
}
|
|
@@ -4,6 +4,7 @@ export interface Report {
|
|
|
4
4
|
name: string;
|
|
5
5
|
layout: ReportLayout;
|
|
6
6
|
timezone: string | null;
|
|
7
|
+
effectiveTimezone?: string;
|
|
7
8
|
config: ReportConfig;
|
|
8
9
|
pageWidth: number;
|
|
9
10
|
pageHeight: number;
|
|
@@ -67,6 +68,7 @@ export interface ReportComponentSql {
|
|
|
67
68
|
sql: string | null;
|
|
68
69
|
origin: 'sql' | 'dbq' | 'derived';
|
|
69
70
|
baseline: boolean;
|
|
71
|
+
timezone?: string;
|
|
70
72
|
error: string | null;
|
|
71
73
|
errorType: string | null;
|
|
72
74
|
}
|
|
@@ -99,7 +101,6 @@ export interface ChartConfig {
|
|
|
99
101
|
measures?: ChartMeasure[];
|
|
100
102
|
splitBy?: {
|
|
101
103
|
column: string;
|
|
102
|
-
label?: string;
|
|
103
104
|
};
|
|
104
105
|
colorBy?: {
|
|
105
106
|
column: string;
|
|
@@ -132,7 +133,6 @@ export interface ListConfig {
|
|
|
132
133
|
};
|
|
133
134
|
pivotBy?: {
|
|
134
135
|
column: string;
|
|
135
|
-
label?: string;
|
|
136
136
|
};
|
|
137
137
|
sort?: ReportSort;
|
|
138
138
|
pageSize?: number;
|
|
@@ -187,6 +187,17 @@ export interface FilterGroupValue {
|
|
|
187
187
|
end?: Date | string | null;
|
|
188
188
|
values?: unknown[];
|
|
189
189
|
value?: string;
|
|
190
|
+
preset?: string;
|
|
191
|
+
}
|
|
192
|
+
export interface ReportUrlParams {
|
|
193
|
+
groups: Map<number, string>;
|
|
194
|
+
listSorts: Map<number, string>;
|
|
195
|
+
groupBy: string | null;
|
|
196
|
+
}
|
|
197
|
+
export interface ReportUrlSnapshot {
|
|
198
|
+
groups: Map<number, FilterGroupValue | null>;
|
|
199
|
+
listSorts: Map<number, ReportSort>;
|
|
200
|
+
frequency: ChartGranularity | null;
|
|
190
201
|
}
|
|
191
202
|
export interface ResolvedFilterValue {
|
|
192
203
|
filterId: number;
|
|
@@ -212,6 +223,10 @@ export interface ComponentData {
|
|
|
212
223
|
truncated: boolean;
|
|
213
224
|
granularity?: ChartGranularity | null;
|
|
214
225
|
}
|
|
226
|
+
export interface ComponentExportResponse {
|
|
227
|
+
url: string;
|
|
228
|
+
notes?: string[];
|
|
229
|
+
}
|
|
215
230
|
export interface ReportListItem {
|
|
216
231
|
id: number;
|
|
217
232
|
name: string;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { PipeTransform } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class ReportDatePipe implements PipeTransform {
|
|
4
|
+
transform(value: unknown, timezone: string): string;
|
|
5
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ReportDatePipe, never>;
|
|
6
|
+
static ɵpipe: i0.ɵɵPipeDeclaration<ReportDatePipe, "fsReportDate", true>;
|
|
7
|
+
}
|
|
@@ -4,6 +4,11 @@ import { ReportData } from './data/report.data';
|
|
|
4
4
|
import { ChartGranularity, FilterGroupValue, Report, ReportFilterGroup } from './interfaces/report.interface';
|
|
5
5
|
export declare function dateBoundString(value: Date | string | null | undefined): string | undefined;
|
|
6
6
|
export declare function dateBoundLabel(value: Date | string | null | undefined): string | null;
|
|
7
|
+
export declare function dateFromBound(value: string | null | undefined): Date | null;
|
|
8
|
+
export declare function dateToBound(value: Date | null | undefined): string | null;
|
|
9
|
+
export declare function relativeLabel(relative: string): string;
|
|
10
|
+
export declare const GROUP_PARAM_PREFIX = "g";
|
|
11
|
+
export declare function groupItemName(group: Pick<ReportFilterGroup, 'id'>): string;
|
|
7
12
|
export declare const GROUP_BY_ITEM = "groupBy";
|
|
8
13
|
export declare function loadGroupOptions(group: ReportFilterGroup, reportData: ReportData, reportId: number): Observable<{
|
|
9
14
|
name: string;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ParamMap, Params } from '@angular/router';
|
|
2
|
+
import { FilterGroupValue, ReportFilterType, ReportSort, ReportUrlParams, ReportUrlSnapshot } from './interfaces/report.interface';
|
|
3
|
+
export declare const LIST_SORT_PARAM_PREFIX = "s";
|
|
4
|
+
export declare const DATE_RANGE_SEPARATOR = "..";
|
|
5
|
+
export declare const OWNED_PARAM: RegExp;
|
|
6
|
+
export declare function readReportUrlParams(params: ParamMap): ReportUrlParams;
|
|
7
|
+
export declare function decodeFilterValue(type: ReportFilterType, raw: string, resolveRelative: (name: string) => {
|
|
8
|
+
start: Date;
|
|
9
|
+
end: Date;
|
|
10
|
+
} | null): FilterGroupValue | null | undefined;
|
|
11
|
+
export declare function encodeFilterValue(value: FilterGroupValue | null): string;
|
|
12
|
+
export declare function encodeSort(sort: ReportSort): string;
|
|
13
|
+
export declare function decodeSort(raw: string): ReportSort | null;
|
|
14
|
+
export declare function buildReportUrlParams(snapshot: ReportUrlSnapshot, current: ParamMap): Params;
|
|
@@ -1,26 +1,48 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
|
-
import {
|
|
2
|
+
import { ReportChatViewerFilter } from '../interfaces/report-chat-viewer-filter.interface';
|
|
3
|
+
import { ChartGranularity, FilterGroupDefault, FilterGroupValue, Report, ReportComponent, ReportFilterGroup, ReportSort, ReportUrlParams, ReportUrlSnapshot, ResolvedFilterValue } from '../interfaces/report.interface';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
export declare function sameDefault(a: FilterGroupDefault | null, b: FilterGroupDefault | null): boolean;
|
|
5
6
|
export declare function defaultSignature(group: ReportFilterGroup): string;
|
|
6
7
|
export declare class ReportFilterStateService {
|
|
8
|
+
readonly timezone: import("@angular/core").WritableSignal<string>;
|
|
7
9
|
private _values;
|
|
8
10
|
private _groups;
|
|
9
11
|
private _sessionDisabled;
|
|
12
|
+
private _cleared;
|
|
10
13
|
private _frequency;
|
|
11
14
|
private _frequencyChanged$;
|
|
15
|
+
private _listSorts;
|
|
12
16
|
private _changed$;
|
|
13
|
-
|
|
17
|
+
private _urlChanged$;
|
|
18
|
+
init(report: Report, restore?: ReportUrlParams | null): void;
|
|
14
19
|
value(groupId: number): FilterGroupValue | undefined;
|
|
15
20
|
setValue(groupId: number, value: FilterGroupValue | null): void;
|
|
21
|
+
resolveRelative(name: string): {
|
|
22
|
+
start: Date;
|
|
23
|
+
end: Date;
|
|
24
|
+
} | null;
|
|
16
25
|
frequency(): ChartGranularity | null;
|
|
17
26
|
setFrequency(frequency: ChartGranularity | null): void;
|
|
18
27
|
frequencyChanges(): Observable<void>;
|
|
28
|
+
listSort(componentId: number): ReportSort | null;
|
|
29
|
+
setListSort(componentId: number, sort: ReportSort | null): void;
|
|
30
|
+
urlChanges(): Observable<void>;
|
|
31
|
+
urlSnapshot(report: Report): ReportUrlSnapshot;
|
|
19
32
|
isFilterDisabled(filterId: number): boolean;
|
|
20
33
|
toggleFilter(filterId: number, groupId: number): void;
|
|
21
34
|
changesFor(component: ReportComponent): Observable<number | null>;
|
|
22
35
|
resolveForComponent(component: ReportComponent): ResolvedFilterValue[];
|
|
36
|
+
viewerFilters(): ReportChatViewerFilter[];
|
|
23
37
|
resolveForReport(report: Report, pageId?: number | null): ResolvedFilterValue[];
|
|
38
|
+
private _resolvedFields;
|
|
39
|
+
private _seed;
|
|
40
|
+
private _restore;
|
|
41
|
+
private _prune;
|
|
42
|
+
private _withPreset;
|
|
43
|
+
private _isDefault;
|
|
44
|
+
private _listComponents;
|
|
45
|
+
private _sortableColumns;
|
|
24
46
|
private _defaultValue;
|
|
25
47
|
private _relativeRange;
|
|
26
48
|
static ɵfac: i0.ɵɵFactoryDeclaration<ReportFilterStateService, never>;
|
|
@@ -6,28 +6,36 @@ export declare class FsAiReportComponent {
|
|
|
6
6
|
readonly reportId: import("@angular/core").InputSignal<number>;
|
|
7
7
|
readonly basePath: import("@angular/core").InputSignal<string>;
|
|
8
8
|
readonly pageQueryParam: import("@angular/core").InputSignal<string>;
|
|
9
|
+
readonly urlState: import("@angular/core").InputSignal<boolean>;
|
|
9
10
|
readonly deleted: import("@angular/core").OutputEmitterRef<number>;
|
|
10
11
|
readonly renamed: import("@angular/core").OutputEmitterRef<Report>;
|
|
11
12
|
readonly pageChanged: import("@angular/core").OutputEmitterRef<number>;
|
|
12
|
-
report: Report
|
|
13
|
-
editMode: boolean
|
|
14
|
-
|
|
13
|
+
readonly report: import("@angular/core").WritableSignal<Report>;
|
|
14
|
+
readonly editMode: import("@angular/core").WritableSignal<boolean>;
|
|
15
|
+
readonly timezoneLabel: import("@angular/core").Signal<string>;
|
|
16
|
+
readonly pageId: import("@angular/core").WritableSignal<number>;
|
|
15
17
|
readonly chatPageId: import("@angular/core").WritableSignal<number>;
|
|
16
18
|
readonly chatRequestData: import("@angular/core").Signal<Record<string, unknown>>;
|
|
17
|
-
reportFilterConfig: FilterConfig
|
|
19
|
+
readonly reportFilterConfig: import("@angular/core").WritableSignal<FilterConfig>;
|
|
20
|
+
readonly reportHasFilters: import("@angular/core").Signal<boolean>;
|
|
21
|
+
readonly reportFilterKey: import("@angular/core").Signal<string>;
|
|
18
22
|
private _split;
|
|
19
23
|
private _chatPanel;
|
|
20
24
|
private _canvas?;
|
|
21
25
|
private _reportData;
|
|
26
|
+
private _reportAiChatData;
|
|
22
27
|
private _router;
|
|
23
28
|
private _route;
|
|
24
29
|
private _filterState;
|
|
25
30
|
private _exportService;
|
|
31
|
+
private _collector;
|
|
26
32
|
private _process;
|
|
27
33
|
private _dialog;
|
|
28
34
|
private _destroyRef;
|
|
29
|
-
private _cdRef;
|
|
30
35
|
private _zone;
|
|
36
|
+
private _restoredReportId;
|
|
37
|
+
private _pageReported;
|
|
38
|
+
private _pageWrite$;
|
|
31
39
|
constructor();
|
|
32
40
|
toggleEditMode(): void;
|
|
33
41
|
get isMasterMode(): boolean;
|
|
@@ -42,14 +50,14 @@ export declare class FsAiReportComponent {
|
|
|
42
50
|
exportData(thisPage?: boolean): void;
|
|
43
51
|
onChatResponse(response: FsAiChatResponse): void;
|
|
44
52
|
onResizeStart(event: PointerEvent): void;
|
|
53
|
+
private _chatViewerState;
|
|
45
54
|
private _resizeTo;
|
|
46
55
|
private _pageIdFromUrl;
|
|
56
|
+
private _writeUrl;
|
|
47
57
|
private _loadReport;
|
|
48
58
|
private _reportGroups;
|
|
49
|
-
get reportHasFilters(): boolean;
|
|
50
|
-
get reportFilterKey(): string;
|
|
51
59
|
private _buildReportConfig;
|
|
52
60
|
private _groupByItem;
|
|
53
61
|
static ɵfac: i0.ɵɵFactoryDeclaration<FsAiReportComponent, never>;
|
|
54
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FsAiReportComponent, "fs-ai-report", never, { "reportId": { "alias": "reportId"; "required": false; "isSignal": true; }; "basePath": { "alias": "basePath"; "required": false; "isSignal": true; }; "pageQueryParam": { "alias": "pageQueryParam"; "required": false; "isSignal": true; }; }, { "deleted": "deleted"; "renamed": "renamed"; "pageChanged": "pageChanged"; }, never, never, true, never>;
|
|
62
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FsAiReportComponent, "fs-ai-report", never, { "reportId": { "alias": "reportId"; "required": false; "isSignal": true; }; "basePath": { "alias": "basePath"; "required": false; "isSignal": true; }; "pageQueryParam": { "alias": "pageQueryParam"; "required": false; "isSignal": true; }; "urlState": { "alias": "urlState"; "required": false; "isSignal": true; }; }, { "deleted": "deleted"; "renamed": "renamed"; "pageChanged": "pageChanged"; }, never, never, true, never>;
|
|
55
63
|
}
|
|
@@ -3,11 +3,11 @@ import { FsAiChatResponse } from '@firestitch/ai';
|
|
|
3
3
|
import { Report, ReportComponent as ReportComponentModel, ReportListItem } from '../../interfaces/report.interface';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export declare class ReportComponent {
|
|
6
|
-
selected: ReportListItem
|
|
7
|
-
report: Report
|
|
8
|
-
loadingReports: boolean
|
|
9
|
-
editMode: boolean
|
|
10
|
-
reportFilterConfig: FilterConfig
|
|
6
|
+
readonly selected: import("@angular/core").WritableSignal<ReportListItem>;
|
|
7
|
+
readonly report: import("@angular/core").WritableSignal<Report>;
|
|
8
|
+
readonly loadingReports: import("@angular/core").WritableSignal<boolean>;
|
|
9
|
+
readonly editMode: import("@angular/core").WritableSignal<boolean>;
|
|
10
|
+
readonly reportFilterConfig: import("@angular/core").WritableSignal<FilterConfig>;
|
|
11
11
|
private _split;
|
|
12
12
|
private _chatPanel;
|
|
13
13
|
private _canvas?;
|
|
@@ -18,11 +18,11 @@ export declare class ReportComponent {
|
|
|
18
18
|
private _reportService;
|
|
19
19
|
private _filterState;
|
|
20
20
|
private _exportService;
|
|
21
|
+
private _collector;
|
|
21
22
|
private _process;
|
|
22
23
|
private _prompt;
|
|
23
24
|
private _dialog;
|
|
24
25
|
private _destroyRef;
|
|
25
|
-
private _cdRef;
|
|
26
26
|
private _zone;
|
|
27
27
|
constructor();
|
|
28
28
|
fetchReports: (keyword: string) => import("rxjs").Observable<ReportListItem[]>;
|