@quillsql/react 2.11.28 → 2.11.30

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 (57) 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 +20 -7
  4. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  5. package/dist/cjs/ChartBuilder.js +81 -48
  6. package/dist/cjs/Dashboard.js +2 -2
  7. package/dist/cjs/ReportBuilder.d.ts +22 -1
  8. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  9. package/dist/cjs/ReportBuilder.js +562 -527
  10. package/dist/cjs/components/Chart/LineChart.d.ts +2 -1
  11. package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
  12. package/dist/cjs/components/Chart/LineChart.js +19 -11
  13. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  14. package/dist/cjs/components/UiComponents.js +1 -2
  15. package/dist/cjs/hooks/useDashboard.d.ts +1 -1
  16. package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
  17. package/dist/cjs/hooks/useDashboard.js +4 -4
  18. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts +28 -0
  19. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -0
  20. package/dist/cjs/internals/ReportBuilder/PivotForm.js +58 -0
  21. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  22. package/dist/cjs/internals/ReportBuilder/PivotModal.js +3 -1
  23. package/dist/cjs/utils/astProcessing.d.ts +23 -0
  24. package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
  25. package/dist/cjs/utils/astProcessing.js +241 -1
  26. package/dist/cjs/utils/tableProcessing.d.ts +1 -0
  27. package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
  28. package/dist/cjs/utils/tableProcessing.js +16 -1
  29. package/dist/esm/Chart.d.ts +4 -0
  30. package/dist/esm/Chart.d.ts.map +1 -1
  31. package/dist/esm/Chart.js +20 -7
  32. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  33. package/dist/esm/ChartBuilder.js +81 -48
  34. package/dist/esm/Dashboard.js +2 -2
  35. package/dist/esm/ReportBuilder.d.ts +22 -1
  36. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  37. package/dist/esm/ReportBuilder.js +563 -528
  38. package/dist/esm/components/Chart/LineChart.d.ts +2 -1
  39. package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
  40. package/dist/esm/components/Chart/LineChart.js +19 -11
  41. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  42. package/dist/esm/components/UiComponents.js +1 -2
  43. package/dist/esm/hooks/useDashboard.d.ts +1 -1
  44. package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
  45. package/dist/esm/hooks/useDashboard.js +4 -4
  46. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts +28 -0
  47. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -0
  48. package/dist/esm/internals/ReportBuilder/PivotForm.js +55 -0
  49. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  50. package/dist/esm/internals/ReportBuilder/PivotModal.js +3 -1
  51. package/dist/esm/utils/astProcessing.d.ts +23 -0
  52. package/dist/esm/utils/astProcessing.d.ts.map +1 -1
  53. package/dist/esm/utils/astProcessing.js +231 -0
  54. package/dist/esm/utils/tableProcessing.d.ts +1 -0
  55. package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
  56. package/dist/esm/utils/tableProcessing.js +14 -0
  57. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import { type ColorMapType } from '../../Chart';
3
- export default function LineChart({ colors, colorMap, yAxisFields, data, containerStyle, className, xAxisField, xAxisFormat, theme, comparison, isAnimationActive, hideXAxis, hideYAxis, hideCartesianGrid, hideHorizontalCartesianGrid, hideVerticalCartesianGrid, hideSubsequentXAxisTicks, cartesianGridLineStyle, comparisonLineStyle, }: {
3
+ export default function LineChart({ colors, colorMap, yAxisFields, data, containerStyle, className, xAxisField, xAxisFormat, theme, comparison, isAnimationActive, hideXAxis, hideYAxis, hideCartesianGrid, hideHorizontalCartesianGrid, hideVerticalCartesianGrid, hideSubsequentXAxisTicks, cartesianGridLineStyle, comparisonLineStyle, cartesianGridLineColor, }: {
4
4
  colors?: string[];
5
5
  colorMap?: ColorMapType;
6
6
  yAxisFields: any[];
@@ -21,5 +21,6 @@ export default function LineChart({ colors, colorMap, yAxisFields, data, contain
21
21
  hideSubsequentXAxisTicks: boolean;
22
22
  cartesianGridLineStyle: 'solid' | 'dashed';
23
23
  comparisonLineStyle: 'solid' | 'dashed';
24
+ cartesianGridLineColor?: string;
24
25
  }): import("react/jsx-runtime").JSX.Element;
25
26
  //# sourceMappingURL=LineChart.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LineChart.d.ts","sourceRoot":"","sources":["../../../../src/components/Chart/LineChart.tsx"],"names":[],"mappings":";AAgBA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,MAAM,EACN,QAAa,EACb,WAAW,EACX,IAAI,EACJ,cAAc,EACd,SAAS,EACT,UAAU,EACV,WAAW,EACX,KAAK,EACL,UAAU,EACV,iBAAwB,EACxB,SAAiB,EACjB,SAAiB,EACjB,iBAAyB,EACzB,2BAAmC,EACnC,yBAAgC,EAChC,wBAAgC,EAChC,sBAAgC,EAChC,mBAA6B,GAC9B,EAAE;IACD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,WAAW,EAAE,GAAG,EAAE,CAAC;IACnB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,GAAG,CAAC;IACX,UAAU,EAAE,GAAG,CAAC;IAChB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,2BAA2B,EAAE,OAAO,CAAC;IACrC,yBAAyB,EAAE,OAAO,CAAC;IACnC,wBAAwB,EAAE,OAAO,CAAC;IAClC,sBAAsB,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC3C,mBAAmB,EAAE,OAAO,GAAG,QAAQ,CAAC;CACzC,2CAwPA"}
1
+ {"version":3,"file":"LineChart.d.ts","sourceRoot":"","sources":["../../../../src/components/Chart/LineChart.tsx"],"names":[],"mappings":";AAgBA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,MAAM,EACN,QAAa,EACb,WAAW,EACX,IAAI,EACJ,cAAc,EACd,SAAS,EACT,UAAU,EACV,WAAW,EACX,KAAK,EACL,UAAU,EACV,iBAAwB,EACxB,SAAiB,EACjB,SAAiB,EACjB,iBAAyB,EACzB,2BAAmC,EACnC,yBAAgC,EAChC,wBAAgC,EAChC,sBAAgC,EAChC,mBAA6B,EAC7B,sBAAsB,GACvB,EAAE;IACD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,WAAW,EAAE,GAAG,EAAE,CAAC;IACnB,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,GAAG,CAAC;IACX,UAAU,EAAE,GAAG,CAAC;IAChB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,2BAA2B,EAAE,OAAO,CAAC;IACrC,yBAAyB,EAAE,OAAO,CAAC;IACnC,wBAAwB,EAAE,OAAO,CAAC;IAClC,sBAAsB,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC3C,mBAAmB,EAAE,OAAO,GAAG,QAAQ,CAAC;IACxC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,2CA8PA"}
@@ -8,7 +8,7 @@ import ChartTooltip from '../../components/Chart/ChartTooltip';
8
8
  import getDomain from '../../utils/getDomain';
9
9
  import { useEffect, useState } from 'react';
10
10
  import { hashCode } from '../../utils/crypto';
11
- export default function LineChart({ colors, colorMap = {}, yAxisFields, data, containerStyle, className, xAxisField, xAxisFormat, theme, comparison, isAnimationActive = true, hideXAxis = false, hideYAxis = false, hideCartesianGrid = false, hideHorizontalCartesianGrid = false, hideVerticalCartesianGrid = true, hideSubsequentXAxisTicks = false, cartesianGridLineStyle = 'solid', comparisonLineStyle = 'solid', }) {
11
+ export default function LineChart({ colors, colorMap = {}, yAxisFields, data, containerStyle, className, xAxisField, xAxisFormat, theme, comparison, isAnimationActive = true, hideXAxis = false, hideYAxis = false, hideCartesianGrid = false, hideHorizontalCartesianGrid = false, hideVerticalCartesianGrid = true, hideSubsequentXAxisTicks = false, cartesianGridLineStyle = 'solid', comparisonLineStyle = 'solid', cartesianGridLineColor, }) {
12
12
  const [formattedData, setFormattedData] = useState([]);
13
13
  useEffect(() => {
14
14
  if (!data || data.length === 0) {
@@ -46,28 +46,36 @@ export default function LineChart({ colors, colorMap = {}, yAxisFields, data, co
46
46
  }
47
47
  // Allows the users to override the color scheme on a per-chart basis.
48
48
  const getCustomColor = (index, field, gradient) => {
49
- let key = index === 0 ? 'primary' : 'comparison';
49
+ let key = index === 0 ? 'comparison' : 'primary';
50
50
  field = field.replace('comparison_', '');
51
51
  if (colorMap && colorMap[field]) {
52
- if (index === 0 && gradient === 'start')
52
+ if (index === 1 && gradient === 'start')
53
53
  key = 'primaryGradientStart';
54
- if (index === 0 && gradient === 'stop')
54
+ if (index === 1 && gradient === 'stop')
55
55
  key = 'primaryGradientStop';
56
- if (index === 1 && gradient === 'start')
56
+ if (index === 0 && gradient === 'start')
57
57
  key = 'comparisonGradientStart';
58
- if (index === 1 && gradient === 'stop')
58
+ if (index === 0 && gradient === 'stop')
59
59
  key = 'comparisonGradientStop';
60
60
  return colorMap[field][key];
61
61
  }
62
62
  return undefined; // use the default colors from the theme
63
63
  };
64
- return (_jsx("div", { style: { ...containerStyle }, className: className, children: _jsx(ResponsiveContainer, { width: "100%", height: '100%', children: _jsxs(ReChartsAreaChart, { data: formattedData, children: [!hideCartesianGrid && (_jsx(CartesianGrid, { horizontal: !hideHorizontalCartesianGrid, vertical: !hideVerticalCartesianGrid, stroke: "#e5e7eb", strokeDasharray: cartesianGridLineStyle === 'dashed' ? '5 5' : undefined })), _jsx(XAxis, { dataKey: xAxisField, hide: hideXAxis, tick: { transform: 'translate(0, 6)' }, style: {
64
+ const numComparisons = yAxisFields.reduce((sum, x) => {
65
+ if (x.field?.startsWith('comparison_'))
66
+ return sum + 1;
67
+ return sum;
68
+ }, 0);
69
+ return (_jsx("div", { style: { ...containerStyle }, className: className, children: _jsx(ResponsiveContainer, { width: "100%", height: '100%', children: _jsxs(ReChartsAreaChart, { data: formattedData, children: [!hideCartesianGrid && (_jsx(CartesianGrid, { horizontal: !hideHorizontalCartesianGrid, vertical: !hideVerticalCartesianGrid, stroke: cartesianGridLineColor ?? '#e5e7eb', strokeDasharray: cartesianGridLineStyle === 'dashed' ? '5 5' : undefined })), _jsx(XAxis, { dataKey: xAxisField, hide: hideXAxis, tick: { transform: 'translate(0, 6)' }, style: {
65
70
  fontSize: '12px',
66
71
  fontFamily: theme?.chartLabelFontFamily ||
67
72
  theme?.fontFamily ||
68
73
  'Inter; Helvetica',
69
74
  color: theme?.chartLabelColor || '#666666',
70
- }, interval: hideSubsequentXAxisTicks ? 999 : 'preserveStartEnd', tickLine: false, axisLine: false, minTickGap: 5, tickFormatter: (tick) => {
75
+ }, tickLine: false, axisLine: false, minTickGap: 5, tickFormatter: (tick, i) => {
76
+ // Don't display subsequent ticks when hideSubXAxisTicks is true
77
+ if (hideSubsequentXAxisTicks && i !== 0)
78
+ return '';
71
79
  return axisFormatter({
72
80
  value: tick,
73
81
  field: xAxisField,
@@ -112,7 +120,7 @@ export default function LineChart({ colors, colorMap = {}, yAxisFields, data, co
112
120
  // hash the color stops so they're stable, valid html ids
113
121
  const gradientStart = getCustomColor(index, elem.field, 'start') ??
114
122
  getCustomColor(index, elem.field) ??
115
- selectColor(elem, colors, index);
123
+ selectColor(elem, colors, index - numComparisons);
116
124
  const gradientStop = getCustomColor(index, elem.field, 'stop') ?? '#00000000';
117
125
  const uniqueId = `gradient_${hashCode(gradientStart)}_${hashCode(gradientStop)}`;
118
126
  return (_jsx("defs", { children: _jsxs("linearGradient", { id: uniqueId, x1: "0", y1: "0", x2: "0", y2: "1", children: [_jsx("stop", { offset: "5%", stopColor: gradientStart, stopOpacity: 0.4 }), _jsx("stop", { offset: "95%", stopColor: gradientStop, stopOpacity: 0 })] }) }, `defs_${uniqueId}_${index}`));
@@ -120,11 +128,11 @@ export default function LineChart({ colors, colorMap = {}, yAxisFields, data, co
120
128
  yAxisFields.map((elem, index) => {
121
129
  const gradientStart = hashCode(getCustomColor(index, elem.field, 'start') ??
122
130
  getCustomColor(index, elem.field) ??
123
- selectColor(elem, colors, index));
131
+ selectColor(elem, colors, index - numComparisons));
124
132
  const gradientStop = hashCode(getCustomColor(index, elem.field, 'stop') ?? '#00000000');
125
133
  const uniqueId = `gradient_${gradientStart}_${gradientStop}`;
126
134
  return (_jsx(Area, { name: elem.label, type: "linear", dataKey: elem.field, stroke: getCustomColor(index, elem.field) ??
127
- selectColor(elem, colors, index), fill: `url(#${uniqueId})`, strokeWidth: 2, dot: false, strokeDasharray: comparison && comparisonLineStyle === 'dashed' && index > 0
135
+ selectColor(elem, colors, index - numComparisons), fill: `url(#${uniqueId})`, strokeWidth: 2, dot: false, strokeDasharray: comparison && comparisonLineStyle === 'dashed' && index > 0
128
136
  ? '5 5'
129
137
  : undefined, isAnimationActive: isAnimationActive }, elem.field));
130
138
  })] }) }) }));
@@ -1 +1 @@
1
- {"version":3,"file":"UiComponents.d.ts","sourceRoot":"","sources":["../../../src/components/UiComponents.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UiComponents.d.ts","sourceRoot":"","sources":["../../../src/components/UiComponents.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- // @ts-nocheck
3
2
  import { useContext, useEffect, useRef, } from 'react';
4
3
  import { XIcon } from '../assets';
5
4
  import { ThemeContext } from '../Context';
@@ -250,6 +249,7 @@ export const MemoizedPopover = ({ isOpen, setIsOpen, triggerLabel, popoverTitle
250
249
  export function MemoizedModal({ isOpen, setIsOpen, title, children, width, height, }) {
251
250
  const [theme] = useContext(ThemeContext);
252
251
  if (!isOpen) {
252
+ // @ts-ignore
253
253
  return null;
254
254
  }
255
255
  return (_jsxs(_Fragment, { children: [_jsx("div", { style: {
@@ -410,7 +410,6 @@ export const QuillColumnSearchEmptyState = () => {
410
410
  export const QuillLoadingComponent = () => {
411
411
  const theme = useTheme();
412
412
  return (_jsxs("div", { style: {
413
- background: theme.backgroundColor,
414
413
  width: 250,
415
414
  minWidth: 250,
416
415
  height: '100%',
@@ -2,6 +2,6 @@ export declare const useDashboard: (dashboardName: string) => {
2
2
  data: any;
3
3
  isLoading: boolean;
4
4
  error: any;
5
- reload: () => void;
5
+ reload: (overrideDashboardName?: string) => void;
6
6
  };
7
7
  //# sourceMappingURL=useDashboard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useDashboard.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDashboard.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,YAAY,kBAAmB,MAAM;;;;;CA0DjD,CAAC"}
1
+ {"version":3,"file":"useDashboard.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDashboard.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,YAAY,kBAAmB,MAAM;;;;qCASF,MAAM;CAiDrD,CAAC"}
@@ -9,10 +9,10 @@ export const useDashboard = (dashboardName) => {
9
9
  const [error, setError] = useState(null);
10
10
  const [data, setData] = useState(null);
11
11
  const [client] = useContext(ClientContext);
12
- const handleReload = () => {
13
- getDashboards();
12
+ const handleReload = (overrideDashboardName) => {
13
+ getDashboards(overrideDashboardName ?? dashboardName);
14
14
  };
15
- async function getDashboards() {
15
+ async function getDashboards(dashboardName) {
16
16
  if (dashboardName === null || dashboardName === undefined)
17
17
  return;
18
18
  setIsLoading(true);
@@ -44,7 +44,7 @@ export const useDashboard = (dashboardName) => {
44
44
  setIsLoading(false);
45
45
  }
46
46
  useEffect(() => {
47
- getDashboards();
47
+ getDashboards(dashboardName);
48
48
  }, [dashboardName, client]);
49
49
  return { data, isLoading, error, reload: handleReload };
50
50
  };
@@ -0,0 +1,28 @@
1
+ import { ReactNode } from 'react';
2
+ import { Column } from '../../models/Columns';
3
+ interface PivotFormProps {
4
+ pivotRowField: any;
5
+ setPivotRowField: any;
6
+ pivotColumnField: any;
7
+ setPivotColumnField: any;
8
+ pivotValueField: any;
9
+ setPivotValueField: any;
10
+ pivotAggregation: any;
11
+ setPivotAggregation: any;
12
+ columns: Column[];
13
+ uniqueValues?: any;
14
+ onDelete: any;
15
+ SecondaryButtonComponent: (props: {
16
+ onClick: () => void;
17
+ label: string;
18
+ disabled?: boolean;
19
+ icon?: ReactNode;
20
+ }) => JSX.Element;
21
+ SelectComponent: any;
22
+ PivotColumnContainer?: (props: {
23
+ children: ReactNode;
24
+ }) => JSX.Element;
25
+ }
26
+ export default function PivotForm({ pivotRowField, setPivotRowField, pivotColumnField, setPivotColumnField, pivotValueField, setPivotValueField, pivotAggregation, setPivotAggregation, columns, uniqueValues, onDelete, SecondaryButtonComponent, SelectComponent, PivotColumnContainer, }: PivotFormProps): import("react/jsx-runtime").JSX.Element;
27
+ export {};
28
+ //# sourceMappingURL=PivotForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PivotForm.d.ts","sourceRoot":"","sources":["../../../../src/internals/ReportBuilder/PivotForm.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAuB,MAAM,OAAO,CAAC;AAQ9D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAI9C,UAAU,cAAc;IACtB,aAAa,EAAE,GAAG,CAAC;IACnB,gBAAgB,EAAE,GAAG,CAAC;IACtB,gBAAgB,EAAE,GAAG,CAAC;IACtB,mBAAmB,EAAE,GAAG,CAAC;IACzB,eAAe,EAAE,GAAG,CAAC;IACrB,kBAAkB,EAAE,GAAG,CAAC;IACxB,gBAAgB,EAAE,GAAG,CAAC;IACtB,mBAAmB,EAAE,GAAG,CAAC;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,QAAQ,EAAE,GAAG,CAAC;IACd,wBAAwB,EAAE,CAAC,KAAK,EAAE;QAChC,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,IAAI,CAAC,EAAE,SAAS,CAAC;KAClB,KAAK,GAAG,CAAC,OAAO,CAAC;IAClB,eAAe,EAAE,GAAG,CAAC;IACrB,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;CACxE;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,wBAAwB,EACxB,eAAe,EACf,oBAAgD,GACjD,EAAE,cAAc,2CAmGhB"}
@@ -0,0 +1,55 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState } from 'react';
3
+ import { QuillPivotColumnContainer, } from '../../components/UiComponents';
4
+ import { snakeCaseToTitleCase } from '../../utils/textProcessing';
5
+ import { numberFormatOptions } from '../../ChartBuilder';
6
+ import { getPossiblePivotFieldOptions } from '../../utils/pivotProcessing';
7
+ export default function PivotForm({ pivotRowField, setPivotRowField, pivotColumnField, setPivotColumnField, pivotValueField, setPivotValueField, pivotAggregation, setPivotAggregation, columns, uniqueValues, onDelete, SecondaryButtonComponent, SelectComponent, PivotColumnContainer = QuillPivotColumnContainer, }) {
8
+ const [allowedColumnFields, setAllowedColumnFields] = useState([]);
9
+ const [allowedRowFields, setAllowedRowFields] = useState([]);
10
+ const [allowedValueFields, setAllowedValueFields] = useState([]);
11
+ useEffect(() => {
12
+ const possibleColumns = getPossiblePivotFieldOptions(columns, uniqueValues);
13
+ setAllowedRowFields(possibleColumns.rowFields);
14
+ setAllowedColumnFields(possibleColumns.columnFields);
15
+ setAllowedValueFields(possibleColumns.valueFields);
16
+ }, [columns, uniqueValues]);
17
+ return (_jsxs(PivotColumnContainer, { children: [_jsx(SelectComponent, { id: "pivot-row-field", label: "Row field", value: pivotRowField, onChange: (e) => {
18
+ setPivotRowField(e.target.value === '' ? undefined : e.target.value);
19
+ }, options: allowedRowFields.map((field) => {
20
+ return {
21
+ label: snakeCaseToTitleCase(field),
22
+ value: field,
23
+ };
24
+ }), width: 200 }), _jsx(SelectComponent, { id: "pivot-row-field", label: "Column field", value: pivotColumnField, onChange: (e) => {
25
+ setPivotColumnField(e.target.value === '' ? undefined : e.target.value);
26
+ }, options: allowedColumnFields.map((field) => {
27
+ return {
28
+ label: snakeCaseToTitleCase(field),
29
+ value: field,
30
+ };
31
+ }), width: 200 }), _jsx(SelectComponent, { id: "pivot-row-field", label: "Value field", value: pivotValueField, onChange: (e) => {
32
+ setPivotValueField(e.target.value === '' ? undefined : e.target.value);
33
+ }, options: allowedValueFields.map((field) => {
34
+ return {
35
+ label: snakeCaseToTitleCase(field),
36
+ value: field,
37
+ };
38
+ }), width: 200 }), _jsx(SelectComponent, { id: "pivot-row-field", label: "Aggregation type", value: pivotAggregation, onChange: (e) => {
39
+ if (e.target.value !== 'count' &&
40
+ pivotValueField &&
41
+ !numberFormatOptions.includes(columns.find((col) => col.field === pivotValueField)
42
+ .format)) {
43
+ setPivotValueField(null);
44
+ }
45
+ setPivotAggregation(e.target.value === '' ? undefined : e.target.value);
46
+ }, options: [
47
+ ...['sum', 'average', 'count', 'max', 'min'].map((option) => {
48
+ return { label: option, value: option };
49
+ }),
50
+ ], width: 200 }), _jsx("div", { style: {
51
+ display: 'flex',
52
+ alignItems: 'flex-start',
53
+ flexDirection: 'column',
54
+ }, children: _jsx(SecondaryButtonComponent, { onClick: onDelete, label: "Delete Pivot" }) })] }));
55
+ }
@@ -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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"}
@@ -208,6 +208,7 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
208
208
  setPopUpTitle('Add pivot');
209
209
  };
210
210
  const onEditPivot = (pivot, index) => {
211
+ setIsLoading(false);
211
212
  setPivotRowField(pivot.rowField);
212
213
  setPivotColumnField(pivot.columnField);
213
214
  setPivotValueField(pivot.valueField);
@@ -292,6 +293,7 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
292
293
  allowedValueFields,
293
294
  ]);
294
295
  const pivotFieldChange = async (field, value) => {
296
+ setErrors([]);
295
297
  setIsLoading(true);
296
298
  const pivot = {
297
299
  rowField: pivotRowField,
@@ -385,7 +387,7 @@ export const PivotModal = ({ pivotRowField, setPivotRowField, pivotColumnField,
385
387
  }, children: [isLoading && _jsx(LoadingComponent, {}), samplePivotTable && !isLoading && (_jsx("div", { style: {
386
388
  width: pivotCardWidth,
387
389
  minHeight: 160,
388
- }, children: _jsx(PivotCard, { pivotTable: samplePivotTable, theme: theme, index: 0, selectedPivotIndex: -1, onEditPivot: () => { }, ButtonComponent: ButtonComponent, showEdit: false, clickable: false, minHeight: 140, LabelComponent: LabelComponent, TextComponent: TextComponent, HeaderComponent: HeaderComponent, CardComponent: CardComponent, onSelectPivot: () => { }, onClose: () => {
390
+ }, children: _jsx(PivotCard, { pivotTable: samplePivotTable, theme: theme, index: 0, selectedPivotIndex: -1, onEditPivot: () => { }, ButtonComponent: ButtonComponent, showEdit: false, clickable: false, minHeight: 180, LabelComponent: LabelComponent, TextComponent: TextComponent, HeaderComponent: HeaderComponent, CardComponent: CardComponent, onSelectPivot: () => { }, onClose: () => {
389
391
  setPivotAggregation(null);
390
392
  setPivotRowField(null);
391
393
  setPivotValueField(null);
@@ -1,3 +1,26 @@
1
1
  import { Column } from '../models/Columns';
2
+ export declare function getSelectFromAST(ast: any): any;
2
3
  export declare function processStarColumn(ast: any, columns: Column[]): any;
4
+ export declare function recursiveSearchByKey(node: any, searchKey: string): any;
5
+ export declare function recursiveSearchByKeys(node: any, searchKeys: string[]): any;
6
+ export declare function createTableNameToTableAliasMap(ast: any): {
7
+ [key: string]: string;
8
+ };
9
+ export declare function getColumnsByTableName(ast: any, tableName: string): {
10
+ columns: {
11
+ field: string;
12
+ }[];
13
+ name: string;
14
+ };
15
+ export declare function processApostrophe(node: any, searchKeys: string[]): any;
16
+ export declare function recursiveSearchByKeysFindAllOccurances(node: any, searchKeys: string[], results: any[]): any;
17
+ export declare function getColumnAndTableInfo(tableAliasMap: {
18
+ [alias: string]: string;
19
+ }, column: any, schemaInfo: any): {
20
+ tableName: string;
21
+ columnName: string;
22
+ } | undefined;
23
+ export declare function getColumnsByTableFromASTAndSchema(ast: any, tables: any, tableAliasMap: any): {
24
+ [table: string]: string[];
25
+ };
3
26
  //# sourceMappingURL=astProcessing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"astProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/astProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAe5D"}
1
+ {"version":3,"file":"astProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/astProcessing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,OAQxC;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAe5D;AAGD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,GAAG,GAAG,CAgBtE;AAGD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,GAAG,CAgB1E;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,GAAG;;EA2BtD;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,MAAM,GAChB;IAAE,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAahD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,GAAG,CActE;AAED,wBAAgB,sCAAsC,CACpD,IAAI,EAAE,GAAG,EACT,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,GAAG,EAAE,GACb,GAAG,CAYL;AAED,wBAAgB,qBAAqB,CACnC,aAAa,EAAE;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,EAC1C,MAAM,EAAE,GAAG,EACX,UAAU,EAAE,GAAG,GACd;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAgCvD;AAED,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,GAAG,EACX,aAAa,EAAE,GAAG,GACjB;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,CAoG/B"}
@@ -1,3 +1,14 @@
1
+ export function getSelectFromAST(ast) {
2
+ if (Array.isArray(ast)) {
3
+ return ast[0];
4
+ }
5
+ else if (ast.select) {
6
+ return ast.select;
7
+ }
8
+ else {
9
+ return ast;
10
+ }
11
+ }
1
12
  export function processStarColumn(ast, columns) {
2
13
  if (ast.columns === '*') {
3
14
  ast.columns = columns.map((column) => {
@@ -14,3 +25,223 @@ export function processStarColumn(ast, columns) {
14
25
  }
15
26
  return ast;
16
27
  }
28
+ // a useful function to search for a specific keywork and return the value
29
+ export function recursiveSearchByKey(node, searchKey) {
30
+ let result = undefined;
31
+ if (!node || typeof node !== 'object') {
32
+ return undefined;
33
+ }
34
+ if (node[searchKey]) {
35
+ return node[searchKey];
36
+ }
37
+ const keys = Object.keys(node);
38
+ for (const key of keys) {
39
+ result = recursiveSearchByKey(node[key], searchKey);
40
+ if (result) {
41
+ return result;
42
+ }
43
+ }
44
+ return result;
45
+ }
46
+ // If the object has all the requested keys, return the object
47
+ export function recursiveSearchByKeys(node, searchKeys) {
48
+ let result = undefined;
49
+ if (!node || typeof node !== 'object') {
50
+ return undefined;
51
+ }
52
+ const nodeKeys = Object.keys(node);
53
+ if (searchKeys.every((key) => nodeKeys.includes(key))) {
54
+ return node;
55
+ }
56
+ for (const key of nodeKeys) {
57
+ result = recursiveSearchByKeys(node[key], searchKeys);
58
+ if (result) {
59
+ return result;
60
+ }
61
+ }
62
+ return result;
63
+ }
64
+ export function createTableNameToTableAliasMap(ast) {
65
+ const tableNameToTableAliasMap = {};
66
+ if (ast.from) {
67
+ for (const table of ast.from) {
68
+ const tableObject = recursiveSearchByKeys(table, ['table', 'as']);
69
+ if (tableObject.as) {
70
+ tableNameToTableAliasMap[tableObject.as] = tableObject.table;
71
+ }
72
+ else {
73
+ tableNameToTableAliasMap[tableObject.table] = tableObject.table;
74
+ }
75
+ }
76
+ }
77
+ if (ast.with) {
78
+ for (const withStmt of ast.with) {
79
+ if (withStmt.stmt.ast.from) {
80
+ for (const table of withStmt.stmt.ast.from) {
81
+ const tableObject = recursiveSearchByKeys(table, ['table', 'as']);
82
+ if (tableObject.as) {
83
+ tableNameToTableAliasMap[tableObject.as] = tableObject.table;
84
+ }
85
+ else {
86
+ tableNameToTableAliasMap[tableObject.table] = tableObject.table;
87
+ }
88
+ }
89
+ }
90
+ }
91
+ }
92
+ return tableNameToTableAliasMap;
93
+ }
94
+ export function getColumnsByTableName(ast, tableName) {
95
+ const tableNameToTableAliasMap = createTableNameToTableAliasMap(ast);
96
+ const columns = [];
97
+ ast.columns.forEach((col) => {
98
+ const columnInfo = recursiveSearchByKeys(col, ['table', 'column']);
99
+ if (columnInfo.table === tableName ||
100
+ columnInfo.table === tableNameToTableAliasMap[tableName]) {
101
+ columns.push({ field: columnInfo.column });
102
+ }
103
+ });
104
+ return { columns, name: tableName };
105
+ }
106
+ export function processApostrophe(node, searchKeys) {
107
+ if (!node || typeof node !== 'object') {
108
+ return;
109
+ }
110
+ const nodeKeys = Object.keys(node);
111
+ if (searchKeys.every((key) => nodeKeys.includes(key))) {
112
+ if (node.type === 'single_quote_string') {
113
+ node.value = node.value.replace("''", "'").replace("\\'", "'");
114
+ }
115
+ }
116
+ for (const key of nodeKeys) {
117
+ processApostrophe(node[key], searchKeys);
118
+ }
119
+ return;
120
+ }
121
+ export function recursiveSearchByKeysFindAllOccurances(node, searchKeys, results) {
122
+ if (!node || typeof node !== 'object') {
123
+ return;
124
+ }
125
+ const nodeKeys = Object.keys(node);
126
+ if (searchKeys.every((key) => nodeKeys.includes(key))) {
127
+ return results.push(node);
128
+ }
129
+ for (const key of nodeKeys) {
130
+ recursiveSearchByKeysFindAllOccurances(node[key], searchKeys, results);
131
+ }
132
+ return results;
133
+ }
134
+ export function getColumnAndTableInfo(tableAliasMap, column, schemaInfo) {
135
+ let columnsInfo = recursiveSearchByKeys(column, ['table', 'column']);
136
+ if (!columnsInfo) {
137
+ const quoteStringColumn = recursiveSearchByKeys(column, ['type', 'value']);
138
+ columnsInfo = { table: null, column: quoteStringColumn.value };
139
+ }
140
+ let columnName = columnsInfo.column;
141
+ if (typeof columnsInfo.column !== 'string') {
142
+ columnName = columnsInfo.column.expr.value;
143
+ }
144
+ let tableName = '';
145
+ if (columnsInfo.table) {
146
+ tableName = tableAliasMap[columnsInfo.table];
147
+ }
148
+ else {
149
+ // If there is no column name search through the schemaInfo to find an accurate table name
150
+ const tableNames = Object.values(tableAliasMap);
151
+ for (const table of tableNames) {
152
+ const tableInfo = schemaInfo.find((tableInfo) => tableInfo.name === table);
153
+ const columnNames = tableInfo.columns.map((column) => column.name);
154
+ if (columnNames.includes(columnName)) {
155
+ tableName = table;
156
+ break;
157
+ }
158
+ }
159
+ }
160
+ // const tableName = columnsInfo.table
161
+ // ? tableAliasMap[columnsInfo.table]
162
+ // : //@ts-ignore
163
+ // tableAliasMap[Object.keys(tableAliasMap)[0]];
164
+ return { tableName, columnName };
165
+ }
166
+ export function getColumnsByTableFromASTAndSchema(ast, tables, tableAliasMap) {
167
+ let referencedColumns = {};
168
+ if (ast.columns === '*' || ast.columns[0].expr.column === '*') {
169
+ // Be sure to select everything from stars
170
+ const tableList = ast.from.map((table) => recursiveSearchByKey(table, 'table'));
171
+ tableList.forEach((table) => {
172
+ const tableInfo = tables.find((tableInfo) => tableInfo.name === table);
173
+ if (tableInfo) {
174
+ if (!referencedColumns[table]) {
175
+ referencedColumns[table] = [];
176
+ }
177
+ referencedColumns[table] = tableInfo.columns.map((column) => column.name || '');
178
+ }
179
+ });
180
+ }
181
+ else {
182
+ // look through all the columns
183
+ ast.columns.forEach((column) => {
184
+ const result = getColumnAndTableInfo(tableAliasMap, column, tables);
185
+ if (!result || !result.tableName)
186
+ return;
187
+ if (!referencedColumns[result.tableName]) {
188
+ referencedColumns[result.tableName] = [];
189
+ }
190
+ // @ts-ignore
191
+ referencedColumns[result.tableName].push(result.columnName);
192
+ });
193
+ }
194
+ // Look through every join reference
195
+ if (ast.from) {
196
+ const allColumnReferncesInFrom = recursiveSearchByKeysFindAllOccurances(ast.from, ['column', 'table'], []);
197
+ allColumnReferncesInFrom.forEach((column) => {
198
+ const result = getColumnAndTableInfo(tableAliasMap, column, tables);
199
+ if (!result || !result.tableName)
200
+ return;
201
+ if (!referencedColumns[result.tableName]) {
202
+ referencedColumns[result.tableName] = [];
203
+ }
204
+ // @ts-ignore
205
+ referencedColumns[result.tableName].push(result.columnName);
206
+ });
207
+ }
208
+ // Look through the where's
209
+ if (ast.where) {
210
+ let allColumnReferncesInWhere = recursiveSearchByKeysFindAllOccurances(ast.where, ['column', 'table'], []);
211
+ allColumnReferncesInWhere.forEach((column) => {
212
+ const result = getColumnAndTableInfo(tableAliasMap, column, tables);
213
+ if (!result || !result.tableName || !result.columnName)
214
+ return;
215
+ if (!referencedColumns[result.tableName]) {
216
+ referencedColumns[result.tableName] = [];
217
+ }
218
+ // @ts-ignore
219
+ referencedColumns[result.tableName].push(result.columnName);
220
+ });
221
+ // NEED TO SEARCH FOR ALL DOUBLE QUOTE STRINGS AS WELL
222
+ allColumnReferncesInWhere = recursiveSearchByKeysFindAllOccurances(ast.where, ['type', 'value'], []);
223
+ allColumnReferncesInWhere.forEach((column) => {
224
+ if (column.type === 'double_quote_string') {
225
+ let tableName = '';
226
+ const tableNames = Object.values(tableAliasMap);
227
+ for (const table of tableNames) {
228
+ const tableInfo = tables.find((tableInfo) => tableInfo.name === table);
229
+ const columnNames = tableInfo.columns.map((column) => column.name);
230
+ if (columnNames.includes(column.value)) {
231
+ tableName = table;
232
+ break;
233
+ }
234
+ }
235
+ if (!referencedColumns[tableName]) {
236
+ referencedColumns[tableName] = [];
237
+ }
238
+ // @ts-ignore
239
+ referencedColumns[tableName].push(column.value);
240
+ }
241
+ });
242
+ }
243
+ for (const table in referencedColumns) {
244
+ referencedColumns[table] = Array.from(new Set(referencedColumns[table]));
245
+ }
246
+ return referencedColumns;
247
+ }
@@ -1,4 +1,5 @@
1
1
  import { Column } from '../models/Columns';
2
+ export declare const hasColumnAlias: (columns: Column[], referencedColumns: string[]) => boolean;
2
3
  export declare const getUniqueValuesByColumns: (columns: Column[], query: string, rows: any, client: any) => Promise<{
3
4
  [column: string]: {
4
5
  [value: string]: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"tableProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/tableProcessing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3C,eAAO,MAAM,wBAAwB,YAC1B,MAAM,EAAE,SACV,MAAM,QACP,GAAG,UACD,GAAG;;;;SAwDZ,CAAC"}
1
+ {"version":3,"file":"tableProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/tableProcessing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAI3C,eAAO,MAAM,cAAc,YAChB,MAAM,EAAE,qBACE,MAAM,EAAE,KAC1B,OAUF,CAAC;AAEF,eAAO,MAAM,wBAAwB,YAC1B,MAAM,EAAE,SACV,MAAM,QACP,GAAG,UACD,GAAG;;;;SA2DZ,CAAC"}
@@ -1,5 +1,16 @@
1
1
  import { getData } from './dataFetcher';
2
2
  import { generateDistinctQuery } from './queryConstructor';
3
+ export const hasColumnAlias = (columns, referencedColumns) => {
4
+ if (!referencedColumns) {
5
+ return true;
6
+ }
7
+ for (const column of columns) {
8
+ if (!referencedColumns.includes(column.field)) {
9
+ return true;
10
+ }
11
+ }
12
+ return false;
13
+ };
3
14
  export const getUniqueValuesByColumns = async (columns, query, rows, client) => {
4
15
  const stringNames = columns.map((column) => column.field);
5
16
  const uniqueValues = {};
@@ -36,6 +47,9 @@ export const getUniqueValuesByColumns = async (columns, query, rows, client) =>
36
47
  else {
37
48
  const distinctValueQuery = generateDistinctQuery(stringNames, query);
38
49
  const distinctStrings = await fetchDistinctStrings(distinctValueQuery, client);
50
+ if (!distinctStrings) {
51
+ return {};
52
+ }
39
53
  for (const column of distinctStrings) {
40
54
  uniqueValues[column.column] = column.values;
41
55
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quillsql/react",
3
- "version": "2.11.28",
3
+ "version": "2.11.30",
4
4
  "exports": {
5
5
  ".": {
6
6
  "import": "./dist/esm/index.js",