@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.
Files changed (29) hide show
  1. package/dist/IrisGrid.d.ts +15 -17
  2. package/dist/IrisGrid.d.ts.map +1 -1
  3. package/dist/IrisGrid.js +16 -1
  4. package/dist/IrisGrid.js.map +1 -1
  5. package/dist/IrisGridCacheUtils.d.ts.map +1 -1
  6. package/dist/IrisGridCacheUtils.js +1 -1
  7. package/dist/IrisGridCacheUtils.js.map +1 -1
  8. package/dist/IrisGridMetricCalculator.d.ts +28 -1
  9. package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
  10. package/dist/IrisGridMetricCalculator.js +43 -3
  11. package/dist/IrisGridMetricCalculator.js.map +1 -1
  12. package/dist/IrisGridUtils.d.ts +11 -3
  13. package/dist/IrisGridUtils.d.ts.map +1 -1
  14. package/dist/IrisGridUtils.js +36 -24
  15. package/dist/IrisGridUtils.js.map +1 -1
  16. package/dist/LazyIrisGrid.d.ts +1 -0
  17. package/dist/LazyIrisGrid.d.ts.map +1 -1
  18. package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
  19. package/dist/sidebar/conditional-formatting/ConditionEditor.js +40 -20
  20. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  21. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.d.ts +1 -1
  22. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.d.ts.map +1 -1
  23. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +2 -2
  24. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
  25. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +2 -2
  26. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -1
  27. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +22 -19
  28. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  29. 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: "form-control",
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: "form-control d-flex mr-2",
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: "form-control d-flex",
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: "form-control",
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: "form-control",
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: "form-control",
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 isValid = true;
208
+ var isConditionValid = true;
195
209
  if (selectedCondition === undefined) {
196
210
  log.debug('Unable to create formatting rule. Condition is not selected.');
197
- isValid = false;
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
- isValid = false;
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
- isValid = false;
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
- }, isValid);
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
- return getNumberInputs(selectedCondition, handleValueChange, handleStartValueChange, handleEndValueChange, conditionValue, startValue, endValue);
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":"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","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","dh","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 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(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,MAAwB,EACxBC,QAAgB,EACI;EACpB,IAAMC,aAAa,GAAGJ,gBAAgB,CAACE,MAAM,CAAC;EAC9C,IAAIE,aAAa,KAAKC,SAAS,EAAE;IAC/B,OAAOA,SAAS;EAClB;EACA,IAAMC,iBAAiB,GAAGP,oBAAoB,CAACG,MAAM,CAAC;EACtD,UAAAK,MAAA,CAAUD,iBAAiB,SAAAC,MAAA,CAAMH,aAAa,SAAAG,MAAA,CAAMJ,QAAQ;AAC9D;AAEA,OAAO,SAASK,mBAAmBA,CACjCC,EAAiB,EACjBC,IAAY,EACS;EACrB,OAAOD,EAAE,CAACE,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":[]}
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(value, "'");
487
+ return "".concat(columnName, " == '").concat(formattedValue, "'");
478
488
  case DateCondition.IS_NOT_EXACTLY:
479
- return "".concat(columnName, " != '").concat(value, "'");
489
+ return "".concat(columnName, " != '").concat(formattedValue, "'");
480
490
  case DateCondition.IS_BEFORE:
481
- return "".concat(columnName, " < '").concat(value, "'");
491
+ return "".concat(columnName, " < '").concat(formattedValue, "'");
482
492
  case DateCondition.IS_BEFORE_OR_EQUAL:
483
- return "".concat(columnName, " <= '").concat(value, "'");
493
+ return "".concat(columnName, " <= '").concat(formattedValue, "'");
484
494
  case DateCondition.IS_AFTER:
485
- return "".concat(columnName, " > '").concat(value, "'");
495
+ return "".concat(columnName, " > '").concat(formattedValue, "'");
486
496
  case DateCondition.IS_AFTER_OR_EQUAL:
487
- return "".concat(columnName, " >= '").concat(value, "'");
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
  }