@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
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
export function convertPostgresColumn(field) {
|
|
2
|
+
let format;
|
|
3
|
+
let fieldType;
|
|
4
|
+
let jsType;
|
|
5
|
+
switch (field.dataTypeID) {
|
|
6
|
+
case 16: // bool
|
|
7
|
+
format = 'string';
|
|
8
|
+
break;
|
|
9
|
+
case 20: // int8
|
|
10
|
+
case 21: // int2
|
|
11
|
+
case 23: // int4
|
|
12
|
+
format = 'whole_number';
|
|
13
|
+
break;
|
|
14
|
+
case 700: // float4
|
|
15
|
+
case 701: // float8
|
|
16
|
+
case 1700: // numeric
|
|
17
|
+
format = 'two_decimal_places';
|
|
18
|
+
break;
|
|
19
|
+
case 1082: // date
|
|
20
|
+
case 1083: // time
|
|
21
|
+
case 1184: // timestamptz
|
|
22
|
+
case 1114: // timestamp
|
|
23
|
+
format = 'MMM_dd_yyyy';
|
|
24
|
+
break;
|
|
25
|
+
case 1186: // interval
|
|
26
|
+
case 1043: // varchar
|
|
27
|
+
default:
|
|
28
|
+
format = 'string';
|
|
29
|
+
}
|
|
30
|
+
switch (field.dataTypeID) {
|
|
31
|
+
case 16: // boolean
|
|
32
|
+
fieldType = 'bool';
|
|
33
|
+
break;
|
|
34
|
+
case 20: // int8
|
|
35
|
+
fieldType = 'int8';
|
|
36
|
+
break;
|
|
37
|
+
case 21: // int2
|
|
38
|
+
fieldType = 'int2';
|
|
39
|
+
break;
|
|
40
|
+
case 23: // int4
|
|
41
|
+
fieldType = 'int4';
|
|
42
|
+
break;
|
|
43
|
+
case 700: // float4
|
|
44
|
+
fieldType = 'float4';
|
|
45
|
+
break;
|
|
46
|
+
case 701: // float8
|
|
47
|
+
fieldType = 'float8';
|
|
48
|
+
break;
|
|
49
|
+
case 1700: // numeric
|
|
50
|
+
fieldType = 'numeric';
|
|
51
|
+
break;
|
|
52
|
+
case 1082: // date
|
|
53
|
+
fieldType = 'date';
|
|
54
|
+
break;
|
|
55
|
+
case 1083: // time
|
|
56
|
+
fieldType = 'time';
|
|
57
|
+
break;
|
|
58
|
+
case 1184: // timestamptz
|
|
59
|
+
fieldType = 'timestamptz';
|
|
60
|
+
break;
|
|
61
|
+
case 1186: // interval
|
|
62
|
+
fieldType = 'interval';
|
|
63
|
+
break;
|
|
64
|
+
case 1114: // timestamp
|
|
65
|
+
fieldType = 'timestamp';
|
|
66
|
+
break;
|
|
67
|
+
case 1043: // varchar
|
|
68
|
+
default:
|
|
69
|
+
fieldType = 'varchar';
|
|
70
|
+
}
|
|
71
|
+
switch (field.dataTypeID) {
|
|
72
|
+
case 16: // boolean
|
|
73
|
+
jsType = 'bool';
|
|
74
|
+
break;
|
|
75
|
+
case 20: // int8
|
|
76
|
+
case 21: // int2
|
|
77
|
+
case 23: // int4
|
|
78
|
+
case 700: // float4
|
|
79
|
+
case 701: // float8
|
|
80
|
+
case 1700: // numeric
|
|
81
|
+
jsType = 'number';
|
|
82
|
+
break;
|
|
83
|
+
case 1082: // date
|
|
84
|
+
case 1083: // time
|
|
85
|
+
case 1184: // timestamptz
|
|
86
|
+
case 1186: // interval
|
|
87
|
+
case 1114: // timestamp
|
|
88
|
+
jsType = 'date';
|
|
89
|
+
break;
|
|
90
|
+
case 1043: // varchar
|
|
91
|
+
default:
|
|
92
|
+
jsType = 'string';
|
|
93
|
+
}
|
|
94
|
+
return {
|
|
95
|
+
label: field.name,
|
|
96
|
+
field: field.name,
|
|
97
|
+
format,
|
|
98
|
+
fieldType,
|
|
99
|
+
dataTypeID: field.dataTypeID,
|
|
100
|
+
jsType: jsType,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
export function convertColumnInfoToColumnInternal(columnInfo) {
|
|
104
|
+
return {
|
|
105
|
+
label: columnInfo.name,
|
|
106
|
+
field: columnInfo.name,
|
|
107
|
+
format: fieldTypeToFormat(columnInfo.fieldType),
|
|
108
|
+
fieldType: columnInfo.fieldType,
|
|
109
|
+
dataTypeID: fieldTypeToDataTypeID(columnInfo.fieldType),
|
|
110
|
+
jsType: convertFieldTypeToJSType(columnInfo.fieldType),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
function fieldTypeToFormat(fieldType) {
|
|
114
|
+
switch (fieldType) {
|
|
115
|
+
case 'bool':
|
|
116
|
+
return 'string';
|
|
117
|
+
case 'int8':
|
|
118
|
+
case 'int2':
|
|
119
|
+
case 'int4':
|
|
120
|
+
return 'whole_number';
|
|
121
|
+
case 'float4':
|
|
122
|
+
case 'float8':
|
|
123
|
+
case 'numeric':
|
|
124
|
+
return 'two_decimal_places';
|
|
125
|
+
case 'date':
|
|
126
|
+
case 'time':
|
|
127
|
+
case 'timestamptz':
|
|
128
|
+
case 'timestamp':
|
|
129
|
+
return 'MMM_dd_yyyy';
|
|
130
|
+
case 'interval':
|
|
131
|
+
case 'varchar':
|
|
132
|
+
default:
|
|
133
|
+
return 'string';
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
function fieldTypeToDataTypeID(fieldType) {
|
|
137
|
+
switch (fieldType) {
|
|
138
|
+
case 'bool':
|
|
139
|
+
return 16;
|
|
140
|
+
case 'int8':
|
|
141
|
+
return 20;
|
|
142
|
+
case 'int2':
|
|
143
|
+
return 21;
|
|
144
|
+
case 'int4':
|
|
145
|
+
return 23;
|
|
146
|
+
case 'float4':
|
|
147
|
+
return 700;
|
|
148
|
+
case 'float8':
|
|
149
|
+
return 701;
|
|
150
|
+
case 'numeric':
|
|
151
|
+
return 1700;
|
|
152
|
+
case 'date':
|
|
153
|
+
return 1082;
|
|
154
|
+
case 'time':
|
|
155
|
+
return 1083;
|
|
156
|
+
case 'timestamptz':
|
|
157
|
+
return 1184;
|
|
158
|
+
case 'timestamp':
|
|
159
|
+
return 1114;
|
|
160
|
+
case 'interval':
|
|
161
|
+
return 1186;
|
|
162
|
+
case 'varchar':
|
|
163
|
+
default:
|
|
164
|
+
return 1043;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
function convertFieldTypeToJSType(fieldType) {
|
|
168
|
+
switch (fieldType) {
|
|
169
|
+
case 'bool':
|
|
170
|
+
return 'bool';
|
|
171
|
+
case 'int8':
|
|
172
|
+
case 'int2':
|
|
173
|
+
case 'int4':
|
|
174
|
+
case 'float4':
|
|
175
|
+
case 'float8':
|
|
176
|
+
case 'numeric':
|
|
177
|
+
return 'number';
|
|
178
|
+
case 'date':
|
|
179
|
+
case 'time':
|
|
180
|
+
case 'timestamptz':
|
|
181
|
+
case 'timestamp':
|
|
182
|
+
return 'date';
|
|
183
|
+
case 'interval':
|
|
184
|
+
case 'varchar':
|
|
185
|
+
default:
|
|
186
|
+
return 'string';
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
export function convertFormatToJsType(column) {
|
|
190
|
+
switch (column.format) {
|
|
191
|
+
case 'string':
|
|
192
|
+
return 'string';
|
|
193
|
+
case 'whole_number':
|
|
194
|
+
case 'two_decimal_places':
|
|
195
|
+
return 'number';
|
|
196
|
+
case 'MMM_dd_yyyy':
|
|
197
|
+
return 'date';
|
|
198
|
+
default:
|
|
199
|
+
return 'string';
|
|
200
|
+
}
|
|
201
|
+
}
|
|
@@ -117,15 +117,15 @@ function getPivotTable(itemInfo, dashboardFilters, config = undefined) {
|
|
|
117
117
|
const data = itemInfo ? itemInfo : config;
|
|
118
118
|
return pivot && data?.rows
|
|
119
119
|
? generatePivotTable(pivot, JSON.parse(JSON.stringify(data.rows)), // deep copy
|
|
120
|
-
dateFilter?.startDate
|
|
121
|
-
?
|
|
122
|
-
:
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
dateFilter
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
:
|
|
120
|
+
dateFilter?.startDate && dateFilter?.endDate
|
|
121
|
+
? { start: dateFilter.startDate, end: dateFilter.endDate }
|
|
122
|
+
: undefined, Boolean(dateFilter?.comparisonRange?.startDate), -1, dateFilter?.comparisonRange?.startDate &&
|
|
123
|
+
dateFilter?.comparisonRange?.endDate
|
|
124
|
+
? {
|
|
125
|
+
start: dateFilter.comparisonRange.startDate,
|
|
126
|
+
end: dateFilter.comparisonRange.endDate,
|
|
127
|
+
}
|
|
128
|
+
: undefined)
|
|
129
129
|
: null;
|
|
130
130
|
}
|
|
131
131
|
/**
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { Pivot } from '../internals/ReportBuilder/PivotModal';
|
|
2
|
+
import { Column } from '../models/Columns';
|
|
2
3
|
export declare function pivotToSql(pivot: Pivot, query: string, client: any): {
|
|
3
4
|
query: string;
|
|
4
5
|
preQueries?: string[];
|
|
5
6
|
runQueryConfig?: any;
|
|
6
7
|
} | undefined;
|
|
7
8
|
export declare function isValidPivot(pivot: Pivot): boolean;
|
|
8
|
-
export declare function getPossiblePivotFieldOptions(columns:
|
|
9
|
+
export declare function getPossiblePivotFieldOptions(columns: Column[], uniqueValues: {
|
|
9
10
|
[field: string]: any;
|
|
10
11
|
}): {
|
|
11
12
|
rowFields: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pivotProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotProcessing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pivotProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/pivotProcessing.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAkB,MAAM,mBAAmB,CAAC;AAG3D,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,GAAG,GACV;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,CAAC,EAAE,GAAG,CAAA;CAAE,GAAG,SAAS,CAgD5E;AAmDD,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,WAgBxC;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,EAAE;IAAE,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE;;;;EAsCvC;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE;IACf,SAAS,EAAE,GAAG,CAAC;IACf,YAAY,EAAE,GAAG,CAAC;IAClB,WAAW,EAAE,GAAG,CAAC;CAClB,GACA,KAAK,CAqCP"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { dateFormatOptions, numberFormatOptions } from '../ChartBuilder';
|
|
2
|
-
import { isNumericColumnType } from '../components/ReportBuilder/ast';
|
|
3
1
|
import { isIdColumn } from '../components/ReportBuilder/util';
|
|
2
|
+
import { DATE_FORMAT_TYPES, NUMBER_FORMAT_TYPES } from './valueFormatter';
|
|
4
3
|
export function pivotToSql(pivot, query, client) {
|
|
5
4
|
const processedAggType = pivot.aggregationType?.toLowerCase() === 'average'
|
|
6
5
|
? 'avg'
|
|
@@ -105,9 +104,7 @@ export function getPossiblePivotFieldOptions(columns, uniqueValues) {
|
|
|
105
104
|
let valueFields = [];
|
|
106
105
|
for (let column of columns) {
|
|
107
106
|
// row fields can be dates or strings
|
|
108
|
-
if (column.format
|
|
109
|
-
column.fieldType === 'date' ||
|
|
110
|
-
dateFormatOptions.includes(column.format)) {
|
|
107
|
+
if (DATE_FORMAT_TYPES.includes(column.format)) {
|
|
111
108
|
rowFields.push(column.field);
|
|
112
109
|
}
|
|
113
110
|
// column fields can be strings
|
|
@@ -124,9 +121,7 @@ export function getPossiblePivotFieldOptions(columns, uniqueValues) {
|
|
|
124
121
|
}
|
|
125
122
|
}
|
|
126
123
|
// value fields can be numbers
|
|
127
|
-
if (column.format
|
|
128
|
-
numberFormatOptions.includes(column.format) ||
|
|
129
|
-
isNumericColumnType(column.fieldType)) {
|
|
124
|
+
if (NUMBER_FORMAT_TYPES.includes(column.format)) {
|
|
130
125
|
if (!isIdColumn(column.field)) {
|
|
131
126
|
valueFields.push(column.field);
|
|
132
127
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const getUniqueValuesByColumns: (columns:
|
|
1
|
+
import { Column } from '../models/Columns';
|
|
2
|
+
export declare const getUniqueValuesByColumns: (columns: Column[], query: string, rows: any, client: any) => Promise<{
|
|
3
3
|
[column: string]: {
|
|
4
4
|
[value: string]: boolean;
|
|
5
5
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tableProcessing.d.ts","sourceRoot":"","sources":["../../../src/utils/tableProcessing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
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,9 +1,7 @@
|
|
|
1
1
|
import { getData } from './dataFetcher';
|
|
2
2
|
import { generateDistinctQuery } from './queryConstructor';
|
|
3
3
|
export const getUniqueValuesByColumns = async (columns, query, rows, client) => {
|
|
4
|
-
const stringNames = columns.map(
|
|
5
|
-
// @ts-ignore
|
|
6
|
-
(column) => column.name || column.field);
|
|
4
|
+
const stringNames = columns.map((column) => column.field);
|
|
7
5
|
const uniqueValues = {};
|
|
8
6
|
if (!client.databaseType ||
|
|
9
7
|
client.databaseType.toLowerCase() === 'bigquery') {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type AxisFormat } from '../Dashboard';
|
|
2
|
-
type Field = {
|
|
2
|
+
export type Field = {
|
|
3
3
|
_id: string;
|
|
4
4
|
label: string;
|
|
5
5
|
field: string;
|
|
@@ -11,6 +11,7 @@ type Props = {
|
|
|
11
11
|
fields: Field[];
|
|
12
12
|
};
|
|
13
13
|
export declare const DATE_FORMAT_TYPES: string[];
|
|
14
|
+
export declare const NUMBER_FORMAT_TYPES: string[];
|
|
14
15
|
/**
|
|
15
16
|
* Pretty-prints the given values to their nice-looking string form.
|
|
16
17
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"valueFormatter.d.ts","sourceRoot":"","sources":["../../../src/utils/valueFormatter.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,
|
|
1
|
+
{"version":3,"file":"valueFormatter.d.ts","sourceRoot":"","sources":["../../../src/utils/valueFormatter.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,KAAK,GAAG;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,GAAG,CAAC;IACX,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAQ7B,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAM/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,6BAA8B,KAAK,KAAG,MAwChE,CAAC;AAEF,eAAO,MAAM,WAAW;WAIf,GAAG;YACF,MAAM;MACZ,MAwCH,CAAC;AAoMF,eAAO,MAAM,aAAa;;;;WAGhB,MAAM,KACb,MA6CF,CAAC"}
|
|
@@ -9,6 +9,13 @@ export const DATE_FORMAT_TYPES = [
|
|
|
9
9
|
'MMM_dd_hh:mm_ap_pm',
|
|
10
10
|
'wo, yyyy',
|
|
11
11
|
];
|
|
12
|
+
export const NUMBER_FORMAT_TYPES = [
|
|
13
|
+
'whole_number',
|
|
14
|
+
'one_decimal_place',
|
|
15
|
+
'two_decimal_places',
|
|
16
|
+
'dollar_amount',
|
|
17
|
+
'dollar_cents',
|
|
18
|
+
];
|
|
12
19
|
/**
|
|
13
20
|
* Pretty-prints the given values to their nice-looking string form.
|
|
14
21
|
*/
|
|
@@ -50,6 +57,10 @@ export const valueFormatter = ({ value, field, fields }) => {
|
|
|
50
57
|
return formatString(value); // by default make this value a string
|
|
51
58
|
};
|
|
52
59
|
export const quillFormat = ({ value, format, }) => {
|
|
60
|
+
// Handle special case, if value is null and format is numeric display '-'
|
|
61
|
+
if (value === null && NUMBER_FORMAT_TYPES.includes(format)) {
|
|
62
|
+
return '-';
|
|
63
|
+
}
|
|
53
64
|
const HANDLERS = {
|
|
54
65
|
percent: formatPercent,
|
|
55
66
|
dollar_amount: formatDollarAmount,
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/types.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAgDlE"}
|
package/dist/cjs/utils/types.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getPostgresBasicType = void 0;
|
|
4
|
-
function getPostgresBasicType(field) {
|
|
5
|
-
let format;
|
|
6
|
-
// first check if column.dataTypeID exists
|
|
7
|
-
if ('dataTypeID' in field) {
|
|
8
|
-
switch (field.dataTypeID) {
|
|
9
|
-
case 20: // int8
|
|
10
|
-
case 21: // int2
|
|
11
|
-
case 23: // int4
|
|
12
|
-
case 700: // float4
|
|
13
|
-
case 701: // float8
|
|
14
|
-
case 1700: // numeric
|
|
15
|
-
format = 'number';
|
|
16
|
-
break;
|
|
17
|
-
case 1082: // date
|
|
18
|
-
case 1083: // time
|
|
19
|
-
case 1184: // timestamptz
|
|
20
|
-
case 1114: // timestamp
|
|
21
|
-
format = 'date';
|
|
22
|
-
break;
|
|
23
|
-
case 1043: // varchar
|
|
24
|
-
default:
|
|
25
|
-
format = 'string';
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
else if (field.fieldType) {
|
|
29
|
-
// if column.dataTypeID doesn't exist, check column.fieldType
|
|
30
|
-
switch (field.fieldType) {
|
|
31
|
-
case 'int8':
|
|
32
|
-
case 'int2':
|
|
33
|
-
case 'int4':
|
|
34
|
-
case 'float4':
|
|
35
|
-
case 'float8':
|
|
36
|
-
case 'numeric':
|
|
37
|
-
format = 'number';
|
|
38
|
-
break;
|
|
39
|
-
case 'date':
|
|
40
|
-
case 'time':
|
|
41
|
-
case 'timestamptz':
|
|
42
|
-
case 'timestamp':
|
|
43
|
-
format = 'date';
|
|
44
|
-
break;
|
|
45
|
-
case 'varchar':
|
|
46
|
-
default:
|
|
47
|
-
format = 'string';
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return format || 'string';
|
|
51
|
-
}
|
|
52
|
-
exports.getPostgresBasicType = getPostgresBasicType;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export type Field = {
|
|
2
|
-
_id: string;
|
|
3
|
-
label: string;
|
|
4
|
-
field: string;
|
|
5
|
-
format: 'percent';
|
|
6
|
-
};
|
|
7
|
-
type Props = {
|
|
8
|
-
value: string | number | boolean | undefined | null;
|
|
9
|
-
field: string | undefined | null;
|
|
10
|
-
fields: Field[];
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* Formats a value to CSV-format.
|
|
14
|
-
*/
|
|
15
|
-
export declare const valueFormatterCSV: ({ value, field, fields, }: Props) => string | number | boolean;
|
|
16
|
-
export {};
|
|
17
|
-
//# sourceMappingURL=valueFormatterCSV.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"valueFormatterCSV.d.ts","sourceRoot":"","sources":["../../../src/utils/valueFormatterCSV.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,KAAK,GAAG;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IACpD,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,8BAI3B,KAAK,KAAG,MAAM,GAAG,MAAM,GAAG,OA+B5B,CAAC"}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.valueFormatterCSV = void 0;
|
|
4
|
-
const date_fns_1 = require("date-fns");
|
|
5
|
-
const date_fns_tz_1 = require("date-fns-tz");
|
|
6
|
-
/**
|
|
7
|
-
* Formats a value to CSV-format.
|
|
8
|
-
*/
|
|
9
|
-
const valueFormatterCSV = ({ value, field, fields, }) => {
|
|
10
|
-
if (field === undefined || field === null)
|
|
11
|
-
return '';
|
|
12
|
-
if (value === undefined || value === null)
|
|
13
|
-
return '';
|
|
14
|
-
const fieldInfo = fields.find((f) => f.field === field);
|
|
15
|
-
if (!fieldInfo)
|
|
16
|
-
return '';
|
|
17
|
-
const HANDLERS = {
|
|
18
|
-
percent: formatPercent,
|
|
19
|
-
dollar_amount: formatDollarAmount,
|
|
20
|
-
dollar_cents: formatDollarCents,
|
|
21
|
-
whole_number: formatWholeNumber,
|
|
22
|
-
one_decimal_place: formatOneDecimalPlace,
|
|
23
|
-
two_decimal_places: formatTwoDecimalPlaces,
|
|
24
|
-
string: formatString,
|
|
25
|
-
yyyy: format_YYYY,
|
|
26
|
-
MMM_yyyy: format_MMM_yyyy,
|
|
27
|
-
MMM_dd_yyyy: format_MMM_dd_yyyy,
|
|
28
|
-
hh_ap_pm: format_hh_ap_pm,
|
|
29
|
-
'MMM_dd-MMM_dd': format_MMM_dd_MMM_dd,
|
|
30
|
-
'MMM_dd_hh:mm_ap_pm': format_MMM_dd_hh_mm_ap_pm,
|
|
31
|
-
'wo, yyyy': format_wo_yyyy,
|
|
32
|
-
};
|
|
33
|
-
// try to handle this value using the associated formatType handler
|
|
34
|
-
const formatType = fieldInfo.format;
|
|
35
|
-
if (Object.keys(HANDLERS).includes(formatType)) {
|
|
36
|
-
return HANDLERS[formatType](value);
|
|
37
|
-
}
|
|
38
|
-
return formatString(value); // by default make this value a string
|
|
39
|
-
};
|
|
40
|
-
exports.valueFormatterCSV = valueFormatterCSV;
|
|
41
|
-
/**
|
|
42
|
-
* HELPER FUNCTION DEFINITIONS
|
|
43
|
-
*/
|
|
44
|
-
const formatString = (value) => {
|
|
45
|
-
if (typeof value === 'object') {
|
|
46
|
-
return JSON.stringify(value);
|
|
47
|
-
}
|
|
48
|
-
return value.toString();
|
|
49
|
-
};
|
|
50
|
-
const formatDollarAmount = (value) => Number(value ?? 0);
|
|
51
|
-
const formatDollarCents = (value) => Number(value ?? 0);
|
|
52
|
-
const formatWholeNumber = (value) => Math.round(Number(value));
|
|
53
|
-
const formatOneDecimalPlace = (value) => Number(value).toFixed(1);
|
|
54
|
-
const formatTwoDecimalPlaces = (value) => Number(value).toFixed(2);
|
|
55
|
-
const formatPercent = (value) => {
|
|
56
|
-
const absoluteValue = isNaN(Number(value)) ? 0 : Math.abs(Number(value));
|
|
57
|
-
if (absoluteValue < 1.0) {
|
|
58
|
-
return Number(value);
|
|
59
|
-
}
|
|
60
|
-
return Number(value) / 100.0;
|
|
61
|
-
};
|
|
62
|
-
const _getUTCDateHelper = (value, fmt) => {
|
|
63
|
-
const utcDate = (0, date_fns_tz_1.utcToZonedTime)(new Date(value), 'UTC');
|
|
64
|
-
if (!(0, date_fns_1.isValid)(utcDate))
|
|
65
|
-
return 'Invalid date';
|
|
66
|
-
return (0, date_fns_1.format)(utcDate, fmt);
|
|
67
|
-
};
|
|
68
|
-
const format_YYYY = (value) => _getUTCDateHelper(value, 'yyyy');
|
|
69
|
-
const format_MMM_yyyy = (value) => _getUTCDateHelper(value, 'MMM yyyy');
|
|
70
|
-
const format_hh_ap_pm = (value) => _getUTCDateHelper(value, 'hh:mm aa');
|
|
71
|
-
const format_MMM_dd_yyyy = (value) => _getUTCDateHelper(value, 'dd MMM yyyy');
|
|
72
|
-
const format_MMM_dd_MMM_dd = (value) => {
|
|
73
|
-
const utcDate = (0, date_fns_tz_1.utcToZonedTime)(new Date(value), 'UTC');
|
|
74
|
-
if (!(0, date_fns_1.isValid)(utcDate))
|
|
75
|
-
return 'Invalid date';
|
|
76
|
-
const monday = (0, date_fns_1.startOfWeek)(utcDate, { weekStartsOn: 1 });
|
|
77
|
-
const sunday = (0, date_fns_1.endOfWeek)(utcDate, { weekStartsOn: 1 });
|
|
78
|
-
// Check if start and end are in the same month
|
|
79
|
-
if ((0, date_fns_1.format)(monday, 'MMM') === (0, date_fns_1.format)(sunday, 'MMM')) {
|
|
80
|
-
return `${(0, date_fns_1.format)(monday, 'MMM dd')} - ${(0, date_fns_1.format)(sunday, 'dd')}`;
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
return `${(0, date_fns_1.format)(monday, 'MMM dd')} - ${(0, date_fns_1.format)(sunday, 'MMM dd')}`;
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
const format_MMM_dd_hh_mm_ap_pm = (value) => {
|
|
87
|
-
const utcDate = (0, date_fns_tz_1.utcToZonedTime)(new Date(value), 'UTC');
|
|
88
|
-
if (!(0, date_fns_1.isValid)(utcDate))
|
|
89
|
-
return 'Invalid date';
|
|
90
|
-
const formatStr = utcDate.getMinutes() === 0 ? 'MMM do h a' : 'MMM do h:mm a';
|
|
91
|
-
const res = (0, date_fns_1.format)(utcDate, formatStr);
|
|
92
|
-
return res.slice(0, -2) + res.slice(-2).toLowerCase();
|
|
93
|
-
};
|
|
94
|
-
const format_wo_yyyy = (value) => {
|
|
95
|
-
const utcDate = (0, date_fns_tz_1.utcToZonedTime)(new Date(value), 'UTC');
|
|
96
|
-
if (!(0, date_fns_1.isValid)(utcDate))
|
|
97
|
-
return 'Invalid date';
|
|
98
|
-
return `${(0, date_fns_1.getWeek)(utcDate)},${utcDate.getFullYear()}`;
|
|
99
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/types.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAgDlE"}
|
package/dist/esm/utils/types.js
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
export function getPostgresBasicType(field) {
|
|
2
|
-
let format;
|
|
3
|
-
// first check if column.dataTypeID exists
|
|
4
|
-
if ('dataTypeID' in field) {
|
|
5
|
-
switch (field.dataTypeID) {
|
|
6
|
-
case 20: // int8
|
|
7
|
-
case 21: // int2
|
|
8
|
-
case 23: // int4
|
|
9
|
-
case 700: // float4
|
|
10
|
-
case 701: // float8
|
|
11
|
-
case 1700: // numeric
|
|
12
|
-
format = 'number';
|
|
13
|
-
break;
|
|
14
|
-
case 1082: // date
|
|
15
|
-
case 1083: // time
|
|
16
|
-
case 1184: // timestamptz
|
|
17
|
-
case 1114: // timestamp
|
|
18
|
-
format = 'date';
|
|
19
|
-
break;
|
|
20
|
-
case 1043: // varchar
|
|
21
|
-
default:
|
|
22
|
-
format = 'string';
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
else if (field.fieldType) {
|
|
26
|
-
// if column.dataTypeID doesn't exist, check column.fieldType
|
|
27
|
-
switch (field.fieldType) {
|
|
28
|
-
case 'int8':
|
|
29
|
-
case 'int2':
|
|
30
|
-
case 'int4':
|
|
31
|
-
case 'float4':
|
|
32
|
-
case 'float8':
|
|
33
|
-
case 'numeric':
|
|
34
|
-
format = 'number';
|
|
35
|
-
break;
|
|
36
|
-
case 'date':
|
|
37
|
-
case 'time':
|
|
38
|
-
case 'timestamptz':
|
|
39
|
-
case 'timestamp':
|
|
40
|
-
format = 'date';
|
|
41
|
-
break;
|
|
42
|
-
case 'varchar':
|
|
43
|
-
default:
|
|
44
|
-
format = 'string';
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return format || 'string';
|
|
48
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export type Field = {
|
|
2
|
-
_id: string;
|
|
3
|
-
label: string;
|
|
4
|
-
field: string;
|
|
5
|
-
format: 'percent';
|
|
6
|
-
};
|
|
7
|
-
type Props = {
|
|
8
|
-
value: string | number | boolean | undefined | null;
|
|
9
|
-
field: string | undefined | null;
|
|
10
|
-
fields: Field[];
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* Formats a value to CSV-format.
|
|
14
|
-
*/
|
|
15
|
-
export declare const valueFormatterCSV: ({ value, field, fields, }: Props) => string | number | boolean;
|
|
16
|
-
export {};
|
|
17
|
-
//# sourceMappingURL=valueFormatterCSV.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"valueFormatterCSV.d.ts","sourceRoot":"","sources":["../../../src/utils/valueFormatterCSV.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,KAAK,GAAG;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IACpD,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,8BAI3B,KAAK,KAAG,MAAM,GAAG,MAAM,GAAG,OA+B5B,CAAC"}
|