@quillsql/react 2.12.25 → 2.12.27

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 (35) hide show
  1. package/dist/cjs/Chart.d.ts +17 -2
  2. package/dist/cjs/Chart.d.ts.map +1 -1
  3. package/dist/cjs/Chart.js +110 -80
  4. package/dist/cjs/Context.d.ts +1 -0
  5. package/dist/cjs/Context.d.ts.map +1 -1
  6. package/dist/cjs/Context.js +17 -2
  7. package/dist/cjs/Table.d.ts +15 -1
  8. package/dist/cjs/Table.d.ts.map +1 -1
  9. package/dist/cjs/Table.js +134 -60
  10. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
  11. package/dist/cjs/components/Dashboard/DashboardFilter.js +1 -1
  12. package/dist/cjs/utils/dashboard.d.ts +1 -0
  13. package/dist/cjs/utils/dashboard.d.ts.map +1 -1
  14. package/dist/cjs/utils/dashboard.js +20 -1
  15. package/dist/cjs/utils/filterProcessing.d.ts +2 -0
  16. package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
  17. package/dist/cjs/utils/filterProcessing.js +129 -1
  18. package/dist/esm/Chart.d.ts +17 -2
  19. package/dist/esm/Chart.d.ts.map +1 -1
  20. package/dist/esm/Chart.js +113 -83
  21. package/dist/esm/Context.d.ts +1 -0
  22. package/dist/esm/Context.d.ts.map +1 -1
  23. package/dist/esm/Context.js +16 -1
  24. package/dist/esm/Table.d.ts +15 -1
  25. package/dist/esm/Table.d.ts.map +1 -1
  26. package/dist/esm/Table.js +137 -63
  27. package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
  28. package/dist/esm/components/Dashboard/DashboardFilter.js +1 -1
  29. package/dist/esm/utils/dashboard.d.ts +1 -0
  30. package/dist/esm/utils/dashboard.d.ts.map +1 -1
  31. package/dist/esm/utils/dashboard.js +18 -0
  32. package/dist/esm/utils/filterProcessing.d.ts +2 -0
  33. package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
  34. package/dist/esm/utils/filterProcessing.js +126 -0
  35. package/package.json +1 -1
package/dist/cjs/Table.js CHANGED
@@ -7,12 +7,18 @@ const jsx_runtime_1 = require("react/jsx-runtime");
7
7
  const react_1 = require("react");
8
8
  const Context_1 = require("./Context");
9
9
  const dataFetcher_1 = require("./utils/dataFetcher");
10
- const merge_1 = require("./utils/merge");
11
10
  const QuillTable_1 = __importDefault(require("./components/QuillTable"));
12
- const useFormat_1 = require("./hooks/useFormat");
13
11
  const useExport_1 = require("./hooks/useExport");
14
12
  const errorProcessing_1 = require("./utils/errorProcessing");
15
- const Chart_1 = require("./Chart");
13
+ const dashboard_1 = require("./utils/dashboard");
14
+ const valueFormatter_1 = require("./utils/valueFormatter");
15
+ const filterProcessing_1 = require("./utils/filterProcessing");
16
+ const UiComponents_1 = require("./components/UiComponents");
17
+ const DashboardFilter_1 = require("./components/Dashboard/DashboardFilter");
18
+ const QuillSelect_1 = require("./components/QuillSelect");
19
+ const QuillMultiSelect_1 = require("./components/QuillMultiSelect");
20
+ const QuillDateRangePicker_1 = require("./DateRangePicker/QuillDateRangePicker");
21
+ const hooks_1 = require("./hooks");
16
22
  /**
17
23
  * ### Quill Table
18
24
  *
@@ -52,69 +58,137 @@ const Table = (props) => {
52
58
  if ('rows' in data && 'columns' in data) {
53
59
  return ((0, jsx_runtime_1.jsx)(QuillTable_1.default, { hideCSVDownloadButton: data.hideCSVDownloadButton, columns: data.columns, rows: data.rows, className: data.className, containerStyle: data.containerStyle, LoadingComponent: data.LoadingComponent, isLoading: data.isLoading, downloadCSV: data.downloadCSV }));
54
60
  }
55
- return ((0, jsx_runtime_1.jsx)(ChartUpdater, { hideCSVDownloadButton: data.hideCSVDownloadButton, dispatch: dispatch, dashboard: dashboard, reportId: data.reportId, className: data.className, containerStyle: data.containerStyle, dashboardFilters: dashboardFilters, client: client, csvFilename: data.csvFilename, LoadingComponent: data.LoadingComponent }));
61
+ return ((0, jsx_runtime_1.jsx)(ChartUpdater, { hideCSVDownloadButton: data.hideCSVDownloadButton, dispatch: dispatch, dashboardContext: dashboard, reportId: data.reportId, className: data.className, containerStyle: data.containerStyle, dashboardFilters: dashboardFilters, client: client, csvFilename: data.csvFilename, LoadingComponent: data.LoadingComponent, SelectComponent: data.SelectComponent, MultiSelectComponent: data.MultiSelectComponent, DateRangePickerComponent: data.DateRangePickerComponent, FilterContainerComponent: data.FilterContainerComponent, hideFilters: data.hideFilters }));
56
62
  };
57
- const ChartUpdater = ({ reportId, containerStyle, className, dashboard, dispatch, client, dashboardFilters, csvFilename, hideCSVDownloadButton = true, LoadingComponent, }) => {
58
- const specificDashboardFilter = (0, react_1.useMemo)(() => {
59
- return dashboardFilters
60
- .sort((filter) => (filter.filterType === 'date_range' ? -1 : 1))
61
- .filter((f) => dashboard &&
62
- dashboard[reportId] &&
63
- f &&
64
- f.dashboardName === dashboard[reportId].dashboardName);
65
- }, [dashboardFilters, dashboard]);
66
- const { rows, loading } = (0, useFormat_1.useMemoizedRows)(reportId);
63
+ const ChartUpdater = ({ reportId, containerStyle, className, dashboardContext, dispatch, client, dashboardFilters, csvFilename, hideCSVDownloadButton = true, hideFilters = true, LoadingComponent, SelectComponent = QuillSelect_1.QuillSelectComponent, MultiSelectComponent = QuillMultiSelect_1.QuillMultiSelectComponent, DateRangePickerComponent = QuillDateRangePicker_1.QuillDateRangePicker, FilterContainerComponent = UiComponents_1.QuillFilterContainerComponent, }) => {
64
+ const [loading, setLoading] = (0, react_1.useState)(false);
65
+ const [initialLoad, setInitialLoad] = (0, react_1.useState)(true);
67
66
  const { downloadCSV } = (0, useExport_1.useExport)(reportId);
68
67
  const [customFields] = (0, react_1.useContext)(Context_1.CustomFieldContext);
69
- (0, react_1.useEffect)(() => {
70
- let isSubscribed = true;
71
- async function getChartOptions() {
72
- if (!(0, Chart_1.didFiltersChange)(dashboard[reportId], specificDashboardFilter)) {
73
- return;
74
- }
75
- if (isSubscribed) {
76
- try {
77
- const hostedBody = {
78
- metadata: {
79
- dashboardItemId: reportId,
80
- orgId: client.customerId || '*',
81
- task: 'item',
82
- filters: [...Object.values(specificDashboardFilter)],
83
- clientId: client.publicKey,
84
- databaseType: client?.databaseType,
85
- customFields,
86
- },
87
- };
88
- const cloudBody = {
89
- id: reportId,
90
- filters: [...Object.values(specificDashboardFilter)],
91
- };
92
- const resp = await (0, dataFetcher_1.getData)(client, 'itempost', 'omit', hostedBody, cloudBody);
93
- (0, errorProcessing_1.processFilterErrorList)(resp);
94
- if (resp && resp.name !== 'error') {
95
- if (resp.compareRows) {
96
- (0, merge_1.mergeComparisonRange)(resp);
97
- }
98
- dispatch({
99
- type: 'UPDATE_DASHBOARD_ITEM',
100
- id: reportId,
101
- data: {
102
- ...resp,
103
- filtersApplied: specificDashboardFilter,
104
- },
105
- });
106
- }
68
+ const [rows, setRows] = (0, react_1.useState)([]);
69
+ const [columns, setColumns] = (0, react_1.useState)([]);
70
+ const [tableFilters, setTableFilters] = (0, react_1.useState)([]);
71
+ const [filterUpdateIndex, setFilterUpdateIndex] = (0, react_1.useState)(0);
72
+ const { reportFiltersDispatch, reportFilters } = (0, react_1.useContext)(Context_1.ReportFiltersContext);
73
+ const theme = (0, hooks_1.useTheme)();
74
+ const getChartData = async (reportFilterInfo) => {
75
+ try {
76
+ const filters = reportFilterInfo.filters;
77
+ setLoading(true);
78
+ const hostedBody = {
79
+ metadata: {
80
+ dashboardItemId: reportId,
81
+ orgId: client.customerId || '*',
82
+ clientId: client.publicKey,
83
+ task: 'item',
84
+ getDefaultDashboardFilters: filters ? false : true,
85
+ databaseType: client?.databaseType,
86
+ customFields,
87
+ filters,
88
+ },
89
+ };
90
+ const cloudBody = {
91
+ id: reportId,
92
+ };
93
+ const resp = await (0, dataFetcher_1.getData)(client, 'itempost', 'same-origin', hostedBody, cloudBody);
94
+ (0, errorProcessing_1.processFilterErrorList)(resp);
95
+ if (resp && resp.name !== 'error' && !resp.errorMessage) {
96
+ const cleanedReport = await (0, dashboard_1.cleanDashboardItem)(resp, filters ? filters : resp.filters);
97
+ if (cleanedReport.chartType === 'table' && cleanedReport.pivot) {
98
+ cleanedReport.columns = cleanedReport.yAxisFields;
107
99
  }
108
- catch (e) {
109
- console.log('Error fetching chart: ', e);
100
+ let filterArray = filters;
101
+ if (!filterArray) {
102
+ filterArray = resp.filters.map((filter) => {
103
+ return (0, filterProcessing_1.processFilterFromBackend)(filter, resp.rows);
104
+ });
105
+ reportFiltersDispatch({
106
+ type: 'UPDATE_REPORT_FILTER',
107
+ id: reportId,
108
+ data: {
109
+ filters: filterArray,
110
+ updateIndex: reportFilterInfo.updateIndex,
111
+ },
112
+ });
110
113
  }
114
+ setFilterUpdateIndex(reportFilterInfo.updateIndex);
115
+ setTableFilters(filterArray);
111
116
  }
117
+ setRows(resp.rows.map((row) => {
118
+ return resp.columns.reduce((formattedRow, column) => {
119
+ // Apply the format function to each field in the row
120
+ const formattedValue = (0, valueFormatter_1.quillFormat)({
121
+ value: row[column.field],
122
+ format: column.format,
123
+ });
124
+ formattedRow[column.field] = formattedValue;
125
+ return formattedRow;
126
+ }, {});
127
+ }));
128
+ setColumns(resp.columns);
129
+ setLoading(false);
130
+ }
131
+ catch (e) {
132
+ console.log('Error fetching chart: ', e);
133
+ setLoading(false);
134
+ }
135
+ };
136
+ (0, react_1.useEffect)(() => {
137
+ // IF WE HAVE THE DATA IN DASHBOARD CONTEXT AND IT IS THE INITIAL LAOD DON'T FETCH DATA
138
+ if (initialLoad && dashboardContext[reportId]) {
139
+ setInitialLoad(false);
140
+ return;
141
+ }
142
+ setInitialLoad(false);
143
+ let parsedReportFilters = reportFilters[reportId]
144
+ ? reportFilters[reportId]
145
+ : { updateIndex: 0 };
146
+ getChartData(parsedReportFilters);
147
+ }, [client.customerId, reportId, reportFilters[reportId]?.updateIndex]);
148
+ (0, react_1.useEffect)(() => {
149
+ if (!dashboardContext || !dashboardContext[reportId]) {
150
+ return;
112
151
  }
113
- getChartOptions();
114
- return () => {
115
- isSubscribed = false;
116
- };
117
- }, [specificDashboardFilter, client.customerId, reportId]);
118
- return ((0, jsx_runtime_1.jsx)(QuillTable_1.default, { hideCSVDownloadButton: hideCSVDownloadButton, columns: dashboard[reportId]?.columns || [], rows: rows || dashboard[reportId]?.rows || [], containerStyle: containerStyle, className: className, LoadingComponent: LoadingComponent, isLoading: loading, downloadCSV: downloadCSV }));
152
+ setRows(dashboardContext[reportId].rows.map((row) => {
153
+ return dashboardContext[reportId].columns.reduce((formattedRow, column) => {
154
+ // Apply the format function to each field in the row
155
+ const formattedValue = (0, valueFormatter_1.quillFormat)({
156
+ value: row[column.field],
157
+ format: column.format,
158
+ });
159
+ formattedRow[column.field] = formattedValue;
160
+ return formattedRow;
161
+ }, {});
162
+ }));
163
+ setColumns(dashboardContext[reportId].columns);
164
+ }, []);
165
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [!hideFilters && ((0, jsx_runtime_1.jsx)("div", { style: {
166
+ display: 'flex',
167
+ boxSizing: 'content-box',
168
+ flexDirection: 'row',
169
+ alignItems: 'center',
170
+ }, children: (0, jsx_runtime_1.jsx)(FilterContainerComponent, { children: tableFilters.map((filter, index) => ((0, jsx_runtime_1.jsx)(DashboardFilter_1.DashboardFilter, { filter: filter, onChangeFilter: (filter, value = null, comparison = null) => {
171
+ const updatedFilters = tableFilters.map((f) => {
172
+ if (f.field === filter.field ||
173
+ (f.filterType === 'date_range' &&
174
+ filter.filterType === 'date_range')) {
175
+ return (0, filterProcessing_1.updateFilter)(f, value, comparison);
176
+ }
177
+ return f;
178
+ });
179
+ setTableFilters(updatedFilters);
180
+ getChartData({
181
+ filters: updatedFilters,
182
+ updateIndex: filterUpdateIndex + 1,
183
+ });
184
+ reportFiltersDispatch({
185
+ type: 'UPDATE_REPORT_FILTER',
186
+ id: reportId,
187
+ data: {
188
+ filters: updatedFilters,
189
+ updateIndex: filterUpdateIndex + 1,
190
+ },
191
+ });
192
+ }, theme: theme, SelectComponent: SelectComponent, MultiSelectComponent: MultiSelectComponent, DateRangePickerComponent: DateRangePickerComponent }, index))) }) })), (0, jsx_runtime_1.jsx)(QuillTable_1.default, { hideCSVDownloadButton: hideCSVDownloadButton, columns: columns ?? [], rows: rows ?? [], containerStyle: containerStyle, className: className, LoadingComponent: LoadingComponent, isLoading: loading, downloadCSV: downloadCSV })] }));
119
193
  };
120
194
  exports.default = Table;
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardFilter.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/DashboardFilter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAIhG,KAAK,mBAAmB,GAAG,CAAC,EAC1B,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,KAAK,GACN,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IACJ,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;CACjE,KAAK,GAAG,CAAC,OAAO,CAAC;AAElB,KAAK,wBAAwB,GAAG,CAAC,EAC/B,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,KAAK,GACN,EAAE;IACD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IACJ,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;CACjE,KAAK,GAAG,CAAC,OAAO,CAAC;AAElB,KAAK,4BAA4B,GAAG,CAAC,EACnC,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,MAAM,EACN,WAAW,GACZ,EAAE,6BAA6B,KAAK,GAAG,CAAC,OAAO,CAAC;AAEjD,UAAU,oBAAoB;IAC5B,MAAM,EAAE,GAAG,CAAC;IACZ,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IACzC,eAAe,EACX,mBAAmB,GACnB,KAAK,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;IACnD,oBAAoB,EAChB,wBAAwB,GACxB,KAAK,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,CAAC;IACxD,wBAAwB,EACpB,4BAA4B,GAC5B,KAAK,CAAC,mBAAmB,CAAC,4BAA4B,CAAC,CAAC;IAC5D,KAAK,EAAE,GAAG,CAAC;CACZ;AAED,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,cAAc,EACd,eAAsC,EACtC,oBAAgD,EAChD,wBAAwB,EACxB,KAAK,GACN,EAAE,oBAAoB,kDAoItB"}
1
+ {"version":3,"file":"DashboardFilter.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/DashboardFilter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,KAAK,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAIhG,KAAK,mBAAmB,GAAG,CAAC,EAC1B,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,KAAK,GACN,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IACJ,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;CACjE,KAAK,GAAG,CAAC,OAAO,CAAC;AAElB,KAAK,wBAAwB,GAAG,CAAC,EAC/B,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,KAAK,GACN,EAAE;IACD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IACJ,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;CACjE,KAAK,GAAG,CAAC,OAAO,CAAC;AAElB,KAAK,4BAA4B,GAAG,CAAC,EACnC,SAAS,EACT,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,MAAM,EACN,WAAW,GACZ,EAAE,6BAA6B,KAAK,GAAG,CAAC,OAAO,CAAC;AAEjD,UAAU,oBAAoB;IAC5B,MAAM,EAAE,GAAG,CAAC;IACZ,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IACzC,eAAe,EACX,mBAAmB,GACnB,KAAK,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;IACnD,oBAAoB,EAChB,wBAAwB,GACxB,KAAK,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,CAAC;IACxD,wBAAwB,EACpB,4BAA4B,GAC5B,KAAK,CAAC,mBAAmB,CAAC,4BAA4B,CAAC,CAAC;IAC5D,KAAK,EAAE,GAAG,CAAC;CACZ;AAED,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,cAAc,EACd,eAAsC,EACtC,oBAAgD,EAChD,wBAAwB,EACxB,KAAK,GACN,EAAE,oBAAoB,kDAmItB"}
@@ -19,7 +19,7 @@ function DashboardFilter({ filter, onChangeFilter, SelectComponent = QuillSelect
19
19
  }
20
20
  }, [filter]);
21
21
  if (filter.filterType === 'string') {
22
- if (!filter.options) {
22
+ if (!filter.options || filter.options.length === 0) {
23
23
  return null;
24
24
  }
25
25
  if (filter.stringFilterType === 'multiselect') {
@@ -9,4 +9,5 @@ import { QuillReportInternal } from '../Dashboard';
9
9
  export declare function cleanDashboardItem(item: {
10
10
  [key: string]: any;
11
11
  } | undefined, dashboardFilters: any, client?: any, dateBucket?: string): Promise<QuillReportInternal>;
12
+ export declare function getDashboard(dashboardName: string, client: any): Promise<any>;
12
13
  //# sourceMappingURL=dashboard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/utils/dashboard.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAkC5E;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,SAAS,EACxC,gBAAgB,EAAE,GAAG,EACrB,MAAM,CAAC,EAAE,GAAG,EACZ,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,CAAC,CA+C9B"}
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/utils/dashboard.ts"],"names":[],"mappings":"AACA,OAAO,EAA2B,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAkC5E;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,SAAS,EACxC,gBAAgB,EAAE,GAAG,EACrB,MAAM,CAAC,EAAE,GAAG,EACZ,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,mBAAmB,CAAC,CA+C9B;AAwQD,wBAAsB,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAI,OAAO,CAAC,GAAG,CAAC,CA0BpF"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cleanDashboardItem = void 0;
3
+ exports.getDashboard = exports.cleanDashboardItem = void 0;
4
4
  const valueFormatter_1 = require("./valueFormatter");
5
5
  const PivotModal_1 = require("../internals/ReportBuilder/PivotModal");
6
6
  const textProcessing_1 = require("./textProcessing");
@@ -278,3 +278,22 @@ function extractPivotedYAxis(pivotTable, itemInfo, config = undefined) {
278
278
  }
279
279
  return fields;
280
280
  }
281
+ async function getDashboard(dashboardName, client) {
282
+ const searchParams = new URLSearchParams({
283
+ publicKey: client.publicKey,
284
+ orgId: client.customerId,
285
+ name: dashboardName,
286
+ }).toString();
287
+ const hostedBody = {
288
+ metadata: {
289
+ name: dashboardName,
290
+ task: 'config',
291
+ clientId: client.publicKey,
292
+ orgId: client.customerId || '*',
293
+ databaseType: client.databaseType,
294
+ },
295
+ };
296
+ const resp = await (0, dataFetcher_1.getData)(client, `dashconfig?${searchParams}`, 'omit', hostedBody, null, 'GET');
297
+ return resp;
298
+ }
299
+ exports.getDashboard = getDashboard;
@@ -1,2 +1,4 @@
1
1
  export declare function findAndProcessDateFilter(filters: any[]): any;
2
+ export declare function processFilterFromBackend(filter: any, rows: any[]): any;
3
+ export declare function updateFilter(filter: any, value?: any, comparison?: any): any;
2
4
  //# sourceMappingURL=filterProcessing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filterProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/filterProcessing.ts"],"names":[],"mappings":"AAAA,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAoB5D"}
1
+ {"version":3,"file":"filterProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/filterProcessing.ts"],"names":[],"mappings":"AAQA,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAoB5D;AAMD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,OA4BhE;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,GAAG,EACX,KAAK,GAAE,GAAU,EACjB,UAAU,GAAE,GAAU,OAuGvB"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.findAndProcessDateFilter = void 0;
3
+ exports.updateFilter = exports.processFilterFromBackend = exports.findAndProcessDateFilter = void 0;
4
+ const dateRangePickerUtils_1 = require("../DateRangePicker/dateRangePickerUtils");
4
5
  function findAndProcessDateFilter(filters) {
5
6
  let dateFilter = filters.find((filter) => filter.filterType === 'date_range');
6
7
  if (dateFilter) {
@@ -23,3 +24,130 @@ exports.findAndProcessDateFilter = findAndProcessDateFilter;
23
24
  function isValidDate(date) {
24
25
  return !isNaN(Date.parse(date));
25
26
  }
27
+ function processFilterFromBackend(filter, rows) {
28
+ if (filter.filterType === 'date_range') {
29
+ return {
30
+ ...filter,
31
+ startDate: new Date(filter.startDate),
32
+ endDate: new Date(filter.endDate),
33
+ options: dateRangePickerUtils_1.defaultOptionsV2,
34
+ comparisonRange: {
35
+ ...filter.comparisonRange,
36
+ value: filter.defaultComparisonRange,
37
+ },
38
+ };
39
+ }
40
+ if (filter.filterType === 'string') {
41
+ const options = rows.map((row) => row[filter.field]);
42
+ const distinctOptions = Array.from(new Set(options)).filter((value) => value !== undefined && value !== null);
43
+ return {
44
+ ...filter,
45
+ options: distinctOptions.map((option) => ({
46
+ label: option,
47
+ value: option,
48
+ })),
49
+ };
50
+ }
51
+ return filter;
52
+ }
53
+ exports.processFilterFromBackend = processFilterFromBackend;
54
+ function updateFilter(filter, value = null, comparison = null) {
55
+ //for dateObjects only, since values are arrays for dateObjects
56
+ const { selectedValue: _, operator, ...filterWithoutSelectedValue } = filter; // _ is a throwaway variable
57
+ if (filter.filterType === 'string') {
58
+ let selectedValue = {};
59
+ if (value) {
60
+ if (filter.stringFilterType === 'multiselect') {
61
+ const parsedValue = JSON.parse(value);
62
+ if (parsedValue.length === 0) {
63
+ selectedValue = { values: [] };
64
+ }
65
+ else {
66
+ selectedValue = { values: parsedValue, operator: 'IN' };
67
+ }
68
+ }
69
+ else {
70
+ selectedValue = { selectedValue: value };
71
+ }
72
+ }
73
+ return {
74
+ ...filterWithoutSelectedValue,
75
+ ...selectedValue,
76
+ dashboardName: name,
77
+ };
78
+ }
79
+ if (filter.filterType === 'date' || filter.filterType === 'date_range') {
80
+ let presetsOptions = dateRangePickerUtils_1.defaultOptionsV2;
81
+ if (filter.presetRanges) {
82
+ presetsOptions = filter.presetRanges.map((elem) => {
83
+ if (!elem.isStatic) {
84
+ return {
85
+ label: elem.label,
86
+ value: elem.value,
87
+ startDate: dateRangePickerUtils_1.PRIMARY_RANGE[elem.value].start,
88
+ endDate: dateRangePickerUtils_1.PRIMARY_RANGE[elem.value].end,
89
+ };
90
+ }
91
+ return {
92
+ label: elem.label,
93
+ value: elem.value,
94
+ startDate: new Date(elem.startDate),
95
+ endDate: new Date(elem.endDate),
96
+ };
97
+ });
98
+ }
99
+ if (comparison ||
100
+ (filter.comparison && filter.comparisonRange.value !== 'NO_COMPARISON')) {
101
+ let preset = '';
102
+ if (comparison) {
103
+ preset = filter.preset.label;
104
+ }
105
+ const key = comparison?.value || filter.comparisonRange.value;
106
+ let primaryRange = {
107
+ start: value ? value.startDate : filter.startDate,
108
+ end: value ? value.endDate : filter.endDate,
109
+ };
110
+ if (value && value.preset) {
111
+ preset = value.preset;
112
+ primaryRange = (0, dateRangePickerUtils_1.getRangeFromPresetOptions)(value.preset, presetsOptions);
113
+ }
114
+ return {
115
+ startDate: primaryRange.start,
116
+ endDate: primaryRange.end,
117
+ filterType: 'date_range',
118
+ label: 'Date',
119
+ field: 'date_range',
120
+ preset: { label: preset },
121
+ options: filter.options,
122
+ comparison: true,
123
+ comparisonRange: {
124
+ startDate: dateRangePickerUtils_1.COMPARISON_RANGE[key](primaryRange)?.start,
125
+ endDate: dateRangePickerUtils_1.COMPARISON_RANGE[key](primaryRange)?.end,
126
+ value: key,
127
+ },
128
+ dashboardName: name,
129
+ };
130
+ }
131
+ else {
132
+ const primaryRange = value && value.preset
133
+ ? (0, dateRangePickerUtils_1.getRangeFromPresetOptions)(value.preset, presetsOptions)
134
+ : {
135
+ start: value?.startDate || filter.startDate,
136
+ end: value?.endDate || filter.endDate,
137
+ };
138
+ const preset = value?.preset ? value.preset : '';
139
+ return {
140
+ ...filter,
141
+ preset: { label: preset },
142
+ startDate: primaryRange.start,
143
+ endDate: primaryRange.end,
144
+ filterType: 'date_range',
145
+ field: 'date_range',
146
+ options: filter.options,
147
+ label: 'Date',
148
+ dashboardName: name,
149
+ };
150
+ }
151
+ }
152
+ }
153
+ exports.updateFilter = updateFilter;
@@ -1,7 +1,9 @@
1
- /// <reference types="react" />
1
+ import { ReactNode } from 'react';
2
2
  import { QuillTheme } from './QuillProvider';
3
3
  import { type QuillReport } from './Dashboard';
4
4
  import { Filter } from './models/Filter';
5
+ import { MultiSelectComponentProps, SelectComponentProps } from './components/UiComponents';
6
+ import { DateRangePickerComponentProps } from './DateRangePicker/QuillDateRangePicker';
5
7
  interface BaseChartProps {
6
8
  colors?: string[];
7
9
  containerStyle?: React.CSSProperties;
@@ -99,6 +101,8 @@ export interface ChartProps {
99
101
  * Whether the date range filter has been disabled.
100
102
  */
101
103
  hideDateRangeFilter?: boolean;
104
+ /** Whether to hide the table filters component, deafulted to true */
105
+ hideFilters?: boolean;
102
106
  /**
103
107
  * Whether the comparison range shows as dashed for date comparison line
104
108
  * charts (as opposed to the default solid line).
@@ -143,6 +147,16 @@ export interface ChartProps {
143
147
  * A loading component to show when the chart is loading.
144
148
  */
145
149
  LoadingComponent?: () => JSX.Element;
150
+ /** A select component prop for the table filters */
151
+ SelectComponent?: (props: SelectComponentProps) => JSX.Element;
152
+ /** A multi select component prop for the table filters */
153
+ MultiSelectComponent?: (props: MultiSelectComponentProps) => JSX.Element;
154
+ /** A date range picker component prop for the table filters */
155
+ DateRangePickerComponent?: (props: DateRangePickerComponentProps) => JSX.Element;
156
+ /** A filter container component component prop for the table filters */
157
+ FilterContainerComponent?: ({ children, }: {
158
+ children: ReactNode;
159
+ }) => JSX.Element;
146
160
  /**
147
161
  * Styles the top-level container of the Chart.
148
162
  *
@@ -199,7 +213,8 @@ interface ChartDisplayProps extends WithConfig {
199
213
  onClickChartElement?: (data: any) => void;
200
214
  dateBucket?: string;
201
215
  overrideTheme?: QuillTheme;
216
+ initialDateFilter?: any;
202
217
  }
203
- export declare const ChartDisplay: ({ reportId, config, colors, className, containerStyle, hideXAxis, hideYAxis, hideCartesianGrid, hideDateRangeFilter, hideHorizontalCartesianGrid, hideVerticalCartesianGrid, hideSubsequentXAxisTicks, cartesianGridLineStyle, cartesianGridLineColor, comparisonLineStyle, isAnimationActive, loading, paginating, error, isComparison, colorMap, LoadingComponent, onPageChange, onSortChange, onClickChartElement, dateBucket, overrideTheme, }: ChartDisplayProps) => import("react/jsx-runtime").JSX.Element;
218
+ export declare const ChartDisplay: ({ reportId, config, colors, className, containerStyle, hideXAxis, hideYAxis, hideCartesianGrid, hideDateRangeFilter, hideHorizontalCartesianGrid, hideVerticalCartesianGrid, hideSubsequentXAxisTicks, cartesianGridLineStyle, cartesianGridLineColor, comparisonLineStyle, isAnimationActive, loading, paginating, error, isComparison, colorMap, LoadingComponent, onPageChange, onSortChange, onClickChartElement, dateBucket, overrideTheme, initialDateFilter, }: ChartDisplayProps) => import("react/jsx-runtime").JSX.Element;
204
219
  export default Chart;
205
220
  //# sourceMappingURL=Chart.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/Chart.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/Chart.tsx"],"names":[],"mappings":"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"}