@quillsql/react 2.10.37 → 2.10.38

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 (116) hide show
  1. package/dist/cjs/BarList.d.ts +1 -1
  2. package/dist/cjs/BarList.d.ts.map +1 -1
  3. package/dist/cjs/Chart.d.ts +2 -1
  4. package/dist/cjs/Chart.d.ts.map +1 -1
  5. package/dist/cjs/Chart.js +70 -73
  6. package/dist/cjs/ChartBuilder.d.ts +8 -4
  7. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  8. package/dist/cjs/ChartBuilder.js +206 -126
  9. package/dist/cjs/ChartEditor.js +1 -1
  10. package/dist/cjs/Dashboard.d.ts.map +1 -1
  11. package/dist/cjs/Dashboard.js +9 -1
  12. package/dist/cjs/PieChart.d.ts +1 -0
  13. package/dist/cjs/PieChart.d.ts.map +1 -1
  14. package/dist/cjs/PieChart.js +2 -2
  15. package/dist/cjs/QuillProvider.d.ts +1 -0
  16. package/dist/cjs/QuillProvider.d.ts.map +1 -1
  17. package/dist/cjs/Table.d.ts.map +1 -1
  18. package/dist/cjs/Table.js +0 -4
  19. package/dist/cjs/components/Chart/BarChart.d.ts +1 -1
  20. package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
  21. package/dist/cjs/components/Chart/LineChart.d.ts +2 -1
  22. package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
  23. package/dist/cjs/components/Dashboard/DataLoader.d.ts +1 -1
  24. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  25. package/dist/cjs/components/Dashboard/DataLoader.js +2 -7
  26. package/dist/cjs/components/Dashboard/TableComponent.d.ts +1 -1
  27. package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
  28. package/dist/cjs/components/Dashboard/TableComponent.js +5 -21
  29. package/dist/cjs/components/QuillTable.d.ts.map +1 -1
  30. package/dist/cjs/components/QuillTable.js +5 -2
  31. package/dist/cjs/components/UiComponents.d.ts +6 -18
  32. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  33. package/dist/cjs/components/UiComponents.js +21 -3
  34. package/dist/cjs/hooks/useQuill.d.ts +1 -1
  35. package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
  36. package/dist/cjs/index.d.ts +3 -2
  37. package/dist/cjs/index.d.ts.map +1 -1
  38. package/dist/cjs/internals/ReportBuilder/PivotList.d.ts +1 -1
  39. package/dist/cjs/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  40. package/dist/cjs/internals/ReportBuilder/PivotList.js +9 -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 +31 -28
  44. package/dist/cjs/models/Pivots.d.ts +2 -0
  45. package/dist/cjs/models/Pivots.d.ts.map +1 -0
  46. package/dist/cjs/models/Pivots.js +2 -0
  47. package/dist/cjs/models/Tables.d.ts +16 -0
  48. package/dist/cjs/models/Tables.d.ts.map +1 -0
  49. package/dist/cjs/models/Tables.js +2 -0
  50. package/dist/cjs/utils/aggregate.d.ts.map +1 -1
  51. package/dist/cjs/utils/aggregate.js +26 -23
  52. package/dist/cjs/utils/textProcessing.d.ts +5 -0
  53. package/dist/cjs/utils/textProcessing.d.ts.map +1 -0
  54. package/dist/cjs/utils/textProcessing.js +37 -0
  55. package/dist/cjs/utils/types.d.ts +4 -0
  56. package/dist/cjs/utils/types.d.ts.map +1 -0
  57. package/dist/cjs/utils/types.js +52 -0
  58. package/dist/esm/BarList.d.ts +1 -1
  59. package/dist/esm/BarList.d.ts.map +1 -1
  60. package/dist/esm/Chart.d.ts +2 -1
  61. package/dist/esm/Chart.d.ts.map +1 -1
  62. package/dist/esm/Chart.js +70 -73
  63. package/dist/esm/ChartBuilder.d.ts +8 -4
  64. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  65. package/dist/esm/ChartBuilder.js +206 -125
  66. package/dist/esm/ChartEditor.js +1 -1
  67. package/dist/esm/Dashboard.d.ts.map +1 -1
  68. package/dist/esm/Dashboard.js +9 -1
  69. package/dist/esm/PieChart.d.ts +1 -0
  70. package/dist/esm/PieChart.d.ts.map +1 -1
  71. package/dist/esm/PieChart.js +2 -2
  72. package/dist/esm/QuillProvider.d.ts +1 -0
  73. package/dist/esm/QuillProvider.d.ts.map +1 -1
  74. package/dist/esm/Table.d.ts.map +1 -1
  75. package/dist/esm/Table.js +1 -5
  76. package/dist/esm/components/Chart/BarChart.d.ts +1 -1
  77. package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
  78. package/dist/esm/components/Chart/LineChart.d.ts +2 -1
  79. package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
  80. package/dist/esm/components/Dashboard/DataLoader.d.ts +1 -1
  81. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  82. package/dist/esm/components/Dashboard/DataLoader.js +4 -9
  83. package/dist/esm/components/Dashboard/TableComponent.d.ts +1 -1
  84. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
  85. package/dist/esm/components/Dashboard/TableComponent.js +5 -18
  86. package/dist/esm/components/QuillTable.d.ts.map +1 -1
  87. package/dist/esm/components/QuillTable.js +2 -2
  88. package/dist/esm/components/UiComponents.d.ts +6 -18
  89. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  90. package/dist/esm/components/UiComponents.js +19 -2
  91. package/dist/esm/hooks/useQuill.d.ts +1 -1
  92. package/dist/esm/hooks/useQuill.d.ts.map +1 -1
  93. package/dist/esm/index.d.ts +3 -2
  94. package/dist/esm/index.d.ts.map +1 -1
  95. package/dist/esm/index.js +1 -1
  96. package/dist/esm/internals/ReportBuilder/PivotList.d.ts +1 -1
  97. package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  98. package/dist/esm/internals/ReportBuilder/PivotList.js +9 -3
  99. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +1 -1
  100. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  101. package/dist/esm/internals/ReportBuilder/PivotModal.js +28 -25
  102. package/dist/esm/models/Pivots.d.ts +2 -0
  103. package/dist/esm/models/Pivots.d.ts.map +1 -0
  104. package/dist/esm/models/Pivots.js +1 -0
  105. package/dist/esm/models/Tables.d.ts +16 -0
  106. package/dist/esm/models/Tables.d.ts.map +1 -0
  107. package/dist/esm/models/Tables.js +1 -0
  108. package/dist/esm/utils/aggregate.d.ts.map +1 -1
  109. package/dist/esm/utils/aggregate.js +26 -23
  110. package/dist/esm/utils/textProcessing.d.ts +5 -0
  111. package/dist/esm/utils/textProcessing.d.ts.map +1 -0
  112. package/dist/esm/utils/textProcessing.js +30 -0
  113. package/dist/esm/utils/types.d.ts +4 -0
  114. package/dist/esm/utils/types.d.ts.map +1 -0
  115. package/dist/esm/utils/types.js +48 -0
  116. package/package.json +1 -1
@@ -11,6 +11,7 @@ const PivotList_1 = require("./PivotList");
11
11
  const date_fns_1 = require("date-fns");
12
12
  const valueFormatter_1 = require("../../utils/valueFormatter");
13
13
  const ChartBuilder_1 = require("../../ChartBuilder");
14
+ const textProcessing_1 = require("../../utils/textProcessing");
14
15
  const QuillCard_1 = require("../../components/QuillCard");
15
16
  const QuillHover = () => {
16
17
  return ((0, jsx_runtime_1.jsx)("style", { children: `
@@ -105,7 +106,7 @@ const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivo
105
106
  // only use columns shown in the report builder's table
106
107
  // also filter out id
107
108
  if (col.field !== 'id' && !col.field.endsWith('_id')) {
108
- map[col.field] = col.fieldType;
109
+ map[col.field] = col.fieldType || col.format;
109
110
  }
110
111
  return map;
111
112
  }, {});
@@ -124,7 +125,6 @@ const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivo
124
125
  }, [selectedPivotIndex, data, dateRange, createdPivots]);
125
126
  const columnSelectOptions = (0, react_1.useMemo)(() => {
126
127
  return [
127
- { label: 'Select', value: '' },
128
128
  ...Object.keys(columnsToShow).map((key) => {
129
129
  return { label: key, value: key };
130
130
  }),
@@ -139,13 +139,13 @@ const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivo
139
139
  removePivot();
140
140
  }
141
141
  else {
142
- selectPivot(pivot, index);
142
+ selectPivot(pivot);
143
143
  setSelectedPivotType('recommended');
144
144
  }
145
145
  setIsOpen(false);
146
146
  };
147
147
  const onSelectCreatedPivot = (pivot, index) => {
148
- selectPivot(pivot, index);
148
+ selectPivot(pivot);
149
149
  setSelectedPivotType('created');
150
150
  setIsOpen(false);
151
151
  setPopUpTitle('Add Pivot');
@@ -329,31 +329,38 @@ const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField, setPivo
329
329
  flexDirection: 'row',
330
330
  gap: 20,
331
331
  marginBottom: 5,
332
- }, children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(LabelComponent, { children: "Row Field" }), (0, jsx_runtime_1.jsx)(SelectComponent, { label: 'Row Field', id: "pivot-row-field", value: pivotRowField, onChange: (e) => {
332
+ }, children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(LabelComponent, { children: "Row Field" }), (0, jsx_runtime_1.jsx)(SelectComponent, { id: "pivot-row-field", value: pivotRowField, onChange: (e) => {
333
333
  setPivotRowField(e === '' ? undefined : e);
334
- }, options: columnSelectOptions, theme: theme })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(LabelComponent, { children: "Column Field" }), (0, jsx_runtime_1.jsx)(SelectComponent, { label: 'Column Field', id: "pivot-row-field", value: pivotColumnField, onChange: (e) => {
334
+ }, options: columnSelectOptions.filter((option) => {
335
+ const format = columns.find((col) => col.field === option.value)?.format;
336
+ return (format === 'string' ||
337
+ ChartBuilder_1.dateFormatOptions.includes(format));
338
+ }), theme: theme })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(LabelComponent, { children: "Column Field" }), (0, jsx_runtime_1.jsx)(SelectComponent, { id: "pivot-row-field", value: pivotColumnField, onChange: (e) => {
335
339
  setPivotColumnField(e === '' ? undefined : e);
336
- }, options: columnSelectOptions, theme: theme })] })] }), (0, jsx_runtime_1.jsxs)("div", { style: {
340
+ }, options: columnSelectOptions.filter((option) => {
341
+ return (columns.find((col) => col.field === option.value)
342
+ ?.format === 'string');
343
+ }), theme: theme })] })] }), (0, jsx_runtime_1.jsxs)("div", { style: {
337
344
  display: 'flex',
338
345
  flexDirection: 'row',
339
346
  gap: 20,
340
347
  marginBottom: 20,
341
- }, children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(LabelComponent, { children: "Value Field" }), (0, jsx_runtime_1.jsx)(SelectComponent, { label: 'Value Field', id: "pivot-row-field", value: pivotValueField, onChange: (e) => {
348
+ }, children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(LabelComponent, { children: "Value Field" }), (0, jsx_runtime_1.jsx)(SelectComponent, { id: "pivot-row-field", value: pivotValueField, onChange: (e) => {
342
349
  setPivotValueField(e === '' ? undefined : e);
343
350
  }, options: pivotAggregation === 'count'
344
351
  ? columnSelectOptions
345
352
  : columnSelectOptions.filter((option) => {
346
353
  return (option.value === '' ||
347
354
  ChartBuilder_1.numberFormatOptions.includes(columns.find((col) => col.field === option.value)?.format));
348
- }), theme: theme })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(LabelComponent, { children: "Aggregation Type" }), (0, jsx_runtime_1.jsx)(SelectComponent, { label: 'Aggregation Type', id: "pivot-row-field", value: pivotAggregation, theme: theme, onChange: (e) => {
355
+ }), theme: theme })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(LabelComponent, { children: "Aggregation Type" }), (0, jsx_runtime_1.jsx)(SelectComponent, { id: "pivot-row-field", value: pivotAggregation, theme: theme, onChange: (e) => {
349
356
  if (e !== 'count' &&
350
357
  pivotValueField &&
351
358
  !ChartBuilder_1.numberFormatOptions.includes(columns.find((col) => col.field === pivotValueField)?.format)) {
352
359
  setPivotValueField(null);
353
360
  }
354
361
  setPivotAggregation(e === '' ? undefined : e);
355
- }, options: ['', 'sum', 'average', 'count'].map((option) => {
356
- return { label: option || 'Select', value: option };
362
+ }, options: ['sum', 'average', 'count'].map((option) => {
363
+ return { label: option, value: option };
357
364
  }) })] })] })] }), (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)(ButtonComponent, { id: "custom-button", onClick: () => {
358
365
  const errors = [];
359
366
  if (!pivotRowField) {
@@ -475,7 +482,7 @@ function generatePivotTableYAxis(pivot, cols, format) {
475
482
  }
476
483
  exports.generatePivotTableYAxis = generatePivotTableYAxis;
477
484
  function generatePivotTitle(pivot) {
478
- return (0, ChartBuilder_1.snakeCaseToTitleCase)(`${pivot.aggregationType} of ${pivot.valueField} by ${pivot.rowField}${pivot.columnField ? ` and ${pivot.columnField}` : ''}`);
485
+ return (0, textProcessing_1.snakeCaseToTitleCase)(`${pivot.aggregationType} of ${pivot.valueField} by ${pivot.rowField}${pivot.columnField ? ` and ${pivot.columnField}` : ''}`);
479
486
  }
480
487
  function castValueToDate(value) {
481
488
  if (!value) {
@@ -572,7 +579,12 @@ function isDateField(fieldType) {
572
579
  return (fieldType === 'date' ||
573
580
  fieldType === 'datetime' ||
574
581
  fieldType === 'timestamp' ||
575
- fieldType === 'timestamptz');
582
+ fieldType === 'timestamptz' ||
583
+ fieldType === 'MMM_yyyy' ||
584
+ fieldType === 'MMM_dd' ||
585
+ fieldType === 'MMM_dd_yyyy' ||
586
+ fieldType === 'MMM_dd_hh:mm_ap_pm' ||
587
+ fieldType === 'hh_ap_pm');
576
588
  }
577
589
  exports.isDateField = isDateField;
578
590
  const isNullUndefinedOrInvalidDate = (date) => date === null || date === undefined || isNaN(date.getTime());
@@ -604,6 +616,9 @@ function generatePivotTable(pivot, data, dateRange, isComparison, rowLimit = -1,
604
616
  data = fixBigQueryData(data);
605
617
  if (dateRange[0] === null && dateRange[1] === null) {
606
618
  dateRange = [new Date(0), (0, date_fns_1.add)(new Date(), { years: 5 })];
619
+ if (isDateField(pivot.rowFieldType)) {
620
+ dateRange = getDateRange(dateRange, pivot.rowField, data);
621
+ }
607
622
  }
608
623
  if (!compRange ||
609
624
  isNullUndefinedOrInvalidDate(compRange[0]) ||
@@ -856,21 +871,9 @@ function generatePivotTable(pivot, data, dateRange, isComparison, rowLimit = -1,
856
871
  ? 'Null'
857
872
  : pivot.rowField === false
858
873
  ? 'False'
859
- : (0, ChartBuilder_1.snakeCaseToTitleCase)(pivot.rowField),
874
+ : (0, textProcessing_1.snakeCaseToTitleCase)(pivot.rowField),
860
875
  field: pivot.rowField,
861
876
  },
862
- ...(!pivot.columnField
863
- ? [
864
- {
865
- label: pivot.rowField === null
866
- ? 'Null'
867
- : pivot.rowField === false
868
- ? 'False'
869
- : `Comparison ${(0, ChartBuilder_1.snakeCaseToTitleCase)(pivot.rowField)}`,
870
- field: `comparison_${pivot.rowField}`,
871
- },
872
- ]
873
- : []),
874
877
  ...uniqueColumns.map((column, index) => {
875
878
  const columnName = isDateField(pivot.columnFieldType)
876
879
  ? getDateString(column, dateRange)
@@ -884,7 +887,7 @@ function generatePivotTable(pivot, data, dateRange, isComparison, rowLimit = -1,
884
887
  !pivot.columnField &&
885
888
  index === 1
886
889
  ? 'Count'
887
- : (0, ChartBuilder_1.snakeCaseToTitleCase)(columnName),
890
+ : (0, textProcessing_1.snakeCaseToTitleCase)(columnName),
888
891
  field: columnName,
889
892
  };
890
893
  }),
@@ -905,7 +908,7 @@ function generatePivotTable(pivot, data, dateRange, isComparison, rowLimit = -1,
905
908
  : isDateField(pivot.columnFieldType)
906
909
  ? COL_DATE_MAP[getDateString(column, dateRange)] ??
907
910
  'Comparison'
908
- : `Comparison ${(0, ChartBuilder_1.snakeCaseToTitleCase)(columnName)}`,
911
+ : `Comparison ${(0, textProcessing_1.snakeCaseToTitleCase)(columnName)}`,
909
912
  field: `comparison_${columnName}`,
910
913
  };
911
914
  })
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Pivots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pivots.d.ts","sourceRoot":"","sources":["../../../src/models/Pivots.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,16 @@
1
+ export interface Column {
2
+ label: string;
3
+ field: string;
4
+ name: string;
5
+ displayName: string;
6
+ fieldType: string;
7
+ format: string;
8
+ }
9
+ export interface Table {
10
+ }
11
+ export interface YAxisField {
12
+ field: string;
13
+ label: string;
14
+ format: string;
15
+ }
16
+ //# sourceMappingURL=Tables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tables.d.ts","sourceRoot":"","sources":["../../../src/models/Tables.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,KAAK;CAAG;AAEzB,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../src/utils/aggregate.tsx"],"names":[],"mappings":"AA2DA,wBAAgB,qBAAqB,CAAC,IAAI,KAAA,EAAE,SAAS,KAAA,UAuCpD;AAED,wBAAgB,UAAU,CAAC,aAAa,KAAA,EAAE,YAAY,KAAA,EAAE,UAAU,KAAA,OA6IjE;AACD,wBAAgB,SAAS,CAAC,aAAa,KAAA,EAAE,YAAY,KAAA,EAAE,UAAU,KAAA,OAgRhE"}
1
+ {"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../../src/utils/aggregate.tsx"],"names":[],"mappings":"AA2DA,wBAAgB,qBAAqB,CAAC,IAAI,KAAA,EAAE,SAAS,KAAA,UAuCpD;AAED,wBAAgB,UAAU,CAAC,aAAa,KAAA,EAAE,YAAY,KAAA,EAAE,UAAU,KAAA,OAmJjE;AACD,wBAAgB,SAAS,CAAC,aAAa,KAAA,EAAE,YAAY,KAAA,EAAE,UAAU,KAAA,OAqRhE"}
@@ -91,16 +91,18 @@ exports.whatIsProbablyTheType = whatIsProbablyTheType;
91
91
  function aggregate2(dashboardItem, bucketFields, dateFilter) {
92
92
  const timePeriod = findTimePeriod(dateFilter);
93
93
  const rows = dashboardItem.rows;
94
+ const fields = dashboardItem.fields || dashboardItem.columns;
94
95
  const xAxisLabel = timePeriod;
95
96
  const xAxisField = timePeriod;
96
97
  if (!bucketFields.length || !rows.length)
97
98
  return { ...dashboardItem, bucketedRows: [] };
98
- if ((0, ReportBuilder_1.getPostgresBasicType)(dashboardItem.fields.find(field => field.name === bucketFields[0].field)) === 'string') {
99
+ if (dashboardItem.fields &&
100
+ (0, ReportBuilder_1.getPostgresBasicType)(dashboardItem.fields.find((field) => field.name === bucketFields[0].field)) === 'string') {
99
101
  const stringField = bucketFields[0].field;
100
102
  const aggregation = {};
101
103
  // let aggregatedArray;
102
104
  // if (rows.length > 0) {
103
- rows.forEach(row => {
105
+ rows.forEach((row) => {
104
106
  const strValue = row[stringField];
105
107
  if (!aggregation[strValue]) {
106
108
  aggregation[strValue] = {
@@ -111,7 +113,7 @@ function aggregate2(dashboardItem, bucketFields, dateFilter) {
111
113
  aggregation[strValue][dashboardItem.yAxisFields[0].field] += parseFloat(row[dashboardItem.yAxisFields[0].field]);
112
114
  });
113
115
  // Convert the object to an array
114
- aggregatedArray = Object.keys(aggregation).map(str => ({
116
+ aggregatedArray = Object.keys(aggregation).map((str) => ({
115
117
  [stringField]: str,
116
118
  [dashboardItem.yAxisFields[0].field]: aggregation[str][dashboardItem.yAxisFields[0].field].toFixed(2),
117
119
  }));
@@ -126,7 +128,7 @@ function aggregate2(dashboardItem, bucketFields, dateFilter) {
126
128
  bucketedRows: aggregatedArray,
127
129
  };
128
130
  }
129
- else if ((0, ReportBuilder_1.getPostgresBasicType)(dashboardItem.fields.find(field => field.name === bucketFields[0].field)) === 'date') {
131
+ else if ((0, ReportBuilder_1.getPostgresBasicType)(dashboardItem.fields.find((field) => field.name === bucketFields[0].field)) === 'date') {
130
132
  const dateField = bucketFields[0].field;
131
133
  let xAxisFormat;
132
134
  switch (timePeriod) {
@@ -145,7 +147,7 @@ function aggregate2(dashboardItem, bucketFields, dateFilter) {
145
147
  }
146
148
  const aggregation = {};
147
149
  // TODO MAKE WORK WITH MULTIPLE Y AXIS FIELDS
148
- rows.forEach(row => {
150
+ rows.forEach((row) => {
149
151
  const date = new Date(row[dateField]);
150
152
  let formattedDate;
151
153
  switch (timePeriod) {
@@ -182,7 +184,7 @@ function aggregate2(dashboardItem, bucketFields, dateFilter) {
182
184
  // Convert the object to an array and format the spend amounts
183
185
  const aggregatedArray = Object.keys(aggregation).length
184
186
  ? Object.keys(aggregation)
185
- .map(date => ({
187
+ .map((date) => ({
186
188
  [timePeriod]: date,
187
189
  [dashboardItem.yAxisFields[0].field]: aggregation[date][dashboardItem.yAxisFields[0].field].toFixed(2),
188
190
  }))
@@ -207,6 +209,7 @@ function aggregate(dashboardItem, bucketFields, dateFilter) {
207
209
  : 'month';
208
210
  const rows = dashboardItem.rows;
209
211
  const compareRows = dashboardItem.compareRows;
212
+ const fields = dashboardItem.fields || dashboardItem.columns;
210
213
  const xAxisLabel = timePeriod;
211
214
  const xAxisField = timePeriod;
212
215
  if (!rows.length) {
@@ -216,23 +219,23 @@ function aggregate(dashboardItem, bucketFields, dateFilter) {
216
219
  //TODO: allow comparison for nonbucketed
217
220
  return { ...dashboardItem, bucketedRows: [] };
218
221
  }
219
- if ((0, ReportBuilder_1.getPostgresBasicType)(dashboardItem.fields.find(field => field.name === bucketFields[0].field)) === 'string') {
222
+ if ((0, ReportBuilder_1.getPostgresBasicType)(fields.find((field) => field.name === bucketFields[0].field)) === 'string') {
220
223
  const stringField = bucketFields[0].field;
221
224
  const aggregation = {};
222
- rows.forEach(row => {
225
+ rows.forEach((row) => {
223
226
  const strValue = row[stringField];
224
227
  if (!aggregation[strValue]) {
225
228
  aggregation[strValue] = {};
226
- dashboardItem.yAxisFields.forEach(yAxisField => {
229
+ dashboardItem.yAxisFields.forEach((yAxisField) => {
227
230
  aggregation[strValue][yAxisField.field] = 0;
228
231
  });
229
232
  }
230
233
  // Sum up the amounts (or any other field) for each unique string
231
- dashboardItem.yAxisFields.forEach(yAxisField => {
234
+ dashboardItem.yAxisFields.forEach((yAxisField) => {
232
235
  aggregation[strValue][yAxisField.field] += parseFloat(row[yAxisField.field] ?? '0.0');
233
236
  });
234
237
  });
235
- const aggregatedArray = Object.keys(aggregation).map(key => {
238
+ const aggregatedArray = Object.keys(aggregation).map((key) => {
236
239
  return {
237
240
  [stringField]: key,
238
241
  ...aggregation[key],
@@ -245,7 +248,7 @@ function aggregate(dashboardItem, bucketFields, dateFilter) {
245
248
  bucketedRows: aggregatedArray,
246
249
  };
247
250
  }
248
- else if ((0, ReportBuilder_1.getPostgresBasicType)(dashboardItem.fields.find(field => field.name === bucketFields[0].field)) === 'date') {
251
+ else if ((0, ReportBuilder_1.getPostgresBasicType)(dashboardItem.fields.find((field) => field.name === bucketFields[0].field)) === 'date') {
249
252
  const dateField = bucketFields[0].field;
250
253
  let interval;
251
254
  let xAxisFormat;
@@ -295,13 +298,13 @@ function aggregate(dashboardItem, bucketFields, dateFilter) {
295
298
  const endDate = dateFilter?.endDate || new Date();
296
299
  while (iteratedDate <= endDate) {
297
300
  aggregation[iteratedDate] = {};
298
- dashboardItem.yAxisFields.forEach(yAxisField => {
301
+ dashboardItem.yAxisFields.forEach((yAxisField) => {
299
302
  aggregation[iteratedDate][yAxisField.field] = 0;
300
303
  });
301
304
  iteratedDate = (0, date_fns_1.add)(iteratedDate, interval);
302
305
  }
303
306
  // TODO MAKE WORK WITH MULTIPLE Y AXIS FIELDS
304
- rows.forEach(row => {
307
+ rows.forEach((row) => {
305
308
  const date = (0, date_fns_1.parse)(row[dateField], 'yyyy-MM-dd', new Date());
306
309
  let formattedDate;
307
310
  switch (timePeriod) {
@@ -326,19 +329,19 @@ function aggregate(dashboardItem, bucketFields, dateFilter) {
326
329
  }
327
330
  if (!aggregation[formattedDate]) {
328
331
  aggregation[formattedDate] = {};
329
- dashboardItem.yAxisFields.forEach(yAxisField => {
332
+ dashboardItem.yAxisFields.forEach((yAxisField) => {
330
333
  aggregation[formattedDate][yAxisField.field] = 0;
331
334
  });
332
335
  }
333
336
  // Sum the amounts for each field and period
334
- dashboardItem.yAxisFields.forEach(yAxisField => {
337
+ dashboardItem.yAxisFields.forEach((yAxisField) => {
335
338
  aggregation[formattedDate][yAxisField.field] += parseFloat(row[yAxisField.field]);
336
339
  });
337
340
  });
338
341
  // Convert the object to an array and format the spend amounts
339
342
  const aggregatedArray = Object.keys(aggregation).length
340
343
  ? Object.keys(aggregation)
341
- .map(date => ({
344
+ .map((date) => ({
342
345
  [timePeriod]: date,
343
346
  [dashboardItem.yAxisFields[0].field]: aggregation[date][dashboardItem.yAxisFields[0].field].toFixed(2),
344
347
  }))
@@ -348,11 +351,11 @@ function aggregate(dashboardItem, bucketFields, dateFilter) {
348
351
  dateFilter.comparison &&
349
352
  dateFilter.comparisonRange.value !== 'NO_COMPARISON' &&
350
353
  dashboardItem.compareRows) {
351
- const offset = dateRangePickerUtils_1.COMPARISON_OPTIONS.find(option => {
354
+ const offset = dateRangePickerUtils_1.COMPARISON_OPTIONS.find((option) => {
352
355
  return option.value === dateFilter.comparisonRange.value;
353
356
  })?.offset;
354
- aggregatedArray.forEach(row => {
355
- dashboardItem.yAxisFields.forEach(yAxisField => {
357
+ aggregatedArray.forEach((row) => {
358
+ dashboardItem.yAxisFields.forEach((yAxisField) => {
356
359
  row[yAxisField.field + '2'] = 0;
357
360
  });
358
361
  row[xAxisField + '2'] = (0, date_fns_1.sub)(new Date(row[timePeriod]), offset).toISOString();
@@ -384,8 +387,8 @@ function aggregate(dashboardItem, bucketFields, dateFilter) {
384
387
  }
385
388
  // Sum the amounts for each field and period
386
389
  if (bucketFields?.length) {
387
- dashboardItem.yAxisFields.forEach(yAxisField => {
388
- const correctBucketIndex = aggregatedArray.findIndex(row => {
390
+ dashboardItem.yAxisFields.forEach((yAxisField) => {
391
+ const correctBucketIndex = aggregatedArray.findIndex((row) => {
389
392
  return row[timePeriod] === formattedDate;
390
393
  });
391
394
  if (correctBucketIndex >= 0) {
@@ -402,7 +405,7 @@ function aggregate(dashboardItem, bucketFields, dateFilter) {
402
405
  });
403
406
  }
404
407
  else {
405
- dashboardItem.yAxisFields.forEach(yAxisField => {
408
+ dashboardItem.yAxisFields.forEach((yAxisField) => {
406
409
  if (aggregatedArray.length - 1 >= index) {
407
410
  if (!aggregatedArray[index][yAxisField.field + '2']) {
408
411
  aggregatedArray[index][yAxisField.field + '2'] = 0;
@@ -0,0 +1,5 @@
1
+ export declare function capitalize(text: string): string;
2
+ export declare function depluralize(text: string): string;
3
+ export declare function snakeCaseToTitleCase(str: string): string;
4
+ export declare function removeDoubleQuotes(str: string): string;
5
+ //# sourceMappingURL=textProcessing.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.removeDoubleQuotes = exports.snakeCaseToTitleCase = exports.depluralize = exports.capitalize = void 0;
4
+ function capitalize(text) {
5
+ return text.charAt(0).toUpperCase() + text.slice(1);
6
+ }
7
+ exports.capitalize = capitalize;
8
+ function depluralize(text) {
9
+ if (text.endsWith("ies")) {
10
+ return text.slice(0, -3) + "y";
11
+ }
12
+ if (text.endsWith("s")) {
13
+ return text.slice(0, -1);
14
+ }
15
+ return text;
16
+ }
17
+ exports.depluralize = depluralize;
18
+ function snakeCaseToTitleCase(str) {
19
+ if (!str) {
20
+ return str;
21
+ }
22
+ return str
23
+ .toString()
24
+ .split(/_| /)
25
+ .map((word) => word === 'id'
26
+ ? 'ID'
27
+ : word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
28
+ .join(' ');
29
+ }
30
+ exports.snakeCaseToTitleCase = snakeCaseToTitleCase;
31
+ function removeDoubleQuotes(str) {
32
+ if (!str) {
33
+ return str;
34
+ }
35
+ return str.replace(/"/g, '');
36
+ }
37
+ exports.removeDoubleQuotes = removeDoubleQuotes;
@@ -0,0 +1,4 @@
1
+ import { Field } from '../hooks/useQuill';
2
+ import { Column } from '../models/Tables';
3
+ export declare function getPostgresBasicType(field: Field | Column): string;
4
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/types.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAgDlE"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPostgresBasicType = void 0;
4
+ function getPostgresBasicType(field) {
5
+ let format;
6
+ // first check if column.dataTypeID exists
7
+ if ('dataTypeID' in field) {
8
+ switch (field.dataTypeID) {
9
+ case 20: // int8
10
+ case 21: // int2
11
+ case 23: // int4
12
+ case 700: // float4
13
+ case 701: // float8
14
+ case 1700: // numeric
15
+ format = 'number';
16
+ break;
17
+ case 1082: // date
18
+ case 1083: // time
19
+ case 1184: // timestamptz
20
+ case 1114: // timestamp
21
+ format = 'date';
22
+ break;
23
+ case 1043: // varchar
24
+ default:
25
+ format = 'string';
26
+ }
27
+ }
28
+ else if (field.fieldType) {
29
+ // if column.dataTypeID doesn't exist, check column.fieldType
30
+ switch (field.fieldType) {
31
+ case 'int8':
32
+ case 'int2':
33
+ case 'int4':
34
+ case 'float4':
35
+ case 'float8':
36
+ case 'numeric':
37
+ format = 'number';
38
+ break;
39
+ case 'date':
40
+ case 'time':
41
+ case 'timestamptz':
42
+ case 'timestamp':
43
+ format = 'date';
44
+ break;
45
+ case 'varchar':
46
+ default:
47
+ format = 'string';
48
+ }
49
+ }
50
+ return format || 'string';
51
+ }
52
+ exports.getPostgresBasicType = getPostgresBasicType;
@@ -13,7 +13,7 @@ export interface BarListProps extends React.HTMLAttributes<HTMLDivElement> {
13
13
  yAxisFields: YAxisField[];
14
14
  containerStyle: any;
15
15
  xAxisFormat: string;
16
- colors: string[];
16
+ colors?: string[];
17
17
  theme: any;
18
18
  }
19
19
  export declare function hexToRgbaWith10PercentAlpha(hex: any): string;
@@ -1 +1 @@
1
- {"version":3,"file":"BarList.d.ts","sourceRoot":"","sources":["../../src/BarList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAqExC,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAa,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACxE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,cAAc,CAAC,EAAE,GAAG,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,cAAc,EAAE,GAAG,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,GAAG,CAAC;CACZ;AAYD,wBAAgB,2BAA2B,CAAC,GAAG,KAAA,UAW9C;AAED,QAAA,MAAM,OAAO,qFA6dX,CAAC;AAEH,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"BarList.d.ts","sourceRoot":"","sources":["../../src/BarList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAqExC,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAa,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACxE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,cAAc,CAAC,EAAE,GAAG,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,cAAc,EAAE,GAAG,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,GAAG,CAAC;CACZ;AAYD,wBAAgB,2BAA2B,CAAC,GAAG,KAAA,UAW9C;AAED,QAAA,MAAM,OAAO,qFA6dX,CAAC;AAEH,eAAe,OAAO,CAAC"}
@@ -9,6 +9,7 @@ interface BaseChartProps {
9
9
  hideXAxis?: boolean;
10
10
  hideYAxis?: boolean;
11
11
  hideCartesianGrid?: boolean;
12
+ dateRangeFilterDisabled?: boolean;
12
13
  }
13
14
  interface WithChartId extends BaseChartProps {
14
15
  chartId: string;
@@ -37,6 +38,6 @@ interface WithConfig extends BaseChartProps {
37
38
  }
38
39
  type ChartProps = WithChartId | WithConfig;
39
40
  export declare function didFiltersChange(dashboardItem: any, filters: any): boolean;
40
- declare const Chart: ({ chartId, config, colors, containerStyle, query, SelectComponent, dateRangeFilterDisabled, isAnimationActive, hideXAxis, hideYAxis, hideCartesianGrid, }: ChartProps) => import("react/jsx-runtime").JSX.Element;
41
+ declare const Chart: (data: ChartProps) => import("react/jsx-runtime").JSX.Element;
41
42
  export default Chart;
42
43
  //# sourceMappingURL=Chart.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/Chart.tsx"],"names":[],"mappings":";AA8BA,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,UAAU,WAAY,SAAQ,cAAc;IAC1C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,WAAW,GACnB,cAAc,GACd,mBAAmB,GACnB,oBAAoB,GACpB,eAAe,GACf,cAAc,GACd,UAAU,GACV,aAAa,GACb,eAAe,GACf,oBAAoB,GACpB,UAAU,GACV,SAAS,GACT,QAAQ,CAAC;AAEb,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,KAAK,EAAE,GAAG,CAAC;CACZ;AAED,UAAU,UAAW,SAAQ,cAAc;IACzC,MAAM,EAAE,aAAa,GAAG,GAAG,CAAC;CAC7B;AAED,KAAK,UAAU,GAAG,WAAW,GAAG,UAAU,CAAC;AA4D3C,wBAAgB,gBAAgB,CAAC,aAAa,KAAA,EAAE,OAAO,KAAA,WAQtD;AAKD,QAAA,MAAM,KAAK,8JAYR,UAAU,4CAkCZ,CAAC;AAqdF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"Chart.d.ts","sourceRoot":"","sources":["../../src/Chart.tsx"],"names":[],"mappings":";AA6BA,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,UAAU,WAAY,SAAQ,cAAc;IAC1C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,WAAW,GACnB,cAAc,GACd,mBAAmB,GACnB,oBAAoB,GACpB,eAAe,GACf,cAAc,GACd,UAAU,GACV,aAAa,GACb,eAAe,GACf,oBAAoB,GACpB,UAAU,GACV,SAAS,GACT,QAAQ,CAAC;AAEb,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,KAAK,EAAE,GAAG,CAAC;CACZ;AAED,UAAU,UAAW,SAAQ,cAAc;IACzC,MAAM,EAAE,aAAa,GAAG,GAAG,CAAC;CAC7B;AAED,KAAK,UAAU,GAAG,WAAW,GAAG,UAAU,CAAC;AA+D3C,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,WAQhE;AAKD,QAAA,MAAM,KAAK,SAAU,UAAU,4CAiC9B,CAAC;AAmeF,eAAe,KAAK,CAAC"}