@quillsql/react 2.10.27 → 2.10.29
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.js +5 -4
- package/dist/cjs/Dashboard.d.ts +3 -1
- package/dist/cjs/Dashboard.d.ts.map +1 -1
- package/dist/cjs/Dashboard.js +3 -10
- package/dist/cjs/ReportBuilder.d.ts.map +1 -1
- package/dist/cjs/ReportBuilder.js +1 -5
- package/dist/cjs/SQLEditor.d.ts +1 -5
- package/dist/cjs/SQLEditor.d.ts.map +1 -1
- package/dist/cjs/SQLEditor.js +5 -10
- package/dist/cjs/components/Chart/ChartSkeleton.d.ts +4 -1
- package/dist/cjs/components/Chart/ChartSkeleton.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.d.ts +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/DataLoader.js +7 -2
- package/dist/cjs/components/Dashboard/TableComponent.d.ts +1 -1
- package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/cjs/components/Dashboard/TableComponent.js +28 -57
- package/dist/cjs/components/QuillTable.d.ts +3 -0
- package/dist/cjs/components/QuillTable.d.ts.map +1 -0
- package/dist/cjs/{Table.js → components/QuillTable.js} +53 -224
- package/dist/cjs/components/UiComponents.d.ts +8 -2
- package/dist/cjs/components/UiComponents.d.ts.map +1 -1
- package/dist/cjs/components/UiComponents.js +3 -1
- package/dist/cjs/hooks/useFormat.d.ts +3 -1
- package/dist/cjs/hooks/useFormat.d.ts.map +1 -1
- package/dist/cjs/hooks/useFormat.js +13 -12
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -3
- package/dist/cjs/utils/valueFormatter.d.ts +5 -0
- package/dist/cjs/utils/valueFormatter.d.ts.map +1 -1
- package/dist/cjs/utils/valueFormatter.js +59 -30
- package/dist/esm/Chart.js +5 -4
- package/dist/esm/Dashboard.d.ts +3 -1
- package/dist/esm/Dashboard.d.ts.map +1 -1
- package/dist/esm/Dashboard.js +3 -10
- package/dist/esm/ReportBuilder.d.ts.map +1 -1
- package/dist/esm/ReportBuilder.js +1 -5
- package/dist/esm/SQLEditor.d.ts +1 -5
- package/dist/esm/SQLEditor.d.ts.map +1 -1
- package/dist/esm/SQLEditor.js +5 -10
- package/dist/esm/components/Chart/ChartSkeleton.d.ts +4 -1
- package/dist/esm/components/Chart/ChartSkeleton.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.d.ts +1 -1
- package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/DataLoader.js +9 -4
- package/dist/esm/components/Dashboard/TableComponent.d.ts +1 -1
- package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
- package/dist/esm/components/Dashboard/TableComponent.js +25 -57
- package/dist/esm/components/QuillTable.d.ts +3 -0
- package/dist/esm/components/QuillTable.d.ts.map +1 -0
- package/dist/esm/{Table.js → components/QuillTable.js} +52 -222
- package/dist/esm/components/UiComponents.d.ts +8 -2
- package/dist/esm/components/UiComponents.d.ts.map +1 -1
- package/dist/esm/components/UiComponents.js +1 -0
- package/dist/esm/hooks/useFormat.d.ts +3 -1
- package/dist/esm/hooks/useFormat.d.ts.map +1 -1
- package/dist/esm/hooks/useFormat.js +13 -12
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/utils/valueFormatter.d.ts +5 -0
- package/dist/esm/utils/valueFormatter.d.ts.map +1 -1
- package/dist/esm/utils/valueFormatter.js +57 -29
- package/package.json +1 -1
- package/dist/cjs/Table.d.ts +0 -39
- package/dist/cjs/Table.d.ts.map +0 -1
- package/dist/esm/Table.d.ts +0 -39
- package/dist/esm/Table.d.ts.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.quillFormat = exports.valueFormatter = exports.DATE_FORMAT_TYPES = void 0;
|
|
3
|
+
exports.compareValues = exports.quillFormat = exports.valueFormatter = exports.DATE_FORMAT_TYPES = void 0;
|
|
4
4
|
const date_fns_1 = require("date-fns");
|
|
5
5
|
const date_fns_tz_1 = require("date-fns-tz");
|
|
6
6
|
exports.DATE_FORMAT_TYPES = [
|
|
@@ -54,6 +54,8 @@ const valueFormatter = ({ value, field, fields }) => {
|
|
|
54
54
|
};
|
|
55
55
|
exports.valueFormatter = valueFormatter;
|
|
56
56
|
const quillFormat = ({ value, format, }) => {
|
|
57
|
+
if (value === undefined || value === null)
|
|
58
|
+
return '';
|
|
57
59
|
const HANDLERS = {
|
|
58
60
|
percent: formatPercent,
|
|
59
61
|
dollar_amount: formatDollarAmount,
|
|
@@ -72,7 +74,7 @@ const quillFormat = ({ value, format, }) => {
|
|
|
72
74
|
};
|
|
73
75
|
// try to handle this value using the associated formatType handler
|
|
74
76
|
const formatType = format;
|
|
75
|
-
if (
|
|
77
|
+
if (HANDLERS[formatType]) {
|
|
76
78
|
// if bigquery date type, we have to pull the value out of the json
|
|
77
79
|
if (exports.DATE_FORMAT_TYPES.includes(formatType) &&
|
|
78
80
|
typeof value === 'object' &&
|
|
@@ -101,38 +103,38 @@ const formatString = (value) => {
|
|
|
101
103
|
*
|
|
102
104
|
* eg. @example format(1234.567) => "$1,235"
|
|
103
105
|
*/
|
|
106
|
+
const formatterDollar = new Intl.NumberFormat('en-US', {
|
|
107
|
+
style: 'currency',
|
|
108
|
+
currency: 'USD',
|
|
109
|
+
maximumFractionDigits: 0,
|
|
110
|
+
});
|
|
104
111
|
const formatDollarAmount = (value) => {
|
|
105
|
-
|
|
106
|
-
style: 'currency',
|
|
107
|
-
currency: 'USD',
|
|
108
|
-
maximumFractionDigits: 0,
|
|
109
|
-
});
|
|
110
|
-
return formatter.format(Number(value ?? 0));
|
|
112
|
+
return formatterDollar.format(Number(value ?? 0));
|
|
111
113
|
};
|
|
112
114
|
/**
|
|
113
115
|
* Formats the value as a (rounded) currency amount in dollars and cents.
|
|
114
116
|
*
|
|
115
117
|
* @example format(1234.567) => "$1,234.57"
|
|
116
118
|
*/
|
|
119
|
+
const formatterCentsDollar = new Intl.NumberFormat('en-US', {
|
|
120
|
+
style: 'currency',
|
|
121
|
+
currency: 'USD',
|
|
122
|
+
minimumFractionDigits: 2,
|
|
123
|
+
maximumFractionDigits: 2,
|
|
124
|
+
});
|
|
117
125
|
const formatDollarCents = (value) => {
|
|
118
|
-
|
|
119
|
-
style: 'currency',
|
|
120
|
-
currency: 'USD',
|
|
121
|
-
minimumFractionDigits: 2,
|
|
122
|
-
maximumFractionDigits: 2,
|
|
123
|
-
});
|
|
124
|
-
return formatter.format(Number(value ?? 0));
|
|
126
|
+
return formatterCentsDollar.format(Number(value ?? 0));
|
|
125
127
|
};
|
|
126
128
|
/**
|
|
127
129
|
* Formats the value as a (rounded) integer.
|
|
128
130
|
*
|
|
129
131
|
* @example format(1234.567) => "1,235"
|
|
130
132
|
*/
|
|
133
|
+
const wholeNumberFormatter = new Intl.NumberFormat('en-US', {
|
|
134
|
+
maximumFractionDigits: 0,
|
|
135
|
+
});
|
|
131
136
|
const formatWholeNumber = (value) => {
|
|
132
|
-
|
|
133
|
-
maximumFractionDigits: 0,
|
|
134
|
-
});
|
|
135
|
-
return formatter.format(Number(value));
|
|
137
|
+
return wholeNumberFormatter.format(Number(value));
|
|
136
138
|
};
|
|
137
139
|
/**
|
|
138
140
|
* Formats the value as a number rounded to exactly one decimal place.
|
|
@@ -151,12 +153,12 @@ const formatOneDecimalPlace = (value) => {
|
|
|
151
153
|
*
|
|
152
154
|
* @example format(1234.567) => "1,234.57"
|
|
153
155
|
*/
|
|
156
|
+
const formatterTwoDecimalPlaces = new Intl.NumberFormat('en-US', {
|
|
157
|
+
minimumFractionDigits: 2,
|
|
158
|
+
maximumFractionDigits: 2,
|
|
159
|
+
});
|
|
154
160
|
const formatTwoDecimalPlaces = (value) => {
|
|
155
|
-
|
|
156
|
-
minimumFractionDigits: 2,
|
|
157
|
-
maximumFractionDigits: 2,
|
|
158
|
-
});
|
|
159
|
-
return formatter.format(Number(value));
|
|
161
|
+
return formatterTwoDecimalPlaces.format(Number(value));
|
|
160
162
|
};
|
|
161
163
|
/**
|
|
162
164
|
* Formats the value as a percentage.
|
|
@@ -171,13 +173,13 @@ const formatTwoDecimalPlaces = (value) => {
|
|
|
171
173
|
* @example format(1234.567) => "123,456.70%"
|
|
172
174
|
* @example format(99) => "9,900.00%"
|
|
173
175
|
*/
|
|
176
|
+
const formatterPercent = new Intl.NumberFormat('en-US', {
|
|
177
|
+
style: 'percent',
|
|
178
|
+
minimumFractionDigits: 2,
|
|
179
|
+
maximumFractionDigits: 2,
|
|
180
|
+
});
|
|
174
181
|
const formatPercent = (value) => {
|
|
175
|
-
|
|
176
|
-
style: 'percent',
|
|
177
|
-
minimumFractionDigits: 2,
|
|
178
|
-
maximumFractionDigits: 2,
|
|
179
|
-
});
|
|
180
|
-
return formatter.format(Number(value));
|
|
182
|
+
return formatterPercent.format(Number(value));
|
|
181
183
|
};
|
|
182
184
|
// Converts the value to a UTC date with the given format string. If the
|
|
183
185
|
// resulting date is invalid, it returns "Invalid date".
|
|
@@ -221,3 +223,30 @@ const format_wo_yyyy = (value) => {
|
|
|
221
223
|
return 'Invalid date';
|
|
222
224
|
return `${(0, date_fns_1.getWeek)(utcDate)},${utcDate.getFullYear()}`;
|
|
223
225
|
};
|
|
226
|
+
const compareValues = (a, b, column) => {
|
|
227
|
+
const valueA = a[column];
|
|
228
|
+
const valueB = b[column];
|
|
229
|
+
// Null checks
|
|
230
|
+
if (valueA === null && valueB === null) {
|
|
231
|
+
return 0; // Both values are null, consider them equal
|
|
232
|
+
}
|
|
233
|
+
else if (valueA === null) {
|
|
234
|
+
return -1; // ValueA is null, consider it smaller
|
|
235
|
+
}
|
|
236
|
+
else if (valueB === null) {
|
|
237
|
+
return 1; // ValueB is null, consider it smaller
|
|
238
|
+
}
|
|
239
|
+
// For numbers
|
|
240
|
+
if (!isNaN(valueA) && !isNaN(valueB)) {
|
|
241
|
+
return valueA - valueB;
|
|
242
|
+
}
|
|
243
|
+
// For dates
|
|
244
|
+
const dateA = new Date(valueA);
|
|
245
|
+
const dateB = new Date(valueB);
|
|
246
|
+
if (!isNaN(dateA.getTime()) && !isNaN(dateB.getTime())) {
|
|
247
|
+
return dateA.getTime() - dateB.getTime();
|
|
248
|
+
}
|
|
249
|
+
// For strings
|
|
250
|
+
return valueA.localeCompare(valueB);
|
|
251
|
+
};
|
|
252
|
+
exports.compareValues = compareValues;
|
package/dist/esm/Chart.js
CHANGED
|
@@ -5,7 +5,7 @@ import { differenceInHours } from 'date-fns';
|
|
|
5
5
|
import BarList from './BarList';
|
|
6
6
|
import PieChart from './PieChart';
|
|
7
7
|
import { ClientContext, DashboardContext, ThemeContext, DashboardFiltersContext, } from './Context';
|
|
8
|
-
import
|
|
8
|
+
import QuillTable from './components/QuillTable';
|
|
9
9
|
import { getData } from './utils/dataFetcher';
|
|
10
10
|
import { generatePivotTable, generatePivotTableYAxis, } from './internals/ReportBuilder/PivotModal';
|
|
11
11
|
import { valueFormatter } from './utils/valueFormatter';
|
|
@@ -228,9 +228,10 @@ const ChartUpdater = ({ colors, chartId, config, containerStyle, dashboard, disp
|
|
|
228
228
|
col.format = matchingCol.format;
|
|
229
229
|
}
|
|
230
230
|
});
|
|
231
|
-
return (_jsx(
|
|
232
|
-
|
|
233
|
-
|
|
231
|
+
return (_jsx(QuillTable, { rows: pivotTable?.rows ?? data.rows ?? [], columns: pivotTable?.columns ?? data.columns ?? data.yAxisFields, containerStyle: {
|
|
232
|
+
height: '400px',
|
|
233
|
+
width: containerStyle?.width || '100%',
|
|
234
|
+
}, downloadFileName: data.name, showDownloadCSVButton: true }));
|
|
234
235
|
}
|
|
235
236
|
if (chartTypes.includes('bar')) {
|
|
236
237
|
return (_jsx(BarList, { data: pivotTable
|
package/dist/esm/Dashboard.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { SkeletonComponentProps } from './components/Chart/ChartSkeleton';
|
|
2
3
|
interface QuillOption {
|
|
3
4
|
value: string;
|
|
4
5
|
label: string;
|
|
@@ -157,6 +158,7 @@ export interface DashboardProps {
|
|
|
157
158
|
hideXAxis?: boolean;
|
|
158
159
|
hideYAxis?: boolean;
|
|
159
160
|
hideCartesianGrid?: boolean;
|
|
161
|
+
SkeletonComponent?: (_: SkeletonComponentProps) => JSX.Element;
|
|
160
162
|
}
|
|
161
163
|
type SelectComponentType = ({ label, onChange, value, options, }: SelectComponentProps) => JSX.Element;
|
|
162
164
|
type DateRangePickerComponentType = ({ dateRange, onChangeDateRange, presetOptions, onChangePreset, preset, }: DateRangePickerComponentProps) => JSX.Element;
|
|
@@ -171,6 +173,6 @@ export declare function DashboardFilter({ filter, onChangeFilter, SelectComponen
|
|
|
171
173
|
/**
|
|
172
174
|
* Quill Dashboard.
|
|
173
175
|
*/
|
|
174
|
-
export default function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerStyle, maxColumnWidth, rowHeight, onClickDashboardItem, hideFilters, dateRangeFilterDisabled, SelectComponent, EmptyDashboardComponent, DateRangePickerComponent, FilterButtonComponent, FilterModalComponent, onChangeLoading, MetricComponent, ChartComponent, TableComponent, DashboardSectionContainerComponent, DashboardSectionComponent, hideXAxis, hideYAxis, hideCartesianGrid, }: DashboardProps): import("react/jsx-runtime").JSX.Element | null;
|
|
176
|
+
export default function Dashboard({ name, containerStyle, chartContainerStyle, metricContainerStyle, maxColumnWidth, rowHeight, onClickDashboardItem, hideFilters, dateRangeFilterDisabled, SelectComponent, EmptyDashboardComponent, DateRangePickerComponent, FilterButtonComponent, FilterModalComponent, onChangeLoading, MetricComponent, ChartComponent, TableComponent, SkeletonComponent, DashboardSectionContainerComponent, DashboardSectionComponent, hideXAxis, hideYAxis, hideCartesianGrid, }: DashboardProps): import("react/jsx-runtime").JSX.Element | null;
|
|
175
177
|
export {};
|
|
176
178
|
//# sourceMappingURL=Dashboard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dashboard.d.ts","sourceRoot":"","sources":["../../src/Dashboard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Dashboard.d.ts","sourceRoot":"","sources":["../../src/Dashboard.tsx"],"names":[],"mappings":"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"}
|
package/dist/esm/Dashboard.js
CHANGED
|
@@ -16,6 +16,7 @@ import { cleanDashboardItem } from './utils/dashboard';
|
|
|
16
16
|
import { QuillDateRangePicker } from './DateRangePicker/QuillDateRangePicker';
|
|
17
17
|
import DataLoader from './components/Dashboard/DataLoader';
|
|
18
18
|
import { QuillSelectComponent } from './components/QuillSelect';
|
|
19
|
+
import ChartSkeleton from './components/Chart/ChartSkeleton';
|
|
19
20
|
export function DashboardFilter({ filter, onChangeFilter, SelectComponent, DateRangePickerComponent, theme, }) {
|
|
20
21
|
const { comparisonRange, setComparisonRange } = useComparisonRange();
|
|
21
22
|
const { setDateFilter } = useDateFilter();
|
|
@@ -154,7 +155,7 @@ const defaultChartContainerStyles = {
|
|
|
154
155
|
/**
|
|
155
156
|
* Quill Dashboard.
|
|
156
157
|
*/
|
|
157
|
-
export default function Dashboard({ name, containerStyle, chartContainerStyle = defaultChartContainerStyles, metricContainerStyle, maxColumnWidth, rowHeight, onClickDashboardItem, hideFilters, dateRangeFilterDisabled = false, SelectComponent, EmptyDashboardComponent = QuillEmptyDashboardComponent, DateRangePickerComponent, FilterButtonComponent, FilterModalComponent, onChangeLoading, MetricComponent = QuillMetricComponent, ChartComponent = QuillChartComponent, TableComponent = QuillTableComponent, DashboardSectionContainerComponent = DashboardSectionContainer, DashboardSectionComponent = DashboardSection, hideXAxis = false, hideYAxis = false, hideCartesianGrid = false, }) {
|
|
158
|
+
export default function Dashboard({ name, containerStyle, chartContainerStyle = defaultChartContainerStyles, metricContainerStyle, maxColumnWidth, rowHeight, onClickDashboardItem, hideFilters, dateRangeFilterDisabled = false, SelectComponent, EmptyDashboardComponent = QuillEmptyDashboardComponent, DateRangePickerComponent, FilterButtonComponent, FilterModalComponent, onChangeLoading, MetricComponent = QuillMetricComponent, ChartComponent = QuillChartComponent, TableComponent = QuillTableComponent, SkeletonComponent = ChartSkeleton, DashboardSectionContainerComponent = DashboardSectionContainer, DashboardSectionComponent = DashboardSection, hideXAxis = false, hideYAxis = false, hideCartesianGrid = false, }) {
|
|
158
159
|
const { dateFilter } = useDateFilter();
|
|
159
160
|
const { dispatch } = useContext(DashboardContext);
|
|
160
161
|
const { isLoading: isDataLoading, data, reload, } = useDashboard(name);
|
|
@@ -484,14 +485,6 @@ export default function Dashboard({ name, containerStyle, chartContainerStyle =
|
|
|
484
485
|
gap: 20,
|
|
485
486
|
display: 'flex',
|
|
486
487
|
flexDirection: 'column',
|
|
487
|
-
}, children: tables(section).map((item, index) => (_jsx(DataLoader, { id: item._id,
|
|
488
|
-
? () => handleOnClickDashboardItem(item)
|
|
489
|
-
: void null, children: _jsx(Chart, { containerStyle: {
|
|
490
|
-
display: 'flex',
|
|
491
|
-
width: '100%',
|
|
492
|
-
height: '400px',
|
|
493
|
-
}, chartId: item._id, colors: theme.chartColors?.length
|
|
494
|
-
? theme.chartColors
|
|
495
|
-
: undefined, hideXAxis: hideXAxis, hideYAxis: hideYAxis, hideCartesianGrid: hideCartesianGrid }) })) }, `${item.name}${index}`))) }))] }, section + '' + sectionIndex));
|
|
488
|
+
}, children: tables(section).map((item, index) => (_jsx(DataLoader, { id: item._id, name: item.name, TableComponent: TableComponent, SkeletonComponent: SkeletonComponent, handleOnClickDashboardItem: handleOnClickDashboardItem, onClickDashboardItem: onClickDashboardItem, theme: theme }, `${item.name}${index}`))) }))] }, section + '' + sectionIndex));
|
|
496
489
|
})] }));
|
|
497
490
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReportBuilder.d.ts","sourceRoot":"","sources":["../../src/ReportBuilder.tsx"],"names":[],"mappings":"AACA,OAAO,KAON,MAAM,OAAO,CAAC;AAMf,OAAO,EACL,KAAK,EAIN,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"ReportBuilder.d.ts","sourceRoot":"","sources":["../../src/ReportBuilder.tsx"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,6 @@ import { format } from 'date-fns';
|
|
|
8
8
|
import { PivotModal, generatePivotTable, } from './internals/ReportBuilder/PivotModal';
|
|
9
9
|
import { getData, getDataFromCloud } from './utils/dataFetcher';
|
|
10
10
|
import { getRangeFromPreset, reportBuilderOptions, } from './DateRangePicker/dateRangePickerUtils';
|
|
11
|
-
import Table from './Table';
|
|
12
11
|
import ChartBuilder from './ChartBuilder';
|
|
13
12
|
import { MemoizedModal, MemoizedTextInput, MemoizedSelect, MemoizedButton, MemoizedSecondaryButton, MemoizedHeader, MemoizedLabel, MemoizedDeleteButton, MemoizedText, MemoizedPopover, } from './components/UiComponents';
|
|
14
13
|
export default function ReportBuilder({ onChangeQuery, onChangeData, onChangeColumns, onChangeLoading, onChangePivot, onDateFilterChange, onChangeFields, onError, TextInput = MemoizedTextInput, containerStyle, Select = MemoizedSelect, Button = MemoizedButton, SecondaryButton = MemoizedSecondaryButton, Header = MemoizedHeader, Label = MemoizedLabel, DeleteButton = MemoizedDeleteButton, Text = MemoizedText, Modal = MemoizedModal, Popover = MemoizedPopover, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, tagStyle, tableName, dateColumn, selectedTagBorderColor, chartBuilderEnabled = false, destinationDashboard, chartBuilderTitle, chartBuilderButtonLabel, editSQLEnabled, navigateToSQLEditor, }) {
|
|
@@ -795,10 +794,7 @@ function ReportingTool({ schema, data, columns, runQuery, SelectComponent, Butto
|
|
|
795
794
|
if (navigateToSQLEditor) {
|
|
796
795
|
navigateToSQLEditor(sqlQuery);
|
|
797
796
|
}
|
|
798
|
-
}, label: "Edit Query" })), _jsx(AddFilterModal2, { filters: filters, selectedColumn: selectedColumn, numberStart: numberStart, numberEnd: numberEnd, setDateRange: setFilterDateRange, dateRange: filterDateRange, columnStats: columnStats, stringFilterValues: stringFilterValues, setStringFilterValues: setStringFilterValues, addFilter: addFilter, parentRef: parentRef, setSelectedColumn: setSelectedColumn, setNumberStart: setNumberStart, setNumberEnd: setNumberEnd, selectedTable: selectedTable, columnType: columnType, removeFilter: removeFilter, selectFilter: selectFilter, indexBeingEdited: indexBeingEdited, updateFilter: updateFilter, SelectComponent: SelectComponent, ButtonComponent: ButtonComponent, PopoverComponent: PopoverComponent, TextInputComponent: TextInputComponent, LabelComponent: LabelComponent, tagStyle: tagStyle, theme: theme, setIsOpen: setIsAddFilterModalOpen, isOpen: isAddFilterModalOpen, selectedTagBorderColor: selectedTagBorderColor }), _jsx(PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotValueField: pivotValueField, setPivotValueField: setPivotValueField, pivotAggregation: pivotAggregation, setPivotAggregation: setPivotAggregation, createdPivots: createdPivots, setCreatedPivots: setCreatedPivots, recommendedPivots: recommendedPivots, setRecommendedPivots: setRecommendedPivots, selectedTable: selectedTable, SelectComponent: SelectComponent, ButtonComponent: ButtonComponent, PopoverComponent: PopoverComponent, LabelComponent: LabelComponent, HeaderComponent: HeaderComponent, TextComponent: TextComponent, popUpTitle: pivotPopUpTitle, setPopUpTitle: setPivotPopUpTitle, theme: theme, data: data, parentRef: parentRef, columns: columns, setIsOpen: setIsPivotModalOpen, isOpen: isPivotModalOpen, showUpdatePivot: isEdittingPivot, setShowUpdatePivot: setIsEdittingPivot, selectedPivotIndex: selectedPivotIndex, setSelectedPivotIndex: setSelectedPivotIndex, removePivot: removePivot, selectPivot: selectPivot, dateRange: dateRange, rightAlign: true })] }) }),
|
|
799
|
-
height: 400,
|
|
800
|
-
marginTop: 10,
|
|
801
|
-
} }), chartBuilderEnabled && columns.length > 0 && (_jsxs("div", { children: [_jsx("div", { style: {
|
|
797
|
+
}, label: "Edit Query" })), _jsx(AddFilterModal2, { filters: filters, selectedColumn: selectedColumn, numberStart: numberStart, numberEnd: numberEnd, setDateRange: setFilterDateRange, dateRange: filterDateRange, columnStats: columnStats, stringFilterValues: stringFilterValues, setStringFilterValues: setStringFilterValues, addFilter: addFilter, parentRef: parentRef, setSelectedColumn: setSelectedColumn, setNumberStart: setNumberStart, setNumberEnd: setNumberEnd, selectedTable: selectedTable, columnType: columnType, removeFilter: removeFilter, selectFilter: selectFilter, indexBeingEdited: indexBeingEdited, updateFilter: updateFilter, SelectComponent: SelectComponent, ButtonComponent: ButtonComponent, PopoverComponent: PopoverComponent, TextInputComponent: TextInputComponent, LabelComponent: LabelComponent, tagStyle: tagStyle, theme: theme, setIsOpen: setIsAddFilterModalOpen, isOpen: isAddFilterModalOpen, selectedTagBorderColor: selectedTagBorderColor }), _jsx(PivotModal, { pivotRowField: pivotRowField, setPivotRowField: setPivotRowField, pivotColumnField: pivotColumnField, setPivotColumnField: setPivotColumnField, pivotValueField: pivotValueField, setPivotValueField: setPivotValueField, pivotAggregation: pivotAggregation, setPivotAggregation: setPivotAggregation, createdPivots: createdPivots, setCreatedPivots: setCreatedPivots, recommendedPivots: recommendedPivots, setRecommendedPivots: setRecommendedPivots, selectedTable: selectedTable, SelectComponent: SelectComponent, ButtonComponent: ButtonComponent, PopoverComponent: PopoverComponent, LabelComponent: LabelComponent, HeaderComponent: HeaderComponent, TextComponent: TextComponent, popUpTitle: pivotPopUpTitle, setPopUpTitle: setPivotPopUpTitle, theme: theme, data: data, parentRef: parentRef, columns: columns, setIsOpen: setIsPivotModalOpen, isOpen: isPivotModalOpen, showUpdatePivot: isEdittingPivot, setShowUpdatePivot: setIsEdittingPivot, selectedPivotIndex: selectedPivotIndex, setSelectedPivotIndex: setSelectedPivotIndex, removePivot: removePivot, selectPivot: selectPivot, dateRange: dateRange, rightAlign: true })] }) }), chartBuilderEnabled && columns.length > 0 && (_jsxs("div", { children: [_jsx("div", { style: {
|
|
802
798
|
display: 'flex',
|
|
803
799
|
flexDirection: 'row',
|
|
804
800
|
alignItems: 'center',
|
package/dist/esm/SQLEditor.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { TableComponentProps } from './components/UiComponents';
|
|
2
3
|
export declare function convertPostgresColumn(column: any): {
|
|
3
4
|
label: any;
|
|
4
5
|
field: any;
|
|
@@ -35,11 +36,6 @@ interface SQLEditorProps {
|
|
|
35
36
|
onAddToDashboardComplete?: () => void;
|
|
36
37
|
organizationName?: string;
|
|
37
38
|
}
|
|
38
|
-
interface TableComponentProps {
|
|
39
|
-
rows: any[];
|
|
40
|
-
columns: any[];
|
|
41
|
-
height: string;
|
|
42
|
-
}
|
|
43
39
|
interface TextInputComponentProps {
|
|
44
40
|
onChange: (e: any) => void;
|
|
45
41
|
value: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLEditor.d.ts","sourceRoot":"","sources":["../../src/SQLEditor.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmD,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"SQLEditor.d.ts","sourceRoot":"","sources":["../../src/SQLEditor.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAQxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGhE,wBAAgB,qBAAqB,CAAC,MAAM,KAAA;;;;;EAwE3C;AA2BD,UAAU,oBAAoB;IAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,cAAc;IACtB,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC;IAEpC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC/D,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IAExE,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC;IACrE,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC7D,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IACrC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACxC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC9C,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,wBAAwB,CAAC,EAAE,MAAM,IAAI,CAAC;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAQD,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA+ED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,cAAoC,EACpC,eAAe,EACf,wBAAwB,EACxB,kBAAkB,EAClB,cAA2B,EAC3B,eAAuB,EACvB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,eAAe,EACf,cAAc,EACd,UAAkB,EAClB,mBAA2B,EAC3B,sBAA8B,EAC9B,oBAA4B,EAC5B,wBAAgC,EAChC,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,EACxB,yBAA8C,EAC9C,aAAyB,EACzB,gBAA4B,GAC7B,EAAE,cAAc,2CAqUhB;AA8LD,eAAO,MAAM,mBAAmB;;;;;;6CAqG/B,CAAC"}
|
package/dist/esm/SQLEditor.js
CHANGED
|
@@ -5,7 +5,7 @@ import { useState, useContext, useEffect } from 'react';
|
|
|
5
5
|
import MonacoEditor from '@monaco-editor/react';
|
|
6
6
|
// import './nightOwlLight.css';
|
|
7
7
|
import { ClientContext, SchemaContext, ThemeContext } from './Context';
|
|
8
|
-
import
|
|
8
|
+
import QuillTable from './components/QuillTable';
|
|
9
9
|
import { getData, getDataFromCloud } from './utils/dataFetcher';
|
|
10
10
|
import ChartBuilder from './ChartBuilder';
|
|
11
11
|
export function convertPostgresColumn(column) {
|
|
@@ -141,7 +141,7 @@ const QuillTextInput = ({ onChange, value, id, placeholder, theme, }) => {
|
|
|
141
141
|
borderRadius: '6px',
|
|
142
142
|
}, id: id, onChange: onChange, value: value, placeholder: placeholder }));
|
|
143
143
|
};
|
|
144
|
-
export default function QueryEditor({ containerStyle = { height: '100vh' }, ButtonComponent, SecondaryButtonComponent, TextInputComponent, TableComponent, newQueryEnabled = false, LoadingComponent, defaultQuery, onChangeQuery, onChangeData, onChangeColumns, onChangeFields, isEditMode = false, chartBuilderEnabled = false, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, destinationDashboard, chartBuilderTitle, chartBuilderButtonLabel, onAddToDashboardComplete, addToDashboardButtonLabel = 'Add to dashboard', dashboardItem = undefined, organizationName = undefined, }) {
|
|
144
|
+
export default function QueryEditor({ containerStyle = { height: '100vh' }, ButtonComponent, SecondaryButtonComponent, TextInputComponent, TableComponent = QuillTable, newQueryEnabled = false, LoadingComponent, defaultQuery, onChangeQuery, onChangeData, onChangeColumns, onChangeFields, isEditMode = false, chartBuilderEnabled = false, showTableFormatOptions = false, showDateFieldOptions = false, showAccessControlOptions = false, destinationDashboard, chartBuilderTitle, chartBuilderButtonLabel, onAddToDashboardComplete, addToDashboardButtonLabel = 'Add to dashboard', dashboardItem = undefined, organizationName = undefined, }) {
|
|
145
145
|
const [sqlPrompt, setSqlPrompt] = useState('');
|
|
146
146
|
const [isOpen, setIsOpen] = useState(false);
|
|
147
147
|
const [client] = useContext(ClientContext);
|
|
@@ -156,6 +156,7 @@ export default function QueryEditor({ containerStyle = { height: '100vh' }, Butt
|
|
|
156
156
|
const [sqlQueryLoading, setSqlQueryLoading] = useState(false);
|
|
157
157
|
const [schemaLoading, setSchemaLoading] = useState(false);
|
|
158
158
|
const [isChartBuilderOpen, setIsChartBuilderOpen] = useState(false);
|
|
159
|
+
const [displayTable, setDisplayTable] = useState(false);
|
|
159
160
|
const getSchema = async (isSubscribed) => {
|
|
160
161
|
setSchemaLoading(true);
|
|
161
162
|
const { queryEndpoint, queryHeaders, publicKey } = client;
|
|
@@ -201,6 +202,7 @@ export default function QueryEditor({ containerStyle = { height: '100vh' }, Butt
|
|
|
201
202
|
};
|
|
202
203
|
const handleRunQuery = async () => {
|
|
203
204
|
try {
|
|
205
|
+
setDisplayTable(true);
|
|
204
206
|
setSqlQueryLoading(true);
|
|
205
207
|
setErrorMessage('');
|
|
206
208
|
const hostedBody = {
|
|
@@ -245,9 +247,6 @@ export default function QueryEditor({ containerStyle = { height: '100vh' }, Butt
|
|
|
245
247
|
return;
|
|
246
248
|
}
|
|
247
249
|
};
|
|
248
|
-
const handleAddToDashboard = () => {
|
|
249
|
-
setIsOpen(true);
|
|
250
|
-
};
|
|
251
250
|
/* all your useState and useContext calls and your useEffect hooks */
|
|
252
251
|
useEffect(() => {
|
|
253
252
|
if (onChangeQuery) {
|
|
@@ -302,11 +301,7 @@ export default function QueryEditor({ containerStyle = { height: '100vh' }, Butt
|
|
|
302
301
|
borderRadius: 6,
|
|
303
302
|
color: theme?.primaryTextColor,
|
|
304
303
|
fontFamily: theme?.fontFamily,
|
|
305
|
-
}, children: errorMessage }) })), errorMessage
|
|
306
|
-
? null
|
|
307
|
-
: (TableComponent && (_jsx(TableComponent, { rows: rows, columns: columns, height: "calc(100%)" }))) || (_jsx(SpecialTable, { rows: rows ?? [], columns: columns, height: "calc(100%)", LoadingComponent: LoadingComponent, loading: sqlQueryLoading,
|
|
308
|
-
// loading={true}
|
|
309
|
-
theme: theme }))] }), chartBuilderEnabled && rows.length > 0 && (_jsx("div", { style: {
|
|
304
|
+
}, children: errorMessage }) })), errorMessage || !displayTable ? null : (_jsx(TableComponent, { rows: rows, columns: columns, containerStyle: { height: 'calc(100%)' }, LoadingComponent: LoadingComponent, loading: sqlQueryLoading, showDownloadCSVButton: true }))] }), chartBuilderEnabled && rows.length > 0 && (_jsx("div", { style: {
|
|
310
305
|
display: 'flex',
|
|
311
306
|
flexDirection: 'row',
|
|
312
307
|
alignItems: 'center',
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import { CSSProperties } from 'react';
|
|
2
|
+
export interface SkeletonComponentProps {
|
|
3
|
+
conatinerStyle?: CSSProperties;
|
|
4
|
+
}
|
|
2
5
|
export default function ChartSkeleton({ containerStyle }: any): JSX.Element;
|
|
3
6
|
//# sourceMappingURL=ChartSkeleton.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartSkeleton.d.ts","sourceRoot":"","sources":["../../../../src/components/Chart/ChartSkeleton.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"ChartSkeleton.d.ts","sourceRoot":"","sources":["../../../../src/components/Chart/ChartSkeleton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,aAAa,EAAE,MAAM,OAAO,CAAC;AAGlD,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,EAAE,aAAa,CAAC;CAChC;AAED,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,cAAc,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,OAAO,CAyE1E"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
export default function DataLoader({ id,
|
|
2
|
+
export default function DataLoader({ id, SkeletonComponent, handleOnClickDashboardItem, onClickDashboardItem, TableComponent, name, theme, }: any): JSX.Element;
|
|
3
3
|
//# sourceMappingURL=DataLoader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataLoader.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/DataLoader.tsx"],"names":[],"mappings":";AAWA,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"DataLoader.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/DataLoader.tsx"],"names":[],"mappings":";AAWA,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,EAAE,EACF,iBAAiB,EACjB,0BAA0B,EAC1B,oBAAoB,EACpB,cAAc,EACd,IAAI,EACJ,KAAK,GACN,EAAE,GAAG,GAAG,GAAG,CAAC,OAAO,CAsFnB"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { useContext, useEffect } from 'react';
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useContext, useEffect, useState } from 'react';
|
|
3
3
|
import { didFiltersChange } from '../../Chart';
|
|
4
4
|
import { ClientContext, DashboardContext, DashboardFiltersContext, } from '../../Context';
|
|
5
5
|
import { getData } from '../../utils/dataFetcher';
|
|
6
6
|
import { mergeComparisonRange } from '../../utils/merge';
|
|
7
|
-
export default function DataLoader({ id,
|
|
7
|
+
export default function DataLoader({ id, SkeletonComponent, handleOnClickDashboardItem, onClickDashboardItem, TableComponent, name, theme, }) {
|
|
8
8
|
const [client, _] = useContext(ClientContext);
|
|
9
9
|
const { dispatch, dashboard } = useContext(DashboardContext);
|
|
10
10
|
const { dashboardFilters } = useContext(DashboardFiltersContext);
|
|
11
|
+
const [loading, setLoading] = useState(true);
|
|
11
12
|
useEffect(() => {
|
|
12
13
|
async function getChartOptions() {
|
|
13
14
|
if (!didFiltersChange(dashboard[id], dashboardFilters)) {
|
|
@@ -40,6 +41,7 @@ export default function DataLoader({ id, children }) {
|
|
|
40
41
|
id: id,
|
|
41
42
|
filters: minimalFilters,
|
|
42
43
|
};
|
|
44
|
+
setLoading(true);
|
|
43
45
|
const resp = await getData(client, 'itempost', 'omit', hostedBody, cloudBody);
|
|
44
46
|
if (resp && resp.name !== 'error') {
|
|
45
47
|
if (resp.compareRows) {
|
|
@@ -54,6 +56,7 @@ export default function DataLoader({ id, children }) {
|
|
|
54
56
|
id: resp._id,
|
|
55
57
|
},
|
|
56
58
|
});
|
|
59
|
+
setLoading(false);
|
|
57
60
|
}
|
|
58
61
|
}
|
|
59
62
|
catch (e) {
|
|
@@ -62,5 +65,7 @@ export default function DataLoader({ id, children }) {
|
|
|
62
65
|
}
|
|
63
66
|
getChartOptions();
|
|
64
67
|
}, [dashboardFilters, client, id]);
|
|
65
|
-
return _jsx(
|
|
68
|
+
return (_jsx(TableComponent, { theme: theme, loading: loading, dashboardItem: dashboard[id], name: name, SkeletonComponent: SkeletonComponent, onClickDashboardItem: onClickDashboardItem
|
|
69
|
+
? () => handleOnClickDashboardItem(dashboard[id])
|
|
70
|
+
: void null }));
|
|
66
71
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
export default function DashboardItem({ dashboardItem, onClickDashboardItem, theme, style,
|
|
2
|
+
export default function DashboardItem({ dashboardItem, onClickDashboardItem, theme, style, loading, name, SkeletonComponent, }: any): JSX.Element;
|
|
3
3
|
//# sourceMappingURL=TableComponent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/TableComponent.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"TableComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/TableComponent.tsx"],"names":[],"mappings":";AAEA,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EACpC,aAAa,EACb,oBAAoB,EACpB,KAAK,EACL,KAAK,EACL,OAAO,EACP,IAAI,EACJ,iBAAiB,GAClB,EAAE,GAAG,GAAG,GAAG,CAAC,OAAO,CAgDnB"}
|
|
@@ -1,61 +1,29 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
import QuillTable from '../QuillTable';
|
|
3
|
+
export default function DashboardItem({ dashboardItem, onClickDashboardItem, theme, style, loading, name, SkeletonComponent, }) {
|
|
4
|
+
return (_jsxs("div", { onClick: onClickDashboardItem
|
|
4
5
|
? () => onClickDashboardItem(dashboardItem)
|
|
5
|
-
: () => { }, style: {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
boxSizing: 'content-box',
|
|
9
|
-
paddingRight: 25,
|
|
10
|
-
minHeight: 400,
|
|
11
|
-
borderRadius: 8,
|
|
12
|
-
paddingTop: 20,
|
|
13
|
-
...style,
|
|
14
|
-
}, children: _jsx("div", { style: {
|
|
15
|
-
width: '100%',
|
|
16
|
-
height: '100%',
|
|
17
|
-
boxSizing: 'content-box',
|
|
18
|
-
}, children: _jsx("div", { style: {
|
|
19
|
-
width: '100%',
|
|
20
|
-
height: '100%',
|
|
6
|
+
: () => { }, children: [_jsx("div", { style: {
|
|
7
|
+
fontFamily: theme.fontFamily,
|
|
8
|
+
color: theme.primaryTextColor,
|
|
21
9
|
boxSizing: 'content-box',
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
padding: 0,
|
|
42
|
-
whiteSpace: 'nowrap',
|
|
43
|
-
display: 'block',
|
|
44
|
-
maxWidth: '100%',
|
|
45
|
-
overflow: 'hidden',
|
|
46
|
-
}, children: dashboardItem?.name }), onClickDashboardItem ? (_jsx("div", { style: {
|
|
47
|
-
fontFamily: theme.fontFamily,
|
|
48
|
-
color: theme.primaryTextColor,
|
|
49
|
-
boxSizing: 'content-box',
|
|
50
|
-
fontWeight: '500',
|
|
51
|
-
fontSize: 14,
|
|
52
|
-
minWidth: 14 * 7,
|
|
53
|
-
display: 'flex',
|
|
54
|
-
alignItems: 'center',
|
|
55
|
-
justifyContent: 'flex-end',
|
|
56
|
-
}, children: 'view report →' })) : null] }), _jsx("div", { style: {
|
|
57
|
-
padding: 0,
|
|
58
|
-
height: '100%',
|
|
59
|
-
boxSizing: 'content-box',
|
|
60
|
-
}, children: children })] }) }) }) }, dashboardItem?.name));
|
|
10
|
+
fontSize: 18,
|
|
11
|
+
fontWeight: '500',
|
|
12
|
+
textOverflow: 'ellipsis',
|
|
13
|
+
padding: 0,
|
|
14
|
+
whiteSpace: 'nowrap',
|
|
15
|
+
display: 'block',
|
|
16
|
+
maxWidth: '100%',
|
|
17
|
+
overflow: 'hidden',
|
|
18
|
+
paddingBottom: 20,
|
|
19
|
+
}, children: name }), loading ? (_jsx(SkeletonComponent, { containerStyle: { height: 390 } })) : dashboardItem ? (_jsx(QuillTable, { containerStyle: {
|
|
20
|
+
// height: '100%',
|
|
21
|
+
cursor: 'pointer',
|
|
22
|
+
boxSizing: 'content-box',
|
|
23
|
+
paddingRight: 25,
|
|
24
|
+
minHeight: 400,
|
|
25
|
+
height: 400,
|
|
26
|
+
borderRadius: 8,
|
|
27
|
+
...style,
|
|
28
|
+
}, rows: dashboardItem?.rows, columns: dashboardItem?.columns })) : null] }, dashboardItem?.name));
|
|
61
29
|
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { TableComponentProps } from './UiComponents';
|
|
2
|
+
export default function QuillTable({ rows, columns, loading, showDownloadCSVButton, downloadFileName, containerStyle, LoadingComponent, }: TableComponentProps): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
//# sourceMappingURL=QuillTable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuillTable.d.ts","sourceRoot":"","sources":["../../../src/components/QuillTable.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAKrE,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,IAAI,EACJ,OAAO,EACP,OAAO,EACP,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,EACd,gBAA2C,GAC5C,EAAE,mBAAmB,2CA+arB"}
|