@firestitch/report 18.10.0 → 18.10.2

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 (66) hide show
  1. package/app/reports/components/component-text/component-text.component.d.ts +1 -0
  2. package/app/reports/components/component-text/value-embed.plugin.d.ts +25 -1
  3. package/app/reports/components/report-canvas/report-canvas.component.d.ts +12 -0
  4. package/app/reports/components/report-component/report-component.component.d.ts +1 -0
  5. package/app/reports/data/report.data.d.ts +5 -7
  6. package/app/reports/dialogs/component-settings/component-settings.component.d.ts +13 -1
  7. package/app/reports/dialogs/report-settings/report-settings.component.d.ts +30 -2
  8. package/app/reports/export/report-export-collector.service.d.ts +13 -5
  9. package/app/reports/export/report-filter-lines.d.ts +3 -0
  10. package/app/reports/filter-settings-rules.d.ts +4 -0
  11. package/app/reports/filter-text.d.ts +8 -0
  12. package/app/reports/format.d.ts +1 -0
  13. package/app/reports/interfaces/report-export-lines-input.interface.d.ts +1 -0
  14. package/app/reports/interfaces/report-filter-group-changes.interface.d.ts +7 -0
  15. package/app/reports/interfaces/report.interface.d.ts +1 -14
  16. package/app/reports/report-filter-items.d.ts +11 -8
  17. package/app/reports/report-view-config.d.ts +1 -3
  18. package/app/reports/services/report-filter-state.service.d.ts +5 -14
  19. package/app/reports/services/report-view.service.d.ts +1 -13
  20. package/app/reports/text.d.ts +16 -0
  21. package/app/reports/views/report/fs-ai-report.component.d.ts +2 -8
  22. package/esm2022/app/reports/canvas-landing-page.mjs +7 -6
  23. package/esm2022/app/reports/components/component-list/component-list.component.mjs +5 -5
  24. package/esm2022/app/reports/components/component-text/component-text.component.mjs +34 -22
  25. package/esm2022/app/reports/components/component-text/value-embed.plugin.mjs +254 -42
  26. package/esm2022/app/reports/components/report-canvas/report-canvas.component.mjs +130 -24
  27. package/esm2022/app/reports/components/report-component/report-component.component.mjs +38 -19
  28. package/esm2022/app/reports/data/report.data.mjs +19 -11
  29. package/esm2022/app/reports/dialogs/component-settings/component-settings.component.mjs +57 -14
  30. package/esm2022/app/reports/dialogs/report-settings/report-settings.component.mjs +169 -21
  31. package/esm2022/app/reports/export/report-export-collector.service.mjs +84 -33
  32. package/esm2022/app/reports/export/report-filter-lines.mjs +25 -8
  33. package/esm2022/app/reports/export/report-pdf.service.mjs +31 -21
  34. package/esm2022/app/reports/export/report-pptx.service.mjs +21 -11
  35. package/esm2022/app/reports/filter-settings-rules.mjs +8 -1
  36. package/esm2022/app/reports/filter-text.mjs +154 -0
  37. package/esm2022/app/reports/format.mjs +3 -2
  38. package/esm2022/app/reports/interfaces/canvas-landing-input.interface.mjs +1 -1
  39. package/esm2022/app/reports/interfaces/report-export-lines-input.interface.mjs +1 -1
  40. package/esm2022/app/reports/interfaces/report-filter-group-changes.interface.mjs +2 -0
  41. package/esm2022/app/reports/interfaces/report-temporary-state.interface.mjs +1 -1
  42. package/esm2022/app/reports/interfaces/report-view-config.interface.mjs +1 -1
  43. package/esm2022/app/reports/interfaces/report.interface.mjs +1 -1
  44. package/esm2022/app/reports/report-date-presets.mjs +2 -2
  45. package/esm2022/app/reports/report-filter-items.mjs +48 -106
  46. package/esm2022/app/reports/report-view-config.mjs +6 -116
  47. package/esm2022/app/reports/services/report-filter-state.service.mjs +92 -269
  48. package/esm2022/app/reports/services/report-view.service.mjs +25 -165
  49. package/esm2022/app/reports/text.mjs +59 -13
  50. package/esm2022/app/reports/views/report/fs-ai-report.component.mjs +69 -130
  51. package/esm2022/app/reports/views/report/report.component.mjs +25 -19
  52. package/fesm2022/{firestitch-report-echarts-UBg8Wlhd.mjs → firestitch-report-echarts-CyHkFToO.mjs} +2 -2
  53. package/fesm2022/{firestitch-report-echarts-UBg8Wlhd.mjs.map → firestitch-report-echarts-CyHkFToO.mjs.map} +1 -1
  54. package/fesm2022/{firestitch-report-firestitch-report-B1keNrcK.mjs → firestitch-report-firestitch-report-DftB7M1o.mjs} +2936 -3254
  55. package/fesm2022/firestitch-report-firestitch-report-DftB7M1o.mjs.map +1 -0
  56. package/fesm2022/firestitch-report.mjs +1 -1
  57. package/package.json +1 -1
  58. package/app/reports/interfaces/report-url-link.interface.d.ts +0 -4
  59. package/app/reports/interfaces/report-url-value-name.type.d.ts +0 -1
  60. package/app/reports/interfaces/report-url-write.interface.d.ts +0 -4
  61. package/app/reports/report-url-state.d.ts +0 -36
  62. package/esm2022/app/reports/interfaces/report-url-link.interface.mjs +0 -2
  63. package/esm2022/app/reports/interfaces/report-url-value-name.type.mjs +0 -2
  64. package/esm2022/app/reports/interfaces/report-url-write.interface.mjs +0 -2
  65. package/esm2022/app/reports/report-url-state.mjs +0 -677
  66. package/fesm2022/firestitch-report-firestitch-report-B1keNrcK.mjs.map +0 -1
@@ -65,6 +65,7 @@ export declare class ComponentTextComponent {
65
65
  removeBlockedSelection(): void;
66
66
  undoValuesUnused(): void;
67
67
  dismissNotice(): void;
68
+ private _insertFieldEntries;
68
69
  private _openValuePopover;
69
70
  private _showNotice;
70
71
  private _clearNoticeTimer;
@@ -1,5 +1,5 @@
1
1
  import { Plugin, PluginConfig } from '@firestitch/html-editor';
2
- import { TextValue } from '../../text';
2
+ import { TextTokenContext, TextValue } from '../../text';
3
3
  export declare const VALUE_EMBED_ATTRIBUTES: string[];
4
4
  export interface ValueEmbedBlock {
5
5
  count: number;
@@ -10,10 +10,19 @@ export interface ValueEmbedRemoval {
10
10
  after: string[];
11
11
  undo: () => void;
12
12
  }
13
+ export interface EmbedMenuEntry {
14
+ token: string;
15
+ name: string;
16
+ }
13
17
  export interface ValueEmbedPluginConfig extends PluginConfig {
14
18
  host: () => HTMLElement;
15
19
  values: () => Record<string, TextValue>;
16
20
  scope: () => string;
21
+ fields: () => TextTokenContext;
22
+ menu: {
23
+ command: string;
24
+ entries: () => EmbedMenuEntry[];
25
+ };
17
26
  showNames: () => boolean;
18
27
  click: (key: string, chip: HTMLElement) => void;
19
28
  blocked: (block: ValueEmbedBlock) => void;
@@ -32,11 +41,15 @@ export declare class ValueEmbedPlugin extends Plugin {
32
41
  initialize(): void;
33
42
  destroy(): void;
34
43
  refresh(): void;
44
+ insert(token: string): void;
35
45
  hideToolbar(): void;
36
46
  undo(): void;
37
47
  removeKey(key: string): void;
38
48
  remove(chip: HTMLElement): void;
39
49
  private _chips;
50
+ private _fieldChips;
51
+ private _fillMenu;
52
+ private _menuItem;
40
53
  private _chipCounts;
41
54
  private _reportRemoved;
42
55
  private _watchCommands;
@@ -45,14 +58,21 @@ export declare class ValueEmbedPlugin extends Plugin {
45
58
  private _toChips;
46
59
  private _keepsPasted;
47
60
  private _splitText;
61
+ private _embedTokens;
62
+ private _tokenChip;
48
63
  private _toTokenText;
49
64
  private _createChip;
50
65
  private _label;
66
+ private _createFieldChip;
67
+ private _labelField;
51
68
  private _toTokens;
52
69
  private _onKeydown;
53
70
  private _onBeforeInput;
54
71
  private _guardSelection;
72
+ private _removeAdjacentField;
73
+ private _onCut;
55
74
  private _onCopy;
75
+ private _copyTokens;
56
76
  private _plainText;
57
77
  private _onClick;
58
78
  private _onChip;
@@ -61,7 +81,11 @@ export declare class ValueEmbedPlugin extends Plugin {
61
81
  private _changed;
62
82
  private _selection;
63
83
  private _range;
84
+ private _inBlocks;
85
+ private _edgeBlock;
64
86
  private _chipsIn;
87
+ private _fieldChipsIn;
65
88
  private _adjacentChip;
89
+ private _reach;
66
90
  private _granularity;
67
91
  }
@@ -55,6 +55,7 @@ export declare class ReportCanvasComponent implements OnChanges, AfterViewInit {
55
55
  readonly valueKeysElsewhere: (text: ReportComponent) => ReadonlySet<string>;
56
56
  private _reportData;
57
57
  private _filterState;
58
+ private _filterOptions;
58
59
  private _prompt;
59
60
  private _message;
60
61
  private _destroyRef;
@@ -69,6 +70,11 @@ export declare class ReportCanvasComponent implements OnChanges, AfterViewInit {
69
70
  private _pageValues;
70
71
  private _masterValues;
71
72
  private _valuesRevision;
73
+ private _filterRevision;
74
+ private _optionNames;
75
+ private _optionNamesAsked;
76
+ private _groupOptions;
77
+ private _selectPicks;
72
78
  private _valueKeysByLayer;
73
79
  constructor();
74
80
  ngOnChanges(changes: SimpleChanges): void;
@@ -84,6 +90,7 @@ export declare class ReportCanvasComponent implements OnChanges, AfterViewInit {
84
90
  onComponentRemoved(componentId: number): void;
85
91
  onTextSaved(text: ReportComponent, html: string): void;
86
92
  openValueSettings(text: ReportComponent, key: string): void;
93
+ componentTokens(component: ReportComponent): TextTokenContext;
87
94
  toggleMasterHidden(page: ReportPage): void;
88
95
  selectPage(index: number): void;
89
96
  addPage(): void;
@@ -103,6 +110,10 @@ export declare class ReportCanvasComponent implements OnChanges, AfterViewInit {
103
110
  componentId: number;
104
111
  } & Record<string, number>): void;
105
112
  private _init;
113
+ private _watchFilters;
114
+ private _filterValuesKey;
115
+ private _forgetUnreadNames;
116
+ private _watchOptionNames;
106
117
  private _valueLayer;
107
118
  private _watchValues;
108
119
  private _reloadIfChanged;
@@ -111,6 +122,7 @@ export declare class ReportCanvasComponent implements OnChanges, AfterViewInit {
111
122
  private _shownValues;
112
123
  private _loadValues;
113
124
  private _tokenContext;
125
+ private _filterFields;
114
126
  private _dropRemovedValueChips;
115
127
  private _isMasterComponent;
116
128
  private get _snapThreshold();
@@ -72,6 +72,7 @@ export declare class ReportComponentComponent implements OnInit, OnChanges {
72
72
  ngOnInit(): void;
73
73
  ngOnChanges(changes: SimpleChanges): void;
74
74
  get filterKey(): string;
75
+ get shownTitle(): string;
75
76
  get isText(): boolean;
76
77
  editText(): void;
77
78
  removeValue(key: string): void;
@@ -1,13 +1,14 @@
1
1
  import { RequestConfig } from '@firestitch/api';
2
2
  import { Observable } from 'rxjs';
3
3
  import { ReportExportLine } from '../interfaces/report-export-line.interface';
4
+ import { ReportFilterGroupChanges } from '../interfaces/report-filter-group-changes.interface';
4
5
  import { ReportFilterOptionsRequest } from '../interfaces/report-filter-options-request.interface';
5
6
  import { ReportFilterOptions } from '../interfaces/report-filter-options.interface';
6
7
  import { ReportViewCreate } from '../interfaces/report-view-create.interface';
7
8
  import { ReportViewDeleted } from '../interfaces/report-view-deleted.interface';
8
9
  import { ReportView } from '../interfaces/report-view.interface';
9
10
  import { ReportViews } from '../interfaces/report-views.interface';
10
- import { ChartGranularity, ComponentDataState, ComponentExportResponse, FilterGroupDefault, ReportComponentSql, ReportFilterLevel, ReportLocales, ReportPageValue, ReportTree, ResolvedFilterValue } from '../interfaces/report.interface';
11
+ import { ChartGranularity, ComponentDataState, ComponentExportResponse, ReportComponentSql, ReportLocales, ReportPageValue, ReportTree, ResolvedFilterValue } from '../interfaces/report.interface';
11
12
  import * as i0 from "@angular/core";
12
13
  export declare class ReportData<T = any> {
13
14
  private _api;
@@ -56,8 +57,8 @@ export declare class ReportData<T = any> {
56
57
  }>)[], config?: RequestConfig): Observable<T>;
57
58
  componentData(reportId: number, componentId: number, filters?: ResolvedFilterValue[], state?: ComponentDataState, isExport?: boolean, config?: RequestConfig): Observable<T>;
58
59
  pageValues(reportId: number, pageId: number, filters?: ResolvedFilterValue[], isExport?: boolean, config?: RequestConfig, matchAnyGroupIds?: number[]): Observable<ReportPageValue[]>;
59
- exportComponent(reportId: number, componentId: number, filters?: ResolvedFilterValue[], state?: ComponentDataState, config?: RequestConfig): Observable<ComponentExportResponse>;
60
- exportReport(reportId: number, filters?: ResolvedFilterValue[], pageId?: number | null, frequency?: ChartGranularity | null, filterLines?: ReportExportLine[], states?: Record<number, ComponentDataState>, viewId?: number | null, viewChanged?: boolean, config?: RequestConfig): Observable<T>;
60
+ exportComponent(reportId: number, componentId: number, filters?: ResolvedFilterValue[], state?: ComponentDataState, title?: string, config?: RequestConfig): Observable<ComponentExportResponse>;
61
+ exportReport(reportId: number, filters?: ResolvedFilterValue[], pageId?: number | null, frequency?: ChartGranularity | null, filterLines?: ReportExportLine[], states?: Record<number, ComponentDataState>, viewId?: number | null, viewChanged?: boolean, titles?: Record<number, string>, config?: RequestConfig): Observable<T>;
61
62
  filterOptions(reportId: number, filterId: number, config?: RequestConfig): Observable<T>;
62
63
  componentSql(reportId: number, componentId: number, config?: RequestConfig): Observable<ReportComponentSql>;
63
64
  componentColumns(reportId: number, componentId: number, config?: RequestConfig): Observable<T>;
@@ -87,10 +88,7 @@ export declare class ReportData<T = any> {
87
88
  saveSettings(settings: {
88
89
  semanticBuildConcurrency: number;
89
90
  }, config?: RequestConfig): Observable<T>;
90
- updateFilterGroup(reportId: number, groupId: number, changes: {
91
- level?: ReportFilterLevel;
92
- default?: FilterGroupDefault | null;
93
- }, config?: RequestConfig): Observable<T>;
91
+ updateFilterGroup(reportId: number, groupId: number, changes: ReportFilterGroupChanges, config?: RequestConfig): Observable<T>;
94
92
  filterOptionsNarrowed(reportId: number, filterId: number, body: ReportFilterOptionsRequest, config?: RequestConfig): Observable<ReportFilterOptions>;
95
93
  views(reportId: number, config?: RequestConfig): Observable<ReportViews>;
96
94
  view(reportId: number, reportViewId: number, config?: RequestConfig): Observable<ReportView>;
@@ -7,11 +7,17 @@ import { FilterBarPlacement } from '../../interfaces/filter-bar-placement.type';
7
7
  import { FilterComponentToggleState } from '../../interfaces/filter-component-toggle-state.interface';
8
8
  import { FilterSettingsOption } from '../../interfaces/filter-settings-option.interface';
9
9
  import { FilterTypeSelectState } from '../../interfaces/filter-type-select-state.interface';
10
+ import { TextTokenContext } from '../../text';
10
11
  import * as i0 from "@angular/core";
11
12
  export interface ComponentSettingsResult {
12
13
  settings?: ComponentSettings;
13
14
  deleted?: boolean;
14
15
  }
16
+ export interface ComponentSettingsDialogData {
17
+ report: Report;
18
+ component: ReportComponent;
19
+ tokens: TextTokenContext;
20
+ }
15
21
  interface ComponentSettingsResponse {
16
22
  id: number;
17
23
  config?: Record<string, unknown> | null;
@@ -31,7 +37,10 @@ export declare class ComponentSettingsComponent implements OnInit {
31
37
  component: ReportComponent;
32
38
  report: Report;
33
39
  selectedTab: string;
34
- title: string;
40
+ readonly title: import("@angular/core").WritableSignal<string>;
41
+ readonly titleFields: import("@angular/core").Signal<import("../../text").TextField[]>;
42
+ readonly titleShownAs: import("@angular/core").Signal<string>;
43
+ readonly heading: import("@angular/core").Signal<string>;
35
44
  paddingTop: number | string;
36
45
  paddingRight: number | string;
37
46
  paddingBottom: number | string;
@@ -72,6 +81,7 @@ export declare class ComponentSettingsComponent implements OnInit {
72
81
  private _pickedTypes;
73
82
  private readonly _typeLabels;
74
83
  private readonly _data;
84
+ private readonly _titleInput;
75
85
  private readonly _dialogRef;
76
86
  private readonly _reportData;
77
87
  private readonly _message;
@@ -80,6 +90,7 @@ export declare class ComponentSettingsComponent implements OnInit {
80
90
  ngOnInit(): void;
81
91
  typeLabel(type: ReportFilterType): string;
82
92
  delete(): void;
93
+ insertField(field: string): void;
83
94
  validateTarget: (control: AbstractControl) => void;
84
95
  save: () => Observable<ComponentSettingsResponse>;
85
96
  setType(row: FilterRow, type: ReportFilterType): void;
@@ -89,6 +100,7 @@ export declare class ComponentSettingsComponent implements OnInit {
89
100
  private _applyValueLevel;
90
101
  private _addFilter;
91
102
  private _patchRow;
103
+ private _shownTitle;
92
104
  private _formulaLine;
93
105
  private _dependentsNote;
94
106
  private _layerValues;
@@ -7,9 +7,18 @@ import * as i0 from "@angular/core";
7
7
  export interface ReportSettingsResult {
8
8
  action: 'saved' | 'deleted';
9
9
  }
10
+ interface FilterFieldRefusal {
11
+ value: string;
12
+ message: string;
13
+ }
10
14
  interface FilterDefaultRow {
11
15
  group: ReportFilterGroup;
16
+ heading: string;
12
17
  label: string;
18
+ name: string;
19
+ showName: boolean;
20
+ labelRefusal: FilterFieldRefusal | null;
21
+ nameRefusal: FilterFieldRefusal | null;
13
22
  period: string;
14
23
  periodOptions: FilterSettingsOption[];
15
24
  start: Date | null;
@@ -33,7 +42,8 @@ interface LocaleSelectOption {
33
42
  label: string;
34
43
  }
35
44
  export declare class ReportSettingsComponent implements OnInit {
36
- selectedTab: string;
45
+ readonly selectedTab: import("@angular/core").WritableSignal<string>;
46
+ readonly wrote: import("@angular/core").WritableSignal<boolean>;
37
47
  name: string;
38
48
  pageWidth: number | string;
39
49
  pageHeight: number | string;
@@ -54,14 +64,24 @@ export declare class ReportSettingsComponent implements OnInit {
54
64
  readonly filterRows: import("@angular/core").WritableSignal<FilterDefaultRow[]>;
55
65
  readonly fixedDatesPeriod = "fixed";
56
66
  readonly boundScale = 6;
67
+ readonly namePattern: RegExp;
68
+ readonly namePatternMessage = "A name starts with a letter and holds only letters and digits.";
69
+ readonly nameMaxLength = 50;
70
+ readonly labelMaxLength = 200;
71
+ readonly labelInputId: typeof labelInputId;
72
+ readonly nameInputId: typeof nameInputId;
57
73
  readonly minBoundValidator: (control: AbstractControl, max: unknown) => void;
58
74
  readonly maxBoundValidator: (control: AbstractControl, min: unknown) => void;
75
+ readonly refusalValidator: (control: AbstractControl, refusal: FilterFieldRefusal | null) => void;
59
76
  private readonly _data;
60
77
  private readonly _dialogRef;
61
78
  private readonly _reportData;
62
79
  private readonly _message;
63
80
  private readonly _prompt;
64
81
  private readonly _destroyRef;
82
+ private readonly _injector;
83
+ private readonly _document;
84
+ private _refusedInputId;
65
85
  private readonly _serverHasLocale;
66
86
  private readonly _localesSettled;
67
87
  private readonly _filtersReady;
@@ -70,11 +90,17 @@ export declare class ReportSettingsComponent implements OnInit {
70
90
  private readonly _appliedCurrency;
71
91
  ngOnInit(): void;
72
92
  patchRow(row: FilterDefaultRow, patch: Partial<FilterDefaultRow>): void;
93
+ focusRefusal(): void;
73
94
  delete(): void;
74
- save: () => Observable<[any, ...any[]]>;
95
+ save: () => Observable<any[]>;
75
96
  private _pageDimension;
76
97
  private _timezoneSetting;
77
98
  private _storedOption;
99
+ private _groupChanges;
100
+ private _namesOrLabels;
101
+ private _renameOrder;
102
+ private _saveNamed;
103
+ private _showRefusal;
78
104
  private _throwBoundsError;
79
105
  private _buildFilterRows;
80
106
  private _filterRow;
@@ -83,4 +109,6 @@ export declare class ReportSettingsComponent implements OnInit {
83
109
  static ɵfac: i0.ɵɵFactoryDeclaration<ReportSettingsComponent, never>;
84
110
  static ɵcmp: i0.ɵɵComponentDeclaration<ReportSettingsComponent, "ng-component", never, {}, {}, never, never, true, never>;
85
111
  }
112
+ declare function labelInputId(groupId: number): string;
113
+ declare function nameInputId(groupId: number): string;
86
114
  export {};
@@ -4,7 +4,7 @@ import { ReportExportSnapshot } from '../interfaces/report-export-snapshot.inter
4
4
  import { ComponentData, ListColumn, Report, ReportComponent, ReportFormatContext, ReportLocaleTag, ReportPage } from '../interfaces/report.interface';
5
5
  import { KpiCardView } from '../kpi-card';
6
6
  import { ListOutputColumn } from '../list-config';
7
- import { TextTokenContext, TextValue } from '../text';
7
+ import { TextFilterField, TextTokenContext, TextValue } from '../text';
8
8
  import * as i0 from "@angular/core";
9
9
  export interface CollectedComponent {
10
10
  component: ReportComponent;
@@ -25,9 +25,15 @@ export interface CollectedReport {
25
25
  masterValues: Record<string, TextValue>;
26
26
  masterFailedValues: string[];
27
27
  filterSummary: string[];
28
+ filterFields: Record<number, TextFilterField>;
28
29
  contextLines: string[];
29
30
  formatContext: ReportFormatContext;
30
31
  }
32
+ export interface ReportExportWording {
33
+ lines: ReportExportLine[];
34
+ filterFields: Record<number, TextFilterField>;
35
+ titles: Record<number, string>;
36
+ }
31
37
  export interface TextOverflow {
32
38
  componentId: number;
33
39
  page: string;
@@ -61,7 +67,7 @@ export interface KpiExportParts {
61
67
  }
62
68
  export declare const HEADER_FOOTER_NAME = "Header & footer";
63
69
  export declare function emptyLabel(item: CollectedComponent): string;
64
- export declare function exportTitle(component: ReportComponent, search?: string | null, crumbs?: readonly string[] | null): string;
70
+ export declare function exportTitle(component: ReportComponent, tokens: TextTokenContext, search?: string | null, crumbs?: readonly string[] | null): string;
65
71
  export declare function isFailed(item: CollectedComponent): boolean;
66
72
  export declare function textOverflow(component: ReportComponent, page: string, tokens: TextTokenContext): TextOverflow;
67
73
  export declare function coverLines(collected: CollectedReport): string[];
@@ -79,7 +85,7 @@ export declare function scaledKpiHeights(heights: KpiExportHeights, scale: numbe
79
85
  export declare function kpiExportHeight(view: KpiCardView, parts: KpiExportParts, heights: KpiExportHeights): number;
80
86
  export declare function moreRowsNotice(remaining: number): string;
81
87
  export declare function failedPageNames(collected: CollectedReport): string[];
82
- export declare function coverFilterLines(snapshot: ReportExportSnapshot, lines: readonly ReportExportLine[], pages: readonly Pick<CollectedPage, 'components'>[]): string[];
88
+ export declare function coverFilterLines(snapshot: ReportExportSnapshot, lines: readonly ReportExportLine[], pages: readonly Pick<CollectedPage, 'components'>[], titles?: Readonly<Record<number, string>>): string[];
83
89
  export declare function isExportSlot(component: ReportComponent): boolean;
84
90
  export declare class ReportExportCollectorService {
85
91
  private _reportData;
@@ -88,7 +94,8 @@ export declare class ReportExportCollectorService {
88
94
  private _views;
89
95
  collect(report: Report, listRows: number): Observable<CollectedReport>;
90
96
  snapshot(report: Report): ReportExportSnapshot;
91
- filterLines(report: Report, snapshot: ReportExportSnapshot, pageId?: number | null): Observable<ReportExportLine[]>;
97
+ exportWording(report: Report, snapshot: ReportExportSnapshot, pageId?: number | null): Observable<ReportExportWording>;
98
+ private _exportTitles;
92
99
  private _jobs;
93
100
  private _valuesJobs;
94
101
  private _runJob;
@@ -98,7 +105,8 @@ export declare class ReportExportCollectorService {
98
105
  private _pageValues;
99
106
  private _file;
100
107
  private _contextLines;
101
- private _pickNames;
108
+ private _filterFields;
109
+ private _pickNamer;
102
110
  static ɵfac: i0.ɵɵFactoryDeclaration<ReportExportCollectorService, never>;
103
111
  static ɵprov: i0.ɵɵInjectableDeclaration<ReportExportCollectorService>;
104
112
  }
@@ -11,6 +11,9 @@ export declare const MATCH_ANY_CHIP = "Match: any filter";
11
11
  export declare const MATCH_ANY_LINE = "Filters in the report bar: match any";
12
12
  export declare const MATCH_ALL_CHIP = "Match: all filters";
13
13
  export declare function filterLineText(group: Pick<ReportFilterGroup, 'label' | 'level'>, value: FilterGroupValue | null | undefined, context: ReportFilterLineContext, form: ReportFilterLineForm): string | null;
14
+ export declare function filterChipValueText(value: FilterGroupValue | null | undefined, context: ReportFilterLineContext): string | null;
15
+ export declare function excludes(value: FilterGroupValue | null | undefined): boolean;
16
+ export declare function valuePicks(value: FilterGroupValue | null | undefined): unknown[];
14
17
  export declare function matchLineText(match: ReportFilterMatch | null | undefined, form: ReportFilterLineForm): string | null;
15
18
  export declare function drillLineText(component: Pick<ReportComponent, 'title'>, path: readonly ReportDrillStep[], formatContext: Pick<ReportFormatContext, 'locale'>): string;
16
19
  export declare function viewLineText(view: Pick<ReportViewSummary, 'name' | 'shared'> | null | undefined, changed: boolean): string | null;
@@ -10,6 +10,10 @@ export declare const PAGE_FILTER_TOOLTIP = "A page filter shows in the page bar
10
10
  export declare const COMPONENT_TOGGLE_TOOLTIP = "Show on this component";
11
11
  export declare const FIXED_DATES_PERIOD = "fixed";
12
12
  export declare const DEFAULT_BOUND_SCALE = 6;
13
+ export declare const FILTER_NAME_PATTERN: RegExp;
14
+ export declare const FILTER_NAME_PATTERN_MESSAGE = "A name starts with a letter and holds only letters and digits.";
15
+ export declare const FILTER_NAME_MAX_LENGTH = 50;
16
+ export declare const FILTER_LABEL_MAX_LENGTH = 200;
13
17
  export declare function parseDefaultBound(raw: unknown): number | null;
14
18
  export declare function boundsError(min: number | null, max: number | null): string | null;
15
19
  export declare function typeSelectState(types: ReportFilterType[] | null | undefined, hasFilterOnThisComponent: boolean, features: ReportViewerFeature[] | null | undefined): FilterTypeSelectState;
@@ -0,0 +1,8 @@
1
+ import { FilterGroupValue, ReportFilterGroup, ReportLocaleTag } from './interfaces/report.interface';
2
+ import { TextFilterField } from './text';
3
+ export declare function layerFilterGroups(groups: ReportFilterGroup[], pageId: number | null): ReportFilterGroup[];
4
+ export declare function layerFilterFields(fields: Record<number, TextFilterField>, groups: ReportFilterGroup[], pageId: number | null): Record<number, TextFilterField>;
5
+ export declare function filterFieldName(group: Pick<ReportFilterGroup, 'label' | 'name'>): string;
6
+ export declare function textFilterFields(groups: ReportFilterGroup[], value: (groupId: number) => FilterGroupValue | null | undefined, locale: ReportLocaleTag, names: (group: ReportFilterGroup, values: unknown[]) => readonly string[] | null | undefined): Record<number, TextFilterField>;
7
+ export declare function filterFieldText(group: Pick<ReportFilterGroup, 'type'>, value: FilterGroupValue | null | undefined, locale: ReportLocaleTag, names?: readonly string[]): string;
8
+ export declare function sameFilterFields(a: Record<number, TextFilterField> | undefined, b: Record<number, TextFilterField> | undefined): boolean;
@@ -62,6 +62,7 @@ export declare function formatDayWindow(meta: {
62
62
  }, timezone: string, locale: ReportLocaleTag): string;
63
63
  export declare function isReadOnOneDay(comparison: ComponentComparison | null | undefined): boolean;
64
64
  export declare function formatReadingDay(window: Pick<ComparisonWindow, 'end'>, locale: ReportLocaleTag, lead?: boolean): string;
65
+ export declare function writeDayRange(first: Date, last: Date, locale: ReportLocaleTag, options: Intl.DateTimeFormatOptions): string;
65
66
  export declare function localeName(tag: ReportLocaleTag): string;
66
67
  export declare function currencyName(code: ReportCurrencyCode): string;
67
68
  export declare function comparisonOffsetLabel(offset: ComparisonOffset): string;
@@ -6,4 +6,5 @@ export interface ReportExportLinesInput {
6
6
  snapshot: ReportExportSnapshot;
7
7
  pageId: number | null;
8
8
  names: (group: ReportFilterGroup, values: unknown[]) => Observable<string[]>;
9
+ titles?: Readonly<Record<number, string>>;
9
10
  }
@@ -0,0 +1,7 @@
1
+ import { FilterGroupDefault, ReportFilterLevel } from './report.interface';
2
+ export interface ReportFilterGroupChanges {
3
+ name?: string;
4
+ label?: string;
5
+ level?: ReportFilterLevel;
6
+ default?: FilterGroupDefault | null;
7
+ }
@@ -268,6 +268,7 @@ export interface ReportFilterOption {
268
268
  }
269
269
  export interface ReportFilterGroup {
270
270
  id: number;
271
+ name?: string;
271
272
  label: string | null;
272
273
  type: ReportFilterType;
273
274
  level: ReportFilterLevel;
@@ -302,20 +303,6 @@ export interface FilterGroupValue {
302
303
  max?: number | null;
303
304
  }
304
305
  export type ReportRelativeRange = 'thisWeek' | 'lastWeek' | 'last7Days' | 'last30Days' | 'last3Months' | 'last6Months' | 'last12Months' | 'thisMonth' | 'thisQuarter' | 'thisYear' | 'yearToDate';
305
- export interface ReportUrlParams {
306
- groups: Map<number, FilterGroupDefault | null>;
307
- listSorts: Map<number, string>;
308
- listSearches: Map<number, string>;
309
- listHidden: Map<number, string>;
310
- groupBy: string | null;
311
- }
312
- export interface ReportUrlSnapshot {
313
- groups: Map<number, FilterGroupValue | null>;
314
- listSorts: Map<number, ReportSort>;
315
- listSearches: Map<number, string>;
316
- listHidden: Map<number, string[]>;
317
- frequency: ChartGranularity | null;
318
- }
319
306
  export interface ResolvedFilterValue {
320
307
  filterId: number;
321
308
  start?: string;
@@ -12,17 +12,20 @@ export declare function dateFromBound(value: string | null | undefined): Date |
12
12
  export declare function dateToBound(value: Date | null | undefined): string | null;
13
13
  export declare function relativeLabel(relative: string): string;
14
14
  export declare const GROUP_BY_ITEM = "groupBy";
15
- export declare const VIEW_PARAM = "rv";
16
- export declare const PERSONAL_VIEW_PARAM = "rpv";
17
- export declare const FORMAT_PARAM = "rf";
18
- export declare const PAGE_PARAM = "page";
19
15
  export type ItemRangeEnd = 'min' | 'max' | 'from' | 'to';
20
16
  export declare function itemRangeName(name: string, end: ItemRangeEnd): string;
21
- export declare function groupParamKeys(groups: readonly Pick<ReportFilterGroup, 'id' | 'label' | 'filters'>[]): Map<number, string>;
22
- export declare function groupParamKey(group: Pick<ReportFilterGroup, 'id' | 'label' | 'filters'>, groups: readonly Pick<ReportFilterGroup, 'id' | 'label' | 'filters'>[]): string;
23
- export declare function groupItemName(group: ReportFilterGroup, report: Report | null): string;
17
+ export declare function groupItemName(group: Pick<ReportFilterGroup, 'id'>): string;
24
18
  export declare function loadGroupOptions(group: ReportFilterGroup, reportData: ReportData, reportId: number): Observable<ReportFilterOptionPair[]>;
25
19
  export declare function resolveOptionValues(options$: Observable<ReportFilterOptionPair[]>, values: unknown[], label?: (value: unknown) => string | null): Observable<ReportFilterOptionPair[]>;
20
+ export type GroupOptionsReader = (group: ReportFilterGroup, reportId: number) => Observable<{
21
+ name: string;
22
+ value: unknown;
23
+ }[]>;
24
+ export declare function groupOptionsReader(reportData: ReportData): GroupOptionsReader;
25
+ export declare function pickedOptionNames(options$: Observable<{
26
+ name: string;
27
+ value: unknown;
28
+ }[]>, values: unknown[], label?: (value: unknown) => string | null): Observable<string[] | null>;
26
29
  export declare function matchOptions(options$: Observable<ReportFilterOptionPair[]>, keyword?: string): Observable<ReportFilterOptionPair[]>;
27
30
  export declare const OPTIONS_TRUNCATED_NOTE = "Showing the first 500. Type to narrow.";
28
31
  export declare const OPTIONS_FAILED_NOTE = "Could not load the list.";
@@ -40,7 +43,7 @@ export declare function hasTimeSeriesChart(report: Report | null): boolean;
40
43
  export declare function isGranularityOffered(report: Report, granularity: ChartGranularity | null): boolean;
41
44
  export declare function groupByFilterItem(report: Report, initial?: ChartGranularity | null): IFilterConfigItem | null;
42
45
  export declare function groupBySignature(report: Report | null): string;
43
- export declare function groupValuesFromQuery(query: Record<string, any>, groups: ReportFilterGroup[], report: Report | null): {
46
+ export declare function groupValuesFromQuery(query: Record<string, any>, groups: ReportFilterGroup[]): {
44
47
  groupId: number;
45
48
  value: FilterGroupValue | null;
46
49
  }[];
@@ -3,7 +3,7 @@ import { ReportDrillStep } from './interfaces/report-drill-step.interface';
3
3
  import { ReportViewConfig } from './interfaces/report-view-config.interface';
4
4
  import { ReportViewSummary } from './interfaces/report-view-summary.interface';
5
5
  import { ReportView } from './interfaces/report-view.interface';
6
- import { ChartGranularity, FilterGroupDefault, FilterGroupValue, ReportFilterType, ReportRelativeRange, ReportSort } from './interfaces/report.interface';
6
+ import { ChartGranularity, FilterGroupDefault, FilterGroupValue, ReportFilterType, ReportRelativeRange } from './interfaces/report.interface';
7
7
  export declare const REPORT_VIEW_CONFIG_VERSION = 1;
8
8
  export declare const VIEW_CONFIG_MAX_BYTES: number;
9
9
  export declare const VIEW_CONFIG_MAX_GROUPS = 100;
@@ -27,10 +27,8 @@ export declare function viewDiffers(base: ReportViewConfig, current: ReportViewC
27
27
  export declare function sameStoredGroupValue(a: FilterGroupDefault | null | undefined, b: FilterGroupDefault | null | undefined): boolean;
28
28
  export declare function cleanDrillPath(path: readonly unknown[] | null | undefined): ReportDrillStep[];
29
29
  export declare function sameDrillPath(a: readonly ReportDrillStep[] | null | undefined, b: readonly ReportDrillStep[] | null | undefined): boolean;
30
- export declare function viewConfigDiff(base: ReportViewConfig, current: ReportViewConfig, authored: ReportViewConfig | null, authoredSort: (componentId: number) => ReportSort | null): ReportViewConfig | null;
31
30
  export declare function withStoredKeys(stored: ReportViewConfig | null | undefined, screen: ReportViewConfig): ReportViewConfig;
32
31
  export declare function viewDroppedCount(view: Pick<ReportView, 'config' | 'dropped'>, applied: ReportViewConfig): number;
33
32
  export declare function viewDroppedMessage(count: number, canChange?: boolean): string | null;
34
- export declare const VIEW_NOT_AVAILABLE_MESSAGE = "The view in this link is not available.";
35
33
  export declare function chatViewFields(openView: Pick<ReportViewSummary, 'id'> | null, viewChanged: boolean): Pick<ReportChatViewerState, 'viewId' | 'viewChanged'>;
36
34
  export declare function finiteNumber(value: unknown): number | undefined;
@@ -3,7 +3,7 @@ import { ReportChatViewerFilter } from '../interfaces/report-chat-viewer-filter.
3
3
  import { ReportDrillStep } from '../interfaces/report-drill-step.interface';
4
4
  import { ReportFilterMatch } from '../interfaces/report-filter-match.type';
5
5
  import { ReportViewConfig } from '../interfaces/report-view-config.interface';
6
- import { ChartGranularity, FilterGroupDefault, FilterGroupValue, Report, ReportComponent, ReportFilterGroup, ReportFormatContext, ReportRelativeRange, ReportSort, ReportUrlParams, ReportUrlSnapshot, ResolvedFilterValue } from '../interfaces/report.interface';
6
+ import { ChartGranularity, FilterGroupDefault, FilterGroupValue, Report, ReportComponent, ReportFilterGroup, ReportFormatContext, ReportRelativeRange, ReportSort, ResolvedFilterValue } from '../interfaces/report.interface';
7
7
  import { ComponentDataState } from '../interfaces/report.interface';
8
8
  import * as i0 from "@angular/core";
9
9
  export declare function sameDefault(a: FilterGroupDefault | null, b: FilterGroupDefault | null): boolean;
@@ -42,7 +42,7 @@ export declare class ReportFilterStateService {
42
42
  private _serverSearches;
43
43
  private _listSearchChanged$;
44
44
  private _changed$;
45
- private _urlChanged$;
45
+ private _stateChanged$;
46
46
  private _revision;
47
47
  private _stateVersion;
48
48
  private _appliedVersion;
@@ -54,7 +54,7 @@ export declare class ReportFilterStateService {
54
54
  private _drillChanged$;
55
55
  private _baseConfig;
56
56
  private _temporary;
57
- init(report: Report, restore?: ReportUrlParams | null): void;
57
+ init(report: Report): void;
58
58
  value(groupId: number): FilterGroupValue | undefined;
59
59
  setValue(groupId: number, value: FilterGroupValue | null): void;
60
60
  resolveRelative(name: string): {
@@ -72,8 +72,7 @@ export declare class ReportFilterStateService {
72
72
  hiddenColumns(componentId: number): readonly string[];
73
73
  setHiddenColumns(componentId: number, names: readonly string[]): void;
74
74
  listSearchChanges(componentId: number): Observable<void>;
75
- urlChanges(): Observable<void>;
76
- urlSnapshot(report: Report): ReportUrlSnapshot;
75
+ changes(): Observable<void>;
77
76
  isFilterDisabled(filterId: number): boolean;
78
77
  toggleFilter(filterId: number, groupId: number): void;
79
78
  changesFor(component: ReportComponent): Observable<number | null>;
@@ -89,27 +88,20 @@ export declare class ReportFilterStateService {
89
88
  adoptDrill(componentId: number, path: readonly ReportDrillStep[]): boolean;
90
89
  snapshot(): ReportViewConfig;
91
90
  authoredConfig(): ReportViewConfig;
92
- apply(config: ReportViewConfig | null, urlDiff?: ReportViewConfig | null, base?: ReportViewConfig | null): void;
91
+ apply(config: ReportViewConfig | null, pageId?: number | null): void;
93
92
  resetToBase(): void;
94
93
  setBaseToScreen(): void;
95
94
  clearBase(): void;
96
95
  resetGroupsToBase(groupIds: readonly number[]): void;
97
96
  groupsDifferFromBase(groupIds: readonly number[]): boolean;
98
- rewriteUrl(): void;
99
97
  tileState(component: ReportComponent): ComponentDataState;
100
98
  livePreset(groupId: number): ReportRelativeRange | null;
101
99
  private _resolvedFields;
102
100
  private _livePreset;
103
101
  private _seed;
104
- private _restore;
105
- private _restoreGroups;
106
- private _restoreListSorts;
107
- private _restoreListSearches;
108
- private _restoreListHidden;
109
102
  private _dropUnsearchable;
110
103
  private _prune;
111
104
  private _withPreset;
112
- private _isDefault;
113
105
  private _listComponents;
114
106
  private _sortableColumns;
115
107
  private _defaultValue;
@@ -120,7 +112,6 @@ export declare class ReportFilterStateService {
120
112
  private _applyLayer;
121
113
  private _applyGroups;
122
114
  private _applyGroup;
123
- private _rollingValue;
124
115
  private _seedAuthored;
125
116
  private _clearTiles;
126
117
  private _applyTile;
@@ -1,6 +1,4 @@
1
- import { ParamMap, Params } from '@angular/router';
2
1
  import { Observable } from 'rxjs';
3
- import { ReportUrlValueName } from '../interfaces/report-url-value-name.type';
4
2
  import { ReportViewCreate } from '../interfaces/report-view-create.interface';
5
3
  import { ReportViewDeleted } from '../interfaces/report-view-deleted.interface';
6
4
  import { ReportViewSummary } from '../interfaces/report-view-summary.interface';
@@ -20,9 +18,8 @@ export declare class ReportViewService {
20
18
  private _canShare;
21
19
  private _openView;
22
20
  private _reportId;
23
- private _tooLongShown;
24
21
  serves(report: Report | null): boolean;
25
- open(report: Report, params: Params, pageId: number | null): Observable<void>;
22
+ open(report: Report, pageId: number | null): Observable<void>;
26
23
  refresh(report: Report): void;
27
24
  pick(reportViewId: number): Observable<ReportView>;
28
25
  openDefaults(): void;
@@ -32,20 +29,11 @@ export declare class ReportViewService {
32
29
  share(shared: boolean): Observable<ReportView>;
33
30
  setDefault(personalDefault: boolean): Observable<ReportView>;
34
31
  deleteOpen(): Observable<ReportViewDeleted>;
35
- urlParams(current: ParamMap, name?: ReportUrlValueName): Params;
36
32
  private _start;
37
- private _openDefault;
38
- private _openLink;
39
33
  private _openOn;
40
34
  private _changeOpen;
41
35
  private _putRow;
42
36
  private _readViews;
43
- private _readView;
44
- private _linkWrite;
45
- private _linkDays;
46
- private _groupDays;
47
- private _reportGroups;
48
- private _authoredSort;
49
37
  static ɵfac: i0.ɵɵFactoryDeclaration<ReportViewService, never>;
50
38
  static ɵprov: i0.ɵɵInjectableDeclaration<ReportViewService>;
51
39
  }