@quillsql/react 2.12.15 → 2.12.17

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 (105) hide show
  1. package/dist/cjs/Chart.d.ts +4 -0
  2. package/dist/cjs/Chart.d.ts.map +1 -1
  3. package/dist/cjs/Chart.js +27 -10
  4. package/dist/cjs/ChartBuilder.d.ts +3 -1
  5. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  6. package/dist/cjs/ChartBuilder.js +3 -3
  7. package/dist/cjs/ChartEditor.d.ts +3 -1
  8. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  9. package/dist/cjs/ChartEditor.js +2 -2
  10. package/dist/cjs/Dashboard.d.ts +8 -2
  11. package/dist/cjs/Dashboard.d.ts.map +1 -1
  12. package/dist/cjs/Dashboard.js +3 -3
  13. package/dist/cjs/ReportBuilder.d.ts +3 -1
  14. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  15. package/dist/cjs/ReportBuilder.js +22 -19
  16. package/dist/cjs/SQLEditor.d.ts +3 -1
  17. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  18. package/dist/cjs/SQLEditor.js +2 -2
  19. package/dist/cjs/components/Chart/BarChart.d.ts +2 -1
  20. package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
  21. package/dist/cjs/components/Chart/BarChart.js +2 -2
  22. package/dist/cjs/components/Chart/BarList.d.ts +1 -0
  23. package/dist/cjs/components/Chart/BarList.d.ts.map +1 -1
  24. package/dist/cjs/components/Chart/BarList.js +2 -2
  25. package/dist/cjs/components/Chart/LineChart.d.ts +2 -1
  26. package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
  27. package/dist/cjs/components/Chart/LineChart.js +2 -2
  28. package/dist/cjs/components/Chart/PieChart.d.ts +1 -0
  29. package/dist/cjs/components/Chart/PieChart.d.ts.map +1 -1
  30. package/dist/cjs/components/Chart/PieChart.js +2 -2
  31. package/dist/cjs/components/Dashboard/ChartComponent.d.ts +1 -1
  32. package/dist/cjs/components/Dashboard/ChartComponent.d.ts.map +1 -1
  33. package/dist/cjs/components/Dashboard/ChartComponent.js +1 -1
  34. package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  35. package/dist/cjs/components/ReportBuilder/AddColumnModal.js +6 -3
  36. package/dist/cjs/components/ReportBuilder/AddSortPopover.js +2 -2
  37. package/dist/cjs/components/ReportBuilder/bigDateMap.js +1 -1
  38. package/dist/cjs/components/ReportBuilder/util.js +8 -8
  39. package/dist/cjs/internals/ReportBuilder/PivotForm.js +3 -3
  40. package/dist/cjs/internals/ReportBuilder/PivotList.js +3 -3
  41. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +1 -1
  42. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  43. package/dist/cjs/internals/ReportBuilder/PivotModal.js +76 -34
  44. package/dist/cjs/utils/axisFormatter.d.ts.map +1 -1
  45. package/dist/cjs/utils/axisFormatter.js +16 -0
  46. package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
  47. package/dist/cjs/utils/columnProcessing.js +1 -0
  48. package/dist/cjs/utils/textProcessing.d.ts +1 -0
  49. package/dist/cjs/utils/textProcessing.d.ts.map +1 -1
  50. package/dist/cjs/utils/textProcessing.js +21 -1
  51. package/dist/cjs/utils/valueFormatter.d.ts.map +1 -1
  52. package/dist/cjs/utils/valueFormatter.js +15 -0
  53. package/dist/esm/Chart.d.ts +4 -0
  54. package/dist/esm/Chart.d.ts.map +1 -1
  55. package/dist/esm/Chart.js +27 -10
  56. package/dist/esm/ChartBuilder.d.ts +3 -1
  57. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  58. package/dist/esm/ChartBuilder.js +4 -4
  59. package/dist/esm/ChartEditor.d.ts +3 -1
  60. package/dist/esm/ChartEditor.d.ts.map +1 -1
  61. package/dist/esm/ChartEditor.js +2 -2
  62. package/dist/esm/Dashboard.d.ts +8 -2
  63. package/dist/esm/Dashboard.d.ts.map +1 -1
  64. package/dist/esm/Dashboard.js +3 -3
  65. package/dist/esm/ReportBuilder.d.ts +3 -1
  66. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  67. package/dist/esm/ReportBuilder.js +23 -20
  68. package/dist/esm/SQLEditor.d.ts +3 -1
  69. package/dist/esm/SQLEditor.d.ts.map +1 -1
  70. package/dist/esm/SQLEditor.js +2 -2
  71. package/dist/esm/components/Chart/BarChart.d.ts +2 -1
  72. package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
  73. package/dist/esm/components/Chart/BarChart.js +2 -2
  74. package/dist/esm/components/Chart/BarList.d.ts +1 -0
  75. package/dist/esm/components/Chart/BarList.d.ts.map +1 -1
  76. package/dist/esm/components/Chart/BarList.js +2 -2
  77. package/dist/esm/components/Chart/LineChart.d.ts +2 -1
  78. package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
  79. package/dist/esm/components/Chart/LineChart.js +2 -2
  80. package/dist/esm/components/Chart/PieChart.d.ts +1 -0
  81. package/dist/esm/components/Chart/PieChart.d.ts.map +1 -1
  82. package/dist/esm/components/Chart/PieChart.js +2 -2
  83. package/dist/esm/components/Dashboard/ChartComponent.d.ts +1 -1
  84. package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +1 -1
  85. package/dist/esm/components/Dashboard/ChartComponent.js +1 -1
  86. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  87. package/dist/esm/components/ReportBuilder/AddColumnModal.js +7 -4
  88. package/dist/esm/components/ReportBuilder/AddSortPopover.js +3 -3
  89. package/dist/esm/components/ReportBuilder/bigDateMap.js +2 -2
  90. package/dist/esm/components/ReportBuilder/util.js +9 -9
  91. package/dist/esm/internals/ReportBuilder/PivotForm.js +4 -4
  92. package/dist/esm/internals/ReportBuilder/PivotList.js +4 -4
  93. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +1 -1
  94. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  95. package/dist/esm/internals/ReportBuilder/PivotModal.js +77 -35
  96. package/dist/esm/utils/axisFormatter.d.ts.map +1 -1
  97. package/dist/esm/utils/axisFormatter.js +16 -0
  98. package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
  99. package/dist/esm/utils/columnProcessing.js +1 -0
  100. package/dist/esm/utils/textProcessing.d.ts +1 -0
  101. package/dist/esm/utils/textProcessing.d.ts.map +1 -1
  102. package/dist/esm/utils/textProcessing.js +19 -0
  103. package/dist/esm/utils/valueFormatter.d.ts.map +1 -1
  104. package/dist/esm/utils/valueFormatter.js +15 -0
  105. package/package.json +1 -1
@@ -20,21 +20,21 @@ function PivotForm({ pivotRowField, setPivotRowField, pivotColumnField, setPivot
20
20
  setPivotRowField(e.target.value === '' ? undefined : e.target.value);
21
21
  }, options: allowedRowFields.map((field) => {
22
22
  return {
23
- label: (0, textProcessing_1.snakeCaseToTitleCase)(field),
23
+ label: (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(field),
24
24
  value: field,
25
25
  };
26
26
  }), width: 200 }), (0, jsx_runtime_1.jsx)(SelectComponent, { id: "pivot-row-field", label: "Column field", value: pivotColumnField, onChange: (e) => {
27
27
  setPivotColumnField(e.target.value === '' ? undefined : e.target.value);
28
28
  }, options: allowedColumnFields.map((field) => {
29
29
  return {
30
- label: (0, textProcessing_1.snakeCaseToTitleCase)(field),
30
+ label: (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(field),
31
31
  value: field,
32
32
  };
33
33
  }), width: 200 }), (0, jsx_runtime_1.jsx)(SelectComponent, { id: "pivot-row-field", label: "Value field", value: pivotValueField, onChange: (e) => {
34
34
  setPivotValueField(e.target.value === '' ? undefined : e.target.value);
35
35
  }, options: allowedValueFields.map((field) => {
36
36
  return {
37
- label: (0, textProcessing_1.snakeCaseToTitleCase)(field),
37
+ label: (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(field),
38
38
  value: field,
39
39
  };
40
40
  }), width: 200 }), (0, jsx_runtime_1.jsx)(SelectComponent, { id: "pivot-row-field", label: "Aggregation type", value: pivotAggregation, onChange: (e) => {
@@ -30,14 +30,14 @@ const PivotCard = ({ pivotTable, theme, index, onSelectPivot, selectedPivotIndex
30
30
  textAlign: 'left',
31
31
  whiteSpace: 'nowrap',
32
32
  textOverflow: 'ellipsis',
33
- }, children: (0, jsx_runtime_1.jsx)(LabelComponent, { label: (0, textProcessing_1.snakeCaseToTitleCase)(pivotTable.pivot.rowField) }) }, pivotTable.pivot.rowField)), pivotTable.pivot.columnField && ((0, jsx_runtime_1.jsx)("th", { style: {
33
+ }, children: (0, jsx_runtime_1.jsx)(LabelComponent, { label: (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(pivotTable.pivot.rowField) }) }, pivotTable.pivot.rowField)), pivotTable.pivot.columnField && ((0, jsx_runtime_1.jsx)("th", { style: {
34
34
  fontWeight: 600,
35
35
  paddingRight: 5,
36
36
  flex: 1,
37
37
  textAlign: 'left',
38
38
  whiteSpace: 'nowrap',
39
39
  textOverflow: 'ellipsis',
40
- }, children: (0, jsx_runtime_1.jsx)(LabelComponent, { label: (0, textProcessing_1.snakeCaseToTitleCase)(pivotTable.pivot.columnField) }) }, pivotTable.pivot.columnField)), !pivotTable.pivot.columnField &&
40
+ }, children: (0, jsx_runtime_1.jsx)(LabelComponent, { label: (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(pivotTable.pivot.columnField) }) }, pivotTable.pivot.columnField)), !pivotTable.pivot.columnField &&
41
41
  pivotTable.pivot.valueField && ((0, jsx_runtime_1.jsx)("th", { style: {
42
42
  fontWeight: 600,
43
43
  paddingRight: 5,
@@ -45,7 +45,7 @@ const PivotCard = ({ pivotTable, theme, index, onSelectPivot, selectedPivotIndex
45
45
  textAlign: 'left',
46
46
  whiteSpace: 'nowrap',
47
47
  textOverflow: 'ellipsis',
48
- }, children: (0, jsx_runtime_1.jsx)(LabelComponent, { label: (0, textProcessing_1.snakeCaseToTitleCase)(pivotTable.pivot.valueField) }) }, pivotTable.pivot.valueField))] }) }), (0, jsx_runtime_1.jsx)("div", { style: {
48
+ }, children: (0, jsx_runtime_1.jsx)(LabelComponent, { label: (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(pivotTable.pivot.valueField) }) }, pivotTable.pivot.valueField))] }) }), (0, jsx_runtime_1.jsx)("div", { style: {
49
49
  paddingLeft: '2px',
50
50
  width: '100%',
51
51
  }, children: (0, jsx_runtime_1.jsx)(TextComponent, { label: 'No results' }) })] })) : ((0, jsx_runtime_1.jsxs)("table", { children: [(0, jsx_runtime_1.jsx)("thead", { children: (0, jsx_runtime_1.jsx)("tr", { children: pivotTable.columns.map((column) => ((0, jsx_runtime_1.jsx)("th", { style: {
@@ -104,7 +104,7 @@ export declare function generatePivotTable(pivot: Pivot, data: any, dateRange: {
104
104
  } | undefined, isComparison: boolean, rowLimit?: number, compRange?: {
105
105
  start: Date;
106
106
  end: Date;
107
- } | undefined): {
107
+ } | undefined, dateBucket?: string): {
108
108
  rows: any[];
109
109
  columns: {
110
110
  label: string;
@@ -1 +1 @@
1
- {"version":3,"file":"PivotModal.d.ts","sourceRoot":"","sources":["../../../../src/internals/ReportBuilder/PivotModal.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PivotModal.d.ts","sourceRoot":"","sources":["../../../../src/internals/ReportBuilder/PivotModal.tsx"],"names":[],"mappings":"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"}
@@ -295,7 +295,7 @@ const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivo
295
295
  allowedColumnFields,
296
296
  allowedRowFields,
297
297
  allowedValueFields,
298
- columns
298
+ columns,
299
299
  ]);
300
300
  const pivotFieldChange = async (field, value) => {
301
301
  setErrors([]);
@@ -405,7 +405,7 @@ const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivo
405
405
  : e.target.value);
406
406
  }, options: allowedRowFields.map((field) => {
407
407
  return {
408
- label: (0, textProcessing_1.snakeCaseToTitleCase)(field),
408
+ label: (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(field),
409
409
  value: field,
410
410
  };
411
411
  }), width: 200 }) }), (0, jsx_runtime_1.jsx)("div", { ref: colFieldRef, children: (0, jsx_runtime_1.jsx)(SelectComponent, { id: "pivot-row-field", label: "Column field", value: pivotColumnField, onChange: (e) => {
@@ -415,7 +415,7 @@ const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivo
415
415
  : e.target.value);
416
416
  }, options: allowedColumnFields.map((field) => {
417
417
  return {
418
- label: (0, textProcessing_1.snakeCaseToTitleCase)(field),
418
+ label: (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(field),
419
419
  value: field,
420
420
  };
421
421
  }), width: 200 }) })] }), (0, jsx_runtime_1.jsxs)(PivotRowContainer, { children: [(0, jsx_runtime_1.jsx)(SelectComponent, { id: "pivot-row-field", label: "Value field", value: pivotValueField, onChange: (e) => {
@@ -425,7 +425,7 @@ const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivo
425
425
  : e.target.value);
426
426
  }, options: allowedValueFields.map((field) => {
427
427
  return {
428
- label: (0, textProcessing_1.snakeCaseToTitleCase)(field),
428
+ label: (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(field),
429
429
  value: field,
430
430
  };
431
431
  }), width: 200 }), (0, jsx_runtime_1.jsx)(SelectComponent, { id: "pivot-row-field", label: "Aggregation type", value: pivotAggregation, onChange: (e) => {
@@ -525,14 +525,14 @@ function generatePivotTableYAxis(pivot, cols, format) {
525
525
  exports.generatePivotTableYAxis = generatePivotTableYAxis;
526
526
  function generatePivotTitle(pivot) {
527
527
  if (pivot.rowField && !pivot.valueField) {
528
- return (0, textProcessing_1.snakeCaseToTitleCase)(`${pivot.aggregationType} of ${pivot.rowField}
528
+ return (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(`${pivot.aggregationType} of ${pivot.rowField}
529
529
  `);
530
530
  }
531
531
  else if (pivot.valueField && !pivot.rowField) {
532
- return (0, textProcessing_1.snakeCaseToTitleCase)(`${pivot.aggregationType} of ${pivot.valueField}
532
+ return (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(`${pivot.aggregationType} of ${pivot.valueField}
533
533
  `);
534
534
  }
535
- return (0, textProcessing_1.snakeCaseToTitleCase)(`${pivot.aggregationType} of ${pivot.valueField} by ${pivot.rowField}${pivot.columnField ? ` and ${pivot.columnField}` : ''}`);
535
+ return (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(`${pivot.aggregationType} of ${pivot.valueField} by ${pivot.rowField}${pivot.columnField ? ` and ${pivot.columnField}` : ''}`);
536
536
  }
537
537
  exports.generatePivotTitle = generatePivotTitle;
538
538
  function castValueToDate(value) {
@@ -606,10 +606,30 @@ function getDateRange(dateRange, column, data) {
606
606
  return dateRange;
607
607
  }
608
608
  }
609
- function getDateBuckets(dateRange, column, data) {
609
+ function determineIntervalThroughOverride(dateBucket, dateRange) {
610
+ switch (dateBucket) {
611
+ case 'day':
612
+ return (0, date_fns_1.eachDayOfInterval)(dateRange);
613
+ case 'week':
614
+ return (0, date_fns_1.eachWeekOfInterval)(dateRange, { weekStartsOn: 1 });
615
+ case 'month':
616
+ return (0, date_fns_1.eachMonthOfInterval)(dateRange);
617
+ case 'year':
618
+ return (0, date_fns_1.eachYearOfInterval)(dateRange);
619
+ default:
620
+ return (0, date_fns_1.eachMonthOfInterval)(dateRange);
621
+ }
622
+ }
623
+ function getDateBuckets(dateRange, column, data, dateBucket) {
610
624
  if (!dateRange) {
625
+ if (dateBucket) {
626
+ return determineIntervalThroughOverride(dateBucket, getDateRange(undefined, column, data));
627
+ }
611
628
  return (0, date_fns_1.eachMonthOfInterval)(getDateRange(dateRange, column, data));
612
629
  }
630
+ if (dateBucket) {
631
+ return determineIntervalThroughOverride(dateBucket, dateRange);
632
+ }
613
633
  const dayDifference = (0, date_fns_1.differenceInDays)(dateRange.end, dateRange.start);
614
634
  return dayDifferenceToInterval(dayDifference, dateRange);
615
635
  }
@@ -634,24 +654,45 @@ function dayDifferenceToInterval(dayDifference, dateRange) {
634
654
  return (0, date_fns_1.eachYearOfInterval)(dateRange);
635
655
  }
636
656
  }
637
- function getDateString(value, dateRange) {
657
+ function getDateString(value, dateRange, dateBucket) {
638
658
  let format;
639
- if (!dateRange || !dateRange[0]) {
640
- format = 'MMM_yyyy';
659
+ if (dateBucket) {
660
+ switch (dateBucket) {
661
+ case 'day':
662
+ format = 'MMM_dd';
663
+ break;
664
+ case 'week':
665
+ format = 'MMM_dd-MMM_dd';
666
+ break;
667
+ case 'month':
668
+ format = 'MMM_yyyy';
669
+ break;
670
+ case 'year':
671
+ format = 'yyyy';
672
+ break;
673
+ default:
674
+ format = 'MMM_yyyy';
675
+ break;
676
+ }
641
677
  }
642
678
  else {
643
- const dayDifference = (0, date_fns_1.differenceInDays)(new Date(dateRange[1]), new Date(dateRange[0]));
644
- if (dayDifference < 14) {
645
- format = 'MMM_dd_yyyy';
646
- }
647
- else if (dayDifference < 60) {
648
- format = 'MMM_dd-MMM_dd';
649
- }
650
- else if (dayDifference < 365 * 3) {
679
+ if (!dateRange) {
651
680
  format = 'MMM_yyyy';
652
681
  }
653
682
  else {
654
- format = 'yyyy';
683
+ const dayDifference = (0, date_fns_1.differenceInDays)(new Date(dateRange.end), new Date(dateRange.start));
684
+ if (dayDifference < 14) {
685
+ format = 'MMM_dd_yyyy';
686
+ }
687
+ else if (dayDifference < 60) {
688
+ format = 'MMM_dd-MMM_dd';
689
+ }
690
+ else if (dayDifference < 365 * 3) {
691
+ format = 'MMM_yyyy';
692
+ }
693
+ else {
694
+ format = 'yyyy';
695
+ }
655
696
  }
656
697
  }
657
698
  return (0, valueFormatter_1.valueFormatter)({
@@ -697,7 +738,7 @@ const fixBigQueryData = (data = []) => {
697
738
  }
698
739
  return newData;
699
740
  };
700
- function generatePivotTable(pivot, data, dateRange, isComparison, rowLimit = -1, compRange = undefined) {
741
+ function generatePivotTable(pivot, data, dateRange, isComparison, rowLimit = -1, compRange = undefined, dateBucket) {
701
742
  // If there is no rowField, aggregate on the valueField
702
743
  if (!pivot.rowField) {
703
744
  return valueFieldAggregation(data, pivot.valueField, pivot.aggregationType, isComparison);
@@ -716,7 +757,7 @@ function generatePivotTable(pivot, data, dateRange, isComparison, rowLimit = -1,
716
757
  }
717
758
  const pivotRows = [];
718
759
  const uniqueRows = (isDateField(pivot.rowFieldType)
719
- ? getDateBuckets(dateRange, pivot.rowField, data)
760
+ ? getDateBuckets(dateRange, pivot.rowField, data, dateBucket)
720
761
  : [...new Set(data.map((item) => item[pivot.rowField]))]).filter((row) => Boolean(row));
721
762
  const rowDateRange = getDateRange(dateRange, pivot.rowField, data);
722
763
  const compRowDateRange = getDateRange(compRange ?? dateRange, pivot.rowField, data);
@@ -724,7 +765,7 @@ function generatePivotTable(pivot, data, dateRange, isComparison, rowLimit = -1,
724
765
  // @ts-ignore
725
766
  const uniqueColumns = (pivot.columnField
726
767
  ? isDateField(pivot.columnFieldType || '')
727
- ? getDateBuckets(dateRange, pivot.columnField, data)
768
+ ? getDateBuckets(dateRange, pivot.columnField, data, dateBucket)
728
769
  : [...new Set(data.map((item) => item[pivot.columnField || '']))]
729
770
  : [pivot.valueField]).filter((col) => Boolean(col));
730
771
  // Map from new dates to their corresponding prior dates
@@ -741,12 +782,12 @@ function generatePivotTable(pivot, data, dateRange, isComparison, rowLimit = -1,
741
782
  data.forEach((item) => {
742
783
  if (isDateCol) {
743
784
  const key = getDateString(item[col], dateRange);
744
- const value = getDateString(item[`comparison_${col}`], dateRange);
785
+ const value = getDateString(item[`comparison_${col}`], dateRange, dateBucket);
745
786
  COL_DATE_MAP[key] = value;
746
787
  }
747
788
  if (isDateRow) {
748
789
  const key = getDateString(item[row], dateRange);
749
- const value = getDateString(item[`comparison_${row}`], dateRange);
790
+ const value = getDateString(item[`comparison_${row}`], dateRange, dateBucket);
750
791
  ROW_DATE_MAP[key] = value;
751
792
  }
752
793
  });
@@ -776,7 +817,7 @@ function generatePivotTable(pivot, data, dateRange, isComparison, rowLimit = -1,
776
817
  rowsToGenerate.forEach((rowValue, rowIndex) => {
777
818
  const row = {
778
819
  [pivot.rowField]: isDateField(pivot.rowFieldType)
779
- ? getDateString(rowValue, dateRange)
820
+ ? getDateString(rowValue, dateRange, dateBucket)
780
821
  : rowValue === null
781
822
  ? 'Null'
782
823
  : rowValue === false
@@ -981,12 +1022,14 @@ function generatePivotTable(pivot, data, dateRange, isComparison, rowLimit = -1,
981
1022
  });
982
1023
  const columns = [
983
1024
  {
984
- label: pivot.rowField === null ? 'Null' : (0, textProcessing_1.snakeCaseToTitleCase)(pivot.rowField),
1025
+ label: pivot.rowField === null
1026
+ ? 'Null'
1027
+ : (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(pivot.rowField),
985
1028
  field: pivot.rowField,
986
1029
  },
987
1030
  ...uniqueColumns.map((column, index) => {
988
1031
  const columnName = isDateField(pivot.columnFieldType || '')
989
- ? getDateString(column, dateRange)
1032
+ ? getDateString(column, dateRange, dateBucket)
990
1033
  : column;
991
1034
  return {
992
1035
  label: column === null
@@ -997,14 +1040,14 @@ function generatePivotTable(pivot, data, dateRange, isComparison, rowLimit = -1,
997
1040
  !pivot.columnField &&
998
1041
  index === 1
999
1042
  ? 'Count'
1000
- : (0, textProcessing_1.snakeCaseToTitleCase)(columnName),
1043
+ : (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(columnName),
1001
1044
  field: columnName,
1002
1045
  };
1003
1046
  }),
1004
1047
  ...(isComparison && pivot.columnField
1005
1048
  ? uniqueColumns.map((column, index) => {
1006
1049
  const columnName = isDateField(pivot.columnFieldType || '')
1007
- ? getDateString(column, dateRange)
1050
+ ? getDateString(column, dateRange, dateBucket)
1008
1051
  : column;
1009
1052
  return {
1010
1053
  label: column === null
@@ -1016,9 +1059,8 @@ function generatePivotTable(pivot, data, dateRange, isComparison, rowLimit = -1,
1016
1059
  index === 1
1017
1060
  ? 'Comparison Count'
1018
1061
  : isDateField(pivot.columnFieldType || '')
1019
- ? COL_DATE_MAP[getDateString(column, dateRange)] ??
1020
- 'Comparison'
1021
- : `comparison ${(0, textProcessing_1.snakeCaseToTitleCase)(columnName)}`,
1062
+ ? COL_DATE_MAP[getDateString(column, dateRange, dateBucket)] ?? 'Comparison'
1063
+ : `comparison ${(0, textProcessing_1.snakeAndCamelCaseToTitleCase)(columnName)}`,
1022
1064
  field: `comparison_${columnName}`,
1023
1065
  };
1024
1066
  })
@@ -1101,6 +1143,6 @@ function valueFieldAggregation(data, valueField, aggregationType, isComparison)
1101
1143
  }
1102
1144
  return {
1103
1145
  rows: [row],
1104
- columns: [{ label: (0, textProcessing_1.snakeCaseToTitleCase)(valueField), field: valueField }],
1146
+ columns: [{ label: (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(valueField), field: valueField }],
1105
1147
  };
1106
1148
  }
@@ -1 +1 @@
1
- {"version":3,"file":"axisFormatter.d.ts","sourceRoot":"","sources":["../../../src/utils/axisFormatter.ts"],"names":[],"mappings":"AAGA,KAAK,KAAK,GAAG;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,CAAC;CACnB,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,8BAIvB,KAAK,KAAG,MAAM,GAAG,MAAM,GAAG,OA8B5B,CAAC"}
1
+ {"version":3,"file":"axisFormatter.d.ts","sourceRoot":"","sources":["../../../src/utils/axisFormatter.ts"],"names":[],"mappings":"AAGA,KAAK,KAAK,GAAG;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,CAAC;CACnB,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,8BAIvB,KAAK,KAAG,MAAM,GAAG,MAAM,GAAG,OAgC5B,CAAC"}
@@ -27,7 +27,9 @@ const axisFormatter = ({ value, field, fields, }) => {
27
27
  string: formatString,
28
28
  yyyy: format_YYYY,
29
29
  MMM_yyyy: format_MMM_yyyy,
30
+ MMM_dd: format_MMM_dd,
30
31
  MMM_dd_yyyy: format_MMM_dd_yyyy,
32
+ MMM_ww_yyyy: format_MMM_ww_yyyy,
31
33
  hh_ap_pm: format_hh_ap_pm,
32
34
  'MMM_dd-MMM_dd': format_MMM_dd_MMM_dd,
33
35
  'MMM_dd_hh:mm_ap_pm': format_MMM_dd_hh_mm_ap_pm,
@@ -205,6 +207,7 @@ const _getUTCDateHelper = (value, fmt) => {
205
207
  return (0, date_fns_1.format)(utcDate, fmt);
206
208
  };
207
209
  const format_YYYY = (value) => _getUTCDateHelper(value, 'yyyy');
210
+ const format_MMM_dd = (value) => _getUTCDateHelper(value, 'dd MMM');
208
211
  const format_MMM_yyyy = (value) => _getUTCDateHelper(value, 'MMM yyyy');
209
212
  const format_hh_ap_pm = (value) => _getUTCDateHelper(value, 'hh:mm aa');
210
213
  const format_MMM_dd_yyyy = (value) => _getUTCDateHelper(value, 'dd MMM yyyy');
@@ -222,6 +225,19 @@ const format_MMM_dd_MMM_dd = (value) => {
222
225
  return `${(0, date_fns_1.format)(monday, 'MMM dd')} - ${(0, date_fns_1.format)(sunday, 'MMM dd')}`;
223
226
  }
224
227
  };
228
+ const format_MMM_ww_yyyy = (value) => {
229
+ const utcDate = (0, date_fns_tz_1.utcToZonedTime)(new Date(value), 'UTC');
230
+ if (!(0, date_fns_1.isValid)(utcDate))
231
+ return 'Invalid date';
232
+ const currentDate = new Date();
233
+ const startOfWeekDate = (0, date_fns_1.startOfWeek)(utcDate, { weekStartsOn: 1 });
234
+ const endOfWeekDate = (0, date_fns_1.endOfWeek)(utcDate, { weekStartsOn: 1 });
235
+ const month = (0, date_fns_1.format)(utcDate, 'MMM');
236
+ const startDay = (0, date_fns_1.format)(startOfWeekDate, 'd');
237
+ const endDay = (0, date_fns_1.format)(endOfWeekDate, 'd');
238
+ const year = (0, date_fns_1.format)(utcDate, 'yyyy');
239
+ return `${month}, ${startDay}-${endDay}, ${year}`;
240
+ };
225
241
  const format_MMM_dd_hh_mm_ap_pm = (value) => {
226
242
  const utcDate = (0, date_fns_tz_1.utcToZonedTime)(new Date(value), 'UTC');
227
243
  if (!(0, date_fns_1.isValid)(utcDate))
@@ -1 +1 @@
1
- {"version":3,"file":"columnProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/columnProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE3D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,cAAc,CAyGjB;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,UAAU,GACrB,cAAc,CAShB;AA0DD,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAqBlE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAY5D"}
1
+ {"version":3,"file":"columnProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/columnProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAE3D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,cAAc,CAyGjB;AAED,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,UAAU,GACrB,cAAc,CAShB;AA0DD,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAsBlE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAY5D"}
@@ -187,6 +187,7 @@ function convertFieldTypeToJSType(fieldType) {
187
187
  return 'date';
188
188
  case 'interval':
189
189
  case 'varchar':
190
+ case 'text':
190
191
  default:
191
192
  return 'string';
192
193
  }
@@ -1,5 +1,6 @@
1
1
  export declare function capitalize(text: string): string;
2
2
  export declare function depluralize(text: string): string;
3
3
  export declare function snakeCaseToTitleCase(str: string): string;
4
+ export declare function snakeAndCamelCaseToTitleCase(str: string): string;
4
5
  export declare function removeDoubleQuotes(str: string): string;
5
6
  //# sourceMappingURL=textProcessing.d.ts.map
@@ -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,oBAAoB,CAAC,GAAG,EAAE,MAAM,UAa/C;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,oBAAoB,CAAC,GAAG,EAAE,MAAM,UAa/C;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,UAiBvD;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,UAK7C"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.removeDoubleQuotes = exports.snakeCaseToTitleCase = exports.depluralize = exports.capitalize = void 0;
3
+ exports.removeDoubleQuotes = exports.snakeAndCamelCaseToTitleCase = exports.snakeCaseToTitleCase = exports.depluralize = exports.capitalize = void 0;
4
4
  function capitalize(text) {
5
5
  return text.charAt(0).toUpperCase() + text.slice(1);
6
6
  }
@@ -28,6 +28,26 @@ function snakeCaseToTitleCase(str) {
28
28
  .join(' ');
29
29
  }
30
30
  exports.snakeCaseToTitleCase = snakeCaseToTitleCase;
31
+ function snakeAndCamelCaseToTitleCase(str) {
32
+ if (!str) {
33
+ return str;
34
+ }
35
+ if (str.includes('_')) {
36
+ return str
37
+ .split(/_| /)
38
+ .map((word) => (word === 'id' ? 'ID' : capitalize(word)))
39
+ .join(' ');
40
+ }
41
+ else {
42
+ const text = str.replace(/([a-z])([A-Z])/g, '$1 $2');
43
+ const newText = text
44
+ .split(' ')
45
+ .map((word) => (word === 'Id' || word === 'id' ? 'ID' : capitalize(word)))
46
+ .join(' ');
47
+ return newText;
48
+ }
49
+ }
50
+ exports.snakeAndCamelCaseToTitleCase = snakeAndCamelCaseToTitleCase;
31
51
  function removeDoubleQuotes(str) {
32
52
  if (!str) {
33
53
  return str;
@@ -1 +1 @@
1
- {"version":3,"file":"valueFormatter.d.ts","sourceRoot":"","sources":["../../../src/utils/valueFormatter.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,KAAK,GAAG;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,GAAG,CAAC;IACX,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAQ7B,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAM/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,6BAA8B,KAAK,KAAG,MAwChE,CAAC;AAEF,eAAO,MAAM,WAAW;WAIf,GAAG;YACF,MAAM;MACZ,MAwCH,CAAC;AAoMF,eAAO,MAAM,aAAa;;;;WAGhB,MAAM,KACb,MAkDF,CAAC"}
1
+ {"version":3,"file":"valueFormatter.d.ts","sourceRoot":"","sources":["../../../src/utils/valueFormatter.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,KAAK,GAAG;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,GAAG,CAAC;IACX,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAQ7B,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAM/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,6BAA8B,KAAK,KAAG,MA0ChE,CAAC;AAEF,eAAO,MAAM,WAAW;WAIf,GAAG;YACF,MAAM;MACZ,MAwCH,CAAC;AAiNF,eAAO,MAAM,aAAa;;;;WAGhB,MAAM,KACb,MAkDF,CAAC"}
@@ -39,8 +39,10 @@ const valueFormatter = ({ value, field, fields }) => {
39
39
  two_decimal_places: formatTwoDecimalPlaces,
40
40
  string: formatString,
41
41
  yyyy: format_YYYY,
42
+ MMM_dd: format_MMM_dd,
42
43
  MMM_yyyy: format_MMM_yyyy,
43
44
  MMM_dd_yyyy: format_MMM_dd_yyyy,
45
+ MMM_ww_yyyy: format_MMM_ww_yyyy,
44
46
  hh_ap_pm: format_hh_ap_pm,
45
47
  'MMM_dd-MMM_dd': format_MMM_dd_MMM_dd,
46
48
  'MMM_dd_hh:mm_ap_pm': format_MMM_dd_hh_mm_ap_pm,
@@ -238,6 +240,19 @@ const format_wo_yyyy = (value) => {
238
240
  return 'Invalid date';
239
241
  return `${(0, date_fns_1.getWeek)(utcDate)},${utcDate.getFullYear()}`;
240
242
  };
243
+ const format_MMM_ww_yyyy = (value) => {
244
+ const utcDate = (0, date_fns_tz_1.utcToZonedTime)(new Date(value), 'UTC');
245
+ if (!(0, date_fns_1.isValid)(utcDate))
246
+ return 'Invalid date';
247
+ const currentDate = new Date();
248
+ const startOfWeekDate = (0, date_fns_1.startOfWeek)(utcDate, { weekStartsOn: 1 });
249
+ const endOfWeekDate = (0, date_fns_1.endOfWeek)(utcDate, { weekStartsOn: 1 });
250
+ const month = (0, date_fns_1.format)(utcDate, 'MMM');
251
+ const startDay = (0, date_fns_1.format)(startOfWeekDate, 'd');
252
+ const endDay = (0, date_fns_1.format)(endOfWeekDate, 'd');
253
+ const year = (0, date_fns_1.format)(utcDate, 'yyyy');
254
+ return `${month}, ${startDay}-${endDay}, ${year}`;
255
+ };
241
256
  /**
242
257
  * Parses a numeric string back into a number, taking into account that
243
258
  * users in different locales will format numbers differently (eg. 1,234 means
@@ -131,6 +131,10 @@ export interface ChartProps {
131
131
  containerStyle?: React.CSSProperties;
132
132
  /** An array of dashboard filters that are indicated by the frontend dev. */
133
133
  filters?: Filter[];
134
+ /** A callback function that process specific chart element clicks */
135
+ onClickChartElement?: (data: any) => void;
136
+ /** An override for the pivot date bucketing. */
137
+ dateBucket?: string;
134
138
  }
135
139
  /**
136
140
  * ### Quill Chart
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/Chart.tsx"],"names":[],"mappings":";AAaA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAe7C,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AA0GzC,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,WAQhE;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC,CAAC;CACH,CAAC;AAeF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,WAAW,GAAG,GAAG,CAAC;IAE3B;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;IAEtC;;OAEG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IAEpC;;OAEG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAEzC;;OAEG;IACH,sBAAsB,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAE5C;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,KAAK,YAAY,CAAC;IAE7E;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAErC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAErC,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,QAAA,MAAM,KAAK,UAAW,UAAU,4CA8C/B,CAAC;AA4wBF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/Chart.tsx"],"names":[],"mappings":";AAaA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAe7C,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AA2GzC,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,WAQhE;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC,CAAC;CACH,CAAC;AAeF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,WAAW,GAAG,GAAG,CAAC;IAE3B;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;IAEtC;;OAEG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;IAEpC;;OAEG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAEzC;;OAEG;IACH,sBAAsB,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAE5C;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,KAAK,YAAY,CAAC;IAE7E;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAErC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAErC,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,qEAAqE;IACrE,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAE1C,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,QAAA,MAAM,KAAK,UAAW,UAAU,4CA+C/B,CAAC;AAwyBF,eAAe,KAAK,CAAC"}
package/dist/esm/Chart.js CHANGED
@@ -105,7 +105,7 @@ const Chart = (props) => {
105
105
  let data = props;
106
106
  if ('config' in data) {
107
107
  const isLoading = Boolean(!data.config);
108
- return (_jsx(ChartDisplay, { ...data, error: isLoading || data.config?.rows ? undefined : 'No rows found', loading: isLoading, isComparison: Boolean(data?.config?.compareRows?.length) }));
108
+ return (_jsx(ChartDisplay, { ...data, error: isLoading || data.config?.rows ? undefined : 'No rows found', loading: isLoading, isComparison: Boolean(data?.config?.compareRows?.length), onClickChartElement: props.onClickChartElement }));
109
109
  }
110
110
  const theme = useTheme();
111
111
  const chartColors = useMemo(() => {
@@ -117,7 +117,7 @@ const Chart = (props) => {
117
117
  }, [data.colors]);
118
118
  return (_jsx(ChartUpdater, { reportId: data.reportId, className: data.className, containerStyle: data.containerStyle, colors: chartColors, isAnimationActive: data.isAnimationActive, hideXAxis: data.hideXAxis, hideYAxis: data.hideYAxis, hideCartesianGrid: data.hideCartesianGrid, hideHorizontalCartesianGrid: data.hideHorizontalCartesianGrid, hideVerticalCartesianGrid: data.hideVerticalCartesianGrid, hideSubsequentXAxisTicks: data.hideSubsequentXAxisTicks, hideDateRangeFilter: data.hideDateRangeFilter, cartesianGridLineStyle: data.cartesianGridLineStyle, cartesianGridLineColor: data.cartesianGridLineColor, comparisonLineStyle: data.comparisonLineStyle, mapColorsToFields: data.mapColorsToFields ?? fallbackMapColorsToFields, LoadingComponent: data.LoadingComponent, filters: data.filters }));
119
119
  };
120
- const ChartUpdater = ({ colors, reportId, className, containerStyle, isAnimationActive, hideXAxis, hideYAxis, hideCartesianGrid, hideHorizontalCartesianGrid = false, hideVerticalCartesianGrid = true, hideSubsequentXAxisTicks = false, cartesianGridLineStyle = 'solid', cartesianGridLineColor, comparisonLineStyle, hideDateRangeFilter = false, mapColorsToFields, LoadingComponent = QuillLoadingSkeleton, filters, }) => {
120
+ const ChartUpdater = ({ colors, reportId, className, containerStyle, isAnimationActive, hideXAxis, hideYAxis, hideCartesianGrid, hideHorizontalCartesianGrid = false, hideVerticalCartesianGrid = true, hideSubsequentXAxisTicks = false, cartesianGridLineStyle = 'solid', cartesianGridLineColor, comparisonLineStyle, hideDateRangeFilter = false, mapColorsToFields, LoadingComponent = QuillLoadingSkeleton, filters, onClickChartElement, }) => {
121
121
  const { dispatch, dashboard } = useContext(DashboardContext);
122
122
  const { dashboardFilters } = useContext(DashboardFiltersContext);
123
123
  const [initialLoad, setInitialLoad] = useState(true);
@@ -308,9 +308,9 @@ const ChartUpdater = ({ colors, reportId, className, containerStyle, isAnimation
308
308
  setInitialLoad(false);
309
309
  getChartData();
310
310
  }, [dashboardFilters, client, reportId]);
311
- return (_jsx(ChartDisplay, { config: dashboard[reportId], reportId: reportId, colors: colors, className: className, containerStyle: containerStyle, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid, hideHorizontalCartesianGrid: hideHorizontalCartesianGrid, hideVerticalCartesianGrid: hideVerticalCartesianGrid, hideSubsequentXAxisTicks: hideSubsequentXAxisTicks, cartesianGridLineStyle: cartesianGridLineStyle, cartesianGridLineColor: cartesianGridLineColor, hideDateRangeFilter: hideDateRangeFilter, comparisonLineStyle: comparisonLineStyle, isAnimationActive: isAnimationActive, isComparison: isComparison, loading: loading || initialLoad, paginating: paginating, error: error, colorMap: colorMap, LoadingComponent: LoadingComponent, onPageChange: onPageChange, onSortChange: onSortChange }));
311
+ return (_jsx(ChartDisplay, { config: dashboard[reportId], reportId: reportId, colors: colors, className: className, containerStyle: containerStyle, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid, hideHorizontalCartesianGrid: hideHorizontalCartesianGrid, hideVerticalCartesianGrid: hideVerticalCartesianGrid, hideSubsequentXAxisTicks: hideSubsequentXAxisTicks, cartesianGridLineStyle: cartesianGridLineStyle, cartesianGridLineColor: cartesianGridLineColor, hideDateRangeFilter: hideDateRangeFilter, comparisonLineStyle: comparisonLineStyle, isAnimationActive: isAnimationActive, isComparison: isComparison, loading: loading || initialLoad, paginating: paginating, error: error, colorMap: colorMap, LoadingComponent: LoadingComponent, onPageChange: onPageChange, onSortChange: onSortChange, onClickChartElement: onClickChartElement }));
312
312
  };
313
- const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hideXAxis, hideYAxis, hideCartesianGrid, hideDateRangeFilter = false, hideHorizontalCartesianGrid = false, hideVerticalCartesianGrid = true, hideSubsequentXAxisTicks = false, cartesianGridLineStyle = 'solid', cartesianGridLineColor, comparisonLineStyle, isAnimationActive, loading = false, paginating = false, error = undefined, isComparison = false, colorMap, LoadingComponent = QuillLoadingSkeleton, onPageChange, onSortChange, }) => {
313
+ const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hideXAxis, hideYAxis, hideCartesianGrid, hideDateRangeFilter = false, hideHorizontalCartesianGrid = false, hideVerticalCartesianGrid = true, hideSubsequentXAxisTicks = false, cartesianGridLineStyle = 'solid', cartesianGridLineColor, comparisonLineStyle, isAnimationActive, loading = false, paginating = false, error = undefined, isComparison = false, colorMap, LoadingComponent = QuillLoadingSkeleton, onPageChange, onSortChange, onClickChartElement, dateBucket, }) => {
314
314
  const { dashboardFilters } = useContext(DashboardFiltersContext);
315
315
  const { downloadCSV } = useExport(reportId);
316
316
  const theme = useTheme();
@@ -337,9 +337,9 @@ const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hid
337
337
  start: dateFilter.comparisonRange.startDate,
338
338
  end: dateFilter.comparisonRange.endDate,
339
339
  }
340
- : undefined)
340
+ : undefined, dateBucket)
341
341
  : null;
342
- }, [config?.pivot]);
342
+ }, [config?.pivot, dateBucket]);
343
343
  const pivotTableYAxis = useMemo(() => {
344
344
  if (!pivotTable) {
345
345
  return null;
@@ -375,7 +375,7 @@ const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hid
375
375
  count: parseInt(row[yAxisFields[0].field]) /
376
376
  sumByKey(rows, yAxisFields[0].field),
377
377
  };
378
- }), category: yAxisFields[0].field, index: xAxisField, colors: chartColors, theme: theme, colorMap: colorMap }));
378
+ }), category: yAxisFields[0].field, index: xAxisField, colors: chartColors, theme: theme, colorMap: colorMap, onClickChartElement: onClickChartElement }));
379
379
  }
380
380
  if (chartTypes.includes('table')) {
381
381
  const data = config;
@@ -432,7 +432,7 @@ const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hid
432
432
  }, isLoading: paginating }));
433
433
  }
434
434
  if (chartTypes.includes('bar')) {
435
- return (_jsx(BarList, { data: pivotTable ? pivotTable.rows : config.rows, theme: theme, yAxisFields: pivotTableYAxis ? pivotTableYAxis : config.yAxisFields, colors: chartColors, xAxisField: config.xAxisField, xAxisFormat: config.xAxisFormat, containerStyle: containerStyle, className: className, colorMap: colorMap }));
435
+ return (_jsx(BarList, { data: pivotTable ? pivotTable.rows : config.rows, theme: theme, yAxisFields: pivotTableYAxis ? pivotTableYAxis : config.yAxisFields, colors: chartColors, xAxisField: config.xAxisField, xAxisFormat: config.xAxisFormat, containerStyle: containerStyle, className: className, colorMap: colorMap, onClickChartElement: onClickChartElement }));
436
436
  }
437
437
  const yAxisFields = pivotTableYAxis
438
438
  ? pivotTableYAxis
@@ -463,7 +463,24 @@ const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hid
463
463
  const yAxis = yAxisFields[0]?.field;
464
464
  barChartData = [{ [xAxis]: '', [yAxis]: '0' }];
465
465
  }
466
- return (_jsx(BarChart, { colors: chartColors, theme: theme, isStacked: isPivot && yAxisFields.length > (dateFilter?.comparison ? 2 : 1), yAxisFields: yAxisFields, data: barChartData, xAxisField: config.xAxisField, xAxisLabel: config.xAxisLabel, xAxisFormat: config.xAxisFormat, containerStyle: containerStyle, className: className, comparison: dateFilter?.comparison, isAnimationActive: isAnimationActive, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid, colorMap: colorMap }));
466
+ let xAxisFormat = config.xAxisFormat;
467
+ if (dateBucket) {
468
+ switch (dateBucket) {
469
+ case 'day':
470
+ xAxisFormat = 'MMM_dd';
471
+ break;
472
+ case 'week':
473
+ xAxisFormat = 'string';
474
+ break;
475
+ case 'month':
476
+ xAxisFormat = 'MMM_yyyy';
477
+ break;
478
+ default:
479
+ xAxisFormat = 'MMM_yyyy';
480
+ break;
481
+ }
482
+ }
483
+ return (_jsx(BarChart, { colors: chartColors, theme: theme, isStacked: isPivot && yAxisFields.length > (dateFilter?.comparison ? 2 : 1), yAxisFields: yAxisFields, data: barChartData, xAxisField: config.xAxisField, xAxisLabel: config.xAxisLabel, xAxisFormat: xAxisFormat, containerStyle: containerStyle, className: className, comparison: dateFilter?.comparison, isAnimationActive: isAnimationActive, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid, colorMap: colorMap, onClickChartElement: onClickChartElement }));
467
484
  }
468
485
  if (chartTypes.includes('metric')) {
469
486
  const data = config;
@@ -582,7 +599,7 @@ const ChartDisplay = ({ reportId, config, colors, className, containerStyle, hid
582
599
  { [xAxis]: endDate, [yAxis]: '0' },
583
600
  ];
584
601
  }
585
- return (_jsx(LineChart, { colors: chartColors, colorMap: colorMap, yAxisFields: yAxisFields.sort(sortComparisonFirst), data: lineChartData, xAxisField: config.xAxisField, xAxisLabel: config.xAxisLabel, xAxisFormat: config.xAxisFormat, containerStyle: containerStyle, className: className, theme: theme, comparison: dateFilter?.comparison, isAnimationActive: isAnimationActive, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid, hideHorizontalCartesianGrid: hideHorizontalCartesianGrid, hideVerticalCartesianGrid: hideVerticalCartesianGrid, hideSubsequentXAxisTicks: hideSubsequentXAxisTicks, cartesianGridLineStyle: cartesianGridLineStyle ?? 'solid', comparisonLineStyle: comparisonLineStyle ?? 'solid', cartesianGridLineColor: cartesianGridLineColor }));
602
+ return (_jsx(LineChart, { colors: chartColors, colorMap: colorMap, yAxisFields: yAxisFields.sort(sortComparisonFirst), data: lineChartData, xAxisField: config.xAxisField, xAxisLabel: config.xAxisLabel, xAxisFormat: config.xAxisFormat, containerStyle: containerStyle, className: className, theme: theme, comparison: dateFilter?.comparison, isAnimationActive: isAnimationActive, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid, hideHorizontalCartesianGrid: hideHorizontalCartesianGrid, hideVerticalCartesianGrid: hideVerticalCartesianGrid, hideSubsequentXAxisTicks: hideSubsequentXAxisTicks, cartesianGridLineStyle: cartesianGridLineStyle ?? 'solid', comparisonLineStyle: comparisonLineStyle ?? 'solid', cartesianGridLineColor: cartesianGridLineColor, onClickChartElement: onClickChartElement }));
586
603
  };
587
604
  // Sort to put comparison first (ie. underneath) primary.
588
605
  const sortComparisonFirst = (a, b) => {
@@ -260,6 +260,8 @@ export interface ChartBuilderProps {
260
260
  numberOfRows?: number;
261
261
  /** Loading prop used by the table component */
262
262
  isLoading?: boolean;
263
+ /** A callback function triggered when a chart element is clicked */
264
+ onClickChartElement?: (data: any) => void;
263
265
  }
264
266
  /**
265
267
  * ### Quill Chart Builder with Modal
@@ -309,7 +311,7 @@ export declare function ChartBuilderWithModal(props: ChartBuilderProps): import(
309
311
  * ### Chart Builder API
310
312
  * @see https://docs.quillsql.com/components/chart-builder
311
313
  */
312
- export default function ChartBuilder({ TextInputComponent, SelectComponent, ButtonComponent, SecondaryButtonComponent, HeaderComponent, SubHeaderComponent, LabelComponent, DeleteButtonComponent, TextComponent, PopoverComponent, CardComponent, TableComponent, ModalComponent, LoadingComponent, ErrorMessageComponent, ChartBuilderInputRowContainer, ChartBuilderInputColumnContainer, PivotRowContainer, PivotColumnContainer, FormContainer, isOpen, isHorizontalView, pivot, setIsOpen, rows, columns, query, queryNoDateColumn, dateRange: dr, showTableFormatOptions, showDateFieldOptions, showAccessControlOptions, showDashboardDropdown, onAddToDashboardComplete, onDelete, report, recommendedPivots: rp, createdPivots: cp, destinationDashboard, dateColumn, buttonLabel, organizationName, pivotData, hideDeleteButton, hideSubmitButton, hideDateRangeFilter, initialUniqueValues, pivotRecommendationsEnabled, onSortChange, onPageChange, numberOfRows, isLoading, }: ChartBuilderProps): import("react/jsx-runtime").JSX.Element | null;
314
+ export default function ChartBuilder({ TextInputComponent, SelectComponent, ButtonComponent, SecondaryButtonComponent, HeaderComponent, SubHeaderComponent, LabelComponent, DeleteButtonComponent, TextComponent, PopoverComponent, CardComponent, TableComponent, ModalComponent, LoadingComponent, ErrorMessageComponent, ChartBuilderInputRowContainer, ChartBuilderInputColumnContainer, PivotRowContainer, PivotColumnContainer, FormContainer, isOpen, isHorizontalView, pivot, setIsOpen, rows, columns, query, queryNoDateColumn, dateRange: dr, showTableFormatOptions, showDateFieldOptions, showAccessControlOptions, showDashboardDropdown, onAddToDashboardComplete, onDelete, report, recommendedPivots: rp, createdPivots: cp, destinationDashboard, dateColumn, buttonLabel, organizationName, pivotData, hideDeleteButton, hideSubmitButton, hideDateRangeFilter, initialUniqueValues, pivotRecommendationsEnabled, onSortChange, onPageChange, numberOfRows, isLoading, onClickChartElement }: ChartBuilderProps): import("react/jsx-runtime").JSX.Element | null;
313
315
  export declare function DashboardFilterModal({ isOpen, setIsOpen, issues, ModalComponent, ButtonComponent, }: {
314
316
  isOpen: boolean;
315
317
  setIsOpen: (e: boolean) => void;