@quillsql/react 2.13.40 → 2.13.42

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 (267) hide show
  1. package/dist/cjs/Chart.d.ts +5 -1
  2. package/dist/cjs/Chart.d.ts.map +1 -1
  3. package/dist/cjs/Chart.js +51 -28
  4. package/dist/cjs/ChartBuilder.d.ts +30 -3
  5. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  6. package/dist/cjs/ChartBuilder.js +483 -182
  7. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  8. package/dist/cjs/ChartEditor.js +11 -1
  9. package/dist/cjs/Context.d.ts +16 -4
  10. package/dist/cjs/Context.d.ts.map +1 -1
  11. package/dist/cjs/Context.js +95 -46
  12. package/dist/cjs/Dashboard.d.ts +6 -3
  13. package/dist/cjs/Dashboard.d.ts.map +1 -1
  14. package/dist/cjs/Dashboard.js +69 -28
  15. package/dist/cjs/QuillProvider.d.ts +4 -8
  16. package/dist/cjs/QuillProvider.d.ts.map +1 -1
  17. package/dist/cjs/ReportBuilder.d.ts +2 -1
  18. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  19. package/dist/cjs/ReportBuilder.js +190 -48
  20. package/dist/cjs/SQLEditor.d.ts +8 -1
  21. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  22. package/dist/cjs/SQLEditor.js +94 -10
  23. package/dist/cjs/Table.d.ts +21 -1
  24. package/dist/cjs/Table.d.ts.map +1 -1
  25. package/dist/cjs/Table.js +30 -192
  26. package/dist/cjs/components/Chart/BarChart.d.ts +5 -1
  27. package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
  28. package/dist/cjs/components/Chart/BarChart.js +4 -3
  29. package/dist/cjs/components/Chart/CustomReferenceLine.d.ts +2 -0
  30. package/dist/cjs/components/Chart/CustomReferenceLine.d.ts.map +1 -0
  31. package/dist/cjs/components/Chart/CustomReferenceLine.js +26 -0
  32. package/dist/cjs/components/Chart/GaugeChart.d.ts +11 -0
  33. package/dist/cjs/components/Chart/GaugeChart.d.ts.map +1 -0
  34. package/dist/cjs/components/Chart/GaugeChart.js +198 -0
  35. package/dist/cjs/components/Chart/InternalChart.d.ts.map +1 -1
  36. package/dist/cjs/components/Chart/InternalChart.js +14 -11
  37. package/dist/cjs/components/Chart/LineChart.d.ts +5 -1
  38. package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
  39. package/dist/cjs/components/Chart/LineChart.js +4 -3
  40. package/dist/cjs/components/Chart/MapChart.d.ts +36 -0
  41. package/dist/cjs/components/Chart/MapChart.d.ts.map +1 -0
  42. package/dist/cjs/components/Chart/MapChart.js +548 -0
  43. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  44. package/dist/cjs/components/Dashboard/DataLoader.js +114 -42
  45. package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
  46. package/dist/cjs/components/Dashboard/MetricComponent.js +57 -54
  47. package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
  48. package/dist/cjs/components/Dashboard/TableComponent.js +5 -1
  49. package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  50. package/dist/cjs/components/QuillMultiSelectWithCombo.js +5 -4
  51. package/dist/cjs/components/QuillSelectWithCombo.d.ts.map +1 -1
  52. package/dist/cjs/components/QuillSelectWithCombo.js +12 -11
  53. package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  54. package/dist/cjs/components/ReportBuilder/AddColumnModal.js +2 -1
  55. package/dist/cjs/components/ReportBuilder/FilterModal.js +13 -13
  56. package/dist/cjs/components/ReportBuilder/FilterStack.d.ts +2 -1
  57. package/dist/cjs/components/ReportBuilder/FilterStack.d.ts.map +1 -1
  58. package/dist/cjs/components/ReportBuilder/FilterStack.js +4 -4
  59. package/dist/cjs/components/ReportBuilder/convert.d.ts +2 -0
  60. package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -1
  61. package/dist/cjs/components/ReportBuilder/convert.js +28 -7
  62. package/dist/cjs/components/ReportBuilder/util.d.ts +1 -1
  63. package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -1
  64. package/dist/cjs/components/ReportBuilder/util.js +15 -2
  65. package/dist/cjs/components/UiComponents.d.ts +5 -2
  66. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  67. package/dist/cjs/components/UiComponents.js +34 -7
  68. package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
  69. package/dist/cjs/hooks/useDashboard.js +11 -9
  70. package/dist/cjs/hooks/useExport.d.ts.map +1 -1
  71. package/dist/cjs/hooks/useExport.js +18 -4
  72. package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
  73. package/dist/cjs/hooks/useQuill.js +16 -3
  74. package/dist/cjs/hooks/useReport.d.ts.map +1 -1
  75. package/dist/cjs/hooks/useReport.js +1 -7
  76. package/dist/cjs/hooks/useVirtualTables.d.ts +6 -2
  77. package/dist/cjs/hooks/useVirtualTables.d.ts.map +1 -1
  78. package/dist/cjs/hooks/useVirtualTables.js +5 -2
  79. package/dist/cjs/index.d.ts +1 -1
  80. package/dist/cjs/index.d.ts.map +1 -1
  81. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  82. package/dist/cjs/internals/ReportBuilder/PivotModal.js +7 -8
  83. package/dist/cjs/models/Columns.d.ts +1 -0
  84. package/dist/cjs/models/Columns.d.ts.map +1 -1
  85. package/dist/cjs/models/Filter.d.ts +20 -13
  86. package/dist/cjs/models/Filter.d.ts.map +1 -1
  87. package/dist/cjs/models/Filter.js +161 -87
  88. package/dist/cjs/models/Report.d.ts +12 -1
  89. package/dist/cjs/models/Report.d.ts.map +1 -1
  90. package/dist/cjs/models/Schema.d.ts +12 -1
  91. package/dist/cjs/models/Schema.d.ts.map +1 -1
  92. package/dist/cjs/utils/astFilterProcessing.js +22 -22
  93. package/dist/cjs/utils/astProcessing.d.ts +2 -2
  94. package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
  95. package/dist/cjs/utils/astProcessing.js +25 -6
  96. package/dist/cjs/utils/axisFormatter.d.ts.map +1 -1
  97. package/dist/cjs/utils/axisFormatter.js +25 -0
  98. package/dist/cjs/utils/color.d.ts +159 -0
  99. package/dist/cjs/utils/color.d.ts.map +1 -1
  100. package/dist/cjs/utils/color.js +14 -5
  101. package/dist/cjs/utils/columnProcessing.js +3 -3
  102. package/dist/cjs/utils/constants.d.ts +1 -0
  103. package/dist/cjs/utils/constants.d.ts.map +1 -1
  104. package/dist/cjs/utils/constants.js +2 -1
  105. package/dist/cjs/utils/dashboard.d.ts +14 -3
  106. package/dist/cjs/utils/dashboard.d.ts.map +1 -1
  107. package/dist/cjs/utils/dashboard.js +79 -16
  108. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  109. package/dist/cjs/utils/dataFetcher.js +3 -1
  110. package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
  111. package/dist/cjs/utils/filterProcessing.js +9 -9
  112. package/dist/cjs/utils/getDomain.d.ts +4 -1
  113. package/dist/cjs/utils/getDomain.d.ts.map +1 -1
  114. package/dist/cjs/utils/getDomain.js +11 -1
  115. package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
  116. package/dist/cjs/utils/pivotConstructor.js +9 -6
  117. package/dist/cjs/utils/queryConstructor.d.ts +1 -1
  118. package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
  119. package/dist/cjs/utils/queryConstructor.js +83 -49
  120. package/dist/cjs/utils/report.d.ts +23 -5
  121. package/dist/cjs/utils/report.d.ts.map +1 -1
  122. package/dist/cjs/utils/report.js +36 -14
  123. package/dist/cjs/utils/schema.d.ts +28 -3
  124. package/dist/cjs/utils/schema.d.ts.map +1 -1
  125. package/dist/cjs/utils/schema.js +79 -43
  126. package/dist/cjs/utils/tableProcessing.d.ts +12 -3
  127. package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
  128. package/dist/cjs/utils/tableProcessing.js +36 -8
  129. package/dist/cjs/utils/textProcessing.d.ts.map +1 -1
  130. package/dist/cjs/utils/textProcessing.js +0 -1
  131. package/dist/cjs/utils/valueFormatter.d.ts +1 -0
  132. package/dist/cjs/utils/valueFormatter.d.ts.map +1 -1
  133. package/dist/cjs/utils/valueFormatter.js +55 -1
  134. package/dist/esm/Chart.d.ts +5 -1
  135. package/dist/esm/Chart.d.ts.map +1 -1
  136. package/dist/esm/Chart.js +52 -29
  137. package/dist/esm/ChartBuilder.d.ts +30 -3
  138. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  139. package/dist/esm/ChartBuilder.js +487 -187
  140. package/dist/esm/ChartEditor.d.ts.map +1 -1
  141. package/dist/esm/ChartEditor.js +11 -1
  142. package/dist/esm/Context.d.ts +16 -4
  143. package/dist/esm/Context.d.ts.map +1 -1
  144. package/dist/esm/Context.js +97 -48
  145. package/dist/esm/Dashboard.d.ts +6 -3
  146. package/dist/esm/Dashboard.d.ts.map +1 -1
  147. package/dist/esm/Dashboard.js +70 -29
  148. package/dist/esm/QuillProvider.d.ts +4 -8
  149. package/dist/esm/QuillProvider.d.ts.map +1 -1
  150. package/dist/esm/ReportBuilder.d.ts +2 -1
  151. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  152. package/dist/esm/ReportBuilder.js +192 -50
  153. package/dist/esm/SQLEditor.d.ts +8 -1
  154. package/dist/esm/SQLEditor.d.ts.map +1 -1
  155. package/dist/esm/SQLEditor.js +95 -11
  156. package/dist/esm/Table.d.ts +21 -1
  157. package/dist/esm/Table.d.ts.map +1 -1
  158. package/dist/esm/Table.js +34 -196
  159. package/dist/esm/components/Chart/BarChart.d.ts +5 -1
  160. package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
  161. package/dist/esm/components/Chart/BarChart.js +5 -4
  162. package/dist/esm/components/Chart/CustomReferenceLine.d.ts +2 -0
  163. package/dist/esm/components/Chart/CustomReferenceLine.d.ts.map +1 -0
  164. package/dist/esm/components/Chart/CustomReferenceLine.js +23 -0
  165. package/dist/esm/components/Chart/GaugeChart.d.ts +11 -0
  166. package/dist/esm/components/Chart/GaugeChart.d.ts.map +1 -0
  167. package/dist/esm/components/Chart/GaugeChart.js +195 -0
  168. package/dist/esm/components/Chart/InternalChart.d.ts.map +1 -1
  169. package/dist/esm/components/Chart/InternalChart.js +14 -11
  170. package/dist/esm/components/Chart/LineChart.d.ts +5 -1
  171. package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
  172. package/dist/esm/components/Chart/LineChart.js +5 -4
  173. package/dist/esm/components/Chart/MapChart.d.ts +36 -0
  174. package/dist/esm/components/Chart/MapChart.d.ts.map +1 -0
  175. package/dist/esm/components/Chart/MapChart.js +541 -0
  176. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  177. package/dist/esm/components/Dashboard/DataLoader.js +114 -42
  178. package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
  179. package/dist/esm/components/Dashboard/MetricComponent.js +57 -54
  180. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
  181. package/dist/esm/components/Dashboard/TableComponent.js +5 -1
  182. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  183. package/dist/esm/components/QuillMultiSelectWithCombo.js +5 -4
  184. package/dist/esm/components/QuillSelectWithCombo.d.ts.map +1 -1
  185. package/dist/esm/components/QuillSelectWithCombo.js +12 -11
  186. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  187. package/dist/esm/components/ReportBuilder/AddColumnModal.js +2 -1
  188. package/dist/esm/components/ReportBuilder/FilterModal.js +14 -14
  189. package/dist/esm/components/ReportBuilder/FilterStack.d.ts +2 -1
  190. package/dist/esm/components/ReportBuilder/FilterStack.d.ts.map +1 -1
  191. package/dist/esm/components/ReportBuilder/FilterStack.js +4 -4
  192. package/dist/esm/components/ReportBuilder/convert.d.ts +2 -0
  193. package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -1
  194. package/dist/esm/components/ReportBuilder/convert.js +26 -7
  195. package/dist/esm/components/ReportBuilder/util.d.ts +1 -1
  196. package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -1
  197. package/dist/esm/components/ReportBuilder/util.js +15 -2
  198. package/dist/esm/components/UiComponents.d.ts +5 -2
  199. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  200. package/dist/esm/components/UiComponents.js +32 -6
  201. package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
  202. package/dist/esm/hooks/useDashboard.js +11 -9
  203. package/dist/esm/hooks/useExport.d.ts.map +1 -1
  204. package/dist/esm/hooks/useExport.js +19 -5
  205. package/dist/esm/hooks/useQuill.d.ts.map +1 -1
  206. package/dist/esm/hooks/useQuill.js +16 -3
  207. package/dist/esm/hooks/useReport.d.ts.map +1 -1
  208. package/dist/esm/hooks/useReport.js +1 -7
  209. package/dist/esm/hooks/useVirtualTables.d.ts +6 -2
  210. package/dist/esm/hooks/useVirtualTables.d.ts.map +1 -1
  211. package/dist/esm/hooks/useVirtualTables.js +6 -3
  212. package/dist/esm/index.d.ts +1 -1
  213. package/dist/esm/index.d.ts.map +1 -1
  214. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  215. package/dist/esm/internals/ReportBuilder/PivotModal.js +7 -8
  216. package/dist/esm/models/Columns.d.ts +1 -0
  217. package/dist/esm/models/Columns.d.ts.map +1 -1
  218. package/dist/esm/models/Filter.d.ts +20 -13
  219. package/dist/esm/models/Filter.d.ts.map +1 -1
  220. package/dist/esm/models/Filter.js +160 -86
  221. package/dist/esm/models/Report.d.ts +12 -1
  222. package/dist/esm/models/Report.d.ts.map +1 -1
  223. package/dist/esm/models/Schema.d.ts +12 -1
  224. package/dist/esm/models/Schema.d.ts.map +1 -1
  225. package/dist/esm/utils/astFilterProcessing.js +23 -23
  226. package/dist/esm/utils/astProcessing.d.ts +2 -2
  227. package/dist/esm/utils/astProcessing.d.ts.map +1 -1
  228. package/dist/esm/utils/astProcessing.js +25 -6
  229. package/dist/esm/utils/axisFormatter.d.ts.map +1 -1
  230. package/dist/esm/utils/axisFormatter.js +25 -0
  231. package/dist/esm/utils/color.d.ts +159 -0
  232. package/dist/esm/utils/color.d.ts.map +1 -1
  233. package/dist/esm/utils/color.js +8 -2
  234. package/dist/esm/utils/columnProcessing.js +3 -3
  235. package/dist/esm/utils/constants.d.ts +1 -0
  236. package/dist/esm/utils/constants.d.ts.map +1 -1
  237. package/dist/esm/utils/constants.js +1 -0
  238. package/dist/esm/utils/dashboard.d.ts +14 -3
  239. package/dist/esm/utils/dashboard.d.ts.map +1 -1
  240. package/dist/esm/utils/dashboard.js +80 -17
  241. package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
  242. package/dist/esm/utils/dataFetcher.js +3 -1
  243. package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
  244. package/dist/esm/utils/filterProcessing.js +10 -10
  245. package/dist/esm/utils/getDomain.d.ts +4 -1
  246. package/dist/esm/utils/getDomain.d.ts.map +1 -1
  247. package/dist/esm/utils/getDomain.js +11 -1
  248. package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
  249. package/dist/esm/utils/pivotConstructor.js +9 -6
  250. package/dist/esm/utils/queryConstructor.d.ts +1 -1
  251. package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
  252. package/dist/esm/utils/queryConstructor.js +83 -49
  253. package/dist/esm/utils/report.d.ts +23 -5
  254. package/dist/esm/utils/report.d.ts.map +1 -1
  255. package/dist/esm/utils/report.js +38 -16
  256. package/dist/esm/utils/schema.d.ts +28 -3
  257. package/dist/esm/utils/schema.d.ts.map +1 -1
  258. package/dist/esm/utils/schema.js +78 -43
  259. package/dist/esm/utils/tableProcessing.d.ts +12 -3
  260. package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
  261. package/dist/esm/utils/tableProcessing.js +36 -8
  262. package/dist/esm/utils/textProcessing.d.ts.map +1 -1
  263. package/dist/esm/utils/textProcessing.js +0 -1
  264. package/dist/esm/utils/valueFormatter.d.ts +1 -0
  265. package/dist/esm/utils/valueFormatter.d.ts.map +1 -1
  266. package/dist/esm/utils/valueFormatter.js +53 -0
  267. package/package.json +10 -3
@@ -15,6 +15,7 @@ exports.getTablesHelper = getTablesHelper;
15
15
  const ast_1 = require("../components/ReportBuilder/ast");
16
16
  const convert_1 = require("../components/ReportBuilder/convert");
17
17
  const util_1 = require("../components/ReportBuilder/util");
18
+ const astFilterProcessing_1 = require("./astFilterProcessing");
18
19
  const constants_1 = require("./constants");
19
20
  const tableProcessing_1 = require("./tableProcessing");
20
21
  function getSelectFromAST(ast) {
@@ -183,9 +184,10 @@ function getColumnAndTableInfo(tableAliasMap, column, schemaInfo) {
183
184
  }
184
185
  return { tableName, columnName };
185
186
  }
186
- function getColumnsByTableFromASTAndSchema(ast, tables, tableAliasMap) {
187
+ function getColumnsByTableFromASTAndSchema(ast, tables, tableAliasMap, skipStar = false) {
187
188
  const referencedColumns = {};
188
- if (ast?.columns === '*' || ast?.columns?.[0]?.expr?.column === '*') {
189
+ if (!skipStar &&
190
+ (ast?.columns === '*' || ast?.columns?.[0]?.expr?.column === '*')) {
189
191
  // Be sure to select everything from stars
190
192
  const tableList = ast.from.map((table) => recursiveSearchByKey(table, 'table'));
191
193
  tableList.forEach((table) => {
@@ -265,6 +267,23 @@ function getColumnsByTableFromASTAndSchema(ast, tables, tableAliasMap) {
265
267
  }
266
268
  });
267
269
  }
270
+ // Look through the orderby's
271
+ if (ast.orderby) {
272
+ const allColumnReferencesInOrderBy = ast.orderby.map((orderby) => ({
273
+ field: (0, astFilterProcessing_1.getFieldFromExpression)(orderby.expr ?? orderby),
274
+ table: orderby.expr?.table,
275
+ }));
276
+ allColumnReferencesInOrderBy.forEach((column) => {
277
+ const table = column.table || ast.from?.length === 1 ? ast.from[0].table : '';
278
+ if (!table) {
279
+ return;
280
+ }
281
+ if (!referencedColumns[table]) {
282
+ referencedColumns[table] = [];
283
+ }
284
+ referencedColumns[table].push(column.field);
285
+ });
286
+ }
268
287
  for (const table in referencedColumns) {
269
288
  referencedColumns[table] = Array.from(new Set(referencedColumns[table]));
270
289
  }
@@ -394,7 +413,7 @@ const fetchAndProcessASTFromPrompt = async (aiPrompt, schema, client, prevPivot,
394
413
  }
395
414
  ast = ast.length ? ast[0] : ast;
396
415
  newAst = (0, convert_1.convertBigQuery)(ast);
397
- newAst = (0, util_1.removeTableNameAlias)(newAst);
416
+ newAst = (0, util_1.removeTableNameAlias)(newAst, schema);
398
417
  newAst = (0, convert_1.convertWildcardColumns)(newAst, schema); // must go before groupby
399
418
  ({ ast: newAst, pivot } = (0, convert_1.convertGroupBy)(newAst, schema, prevPivot, prevTable));
400
419
  newAst = (0, convert_1.convertOrderBy)(newAst, schema);
@@ -490,7 +509,7 @@ const POSTGRES_DATE_TYPES = [
490
509
  'time',
491
510
  'timetz',
492
511
  ];
493
- function getTablesHelper(ast, allTables) {
512
+ function getTablesHelper(ast, allTables, skipStar) {
494
513
  const tableAliasMap = createTableNameToTableAliasMap(ast);
495
514
  const tablesInQuery = Object.values(tableAliasMap);
496
515
  // Remove all aliased tables (with statements and subqueries)
@@ -498,7 +517,7 @@ function getTablesHelper(ast, allTables) {
498
517
  .filter((table) => tablesInQuery.includes(table.displayName))
499
518
  .map((table) => table.displayName);
500
519
  // Get non with statement column references
501
- let referencedColumns = getColumnsByTableFromASTAndSchema(ast, allTables, tableAliasMap);
520
+ let referencedColumns = getColumnsByTableFromASTAndSchema(ast, allTables, tableAliasMap, skipStar);
502
521
  referencedColumns = Object.keys(referencedColumns)
503
522
  .filter((table) => onlyReferenceTables.includes(table))
504
523
  .reduce((obj, key) => {
@@ -510,7 +529,7 @@ function getTablesHelper(ast, allTables) {
510
529
  for (const withStmt of ast.with) {
511
530
  const astFrom = withStmt.stmt.from ?? withStmt.stmt.ast.from;
512
531
  if (astFrom) {
513
- const withReferencedColumns = getColumnsByTableFromASTAndSchema(withStmt.stmt.ast ?? withStmt.stmt, allTables, tableAliasMap);
532
+ const withReferencedColumns = getColumnsByTableFromASTAndSchema(withStmt.stmt.ast ?? withStmt.stmt, allTables, tableAliasMap, skipStar);
514
533
  // @ts-ignore
515
534
  Object.keys(withReferencedColumns).forEach((tableName) => {
516
535
  if (referencedColumns[tableName]) {
@@ -1 +1 @@
1
- {"version":3,"file":"axisFormatter.d.ts","sourceRoot":"","sources":["../../../src/utils/axisFormatter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IACpD,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,6BAA8B,KAAK,KAAG,MAwC/D,CAAC"}
1
+ {"version":3,"file":"axisFormatter.d.ts","sourceRoot":"","sources":["../../../src/utils/axisFormatter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IACpD,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,6BAA8B,KAAK,KAAG,MA4C/D,CAAC"}
@@ -26,6 +26,10 @@ const axisFormatter = ({ value, field, fields }) => {
26
26
  return formatDollarAmount(value);
27
27
  case 'whole_number':
28
28
  return formatWholeNumber(value);
29
+ case 'two_decimal_places':
30
+ return formatDecimal2(value);
31
+ case 'one_decimal_place':
32
+ return formatDecimal1(value);
29
33
  case 'string':
30
34
  return formatString(value);
31
35
  case 'yyyy':
@@ -64,6 +68,26 @@ const formatString = (value) => {
64
68
  }
65
69
  return value.toString();
66
70
  };
71
+ const formatterDecimal2 = new Intl.NumberFormat('en-US', {
72
+ style: 'decimal',
73
+ maximumFractionDigits: 2,
74
+ });
75
+ /**
76
+ * Formats the value as a number with two decimal places.
77
+ */
78
+ const formatDecimal2 = (value) => {
79
+ return formatterDecimal2.format(Number(value));
80
+ };
81
+ const formatterDecimal1 = new Intl.NumberFormat('en-US', {
82
+ style: 'decimal',
83
+ maximumFractionDigits: 1,
84
+ });
85
+ /**
86
+ * Formats the value as a number with one decimal place.
87
+ */
88
+ const formatDecimal1 = (value) => {
89
+ return formatterDecimal1.format(Number(value));
90
+ };
67
91
  // Formats large numbers like 12345.67 -> $12K
68
92
  const formatterBigDollars = new Intl.NumberFormat('en-US', {
69
93
  style: 'currency',
@@ -103,6 +127,7 @@ const formatDollarAmount = (value) => {
103
127
  const formatterBigWholeNumber = new Intl.NumberFormat('en-US', {
104
128
  minimumSignificantDigits: 1,
105
129
  maximumSignificantDigits: 2,
130
+ maximumFractionDigits: 0,
106
131
  notation: 'compact',
107
132
  compactDisplay: 'short',
108
133
  });
@@ -15,7 +15,166 @@ export type Color = (typeof colorValues)[number];
15
15
  * @param index the index of this element in colors
16
16
  */
17
17
  export declare function selectColor(element: any, colors: string[], index: number): string;
18
+ /**
19
+ * Transform a hex string to an RGB array.
20
+ *
21
+ * Examples:
22
+ * - #8661f2 -> [134, 97, 242]
23
+ * - #1661ea2e -> [22, 97, 234, 46]
24
+ *
25
+ * TODO: Add support for triplet-style hex codes like this:
26
+ * - #123 -> #112233 -> [17, 34, 51]
27
+ */
28
+ export declare function hexToRGB(hex: string): number[];
29
+ export declare function RGBToHex(rgb: number[]): string;
18
30
  export declare function namedColorToHex(color: string): string;
31
+ /**
32
+ * A comprehensive map of all the CSS named-colors that modern browsers will
33
+ * recognize, and converts them into their hex values.
34
+ */
35
+ export declare const COLOR_TO_HEX: {
36
+ aliceblue: string;
37
+ antiquewhite: string;
38
+ aqua: string;
39
+ aquamarine: string;
40
+ azure: string;
41
+ beige: string;
42
+ bisque: string;
43
+ black: string;
44
+ blanchedalmond: string;
45
+ blue: string;
46
+ blueviolet: string;
47
+ brown: string;
48
+ burlywood: string;
49
+ cadetblue: string;
50
+ chartreuse: string;
51
+ chocolate: string;
52
+ coral: string;
53
+ cornflowerblue: string;
54
+ cornsilk: string;
55
+ crimson: string;
56
+ cyan: string;
57
+ darkblue: string;
58
+ darkcyan: string;
59
+ darkgoldenrod: string;
60
+ darkgray: string;
61
+ darkgreen: string;
62
+ darkkhaki: string;
63
+ darkmagenta: string;
64
+ darkolivegreen: string;
65
+ darkorange: string;
66
+ darkorchid: string;
67
+ darkred: string;
68
+ darksalmon: string;
69
+ darkseagreen: string;
70
+ darkslateblue: string;
71
+ darkslategray: string;
72
+ darkturquoise: string;
73
+ darkviolet: string;
74
+ deeppink: string;
75
+ deepskyblue: string;
76
+ dimgray: string;
77
+ dodgerblue: string;
78
+ firebrick: string;
79
+ floralwhite: string;
80
+ forestgreen: string;
81
+ fuchsia: string;
82
+ gainsboro: string;
83
+ ghostwhite: string;
84
+ gold: string;
85
+ goldenrod: string;
86
+ gray: string;
87
+ green: string;
88
+ greenyellow: string;
89
+ honeydew: string;
90
+ hotpink: string;
91
+ indianred: string;
92
+ indigo: string;
93
+ ivory: string;
94
+ khaki: string;
95
+ lavender: string;
96
+ lavenderblush: string;
97
+ lawngreen: string;
98
+ lemonchiffon: string;
99
+ lightblue: string;
100
+ lightcoral: string;
101
+ lightcyan: string;
102
+ lightgoldenrodyellow: string;
103
+ lightgrey: string;
104
+ lightgreen: string;
105
+ lightpink: string;
106
+ lightsalmon: string;
107
+ lightseagreen: string;
108
+ lightskyblue: string;
109
+ lightslategray: string;
110
+ lightsteelblue: string;
111
+ lightyellow: string;
112
+ lime: string;
113
+ limegreen: string;
114
+ linen: string;
115
+ magenta: string;
116
+ maroon: string;
117
+ mediumaquamarine: string;
118
+ mediumblue: string;
119
+ mediumorchid: string;
120
+ mediumpurple: string;
121
+ mediumseagreen: string;
122
+ mediumslateblue: string;
123
+ mediumspringgreen: string;
124
+ mediumturquoise: string;
125
+ mediumvioletred: string;
126
+ midnightblue: string;
127
+ mintcream: string;
128
+ mistyrose: string;
129
+ moccasin: string;
130
+ navajowhite: string;
131
+ navy: string;
132
+ oldlace: string;
133
+ olive: string;
134
+ olivedrab: string;
135
+ orange: string;
136
+ orangered: string;
137
+ orchid: string;
138
+ palegoldenrod: string;
139
+ palegreen: string;
140
+ paleturquoise: string;
141
+ palevioletred: string;
142
+ papayawhip: string;
143
+ peachpuff: string;
144
+ peru: string;
145
+ pink: string;
146
+ plum: string;
147
+ powderblue: string;
148
+ purple: string;
149
+ rebeccapurple: string;
150
+ red: string;
151
+ rosybrown: string;
152
+ royalblue: string;
153
+ saddlebrown: string;
154
+ salmon: string;
155
+ sandybrown: string;
156
+ seagreen: string;
157
+ seashell: string;
158
+ sienna: string;
159
+ silver: string;
160
+ skyblue: string;
161
+ slateblue: string;
162
+ slategray: string;
163
+ snow: string;
164
+ springgreen: string;
165
+ steelblue: string;
166
+ tan: string;
167
+ teal: string;
168
+ thistle: string;
169
+ tomato: string;
170
+ turquoise: string;
171
+ violet: string;
172
+ wheat: string;
173
+ white: string;
174
+ whitesmoke: string;
175
+ yellow: string;
176
+ yellowgreen: string;
177
+ };
19
178
  /**
20
179
  * Converts an RGB color value to HSL. Conversion formula
21
180
  * adapted from http://en.wikipedia.org/wiki/HSL_color_space.
@@ -1 +1 @@
1
- {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../src/utils/color.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EACzB,MAAM,EAAE,MAAM,GACb,MAAM,EAAE,CAwBV;AA6ED,QAAA,MAAM,WAAW,mKAkBP,CAAC;AAEX,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,UAuBxE;AAyDD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,UAK5C;AAwJD;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,YA4B9C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,YAuB9C"}
1
+ {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../src/utils/color.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EACzB,MAAM,EAAE,MAAM,GACb,MAAM,EAAE,CAwBV;AA6ED,QAAA,MAAM,WAAW,mKAkBP,CAAC;AAEX,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,UAuBxE;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAyB9C;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,CAK9C;AAoBD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,UAK5C;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8IxB,CAAC;AAIF;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,YA4B9C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,YAuB9C"}
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.COLOR_TO_HEX = void 0;
3
4
  exports.generateArrayFromColor = generateArrayFromColor;
4
5
  exports.selectColor = selectColor;
6
+ exports.hexToRGB = hexToRGB;
7
+ exports.RGBToHex = RGBToHex;
5
8
  exports.namedColorToHex = namedColorToHex;
6
9
  exports.rgbToHsl = rgbToHsl;
7
10
  exports.HSLtoRGB = HSLtoRGB;
@@ -137,8 +140,8 @@ function selectColor(element, colors, index) {
137
140
  return color;
138
141
  }
139
142
  // If the element is a comparison, make the color grayscale.
140
- if (Object.keys(COLOR_TO_HEX).includes(color)) {
141
- const colorHex = COLOR_TO_HEX[color];
143
+ if (Object.keys(exports.COLOR_TO_HEX).includes(color)) {
144
+ const colorHex = exports.COLOR_TO_HEX[color];
142
145
  const rgbArray = hexToRGB(colorHex);
143
146
  return toGrayscale(rgbArray);
144
147
  }
@@ -183,6 +186,12 @@ function hexToRGB(hex) {
183
186
  }
184
187
  return [128, 128, 128]; // unknown color, return 'gray'
185
188
  }
189
+ function RGBToHex(rgb) {
190
+ return `#${rgb
191
+ .map((c) => Math.round(c).toString(16).padStart(2, '0'))
192
+ .join('')
193
+ .toUpperCase()}`;
194
+ }
186
195
  /**
187
196
  * Converts an RGB object to grayscale.
188
197
  *
@@ -202,8 +211,8 @@ function toGrayscale(rgba) {
202
211
  return `rgb(${avg}, ${avg}, ${avg})`;
203
212
  }
204
213
  function namedColorToHex(color) {
205
- if (Object.keys(COLOR_TO_HEX).includes(color)) {
206
- return COLOR_TO_HEX[color];
214
+ if (Object.keys(exports.COLOR_TO_HEX).includes(color)) {
215
+ return exports.COLOR_TO_HEX[color];
207
216
  }
208
217
  return color;
209
218
  }
@@ -211,7 +220,7 @@ function namedColorToHex(color) {
211
220
  * A comprehensive map of all the CSS named-colors that modern browsers will
212
221
  * recognize, and converts them into their hex values.
213
222
  */
214
- const COLOR_TO_HEX = {
223
+ exports.COLOR_TO_HEX = {
215
224
  aliceblue: '#f0f8ff',
216
225
  antiquewhite: '#faebd7',
217
226
  aqua: '#00ffff',
@@ -307,7 +307,7 @@ function processColumnName(columnName) {
307
307
  return removeBigQuerySpecialChars(columnName);
308
308
  }
309
309
  function isStringType(fieldType) {
310
- return ['string', 'varchar', 'text', 'char', 'bpchar', 'citext'].includes(fieldType);
310
+ return ['string', 'varchar', 'text', 'char', 'bpchar', 'citext'].includes(fieldType?.toLowerCase());
311
311
  }
312
312
  function isDateType(fieldType) {
313
313
  return [
@@ -317,7 +317,7 @@ function isDateType(fieldType) {
317
317
  'timestamptz',
318
318
  'timestamp',
319
319
  'interval',
320
- ].includes(fieldType);
320
+ ].includes(fieldType?.toLowerCase());
321
321
  }
322
322
  function isNumberType(fieldType) {
323
323
  return [
@@ -331,7 +331,7 @@ function isNumberType(fieldType) {
331
331
  'smallint',
332
332
  'float2',
333
333
  'float16',
334
- ].includes(fieldType);
334
+ ].includes(fieldType?.toLowerCase());
335
335
  }
336
336
  function isBoolType(fieldType) {
337
337
  return ['bool', 'boolean'].includes(fieldType);
@@ -4,4 +4,5 @@ export declare const QUILL_SERVER: string;
4
4
  export declare const QUILL_QUERY_ENDPOINT: string;
5
5
  export declare const ALL_TENANTS = "QUILL_ALL_TENANTS";
6
6
  export declare const SINGLE_TENANT = "QUILL_SINGLE_TENANT";
7
+ export declare const REFERENCE_LINE = "QUILL_REFERENCE_LINE";
7
8
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,YAAY,QAGoB,CAAC;AAC9C,eAAO,MAAM,oBAAoB,QAGnB,CAAC;AACf,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAC/C,eAAO,MAAM,aAAa,wBAAwB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,YAAY,QAGoB,CAAC;AAC9C,eAAO,MAAM,oBAAoB,QAGnB,CAAC;AACf,eAAO,MAAM,WAAW,sBAAsB,CAAC;AAC/C,eAAO,MAAM,aAAa,wBAAwB,CAAC;AACnD,eAAO,MAAM,cAAc,yBAAyB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SINGLE_TENANT = exports.ALL_TENANTS = exports.QUILL_QUERY_ENDPOINT = exports.QUILL_SERVER = exports.MAX_PIVOT_UNIQUE_VALUES = exports.MAX_COLUMN_ROWS_LIMIT = void 0;
3
+ exports.REFERENCE_LINE = exports.SINGLE_TENANT = exports.ALL_TENANTS = exports.QUILL_QUERY_ENDPOINT = exports.QUILL_SERVER = exports.MAX_PIVOT_UNIQUE_VALUES = exports.MAX_COLUMN_ROWS_LIMIT = void 0;
4
4
  exports.MAX_COLUMN_ROWS_LIMIT = 500;
5
5
  exports.MAX_PIVOT_UNIQUE_VALUES = 250;
6
6
  exports.QUILL_SERVER = typeof process !== 'undefined' && process.env
@@ -11,3 +11,4 @@ exports.QUILL_QUERY_ENDPOINT = typeof process !== 'undefined' && process.env
11
11
  : '/cloud';
12
12
  exports.ALL_TENANTS = 'QUILL_ALL_TENANTS';
13
13
  exports.SINGLE_TENANT = 'QUILL_SINGLE_TENANT';
14
+ exports.REFERENCE_LINE = 'QUILL_REFERENCE_LINE';
@@ -1,6 +1,7 @@
1
1
  import { QuillReportInternal } from '../models/Report';
2
2
  import { QuillProviderClient } from '../models/Client';
3
3
  import { AdditionalProcessing } from './tableProcessing';
4
+ import { CustomField } from '../models/Schema';
4
5
  /**
5
6
  * Returns a cleaned version of the dashboard item we store in state. We clean
6
7
  * the dashboard item so that we aren't exposing unnecessary details to the
@@ -8,9 +9,19 @@ import { AdditionalProcessing } from './tableProcessing';
8
9
  * interface to build amazing dashboards on top of.
9
10
  * @param item
10
11
  */
11
- export declare function cleanDashboardItem(item: {
12
- [key: string]: any;
13
- } | undefined, dashboardFilters: any, client: QuillProviderClient, dateBucket?: string, additionalProcessing?: AdditionalProcessing): Promise<QuillReportInternal>;
12
+ export declare function cleanDashboardItem({ item, dashboardFilters, client, dateBucket, additionalProcessing, customFields, skipPivotFetch, }: {
13
+ item: {
14
+ [key: string]: any;
15
+ } | undefined;
16
+ dashboardFilters: any;
17
+ client: QuillProviderClient;
18
+ dateBucket?: string;
19
+ additionalProcessing?: AdditionalProcessing;
20
+ customFields?: {
21
+ [tableName: string]: CustomField[];
22
+ } | null;
23
+ skipPivotFetch?: boolean;
24
+ }): Promise<QuillReportInternal>;
14
25
  export declare function getDashboard(dashboardName: string, client: QuillProviderClient, tenants?: {
15
26
  tenantField: string;
16
27
  tenantIds: (string | number)[];
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/utils/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAcvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AA2BzD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,SAAS,EACxC,gBAAgB,EAAE,GAAG,EACrB,MAAM,EAAE,mBAAmB,EAC3B,UAAU,CAAC,EAAE,MAAM,EACnB,oBAAoB,CAAC,EAAE,oBAAoB,GAC1C,OAAO,CAAC,mBAAmB,CAAC,CA+F9B;AA0ID,wBAAsB,YAAY,CAChC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,mBAAmB,EAC3B,OAAO,CAAC,EACJ;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;CAAE,EAAE,GACzD,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EACvB,KAAK,CAAC,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,GAAG,CAAC,CA6Bd"}
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/utils/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAcvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAOzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAsB/C;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,EACvC,IAAI,EACJ,gBAAgB,EAChB,MAAM,EACN,UAAU,EACV,oBAAoB,EACpB,YAAY,EACZ,cAAc,GACf,EAAE;IACD,IAAI,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,GAAG,SAAS,CAAC;IACzC,gBAAgB,EAAE,GAAG,CAAC;IACtB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,YAAY,CAAC,EAAE;QAAE,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAqK/B;AA2ID,wBAAsB,YAAY,CAChC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,mBAAmB,EAC3B,OAAO,CAAC,EACJ;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;CAAE,EAAE,GACzD,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EACvB,KAAK,CAAC,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,GAAG,CAAC,CA6Bd"}
@@ -34,7 +34,7 @@ const defaultDashboardItem = {
34
34
  * interface to build amazing dashboards on top of.
35
35
  * @param item
36
36
  */
37
- async function cleanDashboardItem(item, dashboardFilters, client, dateBucket, additionalProcessing) {
37
+ async function cleanDashboardItem({ item, dashboardFilters, client, dateBucket, additionalProcessing, customFields, skipPivotFetch, }) {
38
38
  if (!item)
39
39
  return defaultDashboardItem;
40
40
  if (!item.rows) {
@@ -44,24 +44,56 @@ async function cleanDashboardItem(item, dashboardFilters, client, dateBucket, ad
44
44
  name: item.name,
45
45
  };
46
46
  }
47
+ const fields = item.fields || [];
48
+ const columnsWithCustomFields = [...(item.columns ?? [])];
49
+ if (item.includeCustomFields && item.rows?.length > 0) {
50
+ const tables = item.referencedTables ?? [];
51
+ tables.forEach((table) => {
52
+ const _customFields = customFields?.[table] ?? [];
53
+ _customFields.forEach((field) => {
54
+ const isJsonCustomField = !!field.refColumn;
55
+ if (item.rows[0][field.field] !== undefined &&
56
+ !item.columns.some((col) => col.field === field.field)) {
57
+ const result_field = fields.find((f) => f.name === field.field);
58
+ const converted_field = (0, columnProcessing_1.convertPostgresColumn)(result_field ?? {});
59
+ columnsWithCustomFields.push({
60
+ field: field.field,
61
+ format: converted_field.format,
62
+ label: (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(field.field),
63
+ fieldType: converted_field.fieldType,
64
+ dataTypeID: converted_field.dataTypeID,
65
+ jsType: converted_field.jsType,
66
+ inferFormat: isJsonCustomField,
67
+ });
68
+ }
69
+ });
70
+ });
71
+ }
47
72
  const processedColumns = item.columns.map((col) => {
48
73
  return { ...col, label: (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(col.label) };
49
74
  });
75
+ const columnInternal = (item.includeCustomFields ? columnsWithCustomFields : item.columns).map((col) => {
76
+ return { ...col, label: (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(col.label) };
77
+ });
50
78
  let pivotTable;
51
79
  let pivotError;
52
80
  try {
53
81
  pivotTable = await getPivotTable({
54
82
  ...item,
55
- pivot: item.pivot ? {
56
- ...item.pivot,
57
- aggregations: item.pivot.aggregations ?? [{
58
- valueField: item.pivot.valueField,
59
- valueFieldType: item.pivot.valueFieldType,
60
- valueField2: item.pivot.valueField2,
61
- valueField2Type: item.pivot.valueField2Type,
62
- aggregationType: item.pivot.aggregationType,
63
- }]
64
- } : undefined,
83
+ pivot: item.pivot && !skipPivotFetch
84
+ ? {
85
+ ...item.pivot,
86
+ aggregations: item.pivot.aggregations ?? [
87
+ {
88
+ valueField: item.pivot.valueField,
89
+ valueFieldType: item.pivot.valueFieldType,
90
+ valueField2: item.pivot.valueField2,
91
+ valueField2Type: item.pivot.valueField2Type,
92
+ aggregationType: item.pivot.aggregationType,
93
+ },
94
+ ],
95
+ }
96
+ : undefined,
65
97
  }, dashboardFilters, client, dateBucket, additionalProcessing, item.dashboardName);
66
98
  }
67
99
  catch (e) {
@@ -69,6 +101,29 @@ async function cleanDashboardItem(item, dashboardFilters, client, dateBucket, ad
69
101
  console.error('Error fetching pivot table', e);
70
102
  pivotError = 'Error fetching pivot table';
71
103
  }
104
+ // For each key on item that starts with "referenceLine_{field}", we want to
105
+ // add it to referenceLineYValues as [field]: [value, value] (we only support horizontal lines)
106
+ // Then for each number value in the referenceLines map, we also want to add [key]: [value, value]
107
+ const referenceLineYValues = [];
108
+ for (const key in item) {
109
+ if (key.startsWith('referenceLine_')) {
110
+ const field = key.slice(14);
111
+ if (!item[key] || !item[key][0])
112
+ continue;
113
+ const value = Object.values(item[key][0])[0];
114
+ referenceLineYValues.push({ label: field, query: [value, value] });
115
+ }
116
+ }
117
+ if (item.referenceLines) {
118
+ for (const referenceLine of item.referenceLines) {
119
+ if (Array.isArray(referenceLine.query)) {
120
+ referenceLineYValues.push({ label: referenceLine.label, query: referenceLine.query });
121
+ }
122
+ else if (referenceLine.query === '') {
123
+ referenceLineYValues.push({ label: referenceLine.label, query: (pivotTable?.rows ? pivotTable.rows : item.rows).map((row) => Number(row[referenceLine.label]) || 0) });
124
+ }
125
+ }
126
+ }
72
127
  return {
73
128
  id: item._id ?? item.id,
74
129
  name: item.name,
@@ -82,9 +137,12 @@ async function cleanDashboardItem(item, dashboardFilters, client, dateBucket, ad
82
137
  field: column.field,
83
138
  format: column.format,
84
139
  label: column.label,
140
+ inferFormat: column.inferFormat,
85
141
  };
86
142
  }),
87
- columnInternal: processedColumns,
143
+ includeCustomFields: item.includeCustomFields,
144
+ columnInternal,
145
+ columnsWithCustomFields,
88
146
  chartType: item.chartType,
89
147
  dateField: item.dateField,
90
148
  pivot: pivotError
@@ -92,14 +150,16 @@ async function cleanDashboardItem(item, dashboardFilters, client, dateBucket, ad
92
150
  : item.pivot
93
151
  ? {
94
152
  ...item.pivot,
95
- aggregations: item.pivot.aggregations ?? [{
153
+ aggregations: item.pivot.aggregations ?? [
154
+ {
96
155
  valueField: item.pivot.valueField,
97
156
  valueFieldType: item.pivot.valueFieldType,
98
157
  valueField2: item.pivot.valueField2,
99
158
  valueField2Type: item.pivot.valueField2Type,
100
159
  aggregationType: item.pivot.aggregationType,
101
- }],
102
- columnValues: item.distinctStrings
160
+ },
161
+ ],
162
+ columnValues: item.distinctStrings,
103
163
  }
104
164
  : undefined,
105
165
  yAxisFields: pivotTable
@@ -123,6 +183,8 @@ async function cleanDashboardItem(item, dashboardFilters, client, dateBucket, ad
123
183
  referencedTables: item?.referencedTables || [],
124
184
  referencedColumns: item?.referencedColumns || {},
125
185
  error: item.error ?? pivotError,
186
+ referenceLineYValues: referenceLineYValues,
187
+ referenceLines: item.referenceLines,
126
188
  };
127
189
  }
128
190
  /**
@@ -157,7 +219,8 @@ async function getPivotTable(report, dashboardFilters, client, dateBucketInitial
157
219
  field: agg.valueField,
158
220
  label: (0, textProcessing_1.snakeCaseToTitleCase)((0, columnProcessing_1.processColumnName)(agg.valueField)),
159
221
  //FIXME: valueFieldType is not always the same as the format
160
- format: agg.valueFieldType ?? 'whole_number',
222
+ format: agg.valueFieldType ??
223
+ 'whole_number',
161
224
  jsType: agg.valueFieldType ?? 'number',
162
225
  fieldType: agg.valueFieldType ?? 'number',
163
226
  dataTypeID: (0, columnProcessing_1.fieldTypeToDataTypeID)(agg.valueFieldType ?? 'number'),
@@ -1 +1 @@
1
- {"version":3,"file":"dataFetcher.d.ts","sourceRoot":"","sources":["../../../src/utils/dataFetcher.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAgFvD,wBAAsB,OAAO,CAC3B,MAAM,EAAE,mBAAmB,EAC3B,kBAAkB,EAAE,MAAM,EAC1B,MAAM,EAAE,kBAAkB,EAC1B,iBAAiB,EAAE,GAAG,EACtB,gBAAgB,EAAE,GAAG,EACrB,MAAM,SAAS,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,WAAW,gBA0K1B;AAED,wBAAgB,aAAa;+BAGjB,mBAAmB,sBACP,MAAM,oBACR,GAAG,iCAEP,WAAW;EAoC5B;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,CAAC,EAAE,GAAG,GACb,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAmB5C"}
1
+ {"version":3,"file":"dataFetcher.d.ts","sourceRoot":"","sources":["../../../src/utils/dataFetcher.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAgFvD,wBAAsB,OAAO,CAC3B,MAAM,EAAE,mBAAmB,EAC3B,kBAAkB,EAAE,MAAM,EAC1B,MAAM,EAAE,kBAAkB,EAC1B,iBAAiB,EAAE,GAAG,EACtB,gBAAgB,EAAE,GAAG,EACrB,MAAM,SAAS,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,WAAW,gBA4K1B;AAED,wBAAgB,aAAa;+BAGjB,mBAAmB,sBACP,MAAM,oBACR,GAAG,iCAEP,WAAW;EAoC5B;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,CAAC,EAAE,GAAG,GACb,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAmB5C"}
@@ -95,7 +95,9 @@ async function getData(client, cloudQueryEndpoint, noCred, hostedRequestBody, cl
95
95
  let errorMessage = 'Failed to fetch report: ' + responseJson.error;
96
96
  if (hostedRequestBody.metadata.task === 'query' ||
97
97
  hostedRequestBody.metadata.task === 'patterns') {
98
- errorPrefix = 'SQL Error: ';
98
+ errorPrefix = responseJson.error?.includes('Query Parsing Error')
99
+ ? ''
100
+ : 'SQL Error: ';
99
101
  errorMessage = errorPrefix + responseJson.error;
100
102
  }
101
103
  else if (responseJson.error?.includes('Virtual Table Error')) {
@@ -1 +1 @@
1
- {"version":3,"file":"filterProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/filterProcessing.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,SAAS,EACT,cAAc,EAGd,mBAAmB,EACnB,MAAM,EAEN,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAmB,MAAM,uBAAuB,CAAC;AAGxE,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAoB5D;AAMD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,OAkBnD;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,GAAG,YAAO,EACjB,UAAU,EAAE,GAAG,YAAO,EACtB,aAAa,EAAE,MAAM,OAmGtB;AAGD,eAAO,MAAM,OAAO,MAAO,MAAM,cA0DhC,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAwB7D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,GAAG,GAAG,cAAc,EAAE,CAoCrE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,GAAG,EAAE,yBAgCnD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,cAAc,EAAE,EACzB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,GAAG,GACV,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA4B/D;AAED,wBAAgB,iCAAiC,CAC/C,gBAAgB,EAAE,MAAM,EACxB,mBAAmB,EAAE,mBAAmB,GACvC,mBAAmB,CAkKrB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,EAAE,EAC1B,aAAa,EAAE,cAAc,EAAE,GAC9B,GAAG,EAAE,CA+CP;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,CAAC,EAAE,cAAc,EAAE,EAC3B,QAAQ,CAAC,EAAE,cAAc,EAAE,GAC1B,OAAO,CA+BT;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE;IACpD,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CAChD,GAAG;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACzB,CASA;AAED,eAAO,MAAM,uBAAuB,WAC1B,mBAAmB,WAClB,WAAW,EAAE,iBACP,MAAM,KACpB,CAAC,mBAAmB,GAAG;IAAE,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GAAG,SAqDpD,CAAC"}
1
+ {"version":3,"file":"filterProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/filterProcessing.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,SAAS,EACT,cAAc,EAGd,mBAAmB,EACnB,MAAM,EAEN,eAAe,EAEhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAmB,MAAM,uBAAuB,CAAC;AAGxE,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,CAoB5D;AAMD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,OAkBnD;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,GAAG,EACX,KAAK,EAAE,GAAG,YAAO,EACjB,UAAU,EAAE,GAAG,YAAO,EACtB,aAAa,EAAE,MAAM,OAmGtB;AAGD,eAAO,MAAM,OAAO,MAAO,MAAM,cA0DhC,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAwB7D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,GAAG,GAAG,cAAc,EAAE,CAoCrE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,GAAG,EAAE,yBAgCnD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,cAAc,EAAE,EACzB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,GAAG,GACV,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CA4B/D;AAED,wBAAgB,iCAAiC,CAC/C,gBAAgB,EAAE,MAAM,EACxB,mBAAmB,EAAE,mBAAmB,GACvC,mBAAmB,CAkKrB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,EAAE,EAC1B,aAAa,EAAE,cAAc,EAAE,GAC9B,GAAG,EAAE,CA+CP;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,CAAC,EAAE,cAAc,EAAE,EAC3B,QAAQ,CAAC,EAAE,cAAc,EAAE,GAC1B,OAAO,CA+BT;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE;IACpD,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CAChD,GAAG;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACzB,CASA;AAED,eAAO,MAAM,uBAAuB,WAC1B,mBAAmB,WAClB,WAAW,EAAE,iBACP,MAAM,KACpB,CAAC,mBAAmB,GAAG;IAAE,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GAAG,SAqDpD,CAAC"}