@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.
- package/dist/cjs/Chart.d.ts +4 -0
- package/dist/cjs/Chart.d.ts.map +1 -1
- package/dist/cjs/Chart.js +27 -10
- package/dist/cjs/ChartBuilder.d.ts +3 -1
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +3 -3
- package/dist/cjs/ChartEditor.d.ts +3 -1
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +2 -2
- package/dist/cjs/Dashboard.d.ts +8 -2
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +3 -3
- package/dist/cjs/ReportBuilder.d.ts +3 -1
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +22 -19
- package/dist/cjs/SQLEditor.d.ts +3 -1
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +2 -2
- package/dist/cjs/components/Chart/BarChart.d.ts +2 -1
- package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/BarChart.js +2 -2
- package/dist/cjs/components/Chart/BarList.d.ts +1 -0
- package/dist/cjs/components/Chart/BarList.d.ts.map +1 -1
- package/dist/cjs/components/Chart/BarList.js +2 -2
- package/dist/cjs/components/Chart/LineChart.d.ts +2 -1
- package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/LineChart.js +2 -2
- package/dist/cjs/components/Chart/PieChart.d.ts +1 -0
- package/dist/cjs/components/Chart/PieChart.d.ts.map +1 -1
- package/dist/cjs/components/Chart/PieChart.js +2 -2
- package/dist/cjs/components/Dashboard/ChartComponent.d.ts +1 -1
- package/dist/cjs/components/Dashboard/ChartComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/ChartComponent.js +1 -1
- package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
- package/dist/cjs/components/ReportBuilder/AddColumnModal.js +6 -3
- package/dist/cjs/components/ReportBuilder/AddSortPopover.js +2 -2
- package/dist/cjs/components/ReportBuilder/bigDateMap.js +1 -1
- package/dist/cjs/components/ReportBuilder/util.js +8 -8
- package/dist/cjs/internals/ReportBuilder/PivotForm.js +3 -3
- package/dist/cjs/internals/ReportBuilder/PivotList.js +3 -3
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +76 -34
- package/dist/cjs/utils/axisFormatter.d.ts.map +1 -1
- package/dist/cjs/utils/axisFormatter.js +16 -0
- package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/columnProcessing.js +1 -0
- package/dist/cjs/utils/textProcessing.d.ts +1 -0
- package/dist/cjs/utils/textProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/textProcessing.js +21 -1
- package/dist/cjs/utils/valueFormatter.d.ts.map +1 -1
- package/dist/cjs/utils/valueFormatter.js +15 -0
- package/dist/esm/Chart.d.ts +4 -0
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +27 -10
- package/dist/esm/ChartBuilder.d.ts +3 -1
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +4 -4
- package/dist/esm/ChartEditor.d.ts +3 -1
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +2 -2
- package/dist/esm/Dashboard.d.ts +8 -2
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +3 -3
- package/dist/esm/ReportBuilder.d.ts +3 -1
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +23 -20
- package/dist/esm/SQLEditor.d.ts +3 -1
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +2 -2
- package/dist/esm/components/Chart/BarChart.d.ts +2 -1
- package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/BarChart.js +2 -2
- package/dist/esm/components/Chart/BarList.d.ts +1 -0
- package/dist/esm/components/Chart/BarList.d.ts.map +1 -1
- package/dist/esm/components/Chart/BarList.js +2 -2
- package/dist/esm/components/Chart/LineChart.d.ts +2 -1
- package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/LineChart.js +2 -2
- package/dist/esm/components/Chart/PieChart.d.ts +1 -0
- package/dist/esm/components/Chart/PieChart.d.ts.map +1 -1
- package/dist/esm/components/Chart/PieChart.js +2 -2
- package/dist/esm/components/Dashboard/ChartComponent.d.ts +1 -1
- package/dist/esm/components/Dashboard/ChartComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/ChartComponent.js +1 -1
- package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
- package/dist/esm/components/ReportBuilder/AddColumnModal.js +7 -4
- package/dist/esm/components/ReportBuilder/AddSortPopover.js +3 -3
- package/dist/esm/components/ReportBuilder/bigDateMap.js +2 -2
- package/dist/esm/components/ReportBuilder/util.js +9 -9
- package/dist/esm/internals/ReportBuilder/PivotForm.js +4 -4
- package/dist/esm/internals/ReportBuilder/PivotList.js +4 -4
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +77 -35
- package/dist/esm/utils/axisFormatter.d.ts.map +1 -1
- package/dist/esm/utils/axisFormatter.js +16 -0
- package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
- package/dist/esm/utils/columnProcessing.js +1 -0
- package/dist/esm/utils/textProcessing.d.ts +1 -0
- package/dist/esm/utils/textProcessing.d.ts.map +1 -1
- package/dist/esm/utils/textProcessing.js +19 -0
- package/dist/esm/utils/valueFormatter.d.ts.map +1 -1
- package/dist/esm/utils/valueFormatter.js +15 -0
- 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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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":"AAAA,OAAc,EAOZ,SAAS,EACV,MAAM,OAAO,CAAC;
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
532
|
+
return (0, textProcessing_1.snakeAndCamelCaseToTitleCase)(`${pivot.aggregationType} of ${pivot.valueField}
|
|
533
533
|
`);
|
|
534
534
|
}
|
|
535
|
-
return (0, textProcessing_1.
|
|
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
|
|
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 (
|
|
640
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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,
|
|
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,
|
|
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"}
|
|
@@ -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,
|
|
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
|
package/dist/esm/Chart.d.ts
CHANGED
|
@@ -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
|
package/dist/esm/Chart.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
-
|
|
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;
|