@quillsql/react 2.13.35 → 2.13.37

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 (196) hide show
  1. package/dist/cjs/Chart.d.ts +0 -1
  2. package/dist/cjs/Chart.d.ts.map +1 -1
  3. package/dist/cjs/Chart.js +17 -14
  4. package/dist/cjs/ChartBuilder.d.ts +1 -0
  5. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  6. package/dist/cjs/ChartBuilder.js +178 -96
  7. package/dist/cjs/Context.d.ts.map +1 -1
  8. package/dist/cjs/Context.js +6 -8
  9. package/dist/cjs/Dashboard.d.ts +2 -1
  10. package/dist/cjs/Dashboard.d.ts.map +1 -1
  11. package/dist/cjs/Dashboard.js +18 -8
  12. package/dist/cjs/ReportBuilder.d.ts +2 -0
  13. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  14. package/dist/cjs/ReportBuilder.js +398 -271
  15. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  16. package/dist/cjs/SQLEditor.js +33 -11
  17. package/dist/cjs/Table.d.ts.map +1 -1
  18. package/dist/cjs/Table.js +17 -1
  19. package/dist/cjs/components/Chart/InternalChart.d.ts +0 -1
  20. package/dist/cjs/components/Chart/InternalChart.d.ts.map +1 -1
  21. package/dist/cjs/components/Chart/InternalChart.js +6 -7
  22. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  23. package/dist/cjs/components/Dashboard/DataLoader.js +75 -30
  24. package/dist/cjs/components/Dashboard/MetricComponent.d.ts +1 -1
  25. package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
  26. package/dist/cjs/components/Dashboard/MetricComponent.js +98 -106
  27. package/dist/cjs/components/QuillMultiSelectSectionList.d.ts.map +1 -1
  28. package/dist/cjs/components/QuillMultiSelectSectionList.js +21 -16
  29. package/dist/cjs/components/QuillMultiSelectWithCombo.js +18 -8
  30. package/dist/cjs/components/QuillSelectWithCombo.js +17 -7
  31. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts +1 -1
  32. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  33. package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +2 -2
  34. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +16 -4
  35. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  36. package/dist/cjs/components/ReportBuilder/AddSortPopover.js +9 -18
  37. package/dist/cjs/components/UiComponents.d.ts +2 -1
  38. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  39. package/dist/cjs/components/UiComponents.js +44 -28
  40. package/dist/cjs/hooks/useAskQuill.d.ts.map +1 -1
  41. package/dist/cjs/hooks/useAskQuill.js +28 -4
  42. package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
  43. package/dist/cjs/hooks/useQuill.js +9 -1
  44. package/dist/cjs/hooks/useVirtualTables.d.ts.map +1 -1
  45. package/dist/cjs/hooks/useVirtualTables.js +11 -35
  46. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
  47. package/dist/cjs/internals/ReportBuilder/PivotForm.js +14 -2
  48. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +12 -11
  49. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  50. package/dist/cjs/internals/ReportBuilder/PivotModal.js +63 -18
  51. package/dist/cjs/models/Client.d.ts +4 -5
  52. package/dist/cjs/models/Client.d.ts.map +1 -1
  53. package/dist/cjs/models/Pivot.d.ts +10 -0
  54. package/dist/cjs/models/Pivot.d.ts.map +1 -1
  55. package/dist/cjs/models/Report.d.ts +13 -1
  56. package/dist/cjs/models/Report.d.ts.map +1 -1
  57. package/dist/cjs/utils/astFilterProcessing.d.ts +1 -1
  58. package/dist/cjs/utils/astFilterProcessing.d.ts.map +1 -1
  59. package/dist/cjs/utils/astFilterProcessing.js +799 -64
  60. package/dist/cjs/utils/astProcessing.d.ts +4 -1
  61. package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
  62. package/dist/cjs/utils/astProcessing.js +2 -2
  63. package/dist/cjs/utils/client.d.ts.map +1 -1
  64. package/dist/cjs/utils/client.js +6 -3
  65. package/dist/cjs/utils/columnProcessing.d.ts +1 -0
  66. package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
  67. package/dist/cjs/utils/columnProcessing.js +1 -0
  68. package/dist/cjs/utils/dashboard.d.ts +2 -1
  69. package/dist/cjs/utils/dashboard.d.ts.map +1 -1
  70. package/dist/cjs/utils/dashboard.js +38 -10
  71. package/dist/cjs/utils/filterProcessing.d.ts +1 -1
  72. package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
  73. package/dist/cjs/utils/merge.d.ts +16 -0
  74. package/dist/cjs/utils/merge.d.ts.map +1 -1
  75. package/dist/cjs/utils/merge.js +210 -0
  76. package/dist/cjs/utils/paginationProcessing.d.ts +1 -1
  77. package/dist/cjs/utils/paginationProcessing.d.ts.map +1 -1
  78. package/dist/cjs/utils/paginationProcessing.js +3 -2
  79. package/dist/cjs/utils/pivotConstructor.d.ts +19 -9
  80. package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
  81. package/dist/cjs/utils/pivotConstructor.js +90 -34
  82. package/dist/cjs/utils/queryConstructor.d.ts +8 -1
  83. package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
  84. package/dist/cjs/utils/queryConstructor.js +276 -310
  85. package/dist/cjs/utils/report.d.ts +25 -12
  86. package/dist/cjs/utils/report.d.ts.map +1 -1
  87. package/dist/cjs/utils/report.js +13 -7
  88. package/dist/cjs/utils/schema.d.ts +1 -1
  89. package/dist/cjs/utils/schema.d.ts.map +1 -1
  90. package/dist/cjs/utils/schema.js +3 -32
  91. package/dist/cjs/utils/tableProcessing.d.ts +43 -13
  92. package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
  93. package/dist/cjs/utils/tableProcessing.js +140 -75
  94. package/dist/cjs/utils/textProcessing.d.ts.map +1 -1
  95. package/dist/cjs/utils/textProcessing.js +10 -1
  96. package/dist/cjs/utils/valueFormatter.d.ts +2 -1
  97. package/dist/cjs/utils/valueFormatter.d.ts.map +1 -1
  98. package/dist/cjs/utils/valueFormatter.js +18 -14
  99. package/dist/esm/Chart.d.ts +0 -1
  100. package/dist/esm/Chart.d.ts.map +1 -1
  101. package/dist/esm/Chart.js +0 -6
  102. package/dist/esm/ChartBuilder.d.ts +1 -0
  103. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  104. package/dist/esm/ChartBuilder.js +179 -97
  105. package/dist/esm/Context.d.ts.map +1 -1
  106. package/dist/esm/Context.js +7 -9
  107. package/dist/esm/Dashboard.d.ts +2 -1
  108. package/dist/esm/Dashboard.d.ts.map +1 -1
  109. package/dist/esm/Dashboard.js +1 -1
  110. package/dist/esm/ReportBuilder.d.ts +2 -0
  111. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  112. package/dist/esm/ReportBuilder.js +399 -272
  113. package/dist/esm/SQLEditor.d.ts.map +1 -1
  114. package/dist/esm/SQLEditor.js +33 -11
  115. package/dist/esm/Table.d.ts.map +1 -1
  116. package/dist/esm/Table.js +17 -1
  117. package/dist/esm/components/Chart/InternalChart.d.ts +0 -1
  118. package/dist/esm/components/Chart/InternalChart.d.ts.map +1 -1
  119. package/dist/esm/components/Chart/InternalChart.js +6 -6
  120. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  121. package/dist/esm/components/Dashboard/DataLoader.js +75 -30
  122. package/dist/esm/components/Dashboard/MetricComponent.d.ts +1 -1
  123. package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
  124. package/dist/esm/components/Dashboard/MetricComponent.js +98 -106
  125. package/dist/esm/components/QuillMultiSelectSectionList.d.ts.map +1 -1
  126. package/dist/esm/components/QuillMultiSelectSectionList.js +5 -12
  127. package/dist/esm/components/QuillMultiSelectWithCombo.js +1 -1
  128. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +1 -1
  129. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  130. package/dist/esm/components/ReportBuilder/AddLimitPopover.js +2 -2
  131. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +16 -4
  132. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  133. package/dist/esm/components/ReportBuilder/AddSortPopover.js +9 -18
  134. package/dist/esm/components/UiComponents.d.ts +2 -1
  135. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  136. package/dist/esm/components/UiComponents.js +27 -21
  137. package/dist/esm/hooks/useAskQuill.d.ts.map +1 -1
  138. package/dist/esm/hooks/useAskQuill.js +28 -4
  139. package/dist/esm/hooks/useQuill.d.ts.map +1 -1
  140. package/dist/esm/hooks/useQuill.js +10 -2
  141. package/dist/esm/hooks/useVirtualTables.d.ts.map +1 -1
  142. package/dist/esm/hooks/useVirtualTables.js +12 -36
  143. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
  144. package/dist/esm/internals/ReportBuilder/PivotForm.js +14 -2
  145. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +12 -11
  146. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  147. package/dist/esm/internals/ReportBuilder/PivotModal.js +63 -18
  148. package/dist/esm/models/Client.d.ts +4 -5
  149. package/dist/esm/models/Client.d.ts.map +1 -1
  150. package/dist/esm/models/Pivot.d.ts +10 -0
  151. package/dist/esm/models/Pivot.d.ts.map +1 -1
  152. package/dist/esm/models/Report.d.ts +13 -1
  153. package/dist/esm/models/Report.d.ts.map +1 -1
  154. package/dist/esm/utils/astFilterProcessing.d.ts +1 -1
  155. package/dist/esm/utils/astFilterProcessing.d.ts.map +1 -1
  156. package/dist/esm/utils/astFilterProcessing.js +799 -64
  157. package/dist/esm/utils/astProcessing.d.ts +4 -1
  158. package/dist/esm/utils/astProcessing.d.ts.map +1 -1
  159. package/dist/esm/utils/astProcessing.js +2 -2
  160. package/dist/esm/utils/client.d.ts.map +1 -1
  161. package/dist/esm/utils/client.js +6 -3
  162. package/dist/esm/utils/columnProcessing.d.ts +1 -0
  163. package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
  164. package/dist/esm/utils/columnProcessing.js +1 -1
  165. package/dist/esm/utils/dashboard.d.ts +2 -1
  166. package/dist/esm/utils/dashboard.d.ts.map +1 -1
  167. package/dist/esm/utils/dashboard.js +39 -11
  168. package/dist/esm/utils/filterProcessing.d.ts +1 -1
  169. package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
  170. package/dist/esm/utils/merge.d.ts +16 -0
  171. package/dist/esm/utils/merge.d.ts.map +1 -1
  172. package/dist/esm/utils/merge.js +207 -0
  173. package/dist/esm/utils/paginationProcessing.d.ts +1 -1
  174. package/dist/esm/utils/paginationProcessing.d.ts.map +1 -1
  175. package/dist/esm/utils/paginationProcessing.js +3 -2
  176. package/dist/esm/utils/pivotConstructor.d.ts +19 -9
  177. package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
  178. package/dist/esm/utils/pivotConstructor.js +91 -35
  179. package/dist/esm/utils/queryConstructor.d.ts +8 -1
  180. package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
  181. package/dist/esm/utils/queryConstructor.js +274 -314
  182. package/dist/esm/utils/report.d.ts +25 -12
  183. package/dist/esm/utils/report.d.ts.map +1 -1
  184. package/dist/esm/utils/report.js +13 -7
  185. package/dist/esm/utils/schema.d.ts +1 -1
  186. package/dist/esm/utils/schema.d.ts.map +1 -1
  187. package/dist/esm/utils/schema.js +1 -30
  188. package/dist/esm/utils/tableProcessing.d.ts +43 -13
  189. package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
  190. package/dist/esm/utils/tableProcessing.js +140 -75
  191. package/dist/esm/utils/textProcessing.d.ts.map +1 -1
  192. package/dist/esm/utils/textProcessing.js +10 -1
  193. package/dist/esm/utils/valueFormatter.d.ts +2 -1
  194. package/dist/esm/utils/valueFormatter.d.ts.map +1 -1
  195. package/dist/esm/utils/valueFormatter.js +18 -14
  196. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import { QuillProviderClient } from '../models/Client';
2
2
  import { ColumnInternal } from '../models/Columns';
3
3
  import { DashboardFilter, InternalFilter } from '../models/Filter';
4
- import { Pivot } from '../models/Pivot';
4
+ import { Pivot, PivotData } from '../models/Pivot';
5
5
  import { QuillReport, QuillReportInternal } from '../models/Report';
6
6
  import { DateRangesByColumn, Table, UniqueValuesByTable } from '../models/Tables';
7
7
  import { AdditionalProcessing } from './tableProcessing';
@@ -10,10 +10,7 @@ export type ReportBuilderInfo = {
10
10
  columns: ColumnInternal[];
11
11
  rowCount: number;
12
12
  pivot: Pivot | null;
13
- pivotData: {
14
- rows: any[];
15
- columns: ColumnInternal[];
16
- } | null;
13
+ pivotData: PivotData | null;
17
14
  formattedRows: any[];
18
15
  report: QuillReportInternal;
19
16
  table: string;
@@ -57,11 +54,27 @@ export declare function saveReport({ report, dashboardItemId, client, }: {
57
54
  }): Promise<any>;
58
55
  export declare const formatRowsFromReport: (report: any, xAxisField?: string, xAxisFormat?: string) => any;
59
56
  export declare function convertInternalReportToReport(report: QuillReportInternal, dashboardFilters: DashboardFilter[], initiator?: string): QuillReport;
60
- export declare const fetchReportBuilderDataFromAST: (baseAst: any, formData: any, schema: Table[], client: QuillProviderClient, tenants?: {
61
- tenantField: string;
62
- tenantIds: (string | number)[];
63
- }[] | (string | number)[], pivot?: Pivot, previousFormData?: any, currentTable?: string, previousRelevant?: {
64
- uniqueStrings: UniqueValuesByTable;
65
- dateRanges: DateRangesByColumn;
66
- }, report?: QuillReportInternal, customFields?: any, skipUniqueValues?: boolean, skipRowCount?: boolean, processing?: AdditionalProcessing, dashboardName?: string) => Promise<ReportBuilderInfo>;
57
+ export declare const fetchReportBuilderDataFromAST: ({ baseAst, formData, schema, client, tenants, pivot, previousFormData, currentTable, previousRelevant, report, customFields, skipUniqueValues, skipRowCount, processing, dashboardName, }: {
58
+ baseAst: any;
59
+ formData: any;
60
+ schema: Table[];
61
+ client: QuillProviderClient;
62
+ tenants?: {
63
+ tenantField: string;
64
+ tenantIds: (string | number)[];
65
+ }[] | (string | number)[];
66
+ pivot?: Pivot;
67
+ previousFormData?: any;
68
+ currentTable?: string;
69
+ previousRelevant?: {
70
+ uniqueStrings: UniqueValuesByTable;
71
+ dateRanges: DateRangesByColumn;
72
+ };
73
+ report?: QuillReportInternal;
74
+ customFields?: any;
75
+ skipUniqueValues?: boolean;
76
+ skipRowCount?: boolean;
77
+ processing?: AdditionalProcessing;
78
+ dashboardName?: string;
79
+ }) => Promise<ReportBuilderInfo>;
67
80
  //# sourceMappingURL=report.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/utils/report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../../src/utils/report.ts"],"names":[],"mappings":"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"}
@@ -143,7 +143,7 @@ export async function processReportResponse({ resp, client, filters, dateBucket,
143
143
  parseValueFromBigQueryDates(dashboardItem.compareRows, resp.fields);
144
144
  }
145
145
  }
146
- const reportInfo = await cleanDashboardItem(dashboardItem, filters, client, dateBucket);
146
+ const reportInfo = await cleanDashboardItem(dashboardItem, filters, client, dateBucket, additionalProcessing);
147
147
  if (additionalProcessing) {
148
148
  reportInfo.pagination = additionalProcessing.page;
149
149
  reportInfo.sort = additionalProcessing.sort;
@@ -283,7 +283,7 @@ export function convertInternalReportToReport(report, dashboardFilters, initiato
283
283
  }
284
284
  return {
285
285
  ...col,
286
- format: report.pivot?.valueFieldType || 'whole_number',
286
+ format: report.pivot?.valueFieldType || col.format || 'whole_number',
287
287
  };
288
288
  }) ?? report.columns;
289
289
  rows = formatRowsFromReport({ rows, columns });
@@ -300,7 +300,11 @@ export function convertInternalReportToReport(report, dashboardFilters, initiato
300
300
  rows: rows,
301
301
  yAxisFields: getYAxisFields(report, dashboardFilters),
302
302
  columns: columns,
303
- rowCount: rows ? rows.length : 0,
303
+ rowCount: report.chartType === 'table'
304
+ ? (report.pivotRowCount ?? report.rowCount)
305
+ : rows
306
+ ? rows.length
307
+ : 0,
304
308
  };
305
309
  }
306
310
  let rows = report.rows;
@@ -320,7 +324,7 @@ export function convertInternalReportToReport(report, dashboardFilters, initiato
320
324
  return EMPTY_REPORT;
321
325
  }
322
326
  }
323
- export const fetchReportBuilderDataFromAST = async (baseAst, formData, schema, client, tenants, pivot, previousFormData, currentTable, previousRelevant, report, customFields, skipUniqueValues, skipRowCount, processing, dashboardName) => {
327
+ export const fetchReportBuilderDataFromAST = async ({ baseAst, formData, schema, client, tenants, pivot, previousFormData, currentTable, previousRelevant, report, customFields, skipUniqueValues, skipRowCount, processing, dashboardName, }) => {
324
328
  let newRows = [];
325
329
  let newColumns = [];
326
330
  let newRowCount = 0;
@@ -337,7 +341,7 @@ export const fetchReportBuilderDataFromAST = async (baseAst, formData, schema, c
337
341
  table = tables[0] ? tables[0] : '';
338
342
  const tableInfo = schema.find((tableInfo) => tableInfo.name === table);
339
343
  if (!table || !tableInfo) {
340
- throw new Error('No table found;');
344
+ throw new Error('No table found');
341
345
  }
342
346
  const tableData = await fetchTableByAST({ ...baseAst, where: formData }, client, tenants, processing ?? { page: DEFAULT_PAGINATION }, undefined, skipRowCount, undefined, dashboardName);
343
347
  if (tableData.error) {
@@ -405,8 +409,9 @@ export const fetchReportBuilderDataFromAST = async (baseAst, formData, schema, c
405
409
  if (rowFieldDateRange) {
406
410
  dateBucket = getDateBucketFromRange(rowFieldDateRange.dateRange);
407
411
  }
408
- if (!Object.values(relevantInfo.uniqueStrings[table] ?? {}).length || !equal(formData, previousFormData)) {
409
- relevantInfo.uniqueStrings[table] = await getUniqueStringValues(tableInfo.columns.filter((column) => column.field === pivot?.columnField), table, client, tenants, customFields, undefined, undefined, query ? query : report?.queryString ?? '');
412
+ if (!Object.values(relevantInfo.uniqueStrings[table] ?? {}).length ||
413
+ !equal(formData, previousFormData)) {
414
+ relevantInfo.uniqueStrings[table] = await getUniqueStringValues(tableInfo.columns.filter((column) => column.field === pivot?.columnField), table, client, tenants, customFields, undefined, undefined, query ? query : (report?.queryString ?? ''));
410
415
  }
411
416
  newPivotData = await generatePivotTable({
412
417
  pivot,
@@ -416,6 +421,7 @@ export const fetchReportBuilderDataFromAST = async (baseAst, formData, schema, c
416
421
  uniqueValues: relevantInfo.uniqueStrings[table],
417
422
  dashboardName,
418
423
  tenants,
424
+ additionalProcessing: processing,
419
425
  });
420
426
  newPivot = pivot;
421
427
  }
@@ -1,7 +1,7 @@
1
1
  import { QuillProviderClient } from '../models/Client';
2
2
  import { Table } from '../models/Tables';
3
3
  export declare const getCustomFieldInfo: (client: QuillProviderClient, caller?: string) => Promise<any[]>;
4
- export declare const getSchemaInfoWithCustomFields: (client: QuillProviderClient, caller?: string, tableIds?: string[]) => Promise<{
4
+ export declare const getSchemaInfo: (client: QuillProviderClient, caller?: string, tableIds?: string[]) => Promise<{
5
5
  schemaData: Table[];
6
6
  customFieldsByTable: any;
7
7
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/utils/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAyDzC,eAAO,MAAM,kBAAkB,WACrB,mBAAmB,oCAmF5B,CAAC;AAEF,eAAO,MAAM,6BAA6B,WAChC,mBAAmB,8BAEhB,MAAM,EAAE,KAClB,OAAO,CAAC;IAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAAC,mBAAmB,EAAE,GAAG,CAAA;CAAE,CAqD3D,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/utils/schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AA0BzC,eAAO,MAAM,kBAAkB,WACrB,mBAAmB,oCAmF5B,CAAC;AAEF,eAAO,MAAM,aAAa,WAChB,mBAAmB,8BAEhB,MAAM,EAAE,KAClB,OAAO,CAAC;IAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAAC,mBAAmB,EAAE,GAAG,CAAA;CAAE,CAqD3D,CAAC"}
@@ -1,33 +1,4 @@
1
1
  import { convertColumnInfoToColumnInternal } from './columnProcessing';
2
- // const triggerSoftUpdate = async (
3
- // client: QuillProviderClient,
4
- // tables: Table[],
5
- // ) => {
6
- // const { queryEndpoint, queryHeaders, publicKey, withCredentials } = client;
7
- // tables.forEach(async (table: Table) => {
8
- // // if (table.isSelectStar) {
9
- // fetch(`${queryEndpoint}?update-view`, {
10
- // method: 'POST',
11
- // headers: {
12
- // ...queryHeaders,
13
- // 'Content-Type': 'application/json',
14
- // },
15
- // credentials: withCredentials ? 'include' : 'omit',
16
- // body: JSON.stringify({
17
- // metadata: {
18
- // preQueries: [table.viewQuery.replace(/;/, '')],
19
- // clientId: publicKey,
20
- // publicKey: publicKey,
21
- // task: 'update-view',
22
- // name: table.name,
23
- // id: table._id,
24
- // runQueryConfig: { getColumns: true },
25
- // },
26
- // }),
27
- // });
28
- // // }
29
- // });
30
- // };
31
2
  const parseResponse = (results) => {
32
3
  if (results.data?.data) {
33
4
  if (results.data.data.queries &&
@@ -113,7 +84,7 @@ export const getCustomFieldInfo = async (client, caller = 'se') => {
113
84
  }
114
85
  return customFieldsByTableUnique;
115
86
  };
116
- export const getSchemaInfoWithCustomFields = async (client, caller = 'se', tableIds) => {
87
+ export const getSchemaInfo = async (client, caller = 'se', tableIds) => {
117
88
  const { queryEndpoint, queryHeaders, publicKey, withCredentials, } = client;
118
89
  // TODO: Make custom fields work
119
90
  // let customFieldsByTableUnique: any[] = [];
@@ -3,6 +3,7 @@ import { QuillProviderClient } from '../models/Client';
3
3
  import { Column, ColumnInternal } from '../models/Columns';
4
4
  import { DashboardFilter } from '../models/Filter';
5
5
  import { Pagination } from '../models/Pagination';
6
+ import { Pivot } from '../models/Pivot';
6
7
  import { DateRangesByColumn } from '../models/Tables';
7
8
  export interface AdditionalProcessing {
8
9
  sort?: {
@@ -64,28 +65,57 @@ export declare const getPaginatedRows: (client: QuillProviderClient, tenants: {
64
65
  rowCount?: number;
65
66
  error?: string;
66
67
  }>;
67
- export declare const fetchResultsByQuery: (query: string, client: QuillProviderClient, tenants: {
68
- tenantField: string;
69
- tenantIds: (string | number)[];
70
- }[] | (string | number)[] | undefined, processing?: AdditionalProcessing, customFields?: any, filters?: DashboardFilter[], dateField?: {
71
- field: string;
72
- table: string;
73
- } | null, rowsOnly?: boolean, rowCountOnly?: boolean, filterMap?: {
74
- [key: string]: {
68
+ export declare const fetchResultsByQuery: ({ query, client, tenants, processing, customFields, filters, dateField, rowsOnly, rowCountOnly, filterMap, dashboardName, pivot, getPivotRowCount, comparisonQuery, }: {
69
+ query: string;
70
+ client: QuillProviderClient;
71
+ tenants: {
72
+ tenantField: string;
73
+ tenantIds: (string | number)[];
74
+ }[] | (string | number)[] | undefined;
75
+ processing?: AdditionalProcessing;
76
+ customFields?: any;
77
+ filters?: DashboardFilter[];
78
+ dateField?: {
75
79
  field: string;
76
80
  table: string;
81
+ } | null;
82
+ rowsOnly?: boolean;
83
+ rowCountOnly?: boolean;
84
+ filterMap?: {
85
+ [key: string]: {
86
+ field: string;
87
+ table: string;
88
+ };
77
89
  };
78
- }, dashboardName?: string) => Promise<{
90
+ dashboardName?: string;
91
+ pivot?: Pivot | null;
92
+ getPivotRowCount?: boolean;
93
+ comparisonQuery?: string;
94
+ }) => Promise<{
79
95
  columns: ColumnInternal[];
80
96
  rows: any[];
81
97
  rowCount?: number;
82
98
  error?: string;
83
99
  itemQuery?: string[];
84
100
  }>;
85
- export declare const fetchResultsByReport: (reportId: string, client: QuillProviderClient, tenants: {
86
- tenantField: string;
87
- tenantIds: (string | number)[];
88
- }[] | (string | number)[] | undefined, processing?: AdditionalProcessing, filters?: any, customFields?: any, rowsOnly?: boolean, rowCountOnly?: boolean, abortSignal?: AbortSignal) => Promise<{
101
+ export declare const fetchResultsByReport: ({ reportId, client, tenants, processing, filters, customFields, rowsOnly, rowCountOnly, abortSignal, pivot, pivotQuery, comparisonPivotQuery, getPivotRowCount, }: {
102
+ reportId: string;
103
+ client: QuillProviderClient;
104
+ tenants: {
105
+ tenantField: string;
106
+ tenantIds: (string | number)[];
107
+ }[] | (string | number)[] | undefined;
108
+ processing?: AdditionalProcessing;
109
+ filters?: any;
110
+ customFields?: any;
111
+ rowsOnly?: boolean;
112
+ rowCountOnly?: boolean;
113
+ abortSignal?: AbortSignal;
114
+ pivot?: Pivot | null;
115
+ pivotQuery?: string;
116
+ comparisonPivotQuery?: string;
117
+ getPivotRowCount?: boolean;
118
+ }) => Promise<{
89
119
  columns: Column[];
90
120
  rows: any[];
91
121
  rowCount?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"tableProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/tableProcessing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tableProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/tableProcessing.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import { parseValueFromBigQueryDates } from './dataProcessing';
6
6
  import { parseQueryDateRangeByDatabaseType } from './dates';
7
7
  import { processFilterErrorList } from './errorProcessing';
8
8
  import { DEFAULT_PAGINATION } from './paginationProcessing';
9
+ import { generatePivotWithSQL } from './pivotConstructor';
9
10
  import { generateCountQuery, generateDistinctQuery, generateMinMaxDateRangeQueries, processColumnReference, } from './queryConstructor';
10
11
  export const hasColumnAlias = (columns, referencedColumns) => {
11
12
  if (!referencedColumns) {
@@ -58,6 +59,9 @@ export const getUniqueValuesByColumns = async (columns, query, rows, client, ten
58
59
  }
59
60
  }
60
61
  else {
62
+ if (stringNames.length === 0) {
63
+ return {};
64
+ }
61
65
  const distinctValueQuery = generateDistinctQuery(stringNames, query, client.databaseType);
62
66
  const distinctStrings = await fetchDistinctStrings(distinctValueQuery, client, tenants, customFields, filters, dashboardName);
63
67
  if (!distinctStrings) {
@@ -74,7 +78,7 @@ export const getUniqueStringValues = async (columns, tableName, client, tenants,
74
78
  return isStringType(column.fieldType);
75
79
  });
76
80
  const stringNames = convertedStringColumns.map((column) => processColumnReference(column.field, client.databaseType));
77
- const { filteredColumns: smallStringColumns, exceededColumns } = query || stringNames.length > 0
81
+ const { filteredColumns: smallStringColumns, exceededColumns } = stringNames.length > 0
78
82
  ? await getCountsByColumns(convertedStringColumns, query || `Select ${stringNames.join(', ')} from ${tableName}`, client, tenants, customFields ?? [], dashboardName)
79
83
  : { filteredColumns: [], exceededColumns: undefined };
80
84
  const smallStringNames = smallStringColumns.map((column) => processColumnReference(column.field, client.databaseType));
@@ -208,13 +212,24 @@ const fetchDistinctStrings = async (query, client, tenants, customFields, filter
208
212
  // This function is used in ReportBuilder and PivotModal to fetch distinct values. However, neither PivotModal or FilterModal
209
213
  // are currently built to handle null values (FilterModal uses SQL IN, which doesn't handle null values). For now, filtering
210
214
  // out null values.
211
- const values = columnInfo.string_values.reduce((result, value) => {
212
- if (value !== null && value !== undefined) {
213
- // TODO: handle null values rather than filtering out
214
- result[value] = false;
215
- }
216
- return result;
217
- }, {});
215
+ // as of 1/15, we are getting mssql distinct values as a delimited string due to node-sql-parser limitations
216
+ const values = typeof columnInfo.string_values === 'string'
217
+ ? columnInfo.string_values
218
+ .split(',')
219
+ .reduce((result, value) => {
220
+ if (value !== null && value !== undefined) {
221
+ // TODO: handle null values rather than filtering out
222
+ result[value] = false;
223
+ }
224
+ return result;
225
+ }, {})
226
+ : columnInfo.string_values.reduce((result, value) => {
227
+ if (value !== null && value !== undefined) {
228
+ // TODO: handle null values rather than filtering out
229
+ result[value] = false;
230
+ }
231
+ return result;
232
+ }, {});
218
233
  return { column, values };
219
234
  });
220
235
  return results;
@@ -264,102 +279,152 @@ const fetchQueryDateRanges = async (query, client, tenants, customFields, dashbo
264
279
  };
265
280
  export const getPaginatedRows = async (client, tenants, query, reportId, processing, filters, customFields, dashboardName) => {
266
281
  if (query) {
267
- return await fetchResultsByQuery(query, client, tenants, processing, customFields, filters, undefined, undefined, undefined, undefined, dashboardName);
282
+ return await fetchResultsByQuery({
283
+ query,
284
+ client,
285
+ tenants,
286
+ processing,
287
+ customFields,
288
+ filters,
289
+ dashboardName,
290
+ });
268
291
  }
269
292
  else if (reportId) {
270
- return await fetchResultsByReport(reportId, client, tenants, processing, filters, customFields);
293
+ return await fetchResultsByReport({
294
+ reportId,
295
+ client,
296
+ tenants,
297
+ processing,
298
+ filters,
299
+ customFields,
300
+ });
271
301
  }
272
302
  return { rows: [], columns: [] };
273
303
  };
274
304
  // TODO: Move these to call through the sdk
275
- export const fetchResultsByQuery = async (query, client, tenants, processing, customFields, filters, dateField, rowsOnly, rowCountOnly, filterMap, dashboardName) => {
305
+ export const fetchResultsByQuery = async ({ query, client, tenants, processing, customFields, filters, dateField, rowsOnly, rowCountOnly, filterMap, dashboardName, pivot, getPivotRowCount = true, comparisonQuery, }) => {
276
306
  let rows = [];
277
307
  let columns = [];
278
308
  let error = undefined;
279
309
  let rowCount = undefined;
280
310
  let itemQuery = undefined;
281
311
  try {
282
- const hostedBody = {
283
- metadata: {
284
- query,
285
- task: 'query',
286
- filterMap,
287
- clientId: client.publicKey,
288
- databaseType: client?.databaseType,
289
- getCustomFields: !!tenants?.length,
290
- customFieldsByTable: customFields,
312
+ if (pivot) {
313
+ const pivotData = await generatePivotWithSQL({
314
+ pivot,
315
+ client,
316
+ pivotQuery: query,
317
+ comparisonPivotQuery: comparisonQuery,
291
318
  additionalProcessing: processing,
292
- useUpdatedDataGathering: processing ? true : false,
293
- useNewNodeSql: true,
294
- filters: filters?.map((filter) => ({ ...filter, options: undefined })),
295
- dateField: dateField ?? undefined,
296
- rowsOnly,
297
- rowCountOnly,
298
- dashboardName: dashboardName && tenants ? dashboardName : undefined,
299
- tenants: dashboardName && tenants ? tenants : undefined,
300
- },
301
- };
302
- const cloudBody = { query };
303
- let parsedSuccessfully = true;
304
- let parsingError = '';
305
- if (!rowCountOnly) {
306
- const localURL = `${QUILL_SERVER}/astify`;
307
- const response = await fetch(localURL, {
308
- method: 'POST',
309
- headers: {
310
- 'Content-Type': 'application/json',
311
- },
312
- body: JSON.stringify({
313
- query,
314
- publicKey: client.publicKey,
315
- useNewNodeSql: true,
316
- }),
319
+ getPivotRowCount,
317
320
  });
318
- const results = await response.json();
319
- if (results.success == false) {
320
- parsedSuccessfully = false;
321
- parsingError = results.message;
322
- }
323
- }
324
- const resp = await getData(client, 'dashquery', 'same-origin', hostedBody, cloudBody);
325
- if (resp && resp.errorMessage) {
326
- throw new Error(resp.errorMessage);
327
- }
328
- if (resp.rowCount !== undefined) {
329
- rowCount = resp.rowCount;
321
+ rows = pivotData.rows;
322
+ columns = pivotData.columns;
323
+ rowCount = pivotData.rowCount;
324
+ itemQuery = pivotData.comparisonPivotQuery
325
+ ? [pivotData.pivotQuery, pivotData.comparisonPivotQuery]
326
+ : [pivotData.pivotQuery];
330
327
  }
331
- if (!resp.error && !parsedSuccessfully) {
332
- fetch(`${QUILL_SERVER}${QUILL_QUERY_ENDPOINT}`, {
333
- method: 'POST',
334
- headers: {
335
- 'Content-Type': 'application/json',
328
+ else {
329
+ const hostedBody = {
330
+ metadata: {
331
+ query,
332
+ task: 'query',
333
+ filterMap,
334
+ clientId: client.publicKey,
335
+ databaseType: client?.databaseType,
336
+ getCustomFields: !!tenants?.length,
337
+ customFieldsByTable: customFields,
338
+ additionalProcessing: processing,
339
+ useUpdatedDataGathering: processing ? true : false,
340
+ useNewNodeSql: true,
341
+ filters: filters?.map((filter) => ({
342
+ ...filter,
343
+ options: undefined,
344
+ })),
345
+ dateField: dateField ?? undefined,
346
+ rowsOnly,
347
+ rowCountOnly,
348
+ dashboardName: dashboardName && tenants ? dashboardName : undefined,
349
+ tenants: dashboardName && tenants ? tenants : undefined,
336
350
  },
337
- body: JSON.stringify({
338
- metadata: {
339
- task: 'log-broken-query',
351
+ };
352
+ const cloudBody = { query };
353
+ let parsedSuccessfully = true;
354
+ let parsingError = '';
355
+ if (!rowCountOnly) {
356
+ const localURL = `${QUILL_SERVER}/astify`;
357
+ const response = await fetch(localURL, {
358
+ method: 'POST',
359
+ headers: {
360
+ 'Content-Type': 'application/json',
361
+ },
362
+ body: JSON.stringify({
340
363
  query,
341
- clientId: client.clientId,
342
- error: parsingError,
364
+ publicKey: client.publicKey,
365
+ useNewNodeSql: true,
366
+ }),
367
+ });
368
+ const results = await response.json();
369
+ if (results.success == false) {
370
+ parsedSuccessfully = false;
371
+ parsingError = results.message;
372
+ }
373
+ }
374
+ const resp = await getData(client, 'dashquery', 'same-origin', hostedBody, cloudBody);
375
+ if (resp && resp.errorMessage) {
376
+ throw new Error(resp.errorMessage);
377
+ }
378
+ if (resp.rowCount !== undefined) {
379
+ rowCount = resp.rowCount;
380
+ }
381
+ if (!resp.error && !parsedSuccessfully) {
382
+ fetch(`${QUILL_SERVER}${QUILL_QUERY_ENDPOINT}`, {
383
+ method: 'POST',
384
+ headers: {
385
+ 'Content-Type': 'application/json',
343
386
  },
344
- }),
345
- });
346
- throw new Error('Quill parsing error' + parsingError.replace(`Error parsing query`, ''));
387
+ body: JSON.stringify({
388
+ metadata: {
389
+ task: 'log-broken-query',
390
+ query,
391
+ clientId: client.clientId,
392
+ error: parsingError,
393
+ },
394
+ }),
395
+ });
396
+ throw new Error('Quill parsing error' +
397
+ parsingError.replace(`Error parsing query`, ''));
398
+ }
399
+ columns = resp.fields.map((elem) => convertPostgresColumn(elem));
400
+ rows = resp.rows;
401
+ itemQuery = resp.itemQuery;
347
402
  }
348
- columns = resp.fields.map((elem) => convertPostgresColumn(elem));
349
- rows = resp.rows;
350
- itemQuery = resp.itemQuery;
351
403
  }
352
404
  catch (e) {
353
405
  rows = [];
354
406
  columns = [];
355
- error = e.message;
407
+ error = e.message || e;
356
408
  }
357
409
  if (client.databaseType && client.databaseType.toLowerCase() === 'bigquery') {
358
410
  parseValueFromBigQueryDates(rows, columns);
359
411
  }
360
412
  return { rows, columns, rowCount, error, itemQuery };
361
413
  };
362
- export const fetchResultsByReport = async (reportId, client, tenants, processing, filters, customFields, rowsOnly, rowCountOnly, abortSignal) => {
414
+ export const fetchResultsByReport = async ({ reportId, client, tenants, processing, filters, customFields, rowsOnly, rowCountOnly, abortSignal, pivot, pivotQuery, comparisonPivotQuery, getPivotRowCount = true, }) => {
415
+ if (pivot && pivotQuery) {
416
+ return fetchResultsByQuery({
417
+ query: pivotQuery,
418
+ comparisonQuery: comparisonPivotQuery,
419
+ client,
420
+ tenants,
421
+ processing,
422
+ customFields,
423
+ filters,
424
+ pivot,
425
+ getPivotRowCount,
426
+ });
427
+ }
363
428
  const updatedProcessing = { ...processing };
364
429
  let rows = [];
365
430
  let columns = [];
@@ -1 +1 @@
1
- {"version":3,"file":"textProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/textProcessing.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQhD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAyDlE;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,UAa/C;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,UAiBvD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,UAK7C"}
1
+ {"version":3,"file":"textProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/textProcessing.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQhD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAmElE;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,UAa/C;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,UAkBvD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,UAK7C"}
@@ -23,6 +23,8 @@ export function matchCasing(text, template) {
23
23
  const isAllUpperCase = (str) => /^[A-Z]+$/.test(str);
24
24
  // Detect capitalized (first letter uppercase, rest lowercase)
25
25
  const isCapitalized = (str) => /^[A-Z][a-z]*$/.test(str);
26
+ // Detect SCREAMING_SNAKE_CASE (Snowflake)
27
+ const isScreamingSnakeCase = (str) => /^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$/.test(str);
26
28
  // Function to convert to TitleCase
27
29
  const toTitleCase = (str) => str.toLowerCase().replace(/\b\w/g, (char) => char.toUpperCase());
28
30
  // Function to convert to camelCase
@@ -35,6 +37,9 @@ export function matchCasing(text, template) {
35
37
  const toUpperCase = (str) => str.toUpperCase();
36
38
  // Function to convert to capitalized (first letter uppercase, rest lowercase)
37
39
  const toCapitalized = (str) => str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
40
+ const toScreamingSnakeCase = (str) => str.replace(/([A-Z])/g, '_$1') // Add underscore before capitals
41
+ .replace(/^_/, '') // Remove leading underscore if present
42
+ .toUpperCase(); // Convert everything to uppercase
38
43
  // Match casing of the template and apply to the text
39
44
  if (isTitleCase(template)) {
40
45
  return toTitleCase(text);
@@ -54,6 +59,9 @@ export function matchCasing(text, template) {
54
59
  else if (isCapitalized(template)) {
55
60
  return toCapitalized(text);
56
61
  }
62
+ else if (isScreamingSnakeCase(template)) {
63
+ return toScreamingSnakeCase(text);
64
+ }
57
65
  else {
58
66
  return text; // Default case if no specific pattern is detected
59
67
  }
@@ -71,7 +79,8 @@ export function snakeCaseToTitleCase(str) {
71
79
  .join(' ');
72
80
  }
73
81
  export function snakeAndCamelCaseToTitleCase(str) {
74
- if (!str) {
82
+ if (!str || typeof str !== 'string') {
83
+ console.log('str', str, typeof str);
75
84
  return str;
76
85
  }
77
86
  if (str.includes('_')) {
@@ -11,13 +11,14 @@ type Props = {
11
11
  start: Date;
12
12
  end: Date;
13
13
  };
14
+ databaseType?: string;
14
15
  };
15
16
  export declare const DATE_FORMAT_TYPES: string[];
16
17
  export declare const NUMBER_FORMAT_TYPES: string[];
17
18
  /**
18
19
  * Pretty-prints the given values to their nice-looking string form.
19
20
  */
20
- export declare const valueFormatter: ({ value, field, fields, dateRange, }: Props) => string;
21
+ export declare const valueFormatter: ({ value, field, fields, dateRange, databaseType, }: Props) => string;
21
22
  export declare const quillFormat: ({ value, format, }: {
22
23
  value: any;
23
24
  format: string;