@firestitch/report 18.13.0 → 18.14.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-grid/component-grid.component.d.ts +4 -0
- package/app/reports/data/report-grid-source.d.ts +1 -0
- package/app/reports/interfaces/{report-chat-viewer-detail.interface.d.ts → report-chat-viewer-show-rows.interface.d.ts} +1 -1
- package/app/reports/interfaces/report-chat-viewer-state.interface.d.ts +2 -2
- package/app/reports/interfaces/report-mark-action.type.d.ts +1 -1
- package/app/reports/interfaces/report-temporary-state.interface.d.ts +1 -1
- package/app/reports/interfaces/report-viewer-feature.type.d.ts +1 -1
- package/app/reports/report-grid-layout.d.ts +2 -1
- package/esm2022/app/reports/components/component-grid/component-grid.component.mjs +40 -5
- package/esm2022/app/reports/data/report-grid-source.mjs +11 -2
- package/esm2022/app/reports/interfaces/report-chat-viewer-show-rows.interface.mjs +2 -0
- package/esm2022/app/reports/interfaces/report-chat-viewer-state.interface.mjs +1 -1
- package/esm2022/app/reports/interfaces/report-mark-action.type.mjs +1 -1
- package/esm2022/app/reports/interfaces/report-temporary-state.interface.mjs +1 -1
- package/esm2022/app/reports/interfaces/report-viewer-feature.type.mjs +1 -1
- package/esm2022/app/reports/mark-click.mjs +2 -2
- package/esm2022/app/reports/option-builder.mjs +4 -4
- package/esm2022/app/reports/report-grid-layout.mjs +43 -2
- package/esm2022/app/reports/report-viewer-features.mjs +4 -2
- package/esm2022/app/reports/services/report-filter-state.service.mjs +2 -2
- package/fesm2022/{firestitch-report-echarts-EecIloKo.mjs → firestitch-report-echarts-DMflI6jp.mjs} +2 -2
- package/fesm2022/{firestitch-report-echarts-EecIloKo.mjs.map → firestitch-report-echarts-DMflI6jp.mjs.map} +1 -1
- package/fesm2022/{firestitch-report-firestitch-report-DbdLxQSE.mjs → firestitch-report-firestitch-report-C94rjx24.mjs} +104 -19
- package/fesm2022/firestitch-report-firestitch-report-C94rjx24.mjs.map +1 -0
- package/fesm2022/firestitch-report.mjs +1 -1
- package/package.json +1 -1
- package/esm2022/app/reports/interfaces/report-chat-viewer-detail.interface.mjs +0 -2
- package/fesm2022/firestitch-report-firestitch-report-DbdLxQSE.mjs.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// A table tile's layouts: the one its config authors, the canonical key two
|
|
2
2
|
// layouts are compared by, and a viewer's layout moved onto a new authored one.
|
|
3
|
-
import { GridGranularity, canonicalGridLayout, convertDateFilter, } from '@firestitch/grid';
|
|
3
|
+
import { GridControlState, GridGranularity, GridNoteCode, canonicalGridLayout, convertDateFilter, } from '@firestitch/grid';
|
|
4
4
|
const NO_LAYOUT = {};
|
|
5
5
|
// The report's grains by the grid's name for each.
|
|
6
6
|
export const GRID_GRANULARITIES = {
|
|
@@ -64,4 +64,45 @@ export function grainedGridLayout(layout, field, granularity) {
|
|
|
64
64
|
.filter((item) => !!item);
|
|
65
65
|
return { layout: { ...layout, filters }, cleared: converted ? null : { field, granularity: grain } };
|
|
66
66
|
}
|
|
67
|
-
|
|
67
|
+
// The notes that leave a filter out of a read, by the filter's index (filters.N...)
|
|
68
|
+
const PRUNED_FILTER_CODES = new Set([
|
|
69
|
+
GridNoteCode.FieldMissing,
|
|
70
|
+
GridNoteCode.CannotFilter,
|
|
71
|
+
GridNoteCode.FilterRefused,
|
|
72
|
+
GridNoteCode.GranularityRefused,
|
|
73
|
+
]);
|
|
74
|
+
// The notes that leave a sort term out of a read, by the term's index (sort.N...)
|
|
75
|
+
const PRUNED_SORT_CODES = new Set([
|
|
76
|
+
GridNoteCode.FieldMissing,
|
|
77
|
+
GridNoteCode.SortRefused,
|
|
78
|
+
]);
|
|
79
|
+
// A viewer's layout of a table once its first read is in: the filters and sort
|
|
80
|
+
// terms that read refused (a field the query no longer has, a filter or grain
|
|
81
|
+
// the field no longer takes) are taken out, so the stored session layout holds
|
|
82
|
+
// only what applies. When the author turned filtering off (`filter`, the
|
|
83
|
+
// tile's controls.filter), the viewer's filters give way to the authored ones
|
|
84
|
+
// (`authored`), which a viewer cannot change. The layout comes back as it is
|
|
85
|
+
// when nothing changes.
|
|
86
|
+
export function prunedGridLayout(layout, notes, filter, authored = []) {
|
|
87
|
+
const filters = layout.filters ?? [];
|
|
88
|
+
const sort = layout.sort ?? [];
|
|
89
|
+
const filterIndexes = notedIndexes(notes, 'filters', PRUNED_FILTER_CODES);
|
|
90
|
+
const sortIndexes = notedIndexes(notes, 'sort', PRUNED_SORT_CODES);
|
|
91
|
+
const canFilter = (filter ?? GridControlState.Enabled) === GridControlState.Enabled;
|
|
92
|
+
const keptFilters = canFilter ? filters.filter((_item, index) => !filterIndexes.has(index)) : [...authored];
|
|
93
|
+
const keptSort = sort.filter((_term, index) => !sortIndexes.has(index));
|
|
94
|
+
const isFiltersKept = JSON.stringify(keptFilters) === JSON.stringify(filters);
|
|
95
|
+
return isFiltersKept && keptSort.length === sort.length
|
|
96
|
+
? layout
|
|
97
|
+
: { ...layout, filters: keptFilters, sort: keptSort };
|
|
98
|
+
}
|
|
99
|
+
// The indexes under `key` (key.N or key.N.part) the notes of `codes` name
|
|
100
|
+
function notedIndexes(notes, key, codes) {
|
|
101
|
+
const pattern = new RegExp(`^${key}\\.(\\d+)(\\.|$)`);
|
|
102
|
+
return new Set(notes
|
|
103
|
+
.filter((note) => codes.has(note.code))
|
|
104
|
+
.map((note) => pattern.exec(note.path ?? ''))
|
|
105
|
+
.filter((match) => !!match)
|
|
106
|
+
.map((match) => Number(match[1])));
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWdyaWQtbGF5b3V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL3JlcG9ydC1ncmlkLWxheW91dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSw0RUFBNEU7QUFDNUUsZ0ZBQWdGO0FBQ2hGLE9BQU8sRUFDYyxnQkFBZ0IsRUFBYyxlQUFlLEVBQXdCLFlBQVksRUFDcEcsbUJBQW1CLEVBQUUsaUJBQWlCLEdBQ3ZDLE1BQU0sa0JBQWtCLENBQUM7QUFLMUIsTUFBTSxTQUFTLEdBQWUsRUFBRSxDQUFDO0FBRWpDLG1EQUFtRDtBQUNuRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBOEM7SUFDM0UsR0FBRyxFQUFFLGVBQWUsQ0FBQyxHQUFHO0lBQ3hCLElBQUksRUFBRSxlQUFlLENBQUMsSUFBSTtJQUMxQixLQUFLLEVBQUUsZUFBZSxDQUFDLEtBQUs7SUFDNUIsT0FBTyxFQUFFLGVBQWUsQ0FBQyxPQUFPO0lBQ2hDLElBQUksRUFBRSxlQUFlLENBQUMsSUFBSTtDQUMzQixDQUFDO0FBRUYscURBQXFEO0FBQ3JELE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxTQUEwQjtJQUMzRCxPQUFPLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLFNBQVMsQ0FBQztBQUMvQyxDQUFDO0FBRUQsMEVBQTBFO0FBQzFFLCtEQUErRDtBQUMvRCxNQUFNLFVBQVUsYUFBYSxDQUFDLE1BQWtCO0lBQzlDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRCw2RUFBNkU7QUFDN0UsOEVBQThFO0FBQzlFLDhFQUE4RTtBQUM5RSw4RUFBOEU7QUFDOUUseUVBQXlFO0FBQ3pFLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxPQUFtQixFQUFFLElBQVksRUFBRSxRQUFvQjtJQUN2RixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FB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O1FBQ1IsQ0FBQyxDQUFDLEVBQUUsR0FBRyxNQUFNLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7QUFDMUQsQ0FBQztBQUVELDBFQUEwRTtBQUMxRSxTQUFTLFlBQVksQ0FBQyxLQUEwQixFQUFFLEdBQVcsRUFBRSxLQUFnQztJQUM3RixNQUFNLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztJQUV0RCxPQUFPLElBQUksR0FBRyxDQUFDLEtBQUs7U0FDakIsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN0QyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQztTQUM1QyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQTRCLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1NBQ3BELEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQSB0YWJsZSB0aWxlJ3MgbGF5b3V0czogdGhlIG9uZSBpdHMgY29uZmlnIGF1dGhvcnMsIHRoZSBjYW5vbmljYWwga2V5IHR3b1xuLy8gbGF5b3V0cyBhcmUgY29tcGFyZWQgYnksIGFuZCBhIHZpZXdlcidzIGxheW91dCBtb3ZlZCBvbnRvIGEgbmV3IGF1dGhvcmVkIG9uZS5cbmltcG9ydCB7XG4gIEdyaWRDbGVhcmVkRmlsdGVyLCBHcmlkQ29udHJvbFN0YXRlLCBHcmlkRmlsdGVyLCBHcmlkR3JhbnVsYXJpdHksIEdyaWRMYXlvdXQsIEdyaWROb3RlLCBHcmlkTm90ZUNvZGUsXG4gIGNhbm9uaWNhbEdyaWRMYXlvdXQsIGNvbnZlcnREYXRlRmlsdGVyLFxufSBmcm9tICdAZmlyZXN0aXRjaC9ncmlkJztcblxuaW1wb3J0IHsgQ2hhcnRHcmFudWxhcml0eSwgUmVwb3J0Q29tcG9uZW50IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3JlcG9ydC5pbnRlcmZhY2UnO1xuXG5cbmNvbnN0IE5PX0xBWU9VVDogR3JpZExheW91dCA9IHt9O1xuXG4vLyBUaGUgcmVwb3J0J3MgZ3JhaW5zIGJ5IHRoZSBncmlkJ3MgbmFtZSBmb3IgZWFjaC5cbmV4cG9ydCBjb25zdCBHUklEX0dSQU5VTEFSSVRJRVM6IFJlY29yZDxDaGFydEdyYW51bGFyaXR5LCBHcmlkR3JhbnVsYXJpdHk+ID0ge1xuICBkYXk6IEdyaWRHcmFudWxhcml0eS5EYXksXG4gIHdlZWs6IEdyaWRHcmFudWxhcml0eS5XZWVrLFxuICBtb250aDogR3JpZEdyYW51bGFyaXR5Lk1vbnRoLFxuICBxdWFydGVyOiBHcmlkR3JhbnVsYXJpdHkuUXVhcnRlcixcbiAgeWVhcjogR3JpZEdyYW51bGFyaXR5LlllYXIsXG59O1xuXG4vLyBUaGUgbGF5b3V0IGEgdGFibGUgdGlsZSdzIGNvbmZpZyBhdXRob3JzLCBvciBub25lLlxuZXhwb3J0IGZ1bmN0aW9uIGF1dGhvcmVkR3JpZExheW91dChjb21wb25lbnQ6IFJlcG9ydENvbXBvbmVudCk6IEdyaWRMYXlvdXQge1xuICByZXR1cm4gY29tcG9uZW50LmNvbmZpZz8ubGF5b3V0ID8/IE5PX0xBWU9VVDtcbn1cblxuLy8gQSBsYXlvdXQncyBjYW5vbmljYWwga2V5OiB0d28gbGF5b3V0cyB0aGF0IGRyYXcgdGhlIHNhbWUgdGFibGUgaGF2ZSB0aGVcbi8vIHNhbWUga2V5LCB3aGF0ZXZlciBvcmRlciBvciBkZWZhdWx0cyB0aGV5IHdlcmUgd3JpdHRlbiB3aXRoLlxuZXhwb3J0IGZ1bmN0aW9uIGdyaWRMYXlvdXRLZXkobGF5b3V0OiBHcmlkTGF5b3V0KTogc3RyaW5nIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGNhbm9uaWNhbEdyaWRMYXlvdXQobGF5b3V0KSk7XG59XG5cbi8vIEEgdmlld2VyJ3MgbGF5b3V0IG1vdmVkIG9udG8gdGhlIGxheW91dCBhdXRob3JlZCBub3csIGBiYXNlYCBiZWluZyB0aGUga2V5XG4vLyBvZiB0aGUgYXV0aG9yZWQgbGF5b3V0IHRoZXkgc3RhcnRlZCBmcm9tOiB0aGUgbmV3IGF1dGhvcmVkIGxheW91dCwgd2l0aCB0aGVcbi8vIHZpZXdlcidzIG93biBmaWx0ZXJzIGFuZCBzb3J0ICh3aGF0IGBiYXNlYCBkaWQgbm90IGhhdmUpIGtlcHQgb24gdGhlIGZpZWxkc1xuLy8gaXQgc3RpbGwgcGxhY2VzLiBBIGZpZWxkIHRoZSB2aWV3ZXIgZmlsdGVycyB0YWtlcyB0aGVpciBmaWx0ZXJzIGluIHBsYWNlIG9mXG4vLyB0aGUgYXV0aG9yZWQgb25lcywgYW5kIGEgc29ydCB0aGV5IGNoYW5nZWQgcmVwbGFjZXMgdGhlIGF1dGhvcmVkIHNvcnQuXG5leHBvcnQgZnVuY3Rpb24gcmViYXNlZEdyaWRMYXlvdXQoc2Vzc2lvbjogR3JpZExheW91dCwgYmFzZTogc3RyaW5nLCBhdXRob3JlZDogR3JpZExheW91dCk6IEdyaWRMYXlvdXQge1xuICBjb25zdCBzdGFydGVkID0gSlNPTi5wYXJzZShiYXNlKSBhcyBHcmlkTGF5b3V0O1xuICBjb25zdCB2aWV3ZXIgPSBjYW5vbmljYWxHcmlkTGF5b3V0KHNlc3Npb24pO1xuICBjb25zdCBwbGFjZWQgPSBuZXcgU2V0KFtcbiAgICAuLi4oYXV0aG9yZWQucm93cyA/PyBbXSksXG4gICAgLi4uKGF1dGhvcmVkLmNvbHVtbnMgPz8gW10pLFxuICAgIC4uLihhdXRob3JlZC52YWx1ZXMgPz8gW10pLFxuICAgIC4uLihhdXRob3JlZC5kZXRhaWxzID8/IFtdKSxcbiAgXS5tYXAoKHBsYWNlbWVudCkgPT4gcGxhY2VtZW50LmZpZWxkKSk7XG4gIGNvbnN0IHN0YXJ0ZWRGaWx0ZXJzID0gbmV3IFNldCgoc3RhcnRlZC5maWx0ZXJzID8/IFtdKS5tYXAoKGZpbHRlcikgPT4gSlNPTi5zdHJpbmdpZnkoZmlsdGVyKSkpO1xuICBjb25zdCBmaWx0ZXJzID0gKHZpZXdlci5maWx0ZXJzID8/IFtdKVxuICAgIC5maWx0ZXIoKGZpbHRlcikgPT4gcGxhY2VkLmhhcyhmaWx0ZXIuZmllbGQpICYmICFzdGFydGVkRmlsdGVycy5oYXMoSlNPTi5zdHJpbmdpZnkoZmlsdGVyKSkpO1xuICBjb25zdCBmaWx0ZXJlZCA9IG5ldyBTZXQoZmlsdGVycy5tYXAoKGZpbHRlcikgPT4gZmlsdGVyLmZpZWxkKSk7XG4gIGNvbnN0IHNvcnRlZCA9IEpTT04uc3RyaW5naWZ5KHZpZXdlci5zb3J0ID8/IFtdKSAhPT0gSlNPTi5zdHJpbmdpZnkoc3RhcnRlZC5zb3J0ID8/IFtdKTtcbiAgY29uc3Qgc29ydCA9ICh2aWV3ZXIuc29ydCA/PyBbXSkuZmlsdGVyKCh0ZXJtKSA9PiBwbGFjZWQuaGFzKHRlcm0uZmllbGQpKTtcblxuICByZXR1cm4gY2Fub25pY2FsR3JpZExheW91dCh7XG4gICAgLi4uYXV0aG9yZWQsXG4gICAgZmlsdGVyczogWy4uLihhdXRob3JlZC5maWx0ZXJzID8/IFtdKS5maWx0ZXIoKGZpbHRlcikgPT4gIWZpbHRlcmVkLmhhcyhmaWx0ZXIuZmllbGQpKSwgLi4uZmlsdGVyc10sXG4gICAgc29ydDogc29ydGVkICYmIHNvcnQubGVuZ3RoID8gc29ydCA6IGF1dGhvcmVkLnNvcnQsXG4gIH0pO1xufVxuXG4vLyBBIHRhYmxlJ3MgbGF5b3V0IG9uY2UgdGhlIGdyYWluIGBmaWVsZGAgcmVhZHMgYXQgbW92ZXMgdG8gYGdyYW51bGFyaXR5YCAodGhlXG4vLyByZXBvcnQncyBncm91cC1ieSBjaGFuZ2VkKTogaXRzIGNvbHVtbiBmaWx0ZXIgb24gYGZpZWxkYCBjb252ZXJ0cyB0byB0aGVcbi8vIHNhbWUgZGF5cyBhdCB0aGUgbmV3IGdyYWluIHdoZW4gaXRzIGVkZ2VzIGxpbmUgdXAsIGFuZCBpcyB0YWtlbiBvdXRcbi8vIG90aGVyd2lzZSAoY29udmVydERhdGVGaWx0ZXIpLCBzbyB0aGUgcmVhZCBuZXZlciBzZW5kcyBhIGZpbHRlciB0aGUgZmllbGQgbm9cbi8vIGxvbmdlciBvZmZlcnMuIGBjbGVhcmVkYCBuYW1lcyB0aGUgZmlsdGVyIHRha2VuIG91dCBhbmQgdGhlIGdyYWluIHRoZSB0YWJsZVxuLy8gbm93IGdyb3VwcyBieSwgYXMgZnMtZ3JpZCdzIHN0YXR1cyBsaW5lIHJlYWRzIGl0LiBBIGxheW91dCB3aXRoIG5vIGZpbHRlciBvblxuLy8gdGhlIGZpZWxkLCBvciBvbmUgYWxyZWFkeSBhdCB0aGUgZ3JhaW4sIGNvbWVzIGJhY2sgYXMgaXQgaXMuXG5leHBvcnQgZnVuY3Rpb24gZ3JhaW5lZEdyaWRMYXlvdXQoXG4gIGxheW91dDogR3JpZExheW91dCxcbiAgZmllbGQ6IHN0cmluZyxcbiAgZ3JhbnVsYXJpdHk6IENoYXJ0R3JhbnVsYXJpdHksXG4pOiB7IGxheW91dDogR3JpZExheW91dDsgY2xlYXJlZDogR3JpZENsZWFyZWRGaWx0ZXIgfCBudWxsIH0ge1xuICBjb25zdCBncmFpbiA9IEdSSURfR1JBTlVMQVJJVElFU1tncmFudWxhcml0eV07XG4gIGNvbnN0IGZpbHRlciA9IChsYXlvdXQuZmlsdGVycyA/PyBbXSkuZmluZCgoaXRlbSkgPT4gaXRlbS5maWVsZCA9PT0gZmllbGQpO1xuICBpZiAoIWZpbHRlciB8fCAoZmlsdGVyLmdyYW51bGFyaXR5ID8/IEdyaWRHcmFudWxhcml0eS5EYXkpID09PSBncmFpbikge1xuICAgIHJldHVybiB7IGxheW91dCwgY2xlYXJlZDogbnVsbCB9O1xuICB9XG5cbiAgY29uc3QgY29udmVydGVkID0gY29udmVydERhdGVGaWx0ZXIoZmlsdGVyLCBncmFpbik7XG4gIGNvbnN0IGZpbHRlcnMgPSAobGF5b3V0LmZpbHRlcnMgPz8gW10pXG4gICAgLm1hcCgoaXRlbSkgPT4gKGl0ZW0gPT09IGZpbHRlciA/IGNvbnZlcnRlZCA6IGl0ZW0pKVxuICAgIC5maWx0ZXIoKGl0ZW0pOiBpdGVtIGlzIEdyaWRGaWx0ZXIgPT4gISFpdGVtKTtcblxuICByZXR1cm4geyBsYXlvdXQ6IHsgLi4ubGF5b3V0LCBmaWx0ZXJzIH0sIGNsZWFyZWQ6IGNvbnZlcnRlZCA/IG51bGwgOiB7IGZpZWxkLCBncmFudWxhcml0eTogZ3JhaW4gfSB9O1xufVxuXG4vLyBUaGUgbm90ZXMgdGhhdCBsZWF2ZSBhIGZpbHRlciBvdXQgb2YgYSByZWFkLCBieSB0aGUgZmlsdGVyJ3MgaW5kZXggKGZpbHRlcnMuTi4uLilcbmNvbnN0IFBSVU5FRF9GSUxURVJfQ09ERVM6IFJlYWRvbmx5U2V0PEdyaWROb3RlQ29kZT4gPSBuZXcgU2V0KFtcbiAgR3JpZE5vdGVDb2RlLkZpZWxkTWlzc2luZyxcbiAgR3JpZE5vdGVDb2RlLkNhbm5vdEZpbHRlcixcbiAgR3JpZE5vdGVDb2RlLkZpbHRlclJlZnVzZWQsXG4gIEdyaWROb3RlQ29kZS5HcmFudWxhcml0eVJlZnVzZWQsXG5dKTtcblxuLy8gVGhlIG5vdGVzIHRoYXQgbGVhdmUgYSBzb3J0IHRlcm0gb3V0IG9mIGEgcmVhZCwgYnkgdGhlIHRlcm0ncyBpbmRleCAoc29ydC5OLi4uKVxuY29uc3QgUFJVTkVEX1NPUlRfQ09ERVM6IFJlYWRvbmx5U2V0PEdyaWROb3RlQ29kZT4gPSBuZXcgU2V0KFtcbiAgR3JpZE5vdGVDb2RlLkZpZWxkTWlzc2luZyxcbiAgR3JpZE5vdGVDb2RlLlNvcnRSZWZ1c2VkLFxuXSk7XG5cbi8vIEEgdmlld2VyJ3MgbGF5b3V0IG9mIGEgdGFibGUgb25jZSBpdHMgZmlyc3QgcmVhZCBpcyBpbjogdGhlIGZpbHRlcnMgYW5kIHNvcnRcbi8vIHRlcm1zIHRoYXQgcmVhZCByZWZ1c2VkIChhIGZpZWxkIHRoZSBxdWVyeSBubyBsb25nZXIgaGFzLCBhIGZpbHRlciBvciBncmFpblxuLy8gdGhlIGZpZWxkIG5vIGxvbmdlciB0YWtlcykgYXJlIHRha2VuIG91dCwgc28gdGhlIHN0b3JlZCBzZXNzaW9uIGxheW91dCBob2xkc1xuLy8gb25seSB3aGF0IGFwcGxpZXMuIFdoZW4gdGhlIGF1dGhvciB0dXJuZWQgZmlsdGVyaW5nIG9mZiAoYGZpbHRlcmAsIHRoZVxuLy8gdGlsZSdzIGNvbnRyb2xzLmZpbHRlciksIHRoZSB2aWV3ZXIncyBmaWx0ZXJzIGdpdmUgd2F5IHRvIHRoZSBhdXRob3JlZCBvbmVzXG4vLyAoYGF1dGhvcmVkYCksIHdoaWNoIGEgdmlld2VyIGNhbm5vdCBjaGFuZ2UuIFRoZSBsYXlvdXQgY29tZXMgYmFjayBhcyBpdCBpc1xuLy8gd2hlbiBub3RoaW5nIGNoYW5nZXMuXG5leHBvcnQgZnVuY3Rpb24gcHJ1bmVkR3JpZExheW91dChcbiAgbGF5b3V0OiBHcmlkTGF5b3V0LFxuICBub3RlczogcmVhZG9ubHkgR3JpZE5vdGVbXSxcbiAgZmlsdGVyPzogR3JpZENvbnRyb2xTdGF0ZSxcbiAgYXV0aG9yZWQ6IHJlYWRvbmx5IEdyaWRGaWx0ZXJbXSA9IFtdLFxuKTogR3JpZExheW91dCB7XG4gIGNvbnN0IGZpbHRlcnMgPSBsYXlvdXQuZmlsdGVycyA/PyBbXTtcbiAgY29uc3Qgc29ydCA9IGxheW91dC5zb3J0ID8/IFtdO1xuICBjb25zdCBmaWx0ZXJJbmRleGVzID0gbm90ZWRJbmRleGVzKG5vdGVzLCAnZmlsdGVycycsIFBSVU5FRF9GSUxURVJfQ09ERVMpO1xuICBjb25zdCBzb3J0SW5kZXhlcyA9IG5vdGVkSW5kZXhlcyhub3RlcywgJ3NvcnQnLCBQUlVORURfU09SVF9DT0RFUyk7XG4gIGNvbnN0IGNhbkZpbHRlciA9IChmaWx0ZXIgPz8gR3JpZENvbnRyb2xTdGF0ZS5FbmFibGVkKSA9PT0gR3JpZENvbnRyb2xTdGF0ZS5FbmFibGVkO1xuICBjb25zdCBrZXB0RmlsdGVycyA9IGNhbkZpbHRlciA/IGZpbHRlcnMuZmlsdGVyKChfaXRlbSwgaW5kZXgpID0+ICFmaWx0ZXJJbmRleGVzLmhhcyhpbmRleCkpIDogWy4uLmF1dGhvcmVkXTtcbiAgY29uc3Qga2VwdFNvcnQgPSBzb3J0LmZpbHRlcigoX3Rlcm0sIGluZGV4KSA9PiAhc29ydEluZGV4ZXMuaGFzKGluZGV4KSk7XG4gIGNvbnN0IGlzRmlsdGVyc0tlcHQgPSBKU09OLnN0cmluZ2lmeShrZXB0RmlsdGVycykgPT09IEpTT04uc3RyaW5naWZ5KGZpbHRlcnMpO1xuXG4gIHJldHVybiBpc0ZpbHRlcnNLZXB0ICYmIGtlcHRTb3J0Lmxlbmd0aCA9PT0gc29ydC5sZW5ndGhcbiAgICA/IGxheW91dFxuICAgIDogeyAuLi5sYXlvdXQsIGZpbHRlcnM6IGtlcHRGaWx0ZXJzLCBzb3J0OiBrZXB0U29ydCB9O1xufVxuXG4vLyBUaGUgaW5kZXhlcyB1bmRlciBga2V5YCAoa2V5Lk4gb3Iga2V5Lk4ucGFydCkgdGhlIG5vdGVzIG9mIGBjb2Rlc2AgbmFtZVxuZnVuY3Rpb24gbm90ZWRJbmRleGVzKG5vdGVzOiByZWFkb25seSBHcmlkTm90ZVtdLCBrZXk6IHN0cmluZywgY29kZXM6IFJlYWRvbmx5U2V0PEdyaWROb3RlQ29kZT4pOiBSZWFkb25seVNldDxudW1iZXI+IHtcbiAgY29uc3QgcGF0dGVybiA9IG5ldyBSZWdFeHAoYF4ke2tleX1cXFxcLihcXFxcZCspKFxcXFwufCQpYCk7XG5cbiAgcmV0dXJuIG5ldyBTZXQobm90ZXNcbiAgICAuZmlsdGVyKChub3RlKSA9PiBjb2Rlcy5oYXMobm90ZS5jb2RlKSlcbiAgICAubWFwKChub3RlKSA9PiBwYXR0ZXJuLmV4ZWMobm90ZS5wYXRoID8/ICcnKSlcbiAgICAuZmlsdGVyKChtYXRjaCk6IG1hdGNoIGlzIFJlZ0V4cEV4ZWNBcnJheSA9PiAhIW1hdGNoKVxuICAgIC5tYXAoKG1hdGNoKSA9PiBOdW1iZXIobWF0Y2hbMV0pKSk7XG59XG4iXX0=
|
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
// cascadingOptions narrows a select's list by the other filters of its tile
|
|
13
13
|
// (ReportFilterOptionsService). drill is a time chart's click down, with
|
|
14
14
|
// the tile header's breadcrumb and its menu's Drill up and Back to top as the
|
|
15
|
-
// way back.
|
|
15
|
+
// way back. grid is a table tile drawn by fs-grid: a server that serves it
|
|
16
|
+
// sends a table only to a viewer that names it.
|
|
16
17
|
export const VIEWER_FEATURES = [
|
|
17
18
|
'scopeFilters',
|
|
18
19
|
'excludeValues',
|
|
@@ -21,6 +22,7 @@ export const VIEWER_FEATURES = [
|
|
|
21
22
|
'pageScope',
|
|
22
23
|
'cascadingOptions',
|
|
23
24
|
'drill',
|
|
25
|
+
'grid',
|
|
24
26
|
];
|
|
25
27
|
// The features a report offers on this screen: the ones its server serves
|
|
26
28
|
// (Report.viewerFeatures) that this viewer also implements.
|
|
@@ -37,4 +39,4 @@ export function offersExclude(group, features) {
|
|
|
37
39
|
&& !group.multiColumn
|
|
38
40
|
&& (features ?? []).includes('excludeValues');
|
|
39
41
|
}
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXZpZXdlci1mZWF0dXJlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9yZXBvcnQtdmlld2VyLWZlYXR1cmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLHdFQUF3RTtBQUN4RSwyRUFBMkU7QUFDM0UsK0VBQStFO0FBQy9FLCtFQUErRTtBQUMvRSw2RUFBNkU7QUFDN0UscUNBQXFDO0FBQ3JDLEVBQUU7QUFDRiwwRUFBMEU7QUFDMUUsMkVBQTJFO0FBQzNFLDJFQUEyRTtBQUMzRSxzRUFBc0U7QUFDdEUsNEVBQTRFO0FBQzVFLHlFQUF5RTtBQUN6RSw4RUFBOEU7QUFDOUUsMkVBQTJFO0FBQzNFLGdEQUFnRDtBQUNoRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQW1DO0lBQzdELGNBQWM7SUFDZCxlQUFlO0lBQ2YsYUFBYTtJQUNiLFVBQVU7SUFDVixXQUFXO0lBQ1gsa0JBQWtCO0lBQ2xCLE9BQU87SUFDUCxNQUFNO0NBQ1AsQ0FBQztBQUVGLDBFQUEwRTtBQUMxRSw0REFBNEQ7QUFDNUQsTUFBTSxVQUFVLHFCQUFxQixDQUFDLE1BQXlEO0lBQzdGLE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDL0UsQ0FBQztBQUVELDhFQUE4RTtBQUM5RSwwRUFBMEU7QUFDMUUsMkVBQTJFO0FBQzNFLDBFQUEwRTtBQUMxRSxnRUFBZ0U7QUFDaEUsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsS0FBc0QsRUFDdEQsUUFBMkQ7SUFFM0QsT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVE7V0FDekIsQ0FBQyxLQUFLLENBQUMsV0FBVztXQUNsQixDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDbEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcG9ydFZpZXdlckZlYXR1cmUgfSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LXZpZXdlci1mZWF0dXJlLnR5cGUnO1xuaW1wb3J0IHsgUmVwb3J0RmlsdGVyR3JvdXAgfSBmcm9tICcuL2ludGVyZmFjZXMvcmVwb3J0LmludGVyZmFjZSc7XG5cblxuLy8gVGhlIHZpZXdlciBmZWF0dXJlcyB0aGlzIHZpZXdlciBpbXBsZW1lbnRzOiB0aGUgcmVwb3J0IEdFVCBuYW1lcyB0aGVtXG4vLyAoZmVhdHVyZXM9PGNvbW1hIGxpc3Q+KSwgYW5kIHRoZSBzZXJ2ZXIgYXNzZW1ibGVzIHRoZSByZXBvcnQgZm9yIGV4YWN0bHlcbi8vIHRoZXNlLiBBIGZlYXR1cmUgam9pbnMgdGhlIGxpc3QgaW4gdGhlIGNoYW5nZSB0aGF0IGJ1aWxkcyBpdHMgY29udHJvbCwgbmV2ZXJcbi8vIGJlZm9yZTogdGhlIHNlcnZlciBzZW5kcyBhIGdyb3VwIG9ubHkgaW4gYSBzaGFwZSB0aGUgdmlld2VyIHNheXMgaXQgY2FuIHNob3dcbi8vIGFuZCBjbGVhciwgYW5kIGEgbGlzdGVkIGZlYXR1cmUgd2l0aG91dCBpdHMgY29udHJvbCB3b3VsZCBnZXQgYSBmaWx0ZXIgdGhlXG4vLyB2aWV3ZXIgY2FuIG5laXRoZXIgc2hvdyBub3IgY2xlYXIuXG4vL1xuLy8gc2NvcGVGaWx0ZXJzIG5lZWRzIG5vIGNvbnRyb2wgb2YgaXRzIG93bjogYSBzY29wZSBtZW1iZXIgaXMgYW4gb3JkaW5hcnlcbi8vIGZpbHRlciByb3cgb24gaXRzIHRpbGUuIGV4Y2x1ZGVWYWx1ZXMgaXMgYSBzZWxlY3QncyAnRXhjbHVkZSB0aGVzZScgcm93LFxuLy8gbnVtYmVyUmFuZ2UgaXRzIG1pbi9tYXggY29udHJvbCwgbWF0Y2hBbnkgdGhlIHJlcG9ydCBiYXIncyBNYXRjaCBzZWxlY3QsXG4vLyBhbmQgcGFnZVNjb3BlIHNob3dzIGEgcGFnZSdzIGdyb3VwcyBpbiB0aGUgcmVwb3J0IGJhciBvZiB0aGF0IHBhZ2UuXG4vLyBjYXNjYWRpbmdPcHRpb25zIG5hcnJvd3MgYSBzZWxlY3QncyBsaXN0IGJ5IHRoZSBvdGhlciBmaWx0ZXJzIG9mIGl0cyB0aWxlXG4vLyAoUmVwb3J0RmlsdGVyT3B0aW9uc1NlcnZpY2UpLiBkcmlsbCBpcyBhIHRpbWUgY2hhcnQncyBjbGljayBkb3duLCB3aXRoXG4vLyB0aGUgdGlsZSBoZWFkZXIncyBicmVhZGNydW1iIGFuZCBpdHMgbWVudSdzIERyaWxsIHVwIGFuZCBCYWNrIHRvIHRvcCBhcyB0aGVcbi8vIHdheSBiYWNrLiBncmlkIGlzIGEgdGFibGUgdGlsZSBkcmF3biBieSBmcy1ncmlkOiBhIHNlcnZlciB0aGF0IHNlcnZlcyBpdFxuLy8gc2VuZHMgYSB0YWJsZSBvbmx5IHRvIGEgdmlld2VyIHRoYXQgbmFtZXMgaXQuXG5leHBvcnQgY29uc3QgVklFV0VSX0ZFQVRVUkVTOiByZWFkb25seSBSZXBvcnRWaWV3ZXJGZWF0dXJlW10gPSBbXG4gICdzY29wZUZpbHRlcnMnLFxuICAnZXhjbHVkZVZhbHVlcycsXG4gICdudW1iZXJSYW5nZScsXG4gICdtYXRjaEFueScsXG4gICdwYWdlU2NvcGUnLFxuICAnY2FzY2FkaW5nT3B0aW9ucycsXG4gICdkcmlsbCcsXG4gICdncmlkJyxcbl07XG5cbi8vIFRoZSBmZWF0dXJlcyBhIHJlcG9ydCBvZmZlcnMgb24gdGhpcyBzY3JlZW46IHRoZSBvbmVzIGl0cyBzZXJ2ZXIgc2VydmVzXG4vLyAoUmVwb3J0LnZpZXdlckZlYXR1cmVzKSB0aGF0IHRoaXMgdmlld2VyIGFsc28gaW1wbGVtZW50cy5cbmV4cG9ydCBmdW5jdGlvbiBvZmZlcmVkVmlld2VyRmVhdHVyZXMoc2VydmVkOiByZWFkb25seSBSZXBvcnRWaWV3ZXJGZWF0dXJlW10gfCBudWxsIHwgdW5kZWZpbmVkKTogUmVwb3J0Vmlld2VyRmVhdHVyZVtdIHtcbiAgcmV0dXJuIChzZXJ2ZWQgPz8gW10pLmZpbHRlcigoZmVhdHVyZSkgPT4gVklFV0VSX0ZFQVRVUkVTLmluY2x1ZGVzKGZlYXR1cmUpKTtcbn1cblxuLy8gV2hldGhlciBhIHNlbGVjdCBncm91cCBvZmZlcnMgJ0V4Y2x1ZGUgdGhlc2UnOiB0aGUgb25lIHJ1bGUgdGhlIHJlcG9ydCBiYXIsXG4vLyB0aGUgdGlsZSBoZWFkZXJzIGFuZCB0aGUgcmVwb3J0IHNldHRpbmdzJyBkZWZhdWx0IHJvdyBzaGFyZS4gVGhlIHNlcnZlclxuLy8gbXVzdCBzZXJ2ZSBleGNsdWRlVmFsdWVzLCBhbmQgbm8gZW5hYmxlZCBtZW1iZXIgbWF5IGJpbmQgc2V2ZXJhbCBjb2x1bW5zXG4vLyAobXVsdGlDb2x1bW4pLCBzaW5jZSB0aGUgc2VydmVyIGNhbm5vdCBsZWF2ZSB2YWx1ZXMgb3V0IHRoZXJlIChhbiBvbGRlclxuLy8gc2VydmVyIHNlbmRzIG5vIG11bHRpQ29sdW1uLCBhbmQgdGhlIHRvZ2dsZSBzaG93cyBhcyBiZWZvcmUpLlxuZXhwb3J0IGZ1bmN0aW9uIG9mZmVyc0V4Y2x1ZGUoXG4gIGdyb3VwOiBQaWNrPFJlcG9ydEZpbHRlckdyb3VwLCAndHlwZScgfCAnbXVsdGlDb2x1bW4nPixcbiAgZmVhdHVyZXM6IHJlYWRvbmx5IFJlcG9ydFZpZXdlckZlYXR1cmVbXSB8IG51bGwgfCB1bmRlZmluZWQsXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIGdyb3VwLnR5cGUgPT09ICdzZWxlY3QnXG4gICAgJiYgIWdyb3VwLm11bHRpQ29sdW1uXG4gICAgJiYgKGZlYXR1cmVzID8/IFtdKS5pbmNsdWRlcygnZXhjbHVkZVZhbHVlcycpO1xufVxuIl19
|