@deephaven/iris-grid 1.18.1-iris-grid-16.0 → 1.18.2
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/IrisGrid.d.ts +15 -17
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +16 -1
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridCacheUtils.d.ts.map +1 -1
- package/dist/IrisGridCacheUtils.js +1 -1
- package/dist/IrisGridCacheUtils.js.map +1 -1
- package/dist/IrisGridMetricCalculator.d.ts +28 -1
- package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
- package/dist/IrisGridMetricCalculator.js +43 -3
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +11 -3
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +36 -24
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/LazyIrisGrid.d.ts +1 -0
- package/dist/LazyIrisGrid.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +40 -20
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.d.ts +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +2 -2
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +2 -2
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +22 -19
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/package.json +18 -18
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
2
|
+
import classNames from 'classnames';
|
|
2
3
|
import { TableUtils } from '@deephaven/jsapi-utils';
|
|
3
4
|
import Log from '@deephaven/log';
|
|
4
5
|
import { Select } from '@deephaven/components';
|
|
@@ -38,7 +39,7 @@ function isNumberConditionValid(condition, value, startValue, endValue) {
|
|
|
38
39
|
}
|
|
39
40
|
return false;
|
|
40
41
|
}
|
|
41
|
-
function getNumberInputs(selectedCondition, handleValueChange, handleStartValueChange, handleEndValueChange, conditionValue, startValue, endValue) {
|
|
42
|
+
function getNumberInputs(selectedCondition, handleValueChange, handleStartValueChange, handleEndValueChange, isInvalid, conditionValue, startValue, endValue) {
|
|
42
43
|
switch (selectedCondition) {
|
|
43
44
|
case NumberCondition.IS_EQUAL:
|
|
44
45
|
case NumberCondition.IS_NOT_EQUAL:
|
|
@@ -48,7 +49,9 @@ function getNumberInputs(selectedCondition, handleValueChange, handleStartValueC
|
|
|
48
49
|
case NumberCondition.LESS_THAN_OR_EQUAL:
|
|
49
50
|
return /*#__PURE__*/_jsx("input", {
|
|
50
51
|
type: "number",
|
|
51
|
-
className:
|
|
52
|
+
className: classNames('form-control', {
|
|
53
|
+
'is-invalid': isInvalid
|
|
54
|
+
}),
|
|
52
55
|
placeholder: "Enter value",
|
|
53
56
|
value: conditionValue !== null && conditionValue !== void 0 ? conditionValue : '',
|
|
54
57
|
onChange: handleValueChange
|
|
@@ -58,13 +61,17 @@ function getNumberInputs(selectedCondition, handleValueChange, handleStartValueC
|
|
|
58
61
|
className: "d-flex flex-row",
|
|
59
62
|
children: [/*#__PURE__*/_jsx("input", {
|
|
60
63
|
type: "number",
|
|
61
|
-
className:
|
|
64
|
+
className: classNames('form-control', 'd-flex', 'mr-2', {
|
|
65
|
+
'is-invalid': isInvalid
|
|
66
|
+
}),
|
|
62
67
|
placeholder: "Start value",
|
|
63
68
|
value: startValue !== null && startValue !== void 0 ? startValue : '',
|
|
64
69
|
onChange: handleStartValueChange
|
|
65
70
|
}), /*#__PURE__*/_jsx("input", {
|
|
66
71
|
type: "number",
|
|
67
|
-
className:
|
|
72
|
+
className: classNames('form-control', 'd-flex', {
|
|
73
|
+
'is-invalid': isInvalid
|
|
74
|
+
}),
|
|
68
75
|
placeholder: "End value",
|
|
69
76
|
value: endValue !== null && endValue !== void 0 ? endValue : '',
|
|
70
77
|
onChange: handleEndValueChange
|
|
@@ -75,7 +82,7 @@ function getNumberInputs(selectedCondition, handleValueChange, handleStartValueC
|
|
|
75
82
|
return null;
|
|
76
83
|
}
|
|
77
84
|
}
|
|
78
|
-
function getStringInputs(selectedCondition, handleValueChange, conditionValue) {
|
|
85
|
+
function getStringInputs(selectedCondition, handleValueChange, isInvalid, conditionValue) {
|
|
79
86
|
switch (selectedCondition) {
|
|
80
87
|
case StringCondition.IS_NULL:
|
|
81
88
|
case StringCondition.IS_NOT_NULL:
|
|
@@ -83,14 +90,16 @@ function getStringInputs(selectedCondition, handleValueChange, conditionValue) {
|
|
|
83
90
|
default:
|
|
84
91
|
return /*#__PURE__*/_jsx("input", {
|
|
85
92
|
type: "text",
|
|
86
|
-
className:
|
|
93
|
+
className: classNames('form-control', {
|
|
94
|
+
'is-invalid': isInvalid
|
|
95
|
+
}),
|
|
87
96
|
placeholder: "Enter value",
|
|
88
97
|
value: conditionValue !== null && conditionValue !== void 0 ? conditionValue : '',
|
|
89
98
|
onChange: handleValueChange
|
|
90
99
|
});
|
|
91
100
|
}
|
|
92
101
|
}
|
|
93
|
-
function getDateInputs(selectedCondition, handleValueChange, conditionValue) {
|
|
102
|
+
function getDateInputs(selectedCondition, handleValueChange, isInvalid, conditionValue) {
|
|
94
103
|
switch (selectedCondition) {
|
|
95
104
|
case DateCondition.IS_NULL:
|
|
96
105
|
case DateCondition.IS_NOT_NULL:
|
|
@@ -98,7 +107,9 @@ function getDateInputs(selectedCondition, handleValueChange, conditionValue) {
|
|
|
98
107
|
default:
|
|
99
108
|
return /*#__PURE__*/_jsx("input", {
|
|
100
109
|
type: "text",
|
|
101
|
-
className:
|
|
110
|
+
className: classNames('form-control', {
|
|
111
|
+
'is-invalid': isInvalid
|
|
112
|
+
}),
|
|
102
113
|
placeholder: "Enter value",
|
|
103
114
|
value: conditionValue !== null && conditionValue !== void 0 ? conditionValue : '',
|
|
104
115
|
onChange: handleValueChange
|
|
@@ -108,7 +119,7 @@ function getDateInputs(selectedCondition, handleValueChange, conditionValue) {
|
|
|
108
119
|
function getBooleanInputs() {
|
|
109
120
|
return null;
|
|
110
121
|
}
|
|
111
|
-
function getCharInputs(selectedCondition, handleValueChange, conditionValue) {
|
|
122
|
+
function getCharInputs(selectedCondition, handleValueChange, isInvalid, conditionValue) {
|
|
112
123
|
switch (selectedCondition) {
|
|
113
124
|
case CharCondition.IS_NULL:
|
|
114
125
|
case CharCondition.IS_NOT_NULL:
|
|
@@ -116,7 +127,9 @@ function getCharInputs(selectedCondition, handleValueChange, conditionValue) {
|
|
|
116
127
|
default:
|
|
117
128
|
return /*#__PURE__*/_jsx("input", {
|
|
118
129
|
type: "text",
|
|
119
|
-
className:
|
|
130
|
+
className: classNames('form-control', {
|
|
131
|
+
'is-invalid': isInvalid
|
|
132
|
+
}),
|
|
120
133
|
maxLength: 1,
|
|
121
134
|
placeholder: "Enter value",
|
|
122
135
|
value: conditionValue !== null && conditionValue !== void 0 ? conditionValue : '',
|
|
@@ -137,6 +150,7 @@ function ConditionEditor(props) {
|
|
|
137
150
|
var [conditionValue, setValue] = useState(config.value);
|
|
138
151
|
var [startValue, setStartValue] = useState(config.start);
|
|
139
152
|
var [endValue, setEndValue] = useState(config.end);
|
|
153
|
+
var [isValid, setIsValid] = useState(true);
|
|
140
154
|
if (selectedColumnType !== prevColumnType) {
|
|
141
155
|
// Column type changed, reset condition and value fields
|
|
142
156
|
setCondition(getDefaultConditionForType(selectedColumnType));
|
|
@@ -191,45 +205,51 @@ function ConditionEditor(props) {
|
|
|
191
205
|
setEndValue(value);
|
|
192
206
|
}, []);
|
|
193
207
|
useEffect(function changeCondition() {
|
|
194
|
-
var
|
|
208
|
+
var isConditionValid = true;
|
|
195
209
|
if (selectedCondition === undefined) {
|
|
196
210
|
log.debug('Unable to create formatting rule. Condition is not selected.');
|
|
197
|
-
|
|
211
|
+
isConditionValid = false;
|
|
198
212
|
} else if (TableUtils.isNumberType(column.type) && !isNumberConditionValid(selectedCondition, conditionValue, startValue, endValue)) {
|
|
199
213
|
log.debug('Unable to create formatting rule. Invalid value', conditionValue);
|
|
200
|
-
|
|
214
|
+
isConditionValid = false;
|
|
201
215
|
} else if (TableUtils.isDateType(column.type) && !isDateConditionValid(dh, selectedCondition, conditionValue)) {
|
|
202
216
|
log.debug('Unable to create formatting rule. Invalid date condition', conditionValue);
|
|
203
|
-
|
|
217
|
+
isConditionValid = false;
|
|
204
218
|
}
|
|
219
|
+
setIsValid(isConditionValid);
|
|
205
220
|
onChange({
|
|
206
221
|
condition: selectedCondition,
|
|
207
222
|
value: conditionValue,
|
|
208
223
|
start: startValue,
|
|
209
224
|
end: endValue
|
|
210
|
-
},
|
|
225
|
+
}, isConditionValid);
|
|
211
226
|
}, [onChange, column.type, dh, selectedCondition, conditionValue, startValue, endValue]);
|
|
212
227
|
var conditionInputs = useMemo(() => {
|
|
213
228
|
if (selectedColumnType === undefined) {
|
|
214
229
|
// Column not selected
|
|
215
230
|
return null;
|
|
216
231
|
}
|
|
232
|
+
|
|
233
|
+
// Show invalid state only when there's a non-empty value that fails validation
|
|
234
|
+
var hasInvalidValue = !isValid && conditionValue !== undefined && conditionValue !== '';
|
|
217
235
|
if (TableUtils.isNumberType(selectedColumnType)) {
|
|
218
|
-
|
|
236
|
+
// For IS_BETWEEN, show invalid on each field only if that field has a value
|
|
237
|
+
var showInvalid = selectedCondition === NumberCondition.IS_BETWEEN ? !isValid && (startValue !== undefined && startValue !== '' || endValue !== undefined && endValue !== '') : hasInvalidValue;
|
|
238
|
+
return getNumberInputs(selectedCondition, handleValueChange, handleStartValueChange, handleEndValueChange, showInvalid, conditionValue, startValue, endValue);
|
|
219
239
|
}
|
|
220
240
|
if (TableUtils.isCharType(selectedColumnType)) {
|
|
221
|
-
return getCharInputs(selectedCondition, handleValueChange, conditionValue);
|
|
241
|
+
return getCharInputs(selectedCondition, handleValueChange, hasInvalidValue, conditionValue);
|
|
222
242
|
}
|
|
223
243
|
if (TableUtils.isStringType(selectedColumnType)) {
|
|
224
|
-
return getStringInputs(selectedCondition, handleValueChange, conditionValue);
|
|
244
|
+
return getStringInputs(selectedCondition, handleValueChange, hasInvalidValue, conditionValue);
|
|
225
245
|
}
|
|
226
246
|
if (TableUtils.isDateType(selectedColumnType)) {
|
|
227
|
-
return getDateInputs(selectedCondition, handleValueChange, conditionValue);
|
|
247
|
+
return getDateInputs(selectedCondition, handleValueChange, hasInvalidValue, conditionValue);
|
|
228
248
|
}
|
|
229
249
|
if (TableUtils.isBooleanType(selectedColumnType)) {
|
|
230
250
|
return getBooleanInputs();
|
|
231
251
|
}
|
|
232
|
-
}, [selectedColumnType, selectedCondition, conditionValue, startValue, endValue, handleValueChange, handleStartValueChange, handleEndValueChange]);
|
|
252
|
+
}, [selectedColumnType, selectedCondition, conditionValue, startValue, endValue, isValid, handleValueChange, handleStartValueChange, handleEndValueChange]);
|
|
233
253
|
return /*#__PURE__*/_jsxs("div", {
|
|
234
254
|
className: "condition-editor mb-2",
|
|
235
255
|
children: [/*#__PURE__*/_jsx(Select, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionEditor.js","names":["React","useCallback","useEffect","useMemo","useState","TableUtils","Log","Select","StringCondition","DateCondition","getLabelForNumberCondition","getLabelForDateCondition","getLabelForStringCondition","NumberCondition","getDefaultConditionForType","getLabelForBooleanCondition","BooleanCondition","CharCondition","getLabelForCharCondition","isDateConditionValid","getDefaultValueForType","jsx","_jsx","jsxs","_jsxs","log","module","DEFAULT_CALLBACK","undefined","numberConditionOptions","IS_EQUAL","IS_NOT_EQUAL","IS_BETWEEN","GREATER_THAN","GREATER_THAN_OR_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","IS_NULL","IS_NOT_NULL","map","option","value","children","stringConditions","IS_EXACTLY","IS_NOT_EXACTLY","CONTAINS","DOES_NOT_CONTAIN","STARTS_WITH","ENDS_WITH","dateConditions","IS_BEFORE","IS_BEFORE_OR_EQUAL","IS_AFTER","IS_AFTER_OR_EQUAL","booleanConditions","IS_TRUE","IS_FALSE","charConditions","isNumberConditionValid","condition","startValue","endValue","Number","isNaN","parseFloat","getNumberInputs","selectedCondition","handleValueChange","handleStartValueChange","handleEndValueChange","conditionValue","type","className","placeholder","onChange","getStringInputs","getDateInputs","getBooleanInputs","getCharInputs","maxLength","ConditionEditor","props","column","config","dh","selectedColumnType","prevColumnType","setPrevColumnType","setCondition","setValue","setStartValue","start","setEndValue","end","conditions","isNumberType","isCharType","isStringType","isDateType","isBooleanType","handleConditionChange","debug","e","target","changeCondition","isValid","conditionInputs"],"sources":["../../../src/sidebar/conditional-formatting/ConditionEditor.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { Select } from '@deephaven/components';\nimport {\n StringCondition,\n DateCondition,\n getLabelForNumberCondition,\n getLabelForDateCondition,\n getLabelForStringCondition,\n NumberCondition,\n type ModelColumn,\n type ConditionConfig,\n getDefaultConditionForType,\n getLabelForBooleanCondition,\n BooleanCondition,\n CharCondition,\n type Condition,\n getLabelForCharCondition,\n isDateConditionValid,\n getDefaultValueForType,\n} from './ConditionalFormattingUtils';\n\nconst log = Log.module('ConditionEditor');\n\nexport interface ConditionEditorProps {\n dh: typeof DhType;\n column: ModelColumn;\n config: ConditionConfig;\n onChange?: (config: ConditionConfig, isValid: boolean) => void;\n}\n\nconst DEFAULT_CALLBACK = (): void => undefined;\n\nconst numberConditionOptions = [\n NumberCondition.IS_EQUAL,\n NumberCondition.IS_NOT_EQUAL,\n NumberCondition.IS_BETWEEN,\n NumberCondition.GREATER_THAN,\n NumberCondition.GREATER_THAN_OR_EQUAL,\n NumberCondition.LESS_THAN,\n NumberCondition.LESS_THAN_OR_EQUAL,\n NumberCondition.IS_NULL,\n NumberCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForNumberCondition(option)}\n </option>\n));\n\nconst stringConditions = [\n StringCondition.IS_EXACTLY,\n StringCondition.IS_NOT_EXACTLY,\n StringCondition.CONTAINS,\n StringCondition.DOES_NOT_CONTAIN,\n StringCondition.STARTS_WITH,\n StringCondition.ENDS_WITH,\n StringCondition.IS_NULL,\n StringCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForStringCondition(option)}\n </option>\n));\n\nconst dateConditions = [\n DateCondition.IS_EXACTLY,\n DateCondition.IS_NOT_EXACTLY,\n DateCondition.IS_BEFORE,\n DateCondition.IS_BEFORE_OR_EQUAL,\n DateCondition.IS_AFTER,\n DateCondition.IS_AFTER_OR_EQUAL,\n DateCondition.IS_NULL,\n DateCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForDateCondition(option)}\n </option>\n));\n\nconst booleanConditions = [\n BooleanCondition.IS_TRUE,\n BooleanCondition.IS_FALSE,\n BooleanCondition.IS_NULL,\n BooleanCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForBooleanCondition(option)}\n </option>\n));\n\nconst charConditions = [\n CharCondition.IS_EQUAL,\n CharCondition.IS_NOT_EQUAL,\n CharCondition.IS_NULL,\n CharCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForCharCondition(option)}\n </option>\n));\n\nfunction isNumberConditionValid(\n condition: NumberCondition,\n value?: string,\n startValue?: string,\n endValue?: string\n): boolean {\n if (\n condition === NumberCondition.IS_NULL ||\n condition === NumberCondition.IS_NOT_NULL\n ) {\n return true;\n }\n if (\n condition === NumberCondition.IS_BETWEEN &&\n startValue != null &&\n startValue !== '' &&\n !Number.isNaN(Number.parseFloat(startValue)) &&\n endValue != null &&\n endValue !== '' &&\n !Number.isNaN(Number.parseFloat(endValue))\n ) {\n return true;\n }\n if (\n condition !== NumberCondition.IS_BETWEEN &&\n value !== undefined &&\n value !== '' &&\n !Number.isNaN(Number.parseFloat(value))\n ) {\n return true;\n }\n return false;\n}\n\nfunction getNumberInputs(\n selectedCondition: NumberCondition,\n handleValueChange: (e: React.ChangeEvent<HTMLInputElement>) => void,\n handleStartValueChange: (e: React.ChangeEvent<HTMLInputElement>) => void,\n handleEndValueChange: (e: React.ChangeEvent<HTMLInputElement>) => void,\n conditionValue?: string,\n startValue?: string,\n endValue?: string\n): JSX.Element | null {\n switch (selectedCondition) {\n case NumberCondition.IS_EQUAL:\n case NumberCondition.IS_NOT_EQUAL:\n case NumberCondition.GREATER_THAN:\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n case NumberCondition.LESS_THAN:\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return (\n <input\n type=\"number\"\n className=\"form-control\"\n placeholder=\"Enter value\"\n value={conditionValue ?? ''}\n onChange={handleValueChange}\n />\n );\n case NumberCondition.IS_BETWEEN:\n return (\n <div className=\"d-flex flex-row\">\n <input\n type=\"number\"\n className=\"form-control d-flex mr-2\"\n placeholder=\"Start value\"\n value={startValue ?? ''}\n onChange={handleStartValueChange}\n />\n <input\n type=\"number\"\n className=\"form-control d-flex\"\n placeholder=\"End value\"\n value={endValue ?? ''}\n onChange={handleEndValueChange}\n />\n </div>\n );\n case NumberCondition.IS_NULL:\n case NumberCondition.IS_NOT_NULL:\n return null;\n }\n}\n\nfunction getStringInputs(\n selectedCondition: StringCondition,\n handleValueChange: (e: React.ChangeEvent<HTMLInputElement>) => void,\n conditionValue?: string\n): JSX.Element | null {\n switch (selectedCondition) {\n case StringCondition.IS_NULL:\n case StringCondition.IS_NOT_NULL:\n return null;\n default:\n return (\n <input\n type=\"text\"\n className=\"form-control\"\n placeholder=\"Enter value\"\n value={conditionValue ?? ''}\n onChange={handleValueChange}\n />\n );\n }\n}\n\nfunction getDateInputs(\n selectedCondition: DateCondition,\n handleValueChange: (e: React.ChangeEvent<HTMLInputElement>) => void,\n conditionValue?: string\n): JSX.Element | null {\n switch (selectedCondition) {\n case DateCondition.IS_NULL:\n case DateCondition.IS_NOT_NULL:\n return null;\n default:\n return (\n <input\n type=\"text\"\n className=\"form-control\"\n placeholder=\"Enter value\"\n value={conditionValue ?? ''}\n onChange={handleValueChange}\n />\n );\n }\n}\n\nfunction getBooleanInputs(): null {\n return null;\n}\n\nfunction getCharInputs(\n selectedCondition: CharCondition,\n handleValueChange: (e: React.ChangeEvent<HTMLInputElement>) => void,\n conditionValue?: string\n): JSX.Element | null {\n switch (selectedCondition) {\n case CharCondition.IS_NULL:\n case CharCondition.IS_NOT_NULL:\n return null;\n default:\n return (\n <input\n type=\"text\"\n className=\"form-control\"\n maxLength={1}\n placeholder=\"Enter value\"\n value={conditionValue ?? ''}\n onChange={handleValueChange}\n />\n );\n }\n}\n\nfunction ConditionEditor(props: ConditionEditorProps): JSX.Element {\n const { column, config, dh, onChange = DEFAULT_CALLBACK } = props;\n const selectedColumnType = column.type;\n const [prevColumnType, setPrevColumnType] = useState(selectedColumnType);\n const [selectedCondition, setCondition] = useState(config.condition);\n const [conditionValue, setValue] = useState(config.value);\n const [startValue, setStartValue] = useState(config.start);\n const [endValue, setEndValue] = useState(config.end);\n\n if (selectedColumnType !== prevColumnType) {\n // Column type changed, reset condition and value fields\n setCondition(getDefaultConditionForType(selectedColumnType));\n setValue(getDefaultValueForType(selectedColumnType));\n setStartValue(undefined);\n setEndValue(undefined);\n setPrevColumnType(selectedColumnType);\n }\n\n const conditions = useMemo(() => {\n if (selectedColumnType === undefined) {\n return [];\n }\n if (TableUtils.isNumberType(selectedColumnType)) {\n return numberConditionOptions;\n }\n if (TableUtils.isCharType(selectedColumnType)) {\n return charConditions;\n }\n if (TableUtils.isStringType(selectedColumnType)) {\n return stringConditions;\n }\n if (TableUtils.isDateType(selectedColumnType)) {\n return dateConditions;\n }\n if (TableUtils.isBooleanType(selectedColumnType)) {\n return booleanConditions;\n }\n }, [selectedColumnType]);\n\n const handleConditionChange = useCallback((value: string) => {\n log.debug('handleConditionChange', value);\n setCondition(value as Condition);\n }, []);\n\n const handleValueChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const { value } = e.target;\n log.debug('handleValueChange', value);\n setValue(value);\n },\n []\n );\n\n const handleStartValueChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const { value } = e.target;\n log.debug('handleStartValueChange', value);\n setStartValue(value);\n },\n []\n );\n\n const handleEndValueChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const { value } = e.target;\n log.debug('handleEndValueChange', value);\n setEndValue(value);\n },\n []\n );\n\n useEffect(\n function changeCondition() {\n let isValid = true;\n\n if (selectedCondition === undefined) {\n log.debug(\n 'Unable to create formatting rule. Condition is not selected.'\n );\n isValid = false;\n } else if (\n TableUtils.isNumberType(column.type) &&\n !isNumberConditionValid(\n selectedCondition as NumberCondition,\n conditionValue,\n startValue,\n endValue\n )\n ) {\n log.debug(\n 'Unable to create formatting rule. Invalid value',\n conditionValue\n );\n isValid = false;\n } else if (\n TableUtils.isDateType(column.type) &&\n !isDateConditionValid(\n dh,\n selectedCondition as DateCondition,\n conditionValue\n )\n ) {\n log.debug(\n 'Unable to create formatting rule. Invalid date condition',\n conditionValue\n );\n isValid = false;\n }\n\n onChange(\n {\n condition: selectedCondition,\n value: conditionValue,\n start: startValue,\n end: endValue,\n },\n isValid\n );\n },\n [\n onChange,\n column.type,\n dh,\n selectedCondition,\n conditionValue,\n startValue,\n endValue,\n ]\n );\n\n const conditionInputs = useMemo(() => {\n if (selectedColumnType === undefined) {\n // Column not selected\n return null;\n }\n if (TableUtils.isNumberType(selectedColumnType)) {\n return getNumberInputs(\n selectedCondition as NumberCondition,\n handleValueChange,\n handleStartValueChange,\n handleEndValueChange,\n conditionValue,\n startValue,\n endValue\n );\n }\n if (TableUtils.isCharType(selectedColumnType)) {\n return getCharInputs(\n selectedCondition as CharCondition,\n handleValueChange,\n conditionValue\n );\n }\n if (TableUtils.isStringType(selectedColumnType)) {\n return getStringInputs(\n selectedCondition as StringCondition,\n handleValueChange,\n conditionValue\n );\n }\n if (TableUtils.isDateType(selectedColumnType)) {\n return getDateInputs(\n selectedCondition as DateCondition,\n handleValueChange,\n conditionValue\n );\n }\n if (TableUtils.isBooleanType(selectedColumnType)) {\n return getBooleanInputs();\n }\n }, [\n selectedColumnType,\n selectedCondition,\n conditionValue,\n startValue,\n endValue,\n handleValueChange,\n handleStartValueChange,\n handleEndValueChange,\n ]);\n\n return (\n <div className=\"condition-editor mb-2\">\n <Select\n value={selectedCondition}\n data-testid=\"condition-select\"\n className=\"custom-select mb-2\"\n onChange={handleConditionChange}\n >\n {conditions}\n </Select>\n {conditionInputs}\n </div>\n );\n}\n\nexport default ConditionEditor;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AACxE,SAASC,UAAU,QAAQ,wBAAwB;AAEnD,OAAOC,GAAG,MAAM,gBAAgB;AAChC,SAASC,MAAM,QAAQ,uBAAuB;AAAC,SAE7CC,eAAe,EACfC,aAAa,EACbC,0BAA0B,EAC1BC,wBAAwB,EACxBC,0BAA0B,EAC1BC,eAAe,EAGfC,0BAA0B,EAC1BC,2BAA2B,EAC3BC,gBAAgB,EAChBC,aAAa,EAEbC,wBAAwB,EACxBC,oBAAoB,EACpBC,sBAAsB;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAGxB,IAAMC,GAAG,GAAGnB,GAAG,CAACoB,MAAM,CAAC,iBAAiB,CAAC;AASzC,IAAMC,gBAAgB,GAAGA,CAAA,KAAYC,SAAS;AAE9C,IAAMC,sBAAsB,GAAG,CAC7BhB,eAAe,CAACiB,QAAQ,EACxBjB,eAAe,CAACkB,YAAY,EAC5BlB,eAAe,CAACmB,UAAU,EAC1BnB,eAAe,CAACoB,YAAY,EAC5BpB,eAAe,CAACqB,qBAAqB,EACrCrB,eAAe,CAACsB,SAAS,EACzBtB,eAAe,CAACuB,kBAAkB,EAClCvB,eAAe,CAACwB,OAAO,EACvBxB,eAAe,CAACyB,WAAW,CAC5B,CAACC,GAAG,CAACC,MAAM,iBACVlB,IAAA;EAAqBmB,KAAK,EAAED,MAAO;EAAAE,QAAA,EAChChC,0BAA0B,CAAC8B,MAAM;AAAC,GADxBA,MAEL,CACT,CAAC;AAEF,IAAMG,gBAAgB,GAAG,CACvBnC,eAAe,CAACoC,UAAU,EAC1BpC,eAAe,CAACqC,cAAc,EAC9BrC,eAAe,CAACsC,QAAQ,EACxBtC,eAAe,CAACuC,gBAAgB,EAChCvC,eAAe,CAACwC,WAAW,EAC3BxC,eAAe,CAACyC,SAAS,EACzBzC,eAAe,CAAC6B,OAAO,EACvB7B,eAAe,CAAC8B,WAAW,CAC5B,CAACC,GAAG,CAACC,MAAM,iBACVlB,IAAA;EAAqBmB,KAAK,EAAED,MAAO;EAAAE,QAAA,EAChC9B,0BAA0B,CAAC4B,MAAM;AAAC,GADxBA,MAEL,CACT,CAAC;AAEF,IAAMU,cAAc,GAAG,CACrBzC,aAAa,CAACmC,UAAU,EACxBnC,aAAa,CAACoC,cAAc,EAC5BpC,aAAa,CAAC0C,SAAS,EACvB1C,aAAa,CAAC2C,kBAAkB,EAChC3C,aAAa,CAAC4C,QAAQ,EACtB5C,aAAa,CAAC6C,iBAAiB,EAC/B7C,aAAa,CAAC4B,OAAO,EACrB5B,aAAa,CAAC6B,WAAW,CAC1B,CAACC,GAAG,CAACC,MAAM,iBACVlB,IAAA;EAAqBmB,KAAK,EAAED,MAAO;EAAAE,QAAA,EAChC/B,wBAAwB,CAAC6B,MAAM;AAAC,GADtBA,MAEL,CACT,CAAC;AAEF,IAAMe,iBAAiB,GAAG,CACxBvC,gBAAgB,CAACwC,OAAO,EACxBxC,gBAAgB,CAACyC,QAAQ,EACzBzC,gBAAgB,CAACqB,OAAO,EACxBrB,gBAAgB,CAACsB,WAAW,CAC7B,CAACC,GAAG,CAACC,MAAM,iBACVlB,IAAA;EAAqBmB,KAAK,EAAED,MAAO;EAAAE,QAAA,EAChC3B,2BAA2B,CAACyB,MAAM;AAAC,GADzBA,MAEL,CACT,CAAC;AAEF,IAAMkB,cAAc,GAAG,CACrBzC,aAAa,CAACa,QAAQ,EACtBb,aAAa,CAACc,YAAY,EAC1Bd,aAAa,CAACoB,OAAO,EACrBpB,aAAa,CAACqB,WAAW,CAC1B,CAACC,GAAG,CAACC,MAAM,iBACVlB,IAAA;EAAqBmB,KAAK,EAAED,MAAO;EAAAE,QAAA,EAChCxB,wBAAwB,CAACsB,MAAM;AAAC,GADtBA,MAEL,CACT,CAAC;AAEF,SAASmB,sBAAsBA,CAC7BC,SAA0B,EAC1BnB,KAAc,EACdoB,UAAmB,EACnBC,QAAiB,EACR;EACT,IACEF,SAAS,KAAK/C,eAAe,CAACwB,OAAO,IACrCuB,SAAS,KAAK/C,eAAe,CAACyB,WAAW,EACzC;IACA,OAAO,IAAI;EACb;EACA,IACEsB,SAAS,KAAK/C,eAAe,CAACmB,UAAU,IACxC6B,UAAU,IAAI,IAAI,IAClBA,UAAU,KAAK,EAAE,IACjB,CAACE,MAAM,CAACC,KAAK,CAACD,MAAM,CAACE,UAAU,CAACJ,UAAU,CAAC,CAAC,IAC5CC,QAAQ,IAAI,IAAI,IAChBA,QAAQ,KAAK,EAAE,IACf,CAACC,MAAM,CAACC,KAAK,CAACD,MAAM,CAACE,UAAU,CAACH,QAAQ,CAAC,CAAC,EAC1C;IACA,OAAO,IAAI;EACb;EACA,IACEF,SAAS,KAAK/C,eAAe,CAACmB,UAAU,IACxCS,KAAK,KAAKb,SAAS,IACnBa,KAAK,KAAK,EAAE,IACZ,CAACsB,MAAM,CAACC,KAAK,CAACD,MAAM,CAACE,UAAU,CAACxB,KAAK,CAAC,CAAC,EACvC;IACA,OAAO,IAAI;EACb;EACA,OAAO,KAAK;AACd;AAEA,SAASyB,eAAeA,CACtBC,iBAAkC,EAClCC,iBAAmE,EACnEC,sBAAwE,EACxEC,oBAAsE,EACtEC,cAAuB,EACvBV,UAAmB,EACnBC,QAAiB,EACG;EACpB,QAAQK,iBAAiB;IACvB,KAAKtD,eAAe,CAACiB,QAAQ;IAC7B,KAAKjB,eAAe,CAACkB,YAAY;IACjC,KAAKlB,eAAe,CAACoB,YAAY;IACjC,KAAKpB,eAAe,CAACqB,qBAAqB;IAC1C,KAAKrB,eAAe,CAACsB,SAAS;IAC9B,KAAKtB,eAAe,CAACuB,kBAAkB;MACrC,oBACEd,IAAA;QACEkD,IAAI,EAAC,QAAQ;QACbC,SAAS,EAAC,cAAc;QACxBC,WAAW,EAAC,aAAa;QACzBjC,KAAK,EAAE8B,cAAc,aAAdA,cAAc,cAAdA,cAAc,GAAI,EAAG;QAC5BI,QAAQ,EAAEP;MAAkB,CAC7B,CAAC;IAEN,KAAKvD,eAAe,CAACmB,UAAU;MAC7B,oBACER,KAAA;QAAKiD,SAAS,EAAC,iBAAiB;QAAA/B,QAAA,gBAC9BpB,IAAA;UACEkD,IAAI,EAAC,QAAQ;UACbC,SAAS,EAAC,0BAA0B;UACpCC,WAAW,EAAC,aAAa;UACzBjC,KAAK,EAAEoB,UAAU,aAAVA,UAAU,cAAVA,UAAU,GAAI,EAAG;UACxBc,QAAQ,EAAEN;QAAuB,CAClC,CAAC,eACF/C,IAAA;UACEkD,IAAI,EAAC,QAAQ;UACbC,SAAS,EAAC,qBAAqB;UAC/BC,WAAW,EAAC,WAAW;UACvBjC,KAAK,EAAEqB,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAI,EAAG;UACtBa,QAAQ,EAAEL;QAAqB,CAChC,CAAC;MAAA,CACC,CAAC;IAEV,KAAKzD,eAAe,CAACwB,OAAO;IAC5B,KAAKxB,eAAe,CAACyB,WAAW;MAC9B,OAAO,IAAI;EACf;AACF;AAEA,SAASsC,eAAeA,CACtBT,iBAAkC,EAClCC,iBAAmE,EACnEG,cAAuB,EACH;EACpB,QAAQJ,iBAAiB;IACvB,KAAK3D,eAAe,CAAC6B,OAAO;IAC5B,KAAK7B,eAAe,CAAC8B,WAAW;MAC9B,OAAO,IAAI;IACb;MACE,oBACEhB,IAAA;QACEkD,IAAI,EAAC,MAAM;QACXC,SAAS,EAAC,cAAc;QACxBC,WAAW,EAAC,aAAa;QACzBjC,KAAK,EAAE8B,cAAc,aAAdA,cAAc,cAAdA,cAAc,GAAI,EAAG;QAC5BI,QAAQ,EAAEP;MAAkB,CAC7B,CAAC;EAER;AACF;AAEA,SAASS,aAAaA,CACpBV,iBAAgC,EAChCC,iBAAmE,EACnEG,cAAuB,EACH;EACpB,QAAQJ,iBAAiB;IACvB,KAAK1D,aAAa,CAAC4B,OAAO;IAC1B,KAAK5B,aAAa,CAAC6B,WAAW;MAC5B,OAAO,IAAI;IACb;MACE,oBACEhB,IAAA;QACEkD,IAAI,EAAC,MAAM;QACXC,SAAS,EAAC,cAAc;QACxBC,WAAW,EAAC,aAAa;QACzBjC,KAAK,EAAE8B,cAAc,aAAdA,cAAc,cAAdA,cAAc,GAAI,EAAG;QAC5BI,QAAQ,EAAEP;MAAkB,CAC7B,CAAC;EAER;AACF;AAEA,SAASU,gBAAgBA,CAAA,EAAS;EAChC,OAAO,IAAI;AACb;AAEA,SAASC,aAAaA,CACpBZ,iBAAgC,EAChCC,iBAAmE,EACnEG,cAAuB,EACH;EACpB,QAAQJ,iBAAiB;IACvB,KAAKlD,aAAa,CAACoB,OAAO;IAC1B,KAAKpB,aAAa,CAACqB,WAAW;MAC5B,OAAO,IAAI;IACb;MACE,oBACEhB,IAAA;QACEkD,IAAI,EAAC,MAAM;QACXC,SAAS,EAAC,cAAc;QACxBO,SAAS,EAAE,CAAE;QACbN,WAAW,EAAC,aAAa;QACzBjC,KAAK,EAAE8B,cAAc,aAAdA,cAAc,cAAdA,cAAc,GAAI,EAAG;QAC5BI,QAAQ,EAAEP;MAAkB,CAC7B,CAAC;EAER;AACF;AAEA,SAASa,eAAeA,CAACC,KAA2B,EAAe;EACjE,IAAM;IAAEC,MAAM;IAAEC,MAAM;IAAEC,EAAE;IAAEV,QAAQ,GAAGhD;EAAiB,CAAC,GAAGuD,KAAK;EACjE,IAAMI,kBAAkB,GAAGH,MAAM,CAACX,IAAI;EACtC,IAAM,CAACe,cAAc,EAAEC,iBAAiB,CAAC,GAAGpF,QAAQ,CAACkF,kBAAkB,CAAC;EACxE,IAAM,CAACnB,iBAAiB,EAAEsB,YAAY,CAAC,GAAGrF,QAAQ,CAACgF,MAAM,CAACxB,SAAS,CAAC;EACpE,IAAM,CAACW,cAAc,EAAEmB,QAAQ,CAAC,GAAGtF,QAAQ,CAACgF,MAAM,CAAC3C,KAAK,CAAC;EACzD,IAAM,CAACoB,UAAU,EAAE8B,aAAa,CAAC,GAAGvF,QAAQ,CAACgF,MAAM,CAACQ,KAAK,CAAC;EAC1D,IAAM,CAAC9B,QAAQ,EAAE+B,WAAW,CAAC,GAAGzF,QAAQ,CAACgF,MAAM,CAACU,GAAG,CAAC;EAEpD,IAAIR,kBAAkB,KAAKC,cAAc,EAAE;IACzC;IACAE,YAAY,CAAC3E,0BAA0B,CAACwE,kBAAkB,CAAC,CAAC;IAC5DI,QAAQ,CAACtE,sBAAsB,CAACkE,kBAAkB,CAAC,CAAC;IACpDK,aAAa,CAAC/D,SAAS,CAAC;IACxBiE,WAAW,CAACjE,SAAS,CAAC;IACtB4D,iBAAiB,CAACF,kBAAkB,CAAC;EACvC;EAEA,IAAMS,UAAU,GAAG5F,OAAO,CAAC,MAAM;IAC/B,IAAImF,kBAAkB,KAAK1D,SAAS,EAAE;MACpC,OAAO,EAAE;IACX;IACA,IAAIvB,UAAU,CAAC2F,YAAY,CAACV,kBAAkB,CAAC,EAAE;MAC/C,OAAOzD,sBAAsB;IAC/B;IACA,IAAIxB,UAAU,CAAC4F,UAAU,CAACX,kBAAkB,CAAC,EAAE;MAC7C,OAAO5B,cAAc;IACvB;IACA,IAAIrD,UAAU,CAAC6F,YAAY,CAACZ,kBAAkB,CAAC,EAAE;MAC/C,OAAO3C,gBAAgB;IACzB;IACA,IAAItC,UAAU,CAAC8F,UAAU,CAACb,kBAAkB,CAAC,EAAE;MAC7C,OAAOpC,cAAc;IACvB;IACA,IAAI7C,UAAU,CAAC+F,aAAa,CAACd,kBAAkB,CAAC,EAAE;MAChD,OAAO/B,iBAAiB;IAC1B;EACF,CAAC,EAAE,CAAC+B,kBAAkB,CAAC,CAAC;EAExB,IAAMe,qBAAqB,GAAGpG,WAAW,CAAEwC,KAAa,IAAK;IAC3DhB,GAAG,CAAC6E,KAAK,CAAC,uBAAuB,EAAE7D,KAAK,CAAC;IACzCgD,YAAY,CAAChD,KAAkB,CAAC;EAClC,CAAC,EAAE,EAAE,CAAC;EAEN,IAAM2B,iBAAiB,GAAGnE,WAAW,CAClCsG,CAAsC,IAAK;IAC1C,IAAM;MAAE9D;IAAM,CAAC,GAAG8D,CAAC,CAACC,MAAM;IAC1B/E,GAAG,CAAC6E,KAAK,CAAC,mBAAmB,EAAE7D,KAAK,CAAC;IACrCiD,QAAQ,CAACjD,KAAK,CAAC;EACjB,CAAC,EACD,EACF,CAAC;EAED,IAAM4B,sBAAsB,GAAGpE,WAAW,CACvCsG,CAAsC,IAAK;IAC1C,IAAM;MAAE9D;IAAM,CAAC,GAAG8D,CAAC,CAACC,MAAM;IAC1B/E,GAAG,CAAC6E,KAAK,CAAC,wBAAwB,EAAE7D,KAAK,CAAC;IAC1CkD,aAAa,CAAClD,KAAK,CAAC;EACtB,CAAC,EACD,EACF,CAAC;EAED,IAAM6B,oBAAoB,GAAGrE,WAAW,CACrCsG,CAAsC,IAAK;IAC1C,IAAM;MAAE9D;IAAM,CAAC,GAAG8D,CAAC,CAACC,MAAM;IAC1B/E,GAAG,CAAC6E,KAAK,CAAC,sBAAsB,EAAE7D,KAAK,CAAC;IACxCoD,WAAW,CAACpD,KAAK,CAAC;EACpB,CAAC,EACD,EACF,CAAC;EAEDvC,SAAS,CACP,SAASuG,eAAeA,CAAA,EAAG;IACzB,IAAIC,OAAO,GAAG,IAAI;IAElB,IAAIvC,iBAAiB,KAAKvC,SAAS,EAAE;MACnCH,GAAG,CAAC6E,KAAK,CACP,8DACF,CAAC;MACDI,OAAO,GAAG,KAAK;IACjB,CAAC,MAAM,IACLrG,UAAU,CAAC2F,YAAY,CAACb,MAAM,CAACX,IAAI,CAAC,IACpC,CAACb,sBAAsB,CACrBQ,iBAAiB,EACjBI,cAAc,EACdV,UAAU,EACVC,QACF,CAAC,EACD;MACArC,GAAG,CAAC6E,KAAK,CACP,iDAAiD,EACjD/B,cACF,CAAC;MACDmC,OAAO,GAAG,KAAK;IACjB,CAAC,MAAM,IACLrG,UAAU,CAAC8F,UAAU,CAAChB,MAAM,CAACX,IAAI,CAAC,IAClC,CAACrD,oBAAoB,CACnBkE,EAAE,EACFlB,iBAAiB,EACjBI,cACF,CAAC,EACD;MACA9C,GAAG,CAAC6E,KAAK,CACP,0DAA0D,EAC1D/B,cACF,CAAC;MACDmC,OAAO,GAAG,KAAK;IACjB;IAEA/B,QAAQ,CACN;MACEf,SAAS,EAAEO,iBAAiB;MAC5B1B,KAAK,EAAE8B,cAAc;MACrBqB,KAAK,EAAE/B,UAAU;MACjBiC,GAAG,EAAEhC;IACP,CAAC,EACD4C,OACF,CAAC;EACH,CAAC,EACD,CACE/B,QAAQ,EACRQ,MAAM,CAACX,IAAI,EACXa,EAAE,EACFlB,iBAAiB,EACjBI,cAAc,EACdV,UAAU,EACVC,QAAQ,CAEZ,CAAC;EAED,IAAM6C,eAAe,GAAGxG,OAAO,CAAC,MAAM;IACpC,IAAImF,kBAAkB,KAAK1D,SAAS,EAAE;MACpC;MACA,OAAO,IAAI;IACb;IACA,IAAIvB,UAAU,CAAC2F,YAAY,CAACV,kBAAkB,CAAC,EAAE;MAC/C,OAAOpB,eAAe,CACpBC,iBAAiB,EACjBC,iBAAiB,EACjBC,sBAAsB,EACtBC,oBAAoB,EACpBC,cAAc,EACdV,UAAU,EACVC,QACF,CAAC;IACH;IACA,IAAIzD,UAAU,CAAC4F,UAAU,CAACX,kBAAkB,CAAC,EAAE;MAC7C,OAAOP,aAAa,CAClBZ,iBAAiB,EACjBC,iBAAiB,EACjBG,cACF,CAAC;IACH;IACA,IAAIlE,UAAU,CAAC6F,YAAY,CAACZ,kBAAkB,CAAC,EAAE;MAC/C,OAAOV,eAAe,CACpBT,iBAAiB,EACjBC,iBAAiB,EACjBG,cACF,CAAC;IACH;IACA,IAAIlE,UAAU,CAAC8F,UAAU,CAACb,kBAAkB,CAAC,EAAE;MAC7C,OAAOT,aAAa,CAClBV,iBAAiB,EACjBC,iBAAiB,EACjBG,cACF,CAAC;IACH;IACA,IAAIlE,UAAU,CAAC+F,aAAa,CAACd,kBAAkB,CAAC,EAAE;MAChD,OAAOR,gBAAgB,CAAC,CAAC;IAC3B;EACF,CAAC,EAAE,CACDQ,kBAAkB,EAClBnB,iBAAiB,EACjBI,cAAc,EACdV,UAAU,EACVC,QAAQ,EACRM,iBAAiB,EACjBC,sBAAsB,EACtBC,oBAAoB,CACrB,CAAC;EAEF,oBACE9C,KAAA;IAAKiD,SAAS,EAAC,uBAAuB;IAAA/B,QAAA,gBACpCpB,IAAA,CAACf,MAAM;MACLkC,KAAK,EAAE0B,iBAAkB;MACzB,eAAY,kBAAkB;MAC9BM,SAAS,EAAC,oBAAoB;MAC9BE,QAAQ,EAAE0B,qBAAsB;MAAA3D,QAAA,EAE/BqD;IAAU,CACL,CAAC,EACRY,eAAe;EAAA,CACb,CAAC;AAEV;AAEA,eAAe1B,eAAe","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ConditionEditor.js","names":["React","useCallback","useEffect","useMemo","useState","classNames","TableUtils","Log","Select","StringCondition","DateCondition","getLabelForNumberCondition","getLabelForDateCondition","getLabelForStringCondition","NumberCondition","getDefaultConditionForType","getLabelForBooleanCondition","BooleanCondition","CharCondition","getLabelForCharCondition","isDateConditionValid","getDefaultValueForType","jsx","_jsx","jsxs","_jsxs","log","module","DEFAULT_CALLBACK","undefined","numberConditionOptions","IS_EQUAL","IS_NOT_EQUAL","IS_BETWEEN","GREATER_THAN","GREATER_THAN_OR_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","IS_NULL","IS_NOT_NULL","map","option","value","children","stringConditions","IS_EXACTLY","IS_NOT_EXACTLY","CONTAINS","DOES_NOT_CONTAIN","STARTS_WITH","ENDS_WITH","dateConditions","IS_BEFORE","IS_BEFORE_OR_EQUAL","IS_AFTER","IS_AFTER_OR_EQUAL","booleanConditions","IS_TRUE","IS_FALSE","charConditions","isNumberConditionValid","condition","startValue","endValue","Number","isNaN","parseFloat","getNumberInputs","selectedCondition","handleValueChange","handleStartValueChange","handleEndValueChange","isInvalid","conditionValue","type","className","placeholder","onChange","getStringInputs","getDateInputs","getBooleanInputs","getCharInputs","maxLength","ConditionEditor","props","column","config","dh","selectedColumnType","prevColumnType","setPrevColumnType","setCondition","setValue","setStartValue","start","setEndValue","end","isValid","setIsValid","conditions","isNumberType","isCharType","isStringType","isDateType","isBooleanType","handleConditionChange","debug","e","target","changeCondition","isConditionValid","conditionInputs","hasInvalidValue","showInvalid"],"sources":["../../../src/sidebar/conditional-formatting/ConditionEditor.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport classNames from 'classnames';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { Select } from '@deephaven/components';\nimport {\n StringCondition,\n DateCondition,\n getLabelForNumberCondition,\n getLabelForDateCondition,\n getLabelForStringCondition,\n NumberCondition,\n type ModelColumn,\n type ConditionConfig,\n getDefaultConditionForType,\n getLabelForBooleanCondition,\n BooleanCondition,\n CharCondition,\n type Condition,\n getLabelForCharCondition,\n isDateConditionValid,\n getDefaultValueForType,\n} from './ConditionalFormattingUtils';\n\nconst log = Log.module('ConditionEditor');\n\nexport interface ConditionEditorProps {\n dh: typeof DhType;\n column: ModelColumn;\n config: ConditionConfig;\n onChange?: (config: ConditionConfig, isValid: boolean) => void;\n}\n\nconst DEFAULT_CALLBACK = (): void => undefined;\n\nconst numberConditionOptions = [\n NumberCondition.IS_EQUAL,\n NumberCondition.IS_NOT_EQUAL,\n NumberCondition.IS_BETWEEN,\n NumberCondition.GREATER_THAN,\n NumberCondition.GREATER_THAN_OR_EQUAL,\n NumberCondition.LESS_THAN,\n NumberCondition.LESS_THAN_OR_EQUAL,\n NumberCondition.IS_NULL,\n NumberCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForNumberCondition(option)}\n </option>\n));\n\nconst stringConditions = [\n StringCondition.IS_EXACTLY,\n StringCondition.IS_NOT_EXACTLY,\n StringCondition.CONTAINS,\n StringCondition.DOES_NOT_CONTAIN,\n StringCondition.STARTS_WITH,\n StringCondition.ENDS_WITH,\n StringCondition.IS_NULL,\n StringCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForStringCondition(option)}\n </option>\n));\n\nconst dateConditions = [\n DateCondition.IS_EXACTLY,\n DateCondition.IS_NOT_EXACTLY,\n DateCondition.IS_BEFORE,\n DateCondition.IS_BEFORE_OR_EQUAL,\n DateCondition.IS_AFTER,\n DateCondition.IS_AFTER_OR_EQUAL,\n DateCondition.IS_NULL,\n DateCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForDateCondition(option)}\n </option>\n));\n\nconst booleanConditions = [\n BooleanCondition.IS_TRUE,\n BooleanCondition.IS_FALSE,\n BooleanCondition.IS_NULL,\n BooleanCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForBooleanCondition(option)}\n </option>\n));\n\nconst charConditions = [\n CharCondition.IS_EQUAL,\n CharCondition.IS_NOT_EQUAL,\n CharCondition.IS_NULL,\n CharCondition.IS_NOT_NULL,\n].map(option => (\n <option key={option} value={option}>\n {getLabelForCharCondition(option)}\n </option>\n));\n\nfunction isNumberConditionValid(\n condition: NumberCondition,\n value?: string,\n startValue?: string,\n endValue?: string\n): boolean {\n if (\n condition === NumberCondition.IS_NULL ||\n condition === NumberCondition.IS_NOT_NULL\n ) {\n return true;\n }\n if (\n condition === NumberCondition.IS_BETWEEN &&\n startValue != null &&\n startValue !== '' &&\n !Number.isNaN(Number.parseFloat(startValue)) &&\n endValue != null &&\n endValue !== '' &&\n !Number.isNaN(Number.parseFloat(endValue))\n ) {\n return true;\n }\n if (\n condition !== NumberCondition.IS_BETWEEN &&\n value !== undefined &&\n value !== '' &&\n !Number.isNaN(Number.parseFloat(value))\n ) {\n return true;\n }\n return false;\n}\n\nfunction getNumberInputs(\n selectedCondition: NumberCondition,\n handleValueChange: (e: React.ChangeEvent<HTMLInputElement>) => void,\n handleStartValueChange: (e: React.ChangeEvent<HTMLInputElement>) => void,\n handleEndValueChange: (e: React.ChangeEvent<HTMLInputElement>) => void,\n isInvalid: boolean,\n conditionValue?: string,\n startValue?: string,\n endValue?: string\n): JSX.Element | null {\n switch (selectedCondition) {\n case NumberCondition.IS_EQUAL:\n case NumberCondition.IS_NOT_EQUAL:\n case NumberCondition.GREATER_THAN:\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n case NumberCondition.LESS_THAN:\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return (\n <input\n type=\"number\"\n className={classNames('form-control', { 'is-invalid': isInvalid })}\n placeholder=\"Enter value\"\n value={conditionValue ?? ''}\n onChange={handleValueChange}\n />\n );\n case NumberCondition.IS_BETWEEN:\n return (\n <div className=\"d-flex flex-row\">\n <input\n type=\"number\"\n className={classNames('form-control', 'd-flex', 'mr-2', {\n 'is-invalid': isInvalid,\n })}\n placeholder=\"Start value\"\n value={startValue ?? ''}\n onChange={handleStartValueChange}\n />\n <input\n type=\"number\"\n className={classNames('form-control', 'd-flex', {\n 'is-invalid': isInvalid,\n })}\n placeholder=\"End value\"\n value={endValue ?? ''}\n onChange={handleEndValueChange}\n />\n </div>\n );\n case NumberCondition.IS_NULL:\n case NumberCondition.IS_NOT_NULL:\n return null;\n }\n}\n\nfunction getStringInputs(\n selectedCondition: StringCondition,\n handleValueChange: (e: React.ChangeEvent<HTMLInputElement>) => void,\n isInvalid: boolean,\n conditionValue?: string\n): JSX.Element | null {\n switch (selectedCondition) {\n case StringCondition.IS_NULL:\n case StringCondition.IS_NOT_NULL:\n return null;\n default:\n return (\n <input\n type=\"text\"\n className={classNames('form-control', { 'is-invalid': isInvalid })}\n placeholder=\"Enter value\"\n value={conditionValue ?? ''}\n onChange={handleValueChange}\n />\n );\n }\n}\n\nfunction getDateInputs(\n selectedCondition: DateCondition,\n handleValueChange: (e: React.ChangeEvent<HTMLInputElement>) => void,\n isInvalid: boolean,\n conditionValue?: string\n): JSX.Element | null {\n switch (selectedCondition) {\n case DateCondition.IS_NULL:\n case DateCondition.IS_NOT_NULL:\n return null;\n default:\n return (\n <input\n type=\"text\"\n className={classNames('form-control', { 'is-invalid': isInvalid })}\n placeholder=\"Enter value\"\n value={conditionValue ?? ''}\n onChange={handleValueChange}\n />\n );\n }\n}\n\nfunction getBooleanInputs(): null {\n return null;\n}\n\nfunction getCharInputs(\n selectedCondition: CharCondition,\n handleValueChange: (e: React.ChangeEvent<HTMLInputElement>) => void,\n isInvalid: boolean,\n conditionValue?: string\n): JSX.Element | null {\n switch (selectedCondition) {\n case CharCondition.IS_NULL:\n case CharCondition.IS_NOT_NULL:\n return null;\n default:\n return (\n <input\n type=\"text\"\n className={classNames('form-control', { 'is-invalid': isInvalid })}\n maxLength={1}\n placeholder=\"Enter value\"\n value={conditionValue ?? ''}\n onChange={handleValueChange}\n />\n );\n }\n}\n\nfunction ConditionEditor(props: ConditionEditorProps): JSX.Element {\n const { column, config, dh, onChange = DEFAULT_CALLBACK } = props;\n const selectedColumnType = column.type;\n const [prevColumnType, setPrevColumnType] = useState(selectedColumnType);\n const [selectedCondition, setCondition] = useState(config.condition);\n const [conditionValue, setValue] = useState(config.value);\n const [startValue, setStartValue] = useState(config.start);\n const [endValue, setEndValue] = useState(config.end);\n const [isValid, setIsValid] = useState(true);\n\n if (selectedColumnType !== prevColumnType) {\n // Column type changed, reset condition and value fields\n setCondition(getDefaultConditionForType(selectedColumnType));\n setValue(getDefaultValueForType(selectedColumnType));\n setStartValue(undefined);\n setEndValue(undefined);\n setPrevColumnType(selectedColumnType);\n }\n\n const conditions = useMemo(() => {\n if (selectedColumnType === undefined) {\n return [];\n }\n if (TableUtils.isNumberType(selectedColumnType)) {\n return numberConditionOptions;\n }\n if (TableUtils.isCharType(selectedColumnType)) {\n return charConditions;\n }\n if (TableUtils.isStringType(selectedColumnType)) {\n return stringConditions;\n }\n if (TableUtils.isDateType(selectedColumnType)) {\n return dateConditions;\n }\n if (TableUtils.isBooleanType(selectedColumnType)) {\n return booleanConditions;\n }\n }, [selectedColumnType]);\n\n const handleConditionChange = useCallback((value: string) => {\n log.debug('handleConditionChange', value);\n setCondition(value as Condition);\n }, []);\n\n const handleValueChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const { value } = e.target;\n log.debug('handleValueChange', value);\n setValue(value);\n },\n []\n );\n\n const handleStartValueChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const { value } = e.target;\n log.debug('handleStartValueChange', value);\n setStartValue(value);\n },\n []\n );\n\n const handleEndValueChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const { value } = e.target;\n log.debug('handleEndValueChange', value);\n setEndValue(value);\n },\n []\n );\n\n useEffect(\n function changeCondition() {\n let isConditionValid = true;\n\n if (selectedCondition === undefined) {\n log.debug(\n 'Unable to create formatting rule. Condition is not selected.'\n );\n isConditionValid = false;\n } else if (\n TableUtils.isNumberType(column.type) &&\n !isNumberConditionValid(\n selectedCondition as NumberCondition,\n conditionValue,\n startValue,\n endValue\n )\n ) {\n log.debug(\n 'Unable to create formatting rule. Invalid value',\n conditionValue\n );\n isConditionValid = false;\n } else if (\n TableUtils.isDateType(column.type) &&\n !isDateConditionValid(\n dh,\n selectedCondition as DateCondition,\n conditionValue\n )\n ) {\n log.debug(\n 'Unable to create formatting rule. Invalid date condition',\n conditionValue\n );\n isConditionValid = false;\n }\n\n setIsValid(isConditionValid);\n onChange(\n {\n condition: selectedCondition,\n value: conditionValue,\n start: startValue,\n end: endValue,\n },\n isConditionValid\n );\n },\n [\n onChange,\n column.type,\n dh,\n selectedCondition,\n conditionValue,\n startValue,\n endValue,\n ]\n );\n\n const conditionInputs = useMemo(() => {\n if (selectedColumnType === undefined) {\n // Column not selected\n return null;\n }\n\n // Show invalid state only when there's a non-empty value that fails validation\n const hasInvalidValue =\n !isValid && conditionValue !== undefined && conditionValue !== '';\n\n if (TableUtils.isNumberType(selectedColumnType)) {\n // For IS_BETWEEN, show invalid on each field only if that field has a value\n const showInvalid =\n selectedCondition === NumberCondition.IS_BETWEEN\n ? !isValid &&\n ((startValue !== undefined && startValue !== '') ||\n (endValue !== undefined && endValue !== ''))\n : hasInvalidValue;\n\n return getNumberInputs(\n selectedCondition as NumberCondition,\n handleValueChange,\n handleStartValueChange,\n handleEndValueChange,\n showInvalid,\n conditionValue,\n startValue,\n endValue\n );\n }\n if (TableUtils.isCharType(selectedColumnType)) {\n return getCharInputs(\n selectedCondition as CharCondition,\n handleValueChange,\n hasInvalidValue,\n conditionValue\n );\n }\n if (TableUtils.isStringType(selectedColumnType)) {\n return getStringInputs(\n selectedCondition as StringCondition,\n handleValueChange,\n hasInvalidValue,\n conditionValue\n );\n }\n if (TableUtils.isDateType(selectedColumnType)) {\n return getDateInputs(\n selectedCondition as DateCondition,\n handleValueChange,\n hasInvalidValue,\n conditionValue\n );\n }\n if (TableUtils.isBooleanType(selectedColumnType)) {\n return getBooleanInputs();\n }\n }, [\n selectedColumnType,\n selectedCondition,\n conditionValue,\n startValue,\n endValue,\n isValid,\n handleValueChange,\n handleStartValueChange,\n handleEndValueChange,\n ]);\n\n return (\n <div className=\"condition-editor mb-2\">\n <Select\n value={selectedCondition}\n data-testid=\"condition-select\"\n className=\"custom-select mb-2\"\n onChange={handleConditionChange}\n >\n {conditions}\n </Select>\n {conditionInputs}\n </div>\n );\n}\n\nexport default ConditionEditor;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { dh as DhType } from '@deephaven/jsapi-types';
|
|
2
2
|
import { type BaseFormatConfig } from './ConditionalFormattingUtils';
|
|
3
|
-
export declare function makeTernaryFormatRule(config: BaseFormatConfig, prevRule: string): string | undefined;
|
|
3
|
+
export declare function makeTernaryFormatRule(dh: typeof DhType, config: BaseFormatConfig, prevRule: string): string | undefined;
|
|
4
4
|
export declare function makeRowFormatColumn(dh: typeof DhType, rule: string): DhType.CustomColumn;
|
|
5
5
|
export declare function makeColumnFormatColumn(col: DhType.Column, rule: string): DhType.CustomColumn;
|
|
6
6
|
//# sourceMappingURL=ConditionalFormattingAPIUtils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionalFormattingAPIUtils.d.ts","sourceRoot":"","sources":["../../../src/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,8BAA8B,CAAC;AAMtC,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,MAAM,GACf,MAAM,GAAG,SAAS,CAOpB;AAED,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,OAAO,MAAM,EACjB,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,YAAY,CAErB;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAClB,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,YAAY,CAErB"}
|
|
1
|
+
{"version":3,"file":"ConditionalFormattingAPIUtils.d.ts","sourceRoot":"","sources":["../../../src/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,8BAA8B,CAAC;AAMtC,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,OAAO,MAAM,EACjB,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,MAAM,GACf,MAAM,GAAG,SAAS,CAOpB;AAED,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,OAAO,MAAM,EACjB,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,YAAY,CAErB;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAClB,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,YAAY,CAErB"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { getConditionDBString, getStyleDBString } from "./ConditionalFormattingUtils.js"; // Conditional formatting API utils in a separate file
|
|
2
2
|
// to make ConditionalFormattingUtils.ts easier to test.
|
|
3
3
|
// https://github.com/facebook/jest/issues/936#issuecomment-545080082
|
|
4
|
-
export function makeTernaryFormatRule(config, prevRule) {
|
|
4
|
+
export function makeTernaryFormatRule(dh, config, prevRule) {
|
|
5
5
|
var styleDBString = getStyleDBString(config);
|
|
6
6
|
if (styleDBString === undefined) {
|
|
7
7
|
return undefined;
|
|
8
8
|
}
|
|
9
|
-
var conditionDBString = getConditionDBString(config);
|
|
9
|
+
var conditionDBString = getConditionDBString(dh, config);
|
|
10
10
|
return "".concat(conditionDBString, " ? ").concat(styleDBString, " : ").concat(prevRule);
|
|
11
11
|
}
|
|
12
12
|
export function makeRowFormatColumn(dh, rule) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionalFormattingAPIUtils.js","names":["getConditionDBString","getStyleDBString","makeTernaryFormatRule","config","prevRule","styleDBString","undefined","conditionDBString","concat","makeRowFormatColumn","
|
|
1
|
+
{"version":3,"file":"ConditionalFormattingAPIUtils.js","names":["getConditionDBString","getStyleDBString","makeTernaryFormatRule","dh","config","prevRule","styleDBString","undefined","conditionDBString","concat","makeRowFormatColumn","rule","Column","formatRowColor","makeColumnFormatColumn","col","formatColor"],"sources":["../../../src/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.ts"],"sourcesContent":["import type { dh as DhType } from '@deephaven/jsapi-types';\nimport {\n type BaseFormatConfig,\n getConditionDBString,\n getStyleDBString,\n} from './ConditionalFormattingUtils';\n\n// Conditional formatting API utils in a separate file\n// to make ConditionalFormattingUtils.ts easier to test.\n// https://github.com/facebook/jest/issues/936#issuecomment-545080082\n\nexport function makeTernaryFormatRule(\n dh: typeof DhType,\n config: BaseFormatConfig,\n prevRule: string\n): string | undefined {\n const styleDBString = getStyleDBString(config);\n if (styleDBString === undefined) {\n return undefined;\n }\n const conditionDBString = getConditionDBString(dh, config);\n return `${conditionDBString} ? ${styleDBString} : ${prevRule}`;\n}\n\nexport function makeRowFormatColumn(\n dh: typeof DhType,\n rule: string\n): DhType.CustomColumn {\n return dh.Column.formatRowColor(rule);\n}\n\nexport function makeColumnFormatColumn(\n col: DhType.Column,\n rule: string\n): DhType.CustomColumn {\n return col.formatColor(rule);\n}\n"],"mappings":"SAGEA,oBAAoB,EACpBC,gBAAgB,2CAGlB;AACA;AACA;AAEA,OAAO,SAASC,qBAAqBA,CACnCC,EAAiB,EACjBC,MAAwB,EACxBC,QAAgB,EACI;EACpB,IAAMC,aAAa,GAAGL,gBAAgB,CAACG,MAAM,CAAC;EAC9C,IAAIE,aAAa,KAAKC,SAAS,EAAE;IAC/B,OAAOA,SAAS;EAClB;EACA,IAAMC,iBAAiB,GAAGR,oBAAoB,CAACG,EAAE,EAAEC,MAAM,CAAC;EAC1D,UAAAK,MAAA,CAAUD,iBAAiB,SAAAC,MAAA,CAAMH,aAAa,SAAAG,MAAA,CAAMJ,QAAQ;AAC9D;AAEA,OAAO,SAASK,mBAAmBA,CACjCP,EAAiB,EACjBQ,IAAY,EACS;EACrB,OAAOR,EAAE,CAACS,MAAM,CAACC,cAAc,CAACF,IAAI,CAAC;AACvC;AAEA,OAAO,SAASG,sBAAsBA,CACpCC,GAAkB,EAClBJ,IAAY,EACS;EACrB,OAAOI,GAAG,CAACC,WAAW,CAACL,IAAI,CAAC;AAC9B","ignoreList":[]}
|
|
@@ -92,7 +92,7 @@ export declare function getLabelForStyleType(option: FormatStyleType): string;
|
|
|
92
92
|
export declare function getBackgroundForStyleConfig(config: FormatStyleConfig): string | undefined;
|
|
93
93
|
export declare function getColorForStyleConfig(config: FormatStyleConfig): string | undefined;
|
|
94
94
|
export declare function getStyleDBString(config: BaseFormatConfig): string | undefined;
|
|
95
|
-
export declare function getConditionDBString(config: BaseFormatConfig): string;
|
|
95
|
+
export declare function getConditionDBString(dh: typeof DhType, config: BaseFormatConfig): string;
|
|
96
96
|
export declare function getLabelForNumberCondition(condition: NumberCondition): string;
|
|
97
97
|
export declare function getLabelForStringCondition(condition: StringCondition): string;
|
|
98
98
|
export declare function getLabelForDateCondition(condition: DateCondition): string;
|
|
@@ -106,7 +106,7 @@ export declare function getDefaultStyleConfig(): FormatStyleConfig;
|
|
|
106
106
|
export declare function getShortLabelForNumberCondition(condition: NumberCondition): string;
|
|
107
107
|
export declare function getTextForNumberCondition(columnName: ColumnName, condition: NumberCondition, value: unknown, start: unknown, end: unknown): string;
|
|
108
108
|
export declare function getTextForStringCondition(columnName: ColumnName, condition: StringCondition, value: unknown): string;
|
|
109
|
-
export declare function getTextForDateCondition(columnName: ColumnName, condition: DateCondition, value: unknown): string;
|
|
109
|
+
export declare function getTextForDateCondition(dh: typeof DhType, columnName: ColumnName, condition: DateCondition, value: unknown): string;
|
|
110
110
|
export declare function getTextForBooleanCondition(columnName: ColumnName, condition: BooleanCondition): string;
|
|
111
111
|
export declare function getTextForCharCondition(columnName: ColumnName, condition: CharCondition, value: unknown): string;
|
|
112
112
|
export declare function getShortLabelForConditionType(columnType: string, condition: Condition): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionalFormattingUtils.d.ts","sourceRoot":"","sources":["../../../src/sidebar/conditional-formatting/ConditionalFormattingUtils.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ConditionalFormattingUtils.d.ts","sourceRoot":"","sources":["../../../src/sidebar/conditional-formatting/ConditionalFormattingUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -162,12 +162,12 @@ function getStringConditionText(config) {
|
|
|
162
162
|
} = config;
|
|
163
163
|
return getTextForStringCondition(column.name, config.condition, value);
|
|
164
164
|
}
|
|
165
|
-
function getDateConditionText(config) {
|
|
165
|
+
function getDateConditionText(dh, config) {
|
|
166
166
|
var {
|
|
167
167
|
column,
|
|
168
168
|
value
|
|
169
169
|
} = config;
|
|
170
|
-
return getTextForDateCondition(column.name, config.condition, value);
|
|
170
|
+
return getTextForDateCondition(dh, column.name, config.condition, value);
|
|
171
171
|
}
|
|
172
172
|
function getBooleanConditionText(config) {
|
|
173
173
|
var {
|
|
@@ -182,7 +182,7 @@ function getCharConditionText(config) {
|
|
|
182
182
|
} = config;
|
|
183
183
|
return getTextForCharCondition(column.name, config.condition, value);
|
|
184
184
|
}
|
|
185
|
-
export function getConditionDBString(config) {
|
|
185
|
+
export function getConditionDBString(dh, config) {
|
|
186
186
|
var {
|
|
187
187
|
column
|
|
188
188
|
} = config;
|
|
@@ -196,7 +196,7 @@ export function getConditionDBString(config) {
|
|
|
196
196
|
return getStringConditionText(config);
|
|
197
197
|
}
|
|
198
198
|
if (TableUtils.isDateType(column.type)) {
|
|
199
|
-
return getDateConditionText(config);
|
|
199
|
+
return getDateConditionText(dh, config);
|
|
200
200
|
}
|
|
201
201
|
if (TableUtils.isBooleanType(column.type)) {
|
|
202
202
|
return getBooleanConditionText(config);
|
|
@@ -471,20 +471,30 @@ export function getTextForStringCondition(columnName, condition, value) {
|
|
|
471
471
|
return "".concat(columnName, " != null");
|
|
472
472
|
}
|
|
473
473
|
}
|
|
474
|
-
export function getTextForDateCondition(columnName, condition, value) {
|
|
474
|
+
export function getTextForDateCondition(dh, columnName, condition, value) {
|
|
475
|
+
var formattedValue = value;
|
|
476
|
+
if (typeof value === 'string') {
|
|
477
|
+
// The date time formatting may return a timezone that is not supported by the backend (e.g. 'EDT' instead of 'ET')
|
|
478
|
+
// so we need to parse the date time string and reformat it with a supported timezone ID.
|
|
479
|
+
// Note that we know this will be valid because the input value has already been validated with isDateConditionValid.
|
|
480
|
+
var [dateTimeString, ...rest] = value.split(' ');
|
|
481
|
+
var tzCode = rest.join(' ');
|
|
482
|
+
var tz = dh.i18n.TimeZone.getTimeZone(tzCode);
|
|
483
|
+
formattedValue = "".concat(dateTimeString, " ").concat(tz.id);
|
|
484
|
+
}
|
|
475
485
|
switch (condition) {
|
|
476
486
|
case DateCondition.IS_EXACTLY:
|
|
477
|
-
return "".concat(columnName, " == '").concat(
|
|
487
|
+
return "".concat(columnName, " == '").concat(formattedValue, "'");
|
|
478
488
|
case DateCondition.IS_NOT_EXACTLY:
|
|
479
|
-
return "".concat(columnName, " != '").concat(
|
|
489
|
+
return "".concat(columnName, " != '").concat(formattedValue, "'");
|
|
480
490
|
case DateCondition.IS_BEFORE:
|
|
481
|
-
return "".concat(columnName, " < '").concat(
|
|
491
|
+
return "".concat(columnName, " < '").concat(formattedValue, "'");
|
|
482
492
|
case DateCondition.IS_BEFORE_OR_EQUAL:
|
|
483
|
-
return "".concat(columnName, " <= '").concat(
|
|
493
|
+
return "".concat(columnName, " <= '").concat(formattedValue, "'");
|
|
484
494
|
case DateCondition.IS_AFTER:
|
|
485
|
-
return "".concat(columnName, " > '").concat(
|
|
495
|
+
return "".concat(columnName, " > '").concat(formattedValue, "'");
|
|
486
496
|
case DateCondition.IS_AFTER_OR_EQUAL:
|
|
487
|
-
return "".concat(columnName, " >= '").concat(
|
|
497
|
+
return "".concat(columnName, " >= '").concat(formattedValue, "'");
|
|
488
498
|
case DateCondition.IS_NULL:
|
|
489
499
|
return "".concat(columnName, " == null");
|
|
490
500
|
case DateCondition.IS_NOT_NULL:
|
|
@@ -573,7 +583,7 @@ export function getFormatColumns(dh, columns, rules) {
|
|
|
573
583
|
}
|
|
574
584
|
// Stack ternary format conditions by column
|
|
575
585
|
var [prevRule, prevFormatColumn] = (_ref3 = formatterType === FormatterType.CONDITIONAL ? columnFormatConfigMap.get(col.name) : rowFormatConfig) !== null && _ref3 !== void 0 ? _ref3 : ['null', undefined];
|
|
576
|
-
var rule = makeTernaryFormatRule(config, prevRule);
|
|
586
|
+
var rule = makeTernaryFormatRule(dh, config, prevRule);
|
|
577
587
|
if (rule === undefined) {
|
|
578
588
|
log.debug("Ignoring format rule.", config);
|
|
579
589
|
return;
|
|
@@ -622,13 +632,6 @@ export function isDateConditionValid(dh, condition, value) {
|
|
|
622
632
|
log.debug('Invalid timezone string', tzCode);
|
|
623
633
|
return false;
|
|
624
634
|
}
|
|
625
|
-
|
|
626
|
-
// The backend timestamp parsing does not support timezones that end with ST or DT (e.g. EST, EDT)
|
|
627
|
-
// Passing these to the backend will cause the table to fail.
|
|
628
|
-
if (tzCode.toUpperCase().endsWith('ST') || tzCode.toUpperCase().endsWith('DT')) {
|
|
629
|
-
log.debug('Timezone ending with ST or DT not supported', tzCode);
|
|
630
|
-
return false;
|
|
631
|
-
}
|
|
632
635
|
return true;
|
|
633
636
|
}
|
|
634
637
|
}
|