@quillsql/react 2.11.25 → 2.11.27
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.map +1 -1
- package/dist/cjs/Chart.js +16 -13
- package/dist/cjs/ChartBuilder.d.ts +7 -20
- package/dist/cjs/ChartBuilder.d.ts.map +1 -1
- package/dist/cjs/ChartBuilder.js +25 -25
- package/dist/cjs/ChartEditor.d.ts.map +1 -1
- package/dist/cjs/ChartEditor.js +3 -3
- package/dist/cjs/Dashboard.d.ts +2 -1
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.d.ts +11 -5
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +208 -127
- package/dist/cjs/SQLEditor.d.ts +4 -11
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +57 -124
- package/dist/cjs/Table.d.ts +1 -1
- package/dist/cjs/Table.js +4 -4
- package/dist/cjs/components/Dashboard/DashboardFilter.js +1 -1
- package/dist/cjs/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/MetricComponent.js +9 -12
- package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/TableComponent.js +13 -11
- package/dist/cjs/components/QuillTable.d.ts +6 -3
- package/dist/cjs/components/QuillTable.d.ts.map +1 -1
- package/dist/cjs/components/QuillTable.js +3 -3
- package/dist/cjs/components/ReportBuilder/convert.d.ts +2 -2
- package/dist/cjs/components/ReportBuilder/ui.js +1 -1
- package/dist/cjs/components/UiComponents.d.ts +1 -0
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +17 -1
- package/dist/cjs/internals/ReportBuilder/PivotList.d.ts +27 -24
- package/dist/cjs/internals/ReportBuilder/PivotList.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotList.js +9 -7
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +11 -3
- package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/cjs/internals/ReportBuilder/PivotModal.js +52 -67
- package/dist/cjs/models/Columns.d.ts +11 -0
- package/dist/cjs/models/Columns.d.ts.map +1 -0
- package/dist/cjs/models/Columns.js +2 -0
- package/dist/cjs/models/Tables.d.ts +0 -8
- package/dist/cjs/models/Tables.d.ts.map +1 -1
- package/dist/cjs/utils/astProcessing.d.ts +3 -0
- package/dist/cjs/utils/astProcessing.d.ts.map +1 -0
- package/dist/cjs/utils/astProcessing.js +20 -0
- package/dist/cjs/utils/columnProcessing.d.ts +9 -0
- package/dist/cjs/utils/columnProcessing.d.ts.map +1 -0
- package/dist/cjs/utils/columnProcessing.js +207 -0
- package/dist/cjs/utils/dashboard.js +9 -9
- package/dist/cjs/utils/pivotProcessing.d.ts +2 -1
- package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/pivotProcessing.js +3 -8
- package/dist/cjs/utils/tableProcessing.d.ts +2 -2
- package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
- package/dist/cjs/utils/tableProcessing.js +1 -3
- package/dist/cjs/utils/valueFormatter.d.ts +2 -1
- package/dist/cjs/utils/valueFormatter.d.ts.map +1 -1
- package/dist/cjs/utils/valueFormatter.js +12 -1
- package/dist/esm/Chart.d.ts.map +1 -1
- package/dist/esm/Chart.js +16 -13
- package/dist/esm/ChartBuilder.d.ts +7 -20
- package/dist/esm/ChartBuilder.d.ts.map +1 -1
- package/dist/esm/ChartBuilder.js +25 -25
- package/dist/esm/ChartEditor.d.ts.map +1 -1
- package/dist/esm/ChartEditor.js +3 -3
- package/dist/esm/Dashboard.d.ts +2 -1
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.d.ts +11 -5
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +205 -124
- package/dist/esm/SQLEditor.d.ts +4 -11
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +57 -123
- package/dist/esm/Table.d.ts +1 -1
- package/dist/esm/Table.js +4 -4
- package/dist/esm/components/Dashboard/DashboardFilter.js +1 -1
- package/dist/esm/components/Dashboard/MetricComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/MetricComponent.js +9 -12
- package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/TableComponent.js +13 -11
- package/dist/esm/components/QuillTable.d.ts +6 -3
- package/dist/esm/components/QuillTable.d.ts.map +1 -1
- package/dist/esm/components/QuillTable.js +3 -3
- package/dist/esm/components/ReportBuilder/convert.d.ts +2 -2
- package/dist/esm/components/ReportBuilder/ui.js +1 -1
- package/dist/esm/components/UiComponents.d.ts +1 -0
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +15 -0
- package/dist/esm/internals/ReportBuilder/PivotList.d.ts +27 -24
- package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotList.js +9 -7
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +11 -3
- package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
- package/dist/esm/internals/ReportBuilder/PivotModal.js +55 -70
- package/dist/esm/models/Columns.d.ts +11 -0
- package/dist/esm/models/Columns.d.ts.map +1 -0
- package/dist/esm/models/Columns.js +1 -0
- package/dist/esm/models/Tables.d.ts +0 -8
- package/dist/esm/models/Tables.d.ts.map +1 -1
- package/dist/esm/utils/astProcessing.d.ts +3 -0
- package/dist/esm/utils/astProcessing.d.ts.map +1 -0
- package/dist/esm/utils/astProcessing.js +16 -0
- package/dist/esm/utils/columnProcessing.d.ts +9 -0
- package/dist/esm/utils/columnProcessing.d.ts.map +1 -0
- package/dist/esm/utils/columnProcessing.js +201 -0
- package/dist/esm/utils/dashboard.js +9 -9
- package/dist/esm/utils/pivotProcessing.d.ts +2 -1
- package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
- package/dist/esm/utils/pivotProcessing.js +3 -8
- package/dist/esm/utils/tableProcessing.d.ts +2 -2
- package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
- package/dist/esm/utils/tableProcessing.js +1 -3
- package/dist/esm/utils/valueFormatter.d.ts +2 -1
- package/dist/esm/utils/valueFormatter.d.ts.map +1 -1
- package/dist/esm/utils/valueFormatter.js +11 -0
- package/package.json +1 -1
- package/dist/cjs/utils/types.d.ts +0 -4
- package/dist/cjs/utils/types.d.ts.map +0 -1
- package/dist/cjs/utils/types.js +0 -52
- package/dist/cjs/utils/valueFormatterCSV.d.ts +0 -17
- package/dist/cjs/utils/valueFormatterCSV.d.ts.map +0 -1
- package/dist/cjs/utils/valueFormatterCSV.js +0 -99
- package/dist/esm/utils/types.d.ts +0 -4
- package/dist/esm/utils/types.d.ts.map +0 -1
- package/dist/esm/utils/types.js +0 -48
- package/dist/esm/utils/valueFormatterCSV.d.ts +0 -17
- package/dist/esm/utils/valueFormatterCSV.d.ts.map +0 -1
- package/dist/esm/utils/valueFormatterCSV.js +0 -95
package/dist/esm/SQLEditor.d.ts
CHANGED
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
import React, { ReactNode } from 'react';
|
|
2
2
|
import { DashboardItem } from './Dashboard';
|
|
3
|
-
export declare function convertPostgresColumn(column: any): {
|
|
4
|
-
name: any;
|
|
5
|
-
label: any;
|
|
6
|
-
field: any;
|
|
7
|
-
format: string;
|
|
8
|
-
fieldType: string;
|
|
9
|
-
};
|
|
10
3
|
/**
|
|
11
4
|
* Props for the Quill SQLEditor component.
|
|
12
5
|
*/
|
|
@@ -267,9 +260,9 @@ export default function SQLEditor({ ButtonComponent, SecondaryButtonComponent, D
|
|
|
267
260
|
export declare const SchemaListComponent: ({ schema, theme, loading, LoadingComponent, width, onClick, }: {
|
|
268
261
|
schema: any;
|
|
269
262
|
theme: any;
|
|
270
|
-
loading:
|
|
271
|
-
LoadingComponent
|
|
272
|
-
width
|
|
273
|
-
onClick
|
|
263
|
+
loading: boolean;
|
|
264
|
+
LoadingComponent?: any;
|
|
265
|
+
width?: any;
|
|
266
|
+
onClick: (event: React.MouseEvent<HTMLDivElement>) => void;
|
|
274
267
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
275
268
|
//# sourceMappingURL=SQLEditor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLEditor.d.ts","sourceRoot":"","sources":["../../src/SQLEditor.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SQLEditor.d.ts","sourceRoot":"","sources":["../../src/SQLEditor.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAMZ,SAAS,EACV,MAAM,OAAO,CAAC;AA2Bf,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAqC5C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QACxB,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;IAElB;;OAEG;IACH,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE;QACjC,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;IAElB,8EAA8E;IAC9E,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAExE;;OAEG;IACH,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE;QAC3B,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;KAChE,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB,0BAA0B;IAC1B,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QACxB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,EAAE;YACP,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;SACf,EAAE,CAAC;QACJ,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;QAChE,KAAK,EAAE,MAAM,CAAC;KACf,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QACvB,IAAI,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,EAAE,CAAC;QAC/B,OAAO,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAC5C,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAErC,6EAA6E;IAC7E,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QACtB,QAAQ,EAAE,SAAS,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;KACvB,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QACvB,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACrC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,SAAS,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB,2BAA2B;IAC3B,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QACzB,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACrC,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,SAAS,CAAC;KAC5B,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB,yBAAyB;IACzB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAE3D,0BAA0B;IAC1B,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAE5D,0DAA0D;IAC1D,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAE/D,+BAA+B;IAC/B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAE1D;;OAEG;IACH,6BAA6B,CAAC,EAAE,CAAC,KAAK,EAAE;QACtC,QAAQ,EAAE,SAAS,CAAC;KACrB,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB;;OAEG;IACH,gCAAgC,CAAC,EAAE,CAAC,KAAK,EAAE;QACzC,QAAQ,EAAE,SAAS,CAAC;KACrB,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAEpE;;OAEG;IACH,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAEvE;;OAEG;IACH,yBAAyB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAE5E;;OAEG;IACH,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,CAAC,OAAO,CAAC;IAEzE;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAExC;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAExC;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAE5C;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAE9C;;OAEG;IACH,wBAAwB,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,KAAK,IAAI,CAAC;IAElE;;;;;;OAMG;IACH,4BAA4B,CAAC,EAAE,OAAO,CAAC;IAEvC;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B;;OAEG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;OAEG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,GAAG,GAAG,CAAC;IAEpC;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAEnC;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CACtC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,eAAgC,EAChC,wBAAkD,EAClD,qBAA4C,EAC5C,kBAAmC,EACnC,eAAsC,EACtC,cAAoC,EACpC,iBAAyB,EACzB,gBAAwC,EACxC,cAA8B,EAC9B,gBAAkC,EAClC,aAAyB,EACzB,cAA8B,EAC9B,eAAgC,EAChC,kBAAsC,EACtC,aAA4B,EAC5B,qBAAkD,EAClD,6BAAkE,EAClE,gCAAwE,EACxE,iBAA0C,EAC1C,oBAAgD,EAChD,yBAA0D,EAC1D,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,eAAe,EACf,cAAc,EACd,qBAA6B,EAC7B,sBAA8B,EAC9B,oBAA4B,EAC5B,wBAAgC,EAChC,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,yBAA8C,EAC9C,aAAyB,EACzB,gBAA4B,EAC5B,4BAAmC,EACnC,cAAoC,EACpC,SAAS,GACV,EAAE,cAAc,2CAsYhB;AA+GD,eAAO,MAAM,mBAAmB;YAQtB,GAAG;WACJ,GAAG;aACD,OAAO;uBACG,GAAG;YACd,GAAG;qBACM,gBAAgB,CAAC,cAAc,CAAC,KAAK,IAAI;6CA+F3D,CAAC"}
|
package/dist/esm/SQLEditor.js
CHANGED
|
@@ -1,94 +1,18 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
/* eslint-disable no-unused-vars */
|
|
3
|
-
// @ts-nocheck
|
|
4
3
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
5
4
|
import { useState, useContext, useEffect, useRef, } from 'react';
|
|
6
5
|
import MonacoEditor from '@monaco-editor/react';
|
|
7
6
|
import { ClientContext, SchemaContext, ThemeContext } from './Context';
|
|
8
7
|
import { getData, getDataFromCloud } from './utils/dataFetcher';
|
|
9
8
|
import { ChartBuilderWithModal } from './ChartBuilder';
|
|
10
|
-
import { MemoizedButton, MemoizedDeleteButton, MemoizedHeader, MemoizedLabel, MemoizedModal, MemoizedPopover, MemoizedSecondaryButton, MemoizedSubHeader, MemoizedText, QuillChartBuilderFormContainer, QuillChartBuilderInputColumnContainer, QuillChartBuilderInputRowContainer, QuillErrorMessageComponent, QuillPivotColumnContainer, QuillPivotRowContainer, QuillTableComponent, } from './components/UiComponents';
|
|
9
|
+
import { MemoizedButton, MemoizedDeleteButton, MemoizedHeader, MemoizedLabel, MemoizedModal, MemoizedPopover, MemoizedSecondaryButton, MemoizedSubHeader, MemoizedText, QuillChartBuilderFormContainer, QuillChartBuilderInputColumnContainer, QuillChartBuilderInputRowContainer, QuillErrorMessageComponent, QuillLoadingComponent, QuillPivotColumnContainer, QuillPivotRowContainer, QuillTableComponent, } from './components/UiComponents';
|
|
11
10
|
import { QuillTextInput } from './components/UiComponents';
|
|
12
11
|
import { updateFirstChildWidth } from './utils/width';
|
|
13
12
|
import { QuillCard } from './components/QuillCard';
|
|
14
13
|
import { QuillSelectComponent } from './components/QuillSelect';
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
let fieldType;
|
|
18
|
-
switch (column.dataTypeID) {
|
|
19
|
-
case 16: // bool
|
|
20
|
-
format = 'string';
|
|
21
|
-
break;
|
|
22
|
-
case 20: // int8
|
|
23
|
-
case 21: // int2
|
|
24
|
-
case 23: // int4
|
|
25
|
-
format = 'whole_number';
|
|
26
|
-
break;
|
|
27
|
-
case 700: // float4
|
|
28
|
-
case 701: // float8
|
|
29
|
-
case 1700: // numeric
|
|
30
|
-
format = 'two_decimal_places';
|
|
31
|
-
break;
|
|
32
|
-
case 1082: // date
|
|
33
|
-
case 1083: // time
|
|
34
|
-
case 1184: // timestamptz
|
|
35
|
-
case 1114: // timestamp
|
|
36
|
-
format = 'MMM_dd_yyyy';
|
|
37
|
-
break;
|
|
38
|
-
case 1186: // interval
|
|
39
|
-
case 1043: // varchar
|
|
40
|
-
default:
|
|
41
|
-
format = 'string';
|
|
42
|
-
}
|
|
43
|
-
switch (column.dataTypeID) {
|
|
44
|
-
case 16: // boolean
|
|
45
|
-
fieldType = 'bool';
|
|
46
|
-
break;
|
|
47
|
-
case 20: // int8
|
|
48
|
-
fieldType = 'int8';
|
|
49
|
-
break;
|
|
50
|
-
case 21: // int2
|
|
51
|
-
fieldType = 'int2';
|
|
52
|
-
break;
|
|
53
|
-
case 23: // int4
|
|
54
|
-
fieldType = 'int4';
|
|
55
|
-
break;
|
|
56
|
-
case 700: // float4
|
|
57
|
-
fieldType = 'float4';
|
|
58
|
-
break;
|
|
59
|
-
case 701: // float8
|
|
60
|
-
fieldType = 'float8';
|
|
61
|
-
break;
|
|
62
|
-
case 1700: // numeric
|
|
63
|
-
fieldType = 'numeric';
|
|
64
|
-
break;
|
|
65
|
-
case 1082: // date
|
|
66
|
-
fieldType = 'date';
|
|
67
|
-
break;
|
|
68
|
-
case 1083: // time
|
|
69
|
-
fieldType = 'time';
|
|
70
|
-
break;
|
|
71
|
-
case 1184: // timestamptz
|
|
72
|
-
fieldType = 'timestamptz';
|
|
73
|
-
break;
|
|
74
|
-
case 1186: // interval
|
|
75
|
-
fieldType = 'interval';
|
|
76
|
-
break;
|
|
77
|
-
case 1114: // timestamp
|
|
78
|
-
fieldType = 'timestamp';
|
|
79
|
-
break;
|
|
80
|
-
case 1043: // varchar
|
|
81
|
-
default:
|
|
82
|
-
fieldType = 'varchar';
|
|
83
|
-
}
|
|
84
|
-
return {
|
|
85
|
-
name: column.name,
|
|
86
|
-
label: column.name,
|
|
87
|
-
field: column.name,
|
|
88
|
-
format,
|
|
89
|
-
fieldType,
|
|
90
|
-
};
|
|
91
|
-
}
|
|
14
|
+
import { quillFormat } from './utils/valueFormatter';
|
|
15
|
+
import { convertPostgresColumn } from './utils/columnProcessing';
|
|
92
16
|
function defineEditorTheme(monaco, theme) {
|
|
93
17
|
monaco.editor.defineTheme('onedark', {
|
|
94
18
|
base: theme.darkMode ? 'vs-dark' : 'vs',
|
|
@@ -139,14 +63,13 @@ function setEditorTheme(editor, monaco) {
|
|
|
139
63
|
* ### SQLEditor API
|
|
140
64
|
* @see https://docs.quillsql.com/components/sql-editor
|
|
141
65
|
*/
|
|
142
|
-
export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryButtonComponent = MemoizedSecondaryButton, DeleteButtonComponent = MemoizedDeleteButton, TextInputComponent = QuillTextInput, SelectComponent = QuillSelectComponent, TableComponent = QuillTableComponent, isNewQueryEnabled = false, LoadingComponent, ModalComponent = MemoizedModal, PopoverComponent = MemoizedPopover, CardComponent = QuillCard, LabelComponent = MemoizedLabel, HeaderComponent = MemoizedHeader, SubHeaderComponent = MemoizedSubHeader, TextComponent = MemoizedText, ErrorMessageComponent = QuillErrorMessageComponent, ChartBuilderInputRowContainer = QuillChartBuilderInputRowContainer, ChartBuilderInputColumnContainer = QuillChartBuilderInputColumnContainer, PivotRowContainer = QuillPivotRowContainer, PivotColumnContainer = QuillPivotColumnContainer, ChartBuilderFormContainer = QuillChartBuilderFormContainer, defaultQuery, onChangeQuery, onChangeData, onChangeColumns, onChangeFields, isChartBuilderEnabled = false, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, destinationDashboard, chartBuilderTitle, chartBuilderButtonLabel, onAddToDashboardComplete, addToDashboardButtonLabel = 'Add to dashboard', dashboardItem = undefined, organizationName = undefined, isChartBuilderHorizontalView = true, containerStyle = { height: '100vh' }, className, }) {
|
|
66
|
+
export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryButtonComponent = MemoizedSecondaryButton, DeleteButtonComponent = MemoizedDeleteButton, TextInputComponent = QuillTextInput, SelectComponent = QuillSelectComponent, TableComponent = QuillTableComponent, isNewQueryEnabled = false, LoadingComponent = QuillLoadingComponent, ModalComponent = MemoizedModal, PopoverComponent = MemoizedPopover, CardComponent = QuillCard, LabelComponent = MemoizedLabel, HeaderComponent = MemoizedHeader, SubHeaderComponent = MemoizedSubHeader, TextComponent = MemoizedText, ErrorMessageComponent = QuillErrorMessageComponent, ChartBuilderInputRowContainer = QuillChartBuilderInputRowContainer, ChartBuilderInputColumnContainer = QuillChartBuilderInputColumnContainer, PivotRowContainer = QuillPivotRowContainer, PivotColumnContainer = QuillPivotColumnContainer, ChartBuilderFormContainer = QuillChartBuilderFormContainer, defaultQuery, onChangeQuery, onChangeData, onChangeColumns, onChangeFields, isChartBuilderEnabled = false, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, destinationDashboard, chartBuilderTitle, chartBuilderButtonLabel, onAddToDashboardComplete, addToDashboardButtonLabel = 'Add to dashboard', dashboardItem = undefined, organizationName = undefined, isChartBuilderHorizontalView = true, containerStyle = { height: '100vh' }, className, }) {
|
|
143
67
|
const [sqlPrompt, setSqlPrompt] = useState('');
|
|
144
68
|
const [client] = useContext(ClientContext);
|
|
145
69
|
const [theme] = useContext(ThemeContext);
|
|
146
70
|
const [query, setQuery] = useState(defaultQuery);
|
|
147
71
|
const [rows, setRows] = useState([]);
|
|
148
72
|
const [columns, setColumns] = useState([]);
|
|
149
|
-
const [fields, setFields] = useState([]);
|
|
150
73
|
const [schema, setSchema] = useContext(SchemaContext);
|
|
151
74
|
const [errorMessage, setErrorMessage] = useState('');
|
|
152
75
|
const [sqlResponseLoading, setSqlResponseLoading] = useState(false);
|
|
@@ -156,6 +79,7 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
156
79
|
const [displayTable, setDisplayTable] = useState(false);
|
|
157
80
|
const formRef = useRef(null);
|
|
158
81
|
const [searchBarWidth, setSearchBarWidth] = useState(200);
|
|
82
|
+
const [formattedRows, setFormattedRows] = useState([]);
|
|
159
83
|
useEffect(() => {
|
|
160
84
|
// Since the TextInput component takes a required numeric width parameter,
|
|
161
85
|
// we dynamically calculate the width of this component here.
|
|
@@ -168,8 +92,7 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
168
92
|
window.removeEventListener('resize', handleResize);
|
|
169
93
|
};
|
|
170
94
|
}, []);
|
|
171
|
-
const getSchema = async (
|
|
172
|
-
setSchemaLoading(true);
|
|
95
|
+
const getSchema = async () => {
|
|
173
96
|
const { queryEndpoint, queryHeaders, publicKey } = client;
|
|
174
97
|
const response = await fetch(`${queryEndpoint}`, {
|
|
175
98
|
method: 'POST',
|
|
@@ -187,26 +110,21 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
187
110
|
}),
|
|
188
111
|
});
|
|
189
112
|
const results = await response.json();
|
|
190
|
-
if (
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
setSchemaLoading(false);
|
|
198
|
-
}
|
|
113
|
+
if (results.data?.data) {
|
|
114
|
+
setSchema(results.data.data.tables);
|
|
115
|
+
setSchemaLoading(false);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
setSchema(results.data.tables);
|
|
119
|
+
setSchemaLoading(false);
|
|
199
120
|
}
|
|
200
121
|
};
|
|
201
122
|
useEffect(() => {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
getSchema(
|
|
123
|
+
if (client && !schemaLoading) {
|
|
124
|
+
setSchemaLoading(true);
|
|
125
|
+
getSchema();
|
|
205
126
|
}
|
|
206
|
-
|
|
207
|
-
isSubscribed = false;
|
|
208
|
-
};
|
|
209
|
-
}, [client]);
|
|
127
|
+
}, [client.publicKey]);
|
|
210
128
|
const handleRunSqlPrompt = async () => {
|
|
211
129
|
setSqlResponseLoading(true);
|
|
212
130
|
const resp = await getDataFromCloud(client, `quillai`, {
|
|
@@ -239,7 +157,6 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
239
157
|
setErrorMessage('Failed to run SQL query: ' + resp.errorMessage);
|
|
240
158
|
setRows([]);
|
|
241
159
|
setColumns([]);
|
|
242
|
-
setFields([]);
|
|
243
160
|
return;
|
|
244
161
|
}
|
|
245
162
|
setSqlQueryLoading(false);
|
|
@@ -247,15 +164,27 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
247
164
|
if (resp.rows.length === 0) {
|
|
248
165
|
setErrorMessage('No data found');
|
|
249
166
|
}
|
|
250
|
-
|
|
167
|
+
const temp_rows = resp.rows && resp.rows.length ? resp.rows : [];
|
|
168
|
+
const processedFields = resp.fields.map((elem) => convertPostgresColumn(elem));
|
|
169
|
+
setRows(temp_rows);
|
|
170
|
+
setFormattedRows(temp_rows.map((row) => {
|
|
171
|
+
return processedFields.reduce((formattedRow, column) => {
|
|
172
|
+
// Apply the format function to each field in the row
|
|
173
|
+
const formattedValue = quillFormat({
|
|
174
|
+
value: row[column.field],
|
|
175
|
+
format: column.format,
|
|
176
|
+
});
|
|
177
|
+
formattedRow[column.field] = formattedValue;
|
|
178
|
+
return formattedRow;
|
|
179
|
+
}, {});
|
|
180
|
+
}));
|
|
251
181
|
if (onChangeData) {
|
|
252
|
-
onChangeData(
|
|
182
|
+
onChangeData(temp_rows);
|
|
253
183
|
}
|
|
254
|
-
setColumns(
|
|
184
|
+
setColumns(processedFields);
|
|
255
185
|
if (onChangeColumns) {
|
|
256
|
-
onChangeColumns(
|
|
186
|
+
onChangeColumns(processedFields);
|
|
257
187
|
}
|
|
258
|
-
setFields(resp.fields);
|
|
259
188
|
if (onChangeFields) {
|
|
260
189
|
onChangeFields(resp.fields);
|
|
261
190
|
}
|
|
@@ -286,8 +215,8 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
286
215
|
};
|
|
287
216
|
const handleClickSchemaItem = async (event) => {
|
|
288
217
|
const name = event.target.textContent;
|
|
289
|
-
if (query.length > 0) {
|
|
290
|
-
await navigator.clipboard.writeText(name);
|
|
218
|
+
if (query && query.length > 0) {
|
|
219
|
+
await navigator.clipboard.writeText(name || '');
|
|
291
220
|
}
|
|
292
221
|
else {
|
|
293
222
|
setQuery(`SELECT * FROM ${name};`);
|
|
@@ -295,7 +224,7 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
295
224
|
};
|
|
296
225
|
useEffect(() => {
|
|
297
226
|
if (onChangeQuery) {
|
|
298
|
-
onChangeQuery(query);
|
|
227
|
+
onChangeQuery(query || '');
|
|
299
228
|
}
|
|
300
229
|
}, [query]);
|
|
301
230
|
return (_jsxs("div", { style: { backgroundColor: theme.backgroundColor, ...containerStyle }, className: className, children: [(!isChartBuilderHorizontalView ||
|
|
@@ -326,7 +255,7 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
326
255
|
gap: 12,
|
|
327
256
|
paddingTop: 16,
|
|
328
257
|
paddingBottom: 16,
|
|
329
|
-
}, children: [_jsx(TextInputComponent, { id: "ai-search", value: sqlPrompt, width: searchBarWidth, onChange: (e) => setSqlPrompt(e.target.value), placeholder: "Ask a question..." }), _jsx(ButtonComponent, { onClick: handleRunSqlPrompt, label: "Ask AI" })] }), _jsx("div", { style: { height: 'calc(50% - 40px)' }, children: _jsx(SQLEditorComponent, { query: query, setQuery: setQuery, handleRunQuery: handleRunQuery, handleFixWithAI: handleFixWithAI, isNewQueryEnabled: isNewQueryEnabled, handleClearQuery: handleClearQuery, theme: theme, defineEditorTheme: defineEditorTheme, setEditorTheme: setEditorTheme, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, loading: sqlResponseLoading, LoadingComponent: LoadingComponent }) }), _jsxs("div", { style: {
|
|
258
|
+
}, children: [_jsx(TextInputComponent, { id: "ai-search", value: sqlPrompt, width: searchBarWidth, onChange: (e) => setSqlPrompt(e.target.value), placeholder: "Ask a question..." }), _jsx(ButtonComponent, { onClick: handleRunSqlPrompt, label: "Ask AI" })] }), _jsx("div", { style: { height: 'calc(50% - 40px)' }, children: _jsx(SQLEditorComponent, { query: query || '', setQuery: setQuery, handleRunQuery: handleRunQuery, handleFixWithAI: handleFixWithAI, isNewQueryEnabled: isNewQueryEnabled, handleClearQuery: handleClearQuery, theme: theme, defineEditorTheme: defineEditorTheme, setEditorTheme: setEditorTheme, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, loading: sqlResponseLoading, LoadingComponent: LoadingComponent }) }), _jsxs("div", { style: {
|
|
330
259
|
display: 'flex',
|
|
331
260
|
flexDirection: 'column',
|
|
332
261
|
height: 'calc(50% - 108px)',
|
|
@@ -351,16 +280,16 @@ export default function SQLEditor({ ButtonComponent = MemoizedButton, SecondaryB
|
|
|
351
280
|
borderRadius: 6,
|
|
352
281
|
padding: 20,
|
|
353
282
|
width: '100%',
|
|
354
|
-
}, children: [errorMessage, _jsx(SecondaryButtonComponent, { onClick: handleFixWithAI, label: "Fix with AI" })] }) })), errorMessage || !displayTable ? null : (_jsx(TableComponent, { isLoading: sqlQueryLoading, rows:
|
|
283
|
+
}, children: [errorMessage, _jsx(SecondaryButtonComponent, { onClick: handleFixWithAI, label: "Fix with AI" })] }) })), errorMessage || !displayTable ? null : (_jsx(TableComponent, { isLoading: sqlQueryLoading, rows: formattedRows, columns: columns }))] }), isChartBuilderEnabled && rows.length > 0 && (_jsx("div", { style: {
|
|
355
284
|
display: 'flex',
|
|
356
285
|
flexDirection: 'row',
|
|
357
286
|
alignItems: 'center',
|
|
358
287
|
justifyContent: 'flex-end',
|
|
359
288
|
width: '100%',
|
|
360
289
|
height: '70px',
|
|
361
|
-
}, children: _jsx(ButtonComponent, { onClick: () => setIsChartBuilderOpen(true), label: addToDashboardButtonLabel }) }))] })] }) }) })), _jsx(ChartBuilderWithModal, { rows: rows, columns: columns,
|
|
290
|
+
}, children: _jsx(ButtonComponent, { onClick: () => setIsChartBuilderOpen(true), label: addToDashboardButtonLabel }) }))] })] }) }) })), _jsx(ChartBuilderWithModal, { rows: rows, columns: columns, query: query, isHorizontalView: isChartBuilderHorizontalView, isOpen: isChartBuilderOpen, setIsOpen: setIsChartBuilderOpen, onAddToDashboardComplete: onAddToDashboardComplete, showTableFormatOptions: showTableFormatOptions, showDateFieldOptions: showDateFieldOptions, showAccessControlOptions: showAccessControlOptions, destinationDashboard: destinationDashboard, title: chartBuilderTitle, buttonLabel: addToDashboardButtonLabel, dashboardItem: dashboardItem, organizationName: organizationName, CardComponent: CardComponent, TableComponent: TableComponent, ModalComponent: ModalComponent, ButtonComponent: ButtonComponent, TextInputComponent: TextInputComponent, SelectComponent: SelectComponent, SecondaryButtonComponent: SecondaryButtonComponent, HeaderComponent: HeaderComponent, SubHeaderComponent: SubHeaderComponent, LabelComponent: LabelComponent, TextComponent: TextComponent, PopoverComponent: PopoverComponent, DeleteButtonComponent: DeleteButtonComponent, ChartBuilderInputRowContainer: ChartBuilderInputRowContainer, ChartBuilderInputColumnContainer: ChartBuilderInputColumnContainer, ErrorMessageComponent: ErrorMessageComponent, PivotRowContainer: PivotRowContainer, PivotColumnContainer: PivotColumnContainer, FormContainer: ChartBuilderFormContainer, hideDateRangeFilter: true })] }));
|
|
362
291
|
}
|
|
363
|
-
const SQLEditorComponent = ({ query, setQuery, handleRunQuery, handleFixWithAI, handleClearQuery, defineEditorTheme, setEditorTheme, ButtonComponent, SecondaryButtonComponent, isNewQueryEnabled, theme, loading, LoadingComponent, }) => {
|
|
292
|
+
const SQLEditorComponent = ({ query, setQuery, handleRunQuery, handleFixWithAI, handleClearQuery, defineEditorTheme, setEditorTheme, ButtonComponent, SecondaryButtonComponent, isNewQueryEnabled, theme, loading, LoadingComponent = QuillLoadingComponent, }) => {
|
|
364
293
|
return (_jsxs("div", { style: {
|
|
365
294
|
// maxHeight: 700,
|
|
366
295
|
width: '100%',
|
|
@@ -376,27 +305,27 @@ const SQLEditorComponent = ({ query, setQuery, handleRunQuery, handleFixWithAI,
|
|
|
376
305
|
borderTopRightRadius: 0,
|
|
377
306
|
borderBottomRightRadius: 0,
|
|
378
307
|
overflow: 'hidden',
|
|
379
|
-
}, children: [loading ? (
|
|
308
|
+
}, children: [loading ? (_jsx("div", { style: {
|
|
380
309
|
height: 'calc(100% - 70px)',
|
|
381
310
|
width: '100%',
|
|
382
311
|
display: 'flex',
|
|
383
312
|
alignItems: 'center',
|
|
384
313
|
justifyContent: 'center',
|
|
385
314
|
background: '#F9F9F9',
|
|
386
|
-
}, children:
|
|
315
|
+
}, children: _jsx(LoadingComponent, {}) })) : (_jsx(MonacoEditor, { height: "calc(100% - 70px)", width: "100%", defaultLanguage: "pgsql", defaultValue: "", value: query, loading: _jsx("div", {}), options: {
|
|
387
316
|
wordWrap: 'on',
|
|
388
317
|
minimap: {
|
|
389
318
|
enabled: false,
|
|
390
319
|
},
|
|
391
320
|
padding: { top: 16 },
|
|
392
|
-
}, onChange: (query) => setQuery(query), beforeMount: (monaco) => defineEditorTheme(monaco, theme), onMount: setEditorTheme })), _jsx("div", { style: {
|
|
321
|
+
}, onChange: (query) => setQuery(query || ''), beforeMount: (monaco) => defineEditorTheme(monaco, theme), onMount: setEditorTheme })), _jsx("div", { style: {
|
|
393
322
|
display: 'flex',
|
|
394
323
|
flexDirection: 'row',
|
|
395
324
|
alignItems: 'center',
|
|
396
325
|
height: 70,
|
|
397
326
|
}, children: _jsxs("div", { style: { display: 'flex', gap: 12 }, children: [_jsx(ButtonComponent, { onClick: handleRunQuery, label: "Run query" }), isNewQueryEnabled && (_jsx(SecondaryButtonComponent, { onClick: handleClearQuery, label: "Clear query" }))] }) })] }));
|
|
398
327
|
};
|
|
399
|
-
export const SchemaListComponent = ({ schema, theme, loading, LoadingComponent, width, onClick
|
|
328
|
+
export const SchemaListComponent = ({ schema, theme, loading, LoadingComponent, width, onClick, }) => {
|
|
400
329
|
if (loading) {
|
|
401
330
|
return (_jsxs("div", { style: {
|
|
402
331
|
// maxHeight: 700,
|
|
@@ -424,7 +353,7 @@ export const SchemaListComponent = ({ schema, theme, loading, LoadingComponent,
|
|
|
424
353
|
paddingRight: 30,
|
|
425
354
|
}, children: schema.map((elem, index) => (_jsx(SchemaItem, { elem: elem, theme: theme, index: index, onClick: onClick }, elem.displayName + index))) }));
|
|
426
355
|
};
|
|
427
|
-
function SchemaItem({ elem, theme, index, onClick }) {
|
|
356
|
+
function SchemaItem({ elem, theme, index, onClick, }) {
|
|
428
357
|
const [isOpen, setIsOpen] = useState(index === 0);
|
|
429
358
|
const schemaContainerStyle = {
|
|
430
359
|
display: 'flex',
|
|
@@ -446,7 +375,11 @@ function SchemaItem({ elem, theme, index, onClick }) {
|
|
|
446
375
|
const schemaRowHoverStyle = {
|
|
447
376
|
background: theme.selectUnderlayColor,
|
|
448
377
|
};
|
|
449
|
-
return (_jsxs("div", { style: schemaContainerStyle, children: [_jsxs("div", { style: {
|
|
378
|
+
return (_jsxs("div", { style: schemaContainerStyle, children: [_jsxs("div", { style: {
|
|
379
|
+
cursor: 'pointer',
|
|
380
|
+
...schemaRowStyle,
|
|
381
|
+
...(isOpen && schemaRowHoverStyle),
|
|
382
|
+
}, onClick: () => setIsOpen(!isOpen), children: [_jsx("p", { style: {
|
|
450
383
|
marginLeft: theme.padding,
|
|
451
384
|
fontSize: 13,
|
|
452
385
|
color: '#384151',
|
|
@@ -456,10 +389,12 @@ function SchemaItem({ elem, theme, index, onClick }) {
|
|
|
456
389
|
margin: 0,
|
|
457
390
|
textOverflow: 'ellipsis',
|
|
458
391
|
overflow: 'hidden',
|
|
459
|
-
cursor: 'pointer',
|
|
460
392
|
userSelect: 'none',
|
|
461
393
|
fontFamily: theme?.fontFamily,
|
|
462
|
-
}, title: elem.displayName, onClick:
|
|
394
|
+
}, title: elem.displayName, onClick: (event) => {
|
|
395
|
+
event.stopPropagation();
|
|
396
|
+
onClick(event);
|
|
397
|
+
}, children: elem.displayName }), _jsx("div", { style: {
|
|
463
398
|
display: 'flex',
|
|
464
399
|
alignItems: 'center',
|
|
465
400
|
justifyContent: 'center',
|
|
@@ -467,9 +402,8 @@ function SchemaItem({ elem, theme, index, onClick }) {
|
|
|
467
402
|
paddingTop: 12,
|
|
468
403
|
paddingBottom: 12,
|
|
469
404
|
paddingLeft: 0,
|
|
470
|
-
cursor: 'pointer',
|
|
471
405
|
userSelect: 'none',
|
|
472
|
-
},
|
|
406
|
+
}, children: isOpen ? (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", width: "12", height: "12", fill: theme.secondaryTextColor, children: _jsx("path", { fillRule: "evenodd", d: "M12.53 16.28a.75.75 0 01-1.06 0l-7.5-7.5a.75.75 0 011.06-1.06L12 14.69l6.97-6.97a.75.75 0 111.06 1.06l-7.5 7.5z", clipRule: "evenodd" }) })) : (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", width: "12", height: "12", fill: theme.secondaryTextColor, children: _jsx("path", { fillRule: "evenodd", d: "M16.28 11.47a.75.75 0 010 1.06l-7.5 7.5a.75.75 0 01-1.06-1.06L14.69 12 7.72 5.03a.75.75 0 011.06-1.06l7.5 7.5z", clipRule: "evenodd" }) })) })] }), isOpen ? (_jsx("div", { style: {
|
|
473
407
|
paddingBottom: theme.padding,
|
|
474
408
|
display: 'flex',
|
|
475
409
|
flexDirection: 'column',
|
|
@@ -505,5 +439,5 @@ function SchemaItem({ elem, theme, index, onClick }) {
|
|
|
505
439
|
padding: 0,
|
|
506
440
|
margin: 0,
|
|
507
441
|
fontFamily: theme?.fontFamily,
|
|
508
|
-
}, children: elem.fieldType })] }, elem.displayName +
|
|
442
|
+
}, children: elem.fieldType })] }, elem.displayName + index))) })) : null] }));
|
|
509
443
|
}
|
package/dist/esm/Table.d.ts
CHANGED
package/dist/esm/Table.js
CHANGED
|
@@ -43,11 +43,11 @@ const Table = (props) => {
|
|
|
43
43
|
const { dashboardFilters } = useContext(DashboardFiltersContext);
|
|
44
44
|
const [client, _] = useContext(ClientContext);
|
|
45
45
|
if ('rows' in data && 'columns' in data) {
|
|
46
|
-
return (_jsx(QuillTable, {
|
|
46
|
+
return (_jsx(QuillTable, { hideCSVDownloadButton: data.hideCSVDownloadButton, downloadFileName: data.csvFilename, columns: data.columns, rows: data.rows, className: data.className, containerStyle: data.containerStyle, LoadingComponent: data.LoadingComponent, isLoading: data.isLoading, downloadCSV: data.downloadCSV }));
|
|
47
47
|
}
|
|
48
|
-
return (_jsx(ChartUpdater, {
|
|
48
|
+
return (_jsx(ChartUpdater, { hideCSVDownloadButton: data.hideCSVDownloadButton, dispatch: dispatch, dashboard: dashboard, chartId: data.chartId, className: data.className, containerStyle: data.containerStyle, dashboardFilters: dashboardFilters, client: client, csvFilename: data.csvFilename, LoadingComponent: data.LoadingComponent }));
|
|
49
49
|
};
|
|
50
|
-
const ChartUpdater = ({ chartId, containerStyle, className, dashboard, dispatch, client, dashboardFilters, csvFilename,
|
|
50
|
+
const ChartUpdater = ({ chartId, containerStyle, className, dashboard, dispatch, client, dashboardFilters, csvFilename, hideCSVDownloadButton = true, LoadingComponent, }) => {
|
|
51
51
|
const { rows, loading } = useMemoizedRows(chartId);
|
|
52
52
|
const { downloadCSV } = useExport(chartId);
|
|
53
53
|
useEffect(() => {
|
|
@@ -94,7 +94,7 @@ const ChartUpdater = ({ chartId, containerStyle, className, dashboard, dispatch,
|
|
|
94
94
|
isSubscribed = false;
|
|
95
95
|
};
|
|
96
96
|
}, [dashboardFilters, client.customerId, chartId]);
|
|
97
|
-
return (_jsx(QuillTable, {
|
|
97
|
+
return (_jsx(QuillTable, { hideCSVDownloadButton: hideCSVDownloadButton,
|
|
98
98
|
// @ts-ignore
|
|
99
99
|
downloadFileName: csvFilename || dashboard[chartId]?.name || '',
|
|
100
100
|
// @ts-ignore
|
|
@@ -10,7 +10,7 @@ export function DashboardFilter({ filter, onChangeFilter, SelectComponent, DateR
|
|
|
10
10
|
if (filter.filterType === 'string') {
|
|
11
11
|
setFilterValue(filter.selectedValue);
|
|
12
12
|
}
|
|
13
|
-
if (filter.filterType
|
|
13
|
+
if (filter.filterType === 'date_range') {
|
|
14
14
|
setDateFilter(filter.preset.label);
|
|
15
15
|
if (filter?.comparisonRange?.value) {
|
|
16
16
|
const newComparisonRange = COMPARISON_OPTIONS.find((option) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/MetricComponent.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AASrD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAC3C,aAAa,EACb,OAAO,EACP,KAAK,EACL,SAAS,GACV,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"MetricComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/MetricComponent.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AASrD,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAC3C,aAAa,EACb,OAAO,EACP,KAAK,EACL,SAAS,GACV,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,CA6QlC"}
|
|
@@ -19,14 +19,14 @@ export default function QuillMetricComponent({ dashboardItem, onClick, error, is
|
|
|
19
19
|
return pivot && data?.rows
|
|
20
20
|
? generatePivotTable(pivot, JSON.parse(JSON.stringify(data.rows)), // deep copy
|
|
21
21
|
dateFilter
|
|
22
|
-
?
|
|
23
|
-
:
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
dateFilter
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
:
|
|
22
|
+
? { start: dateFilter.startDate, end: dateFilter.endDate }
|
|
23
|
+
: undefined, Boolean(dateFilter?.comparisonRange?.startDate), -1, dateFilter?.comparisonRange?.startDate &&
|
|
24
|
+
dateFilter?.comparisonRange?.endDate
|
|
25
|
+
? {
|
|
26
|
+
start: dateFilter.comparisonRange.startDate,
|
|
27
|
+
end: dateFilter.comparisonRange.endDate,
|
|
28
|
+
}
|
|
29
|
+
: undefined)
|
|
30
30
|
: null;
|
|
31
31
|
}, [config?.pivot]);
|
|
32
32
|
const primaryMetricLabel = data?.filtersApplied?.date_range?.preset?.label;
|
|
@@ -96,10 +96,7 @@ export default function QuillMetricComponent({ dashboardItem, onClick, error, is
|
|
|
96
96
|
color: theme.secondaryTextColor,
|
|
97
97
|
maxWidth: '100%',
|
|
98
98
|
width: '100%',
|
|
99
|
-
}, children: "No results" })) :
|
|
100
|
-
maxHeight: '78px',
|
|
101
|
-
height: '100%',
|
|
102
|
-
}, label: "Charts can only display 100 rows. Please add a pivot or modify the query." })) : (_jsx("div", { style: {
|
|
99
|
+
}, children: "No results" })) : (_jsx("div", { style: {
|
|
103
100
|
padding: 0,
|
|
104
101
|
height: '100%',
|
|
105
102
|
width: '100%',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/TableComponent.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAGrD,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,aAAa,EACb,OAAO,EACP,SAAS,EACT,KAAK,GACN,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"TableComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/TableComponent.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAGrD,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,aAAa,EACb,OAAO,EACP,SAAS,EACT,KAAK,GACN,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,CA+JlC"}
|
|
@@ -20,14 +20,14 @@ export default function QuillTableComponent({ dashboardItem, onClick, isLoading,
|
|
|
20
20
|
return pivot && data?.rows
|
|
21
21
|
? generatePivotTable(pivot, JSON.parse(JSON.stringify(data.rows)), // deep copy
|
|
22
22
|
dateFilter
|
|
23
|
-
?
|
|
24
|
-
:
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
dateFilter
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
:
|
|
23
|
+
? { start: dateFilter.startDate, end: dateFilter.endDate }
|
|
24
|
+
: undefined, Boolean(dateFilter?.comparisonRange?.startDate), -1, dateFilter?.comparisonRange?.startDate &&
|
|
25
|
+
dateFilter?.comparisonRange?.endDate
|
|
26
|
+
? {
|
|
27
|
+
start: dateFilter.comparisonRange.startDate,
|
|
28
|
+
end: dateFilter.comparisonRange.endDate,
|
|
29
|
+
}
|
|
30
|
+
: undefined)
|
|
31
31
|
: null;
|
|
32
32
|
}, [config?.pivot]);
|
|
33
33
|
const columns = pivotTable?.columns ?? data.columns ?? data.yAxisFields;
|
|
@@ -37,8 +37,10 @@ export default function QuillTableComponent({ dashboardItem, onClick, isLoading,
|
|
|
37
37
|
// Walk through data.columns and pick off the labels from yAxisFields
|
|
38
38
|
columns.forEach((col, index) => {
|
|
39
39
|
// ADD THE RIGHT FIELD TYPE FOR THE VALUE COLUMNS
|
|
40
|
-
if (valueFieldType
|
|
41
|
-
|
|
40
|
+
if ((valueFieldType ||
|
|
41
|
+
['min', 'max'].includes(config?.pivot?.aggregationType || '')) &&
|
|
42
|
+
index !== 0) {
|
|
43
|
+
col.format = valueFieldType || 'two_decimal_places';
|
|
42
44
|
}
|
|
43
45
|
if (!data.yAxisFields)
|
|
44
46
|
return;
|
|
@@ -97,7 +99,7 @@ export default function QuillTableComponent({ dashboardItem, onClick, isLoading,
|
|
|
97
99
|
} })) : (_jsx(QuillTable, { rows: formattedRows ?? [], columns: columns ?? data.yAxisFields, rowsPerPage: 10, containerStyle: {
|
|
98
100
|
width: '100%',
|
|
99
101
|
height: '400px',
|
|
100
|
-
},
|
|
102
|
+
}, hideCSVDownloadButton: true, downloadCSV: () => {
|
|
101
103
|
downloadCSV({
|
|
102
104
|
rows: pivotTable?.rows ?? data.rows ?? [],
|
|
103
105
|
fields: columns ?? data.yAxisFields,
|
|
@@ -2,11 +2,14 @@ import React from 'react';
|
|
|
2
2
|
import { ButtonComponentProps } from './UiComponents';
|
|
3
3
|
export interface TableComponentProps {
|
|
4
4
|
rows: any[];
|
|
5
|
-
columns:
|
|
5
|
+
columns: {
|
|
6
|
+
label: string;
|
|
7
|
+
field: string;
|
|
8
|
+
}[];
|
|
6
9
|
className?: string;
|
|
7
10
|
containerStyle?: React.CSSProperties;
|
|
8
11
|
isLoading?: boolean;
|
|
9
|
-
|
|
12
|
+
hideCSVDownloadButton?: boolean;
|
|
10
13
|
downloadFileName?: string;
|
|
11
14
|
downloadCSV?: () => void;
|
|
12
15
|
LoadingComponent?: () => JSX.Element;
|
|
@@ -14,5 +17,5 @@ export interface TableComponentProps {
|
|
|
14
17
|
rowsPerPage?: number;
|
|
15
18
|
emptyStateLabel?: string;
|
|
16
19
|
}
|
|
17
|
-
export default function QuillTable({ rows, columns, isLoading,
|
|
20
|
+
export default function QuillTable({ rows, columns, isLoading, hideCSVDownloadButton, downloadFileName, containerStyle, className, LoadingComponent, rowsPerPage, emptyStateLabel, downloadCSV, }: TableComponentProps): import("react/jsx-runtime").JSX.Element;
|
|
18
21
|
//# sourceMappingURL=QuillTable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuillTable.d.ts","sourceRoot":"","sources":["../../../src/components/QuillTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAKxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"QuillTable.d.ts","sourceRoot":"","sources":["../../../src/components/QuillTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAKxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGtD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IACrC,0BAA0B,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,IAAI,EACJ,OAAO,EACP,SAAS,EACT,qBAA4B,EAC5B,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,gBAA0C,EAC1C,WAAgB,EAChB,eAA8B,EAC9B,WAAW,GACZ,EAAE,mBAAmB,2CAyZrB"}
|
|
@@ -3,11 +3,11 @@ import { useContext, useEffect, useState } from 'react';
|
|
|
3
3
|
import { compareValues } from '../utils/valueFormatter';
|
|
4
4
|
import { ThemeContext } from '../Context';
|
|
5
5
|
import ChartSkeleton from './Chart/ChartSkeleton';
|
|
6
|
-
export default function QuillTable({ rows, columns, isLoading,
|
|
6
|
+
export default function QuillTable({ rows, columns, isLoading, hideCSVDownloadButton = true, downloadFileName, containerStyle, className, LoadingComponent = () => _jsx(ChartSkeleton, {}), rowsPerPage = 10, emptyStateLabel = 'No results', downloadCSV, }) {
|
|
7
7
|
const [activeRows, setActiveRows] = useState([]);
|
|
8
8
|
const [page, setPage] = useState(1);
|
|
9
9
|
const [maxPage, setMaxPage] = useState(1);
|
|
10
|
-
const [sortColumn, setSortColumn] = useState(
|
|
10
|
+
const [sortColumn, setSortColumn] = useState('');
|
|
11
11
|
const [sortDirection, setSortDirection] = useState('desc');
|
|
12
12
|
const [theme] = useContext(ThemeContext);
|
|
13
13
|
const [isPaginating, setIsPaginating] = useState(true);
|
|
@@ -202,7 +202,7 @@ export default function QuillTable({ rows, columns, isLoading, showDownloadCSVBu
|
|
|
202
202
|
justifyContent: 'space-between',
|
|
203
203
|
width: '100%',
|
|
204
204
|
height: 37,
|
|
205
|
-
}, children: [
|
|
205
|
+
}, children: [!hideCSVDownloadButton ? (_jsx("button", { onClick: downloadCSV, style: {
|
|
206
206
|
fontSize: 14,
|
|
207
207
|
paddingLeft: 12,
|
|
208
208
|
fontFamily: theme?.fontFamily,
|
|
@@ -21,7 +21,7 @@ export declare function convertGroupBy(ast: AST, prevPivot: Pivot | undefined, s
|
|
|
21
21
|
pivot: Pivot;
|
|
22
22
|
} | {
|
|
23
23
|
pivot: Partial<{
|
|
24
|
-
aggregationType: "
|
|
24
|
+
aggregationType: "min" | "max" | "sum" | "average" | "count" | "avg";
|
|
25
25
|
valueField: string;
|
|
26
26
|
valueFieldType?: string | undefined;
|
|
27
27
|
rowField?: string | undefined;
|
|
@@ -36,7 +36,7 @@ export declare function convertGroupBy(ast: AST, prevPivot: Pivot | undefined, s
|
|
|
36
36
|
} | {
|
|
37
37
|
pivot: {
|
|
38
38
|
title: string;
|
|
39
|
-
aggregationType?: "
|
|
39
|
+
aggregationType?: "min" | "max" | "sum" | "average" | "count" | "avg" | undefined;
|
|
40
40
|
valueField?: string | undefined;
|
|
41
41
|
valueFieldType?: string | undefined;
|
|
42
42
|
rowField?: string | undefined;
|