@deephaven/iris-grid 1.18.0 → 1.18.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ConditionEditor.d.ts","sourceRoot":"","sources":["../../../src/sidebar/conditional-formatting/ConditionEditor.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAG3D,OAAO,EAOL,KAAK,WAAW,EAChB,KAAK,eAAe,EASrB,MAAM,8BAA8B,CAAC;AAItC,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,OAAO,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAChE;AAmOD,iBAAS,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,GAAG,CAAC,OAAO,CAkMjE;AAED,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"ConditionEditor.d.ts","sourceRoot":"","sources":["../../../src/sidebar/conditional-formatting/ConditionEditor.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAG3D,OAAO,EAOL,KAAK,WAAW,EAChB,KAAK,eAAe,EASrB,MAAM,8BAA8B,CAAC;AAItC,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,OAAO,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAChE;AA2OD,iBAAS,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,GAAG,CAAC,OAAO,CAsNjE;AAED,eAAe,eAAe,CAAC"}
@@ -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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ConditionalFormattingUtils.js","names":["Log","DateUtils","TableUtils","makeColumnFormatColumn","makeRowFormatColumn","makeTernaryFormatRule","log","module","FormatterType","NumberCondition","StringCondition","DateCondition","BooleanCondition","CharCondition","FormatStyleType","getLabelForStyleType","option","NO_FORMATTING","POSITIVE","NEGATIVE","WARN","NEUTRAL","ACCENT_1","ACCENT_2","CUSTOM","getBackgroundForStyleConfig","config","type","customConfig","undefined","background","getColorForStyleConfig","color","getStyleDBString","style","bg","concat","getNumberConditionText","column","value","start","end","getTextForNumberCondition","name","condition","getStringConditionText","getTextForStringCondition","getDateConditionText","getTextForDateCondition","getBooleanConditionText","getTextForBooleanCondition","getCharConditionText","getTextForCharCondition","getConditionDBString","isNumberType","isCharType","isStringType","isDateType","isBooleanType","Error","getLabelForNumberCondition","IS_EQUAL","IS_NOT_EQUAL","IS_BETWEEN","GREATER_THAN","GREATER_THAN_OR_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","IS_NULL","IS_NOT_NULL","getLabelForStringCondition","IS_EXACTLY","IS_NOT_EXACTLY","CONTAINS","DOES_NOT_CONTAIN","STARTS_WITH","ENDS_WITH","getLabelForDateCondition","IS_BEFORE","IS_BEFORE_OR_EQUAL","IS_AFTER","IS_AFTER_OR_EQUAL","getLabelForBooleanCondition","IS_TRUE","IS_FALSE","getLabelForCharCondition","getDefaultConditionForType","columnType","getDefaultValueForType","getConditionConfig","getDefaultConditionConfigForType","getDefaultStyleConfig","getShortLabelForStringCondition","getShortLabelForDateCondition","getShortLabelForBooleanCondition","getShortLabelForCharCondition","getShortLabelForNumberCondition","columnName","getShortLabelForConditionType","getFormatColumns","dh","columns","rules","debug","result","rowFormatConfig","columnFormatConfigMap","Map","forEach","_ref","_ref3","formatterType","col","find","_ref2","prevRule","prevFormatColumn","CONDITIONAL","get","rule","index","indexOf","splice","formatColumn","push","set","isDateConditionValid","dateTimeString","rest","split","tzCode","join","parseDateTimeString","e","i18n","TimeZone","getTimeZone","toUpperCase","endsWith","isSupportedColumn","_ref4"],"sources":["../../../src/sidebar/conditional-formatting/ConditionalFormattingUtils.ts"],"sourcesContent":["import Log from '@deephaven/log';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { DateUtils, TableUtils } from '@deephaven/jsapi-utils';\nimport {\n makeColumnFormatColumn,\n makeRowFormatColumn,\n makeTernaryFormatRule,\n} from './ConditionalFormattingAPIUtils';\nimport { type ColumnName } from '../../CommonTypes';\n\nconst log = Log.module('ConditionalFormattingUtils');\n\nexport type ModelColumn = {\n name: string;\n type: string;\n};\n\nexport type Condition =\n | NumberCondition\n | StringCondition\n | DateCondition\n | BooleanCondition\n | CharCondition;\n\nexport interface BaseFormatConfig {\n column: ModelColumn;\n condition: Condition;\n value?: string;\n start?: string;\n end?: string;\n style: FormatStyleConfig;\n}\n\nexport interface ConditionConfig {\n condition: Condition;\n value?: string;\n start?: string;\n end?: string;\n}\n\nexport type ChangeCallback = (\n ruleConfig: BaseFormatConfig,\n isValid: boolean\n) => void;\n\nexport enum FormatterType {\n CONDITIONAL = 'conditional',\n ROWS = 'rows',\n}\n\nexport interface FormattingRule {\n type: FormatterType;\n config: BaseFormatConfig;\n}\n\nexport enum NumberCondition {\n IS_EQUAL = 'is-equal',\n IS_NOT_EQUAL = 'is-not-equal',\n IS_BETWEEN = 'is-between',\n GREATER_THAN = 'greater-than',\n GREATER_THAN_OR_EQUAL = 'greater-than-or-equal',\n LESS_THAN = 'less-than',\n LESS_THAN_OR_EQUAL = 'less-than-or-equal',\n IS_NULL = 'is-null',\n IS_NOT_NULL = 'is-not-null',\n}\n\nexport enum StringCondition {\n IS_EXACTLY = 'is-exactly',\n IS_NOT_EXACTLY = 'is-not-exactly',\n CONTAINS = 'contains',\n DOES_NOT_CONTAIN = 'does-not-contain',\n STARTS_WITH = 'starts-with',\n ENDS_WITH = 'ends-with',\n IS_NULL = 'is-null',\n IS_NOT_NULL = 'is-not-null',\n}\n\nexport enum DateCondition {\n IS_EXACTLY = 'is-exactly',\n IS_NOT_EXACTLY = 'is-not-exactly',\n IS_BEFORE = 'is-before',\n IS_BEFORE_OR_EQUAL = 'is-before-or-equal',\n IS_AFTER = 'is-after',\n IS_AFTER_OR_EQUAL = 'is-after-or-equal',\n IS_NULL = 'is-null',\n IS_NOT_NULL = 'is-not-null',\n}\n\nexport enum BooleanCondition {\n IS_TRUE = 'is-true',\n IS_FALSE = 'is-false',\n IS_NULL = 'is-null',\n IS_NOT_NULL = 'is-not-null',\n}\n\nexport enum CharCondition {\n IS_EQUAL = 'is-equal',\n IS_NOT_EQUAL = 'is-not-equal',\n IS_NULL = 'is-null',\n IS_NOT_NULL = 'is-not-null',\n}\n\nexport enum FormatStyleType {\n NO_FORMATTING = 'no-formatting',\n POSITIVE = 'positive',\n NEGATIVE = 'negative',\n WARN = 'warn',\n NEUTRAL = 'neutral',\n ACCENT_1 = 'accent-1',\n ACCENT_2 = 'accent-2',\n CUSTOM = 'custom',\n}\n\nexport interface FormatStyleConfig {\n type: FormatStyleType;\n customConfig?: {\n color: string;\n background: string;\n };\n}\n\nexport function getLabelForStyleType(option: FormatStyleType): string {\n switch (option) {\n case FormatStyleType.NO_FORMATTING:\n return 'No formatting';\n case FormatStyleType.POSITIVE:\n return 'Positive';\n case FormatStyleType.NEGATIVE:\n return 'Negative';\n case FormatStyleType.WARN:\n return 'Warn';\n case FormatStyleType.NEUTRAL:\n return 'Neutral';\n case FormatStyleType.ACCENT_1:\n return 'Accent 1';\n case FormatStyleType.ACCENT_2:\n return 'Accent 2';\n case FormatStyleType.CUSTOM:\n return 'Custom...';\n }\n}\n\nexport function getBackgroundForStyleConfig(\n config: FormatStyleConfig\n): string | undefined {\n const { type, customConfig } = config;\n switch (type) {\n case FormatStyleType.NO_FORMATTING:\n return undefined;\n case FormatStyleType.POSITIVE:\n return '#9fde6f';\n case FormatStyleType.NEGATIVE:\n return '#ff6087';\n case FormatStyleType.WARN:\n return '#f67f40';\n case FormatStyleType.NEUTRAL:\n return '#ffd95c';\n case FormatStyleType.ACCENT_1:\n return '#78dce8';\n case FormatStyleType.ACCENT_2:\n return '#ab9bf5';\n case FormatStyleType.CUSTOM:\n return customConfig?.background;\n default:\n return undefined;\n }\n}\n\nexport function getColorForStyleConfig(\n config: FormatStyleConfig\n): string | undefined {\n const { type, customConfig } = config;\n switch (type) {\n case FormatStyleType.NO_FORMATTING:\n return undefined;\n case FormatStyleType.POSITIVE:\n return '#526a3f';\n case FormatStyleType.NEGATIVE:\n return '#802f44';\n case FormatStyleType.WARN:\n return '#663318';\n case FormatStyleType.NEUTRAL:\n return '#63562b';\n case FormatStyleType.ACCENT_1:\n return '#3f6469';\n case FormatStyleType.ACCENT_2:\n return '#554d72';\n case FormatStyleType.CUSTOM:\n return customConfig?.color;\n default:\n return undefined;\n }\n}\n\nexport function getStyleDBString(config: BaseFormatConfig): string | undefined {\n const color = getColorForStyleConfig(config.style);\n const bg = getBackgroundForStyleConfig(config.style);\n if (color === undefined || bg === undefined) {\n return undefined;\n }\n return `bgfg(\\`${bg}\\`, \\`${color}\\`)`;\n}\n\nfunction getNumberConditionText(config: BaseFormatConfig): string {\n const { column, value, start, end } = config;\n return getTextForNumberCondition(\n column.name,\n config.condition as NumberCondition,\n value,\n start,\n end\n );\n}\n\nfunction getStringConditionText(config: BaseFormatConfig): string {\n const { column, value } = config;\n return getTextForStringCondition(\n column.name,\n config.condition as StringCondition,\n value\n );\n}\n\nfunction getDateConditionText(config: BaseFormatConfig): string {\n const { column, value } = config;\n return getTextForDateCondition(\n column.name,\n config.condition as DateCondition,\n value\n );\n}\n\nfunction getBooleanConditionText(config: BaseFormatConfig): string {\n const { column } = config;\n return getTextForBooleanCondition(\n column.name,\n config.condition as BooleanCondition\n );\n}\n\nfunction getCharConditionText(config: BaseFormatConfig): string {\n const { column, value } = config;\n return getTextForCharCondition(\n column.name,\n config.condition as CharCondition,\n value\n );\n}\n\nexport function getConditionDBString(config: BaseFormatConfig): string {\n const { column } = config;\n\n if (TableUtils.isNumberType(column.type)) {\n return getNumberConditionText(config);\n }\n if (TableUtils.isCharType(column.type)) {\n return getCharConditionText(config);\n }\n if (TableUtils.isStringType(column.type)) {\n return getStringConditionText(config);\n }\n if (TableUtils.isDateType(column.type)) {\n return getDateConditionText(config);\n }\n if (TableUtils.isBooleanType(column.type)) {\n return getBooleanConditionText(config);\n }\n\n throw new Error('Invalid column type');\n}\n\nexport function getLabelForNumberCondition(condition: NumberCondition): string {\n switch (condition) {\n case NumberCondition.IS_EQUAL:\n return 'is equal to';\n case NumberCondition.IS_NOT_EQUAL:\n return 'is not equal to';\n case NumberCondition.IS_BETWEEN:\n return 'is between';\n case NumberCondition.GREATER_THAN:\n return 'greater than';\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n return 'greater than or equal to';\n case NumberCondition.LESS_THAN:\n return 'less than';\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return 'less than or equal to';\n case NumberCondition.IS_NULL:\n return 'is null';\n case NumberCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nexport function getLabelForStringCondition(condition: StringCondition): string {\n switch (condition) {\n case StringCondition.IS_EXACTLY:\n return 'is exactly';\n case StringCondition.IS_NOT_EXACTLY:\n return 'is not exactly';\n case StringCondition.CONTAINS:\n return 'contains';\n case StringCondition.DOES_NOT_CONTAIN:\n return 'does not contain';\n case StringCondition.STARTS_WITH:\n return 'starts with';\n case StringCondition.ENDS_WITH:\n return 'ends with';\n case StringCondition.IS_NULL:\n return 'is null';\n case StringCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nexport function getLabelForDateCondition(condition: DateCondition): string {\n switch (condition) {\n case DateCondition.IS_EXACTLY:\n return 'is';\n case DateCondition.IS_NOT_EXACTLY:\n return 'is not';\n case DateCondition.IS_BEFORE:\n return 'is before';\n case DateCondition.IS_BEFORE_OR_EQUAL:\n return 'is before or equal';\n case DateCondition.IS_AFTER:\n return 'is after';\n case DateCondition.IS_AFTER_OR_EQUAL:\n return 'is after or equal';\n case DateCondition.IS_NULL:\n return 'is null';\n case DateCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nexport function getLabelForBooleanCondition(\n condition: BooleanCondition\n): string {\n switch (condition) {\n case BooleanCondition.IS_TRUE:\n return 'is true';\n case BooleanCondition.IS_FALSE:\n return 'is false';\n case BooleanCondition.IS_NULL:\n return 'is null';\n case BooleanCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nexport function getLabelForCharCondition(condition: CharCondition): string {\n switch (condition) {\n case CharCondition.IS_EQUAL:\n return 'is';\n case CharCondition.IS_NOT_EQUAL:\n return 'is not';\n case CharCondition.IS_NULL:\n return 'is null';\n case CharCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nexport function getDefaultConditionForType(columnType: string): Condition {\n if (TableUtils.isNumberType(columnType)) {\n return NumberCondition.IS_EQUAL;\n }\n if (TableUtils.isCharType(columnType)) {\n return CharCondition.IS_EQUAL;\n }\n if (TableUtils.isStringType(columnType)) {\n return StringCondition.IS_EXACTLY;\n }\n if (TableUtils.isDateType(columnType)) {\n return DateCondition.IS_EXACTLY;\n }\n if (TableUtils.isBooleanType(columnType)) {\n return BooleanCondition.IS_TRUE;\n }\n\n throw new Error('Invalid column type');\n}\n\nexport function getDefaultValueForType(columnType: string): string | undefined {\n if (TableUtils.isCharType(columnType)) {\n return '';\n }\n if (TableUtils.isStringType(columnType)) {\n return '';\n }\n return undefined;\n}\n\nexport function getConditionConfig(config: BaseFormatConfig): ConditionConfig {\n const { condition, value, start, end } = config;\n return { condition, value, start, end };\n}\n\nexport function getDefaultConditionConfigForType(\n type: string\n): ConditionConfig {\n return {\n condition: getDefaultConditionForType(type),\n value: getDefaultValueForType(type),\n start: undefined,\n end: undefined,\n };\n}\n\nexport function getDefaultStyleConfig(): FormatStyleConfig {\n return {\n type: FormatStyleType.NO_FORMATTING,\n };\n}\n\nfunction getShortLabelForStringCondition(condition: StringCondition): string {\n switch (condition) {\n case StringCondition.IS_EXACTLY:\n return '==';\n case StringCondition.IS_NOT_EXACTLY:\n return '!=';\n case StringCondition.CONTAINS:\n return 'contains';\n case StringCondition.DOES_NOT_CONTAIN:\n return 'does not contain';\n case StringCondition.STARTS_WITH:\n return 'starts with';\n case StringCondition.ENDS_WITH:\n return 'ends with';\n case StringCondition.IS_NULL:\n return 'is null';\n case StringCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nfunction getShortLabelForDateCondition(condition: DateCondition): string {\n switch (condition) {\n case DateCondition.IS_EXACTLY:\n return '==';\n case DateCondition.IS_NOT_EXACTLY:\n return '!=';\n case DateCondition.IS_BEFORE:\n return '<';\n case DateCondition.IS_BEFORE_OR_EQUAL:\n return '<=';\n case DateCondition.IS_AFTER:\n return '>';\n case DateCondition.IS_AFTER_OR_EQUAL:\n return '>=';\n case DateCondition.IS_NULL:\n return 'is null';\n case DateCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nfunction getShortLabelForBooleanCondition(condition: BooleanCondition): string {\n switch (condition) {\n case BooleanCondition.IS_TRUE:\n return 'is true';\n case BooleanCondition.IS_FALSE:\n return 'is false';\n case BooleanCondition.IS_NULL:\n return 'is null';\n case BooleanCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nfunction getShortLabelForCharCondition(condition: CharCondition): string {\n switch (condition) {\n case CharCondition.IS_EQUAL:\n return '==';\n case CharCondition.IS_NOT_EQUAL:\n return '!=';\n case CharCondition.IS_NULL:\n return 'is null';\n case CharCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nexport function getShortLabelForNumberCondition(\n condition: NumberCondition\n): string {\n switch (condition) {\n case NumberCondition.IS_EQUAL:\n return '==';\n case NumberCondition.IS_NOT_EQUAL:\n return '!=';\n case NumberCondition.IS_BETWEEN:\n return '==';\n case NumberCondition.GREATER_THAN:\n return '>';\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n return '>=';\n case NumberCondition.LESS_THAN:\n return '<';\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return '<=';\n case NumberCondition.IS_NULL:\n return 'is null';\n case NumberCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nexport function getTextForNumberCondition(\n columnName: ColumnName,\n condition: NumberCondition,\n value: unknown,\n start: unknown,\n end: unknown\n): string {\n switch (condition) {\n case NumberCondition.IS_EQUAL:\n return `${columnName} == ${value}`;\n case NumberCondition.IS_NOT_EQUAL:\n return `${columnName} != ${value}`;\n case NumberCondition.IS_BETWEEN:\n return `${columnName} > ${start} && ${columnName} < ${end}`;\n case NumberCondition.GREATER_THAN:\n return `${columnName} > ${value}`;\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n return `${columnName} >= ${value}`;\n case NumberCondition.LESS_THAN:\n return `${columnName} < ${value}`;\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return `${columnName} <= ${value}`;\n case NumberCondition.IS_NULL:\n return `${columnName} == null`;\n case NumberCondition.IS_NOT_NULL:\n return `${columnName} != null`;\n }\n}\n\nexport function getTextForStringCondition(\n columnName: ColumnName,\n condition: StringCondition,\n value: unknown\n): string {\n switch (condition) {\n case StringCondition.IS_EXACTLY:\n return `${columnName} == \"${value}\"`;\n case StringCondition.IS_NOT_EXACTLY:\n return `${columnName} != \"${value}\"`;\n case StringCondition.CONTAINS:\n return `${columnName} != null && ${columnName}.contains(\"${value}\")`;\n case StringCondition.DOES_NOT_CONTAIN:\n return `${columnName} != null && !${columnName}.contains(\"${value}\")`;\n case StringCondition.STARTS_WITH:\n return `${columnName} != null && ${columnName}.startsWith(\"${value}\")`;\n case StringCondition.ENDS_WITH:\n return `${columnName} != null && ${columnName}.endsWith(\"${value}\")`;\n case StringCondition.IS_NULL:\n return `${columnName} == null`;\n case StringCondition.IS_NOT_NULL:\n return `${columnName} != null`;\n }\n}\n\nexport function getTextForDateCondition(\n columnName: ColumnName,\n condition: DateCondition,\n value: unknown\n): string {\n switch (condition) {\n case DateCondition.IS_EXACTLY:\n return `${columnName} == '${value}'`;\n case DateCondition.IS_NOT_EXACTLY:\n return `${columnName} != '${value}'`;\n case DateCondition.IS_BEFORE:\n return `${columnName} < '${value}'`;\n case DateCondition.IS_BEFORE_OR_EQUAL:\n return `${columnName} <= '${value}'`;\n case DateCondition.IS_AFTER:\n return `${columnName} > '${value}'`;\n case DateCondition.IS_AFTER_OR_EQUAL:\n return `${columnName} >= '${value}'`;\n case DateCondition.IS_NULL:\n return `${columnName} == null`;\n case DateCondition.IS_NOT_NULL:\n return `${columnName} != null`;\n }\n}\n\nexport function getTextForBooleanCondition(\n columnName: ColumnName,\n condition: BooleanCondition\n): string {\n switch (condition) {\n case BooleanCondition.IS_TRUE:\n return `${columnName} == true`;\n case BooleanCondition.IS_FALSE:\n return `${columnName} == false`;\n case BooleanCondition.IS_NULL:\n return `${columnName} == null`;\n case BooleanCondition.IS_NOT_NULL:\n return `${columnName} != null`;\n }\n}\n\nexport function getTextForCharCondition(\n columnName: ColumnName,\n condition: CharCondition,\n value: unknown\n): string {\n switch (condition) {\n case CharCondition.IS_EQUAL:\n return `${columnName} == '${value}'`;\n case CharCondition.IS_NOT_EQUAL:\n return `${columnName} != '${value}'`;\n case CharCondition.IS_NULL:\n return `isNull(${columnName})`;\n case CharCondition.IS_NOT_NULL:\n return `!isNull(${columnName})`;\n }\n}\n\nexport function getShortLabelForConditionType(\n columnType: string,\n condition: Condition\n): string {\n if (TableUtils.isNumberType(columnType)) {\n return getShortLabelForNumberCondition(condition as NumberCondition);\n }\n if (TableUtils.isCharType(columnType)) {\n return getShortLabelForCharCondition(condition as CharCondition);\n }\n if (TableUtils.isStringType(columnType)) {\n return getShortLabelForStringCondition(condition as StringCondition);\n }\n if (TableUtils.isDateType(columnType)) {\n return getShortLabelForDateCondition(condition as DateCondition);\n }\n if (TableUtils.isBooleanType(columnType)) {\n return getShortLabelForBooleanCondition(condition as BooleanCondition);\n }\n\n throw new Error('Invalid column type');\n}\n\n/**\n * Get format columns array for the given columns and formatting rules\n * @param columns Available columns\n * @param rules Formatting rules to build the format columns from\n * @returns Array of format columns\n */\nexport function getFormatColumns(\n dh: typeof DhType,\n columns: readonly DhType.Column[],\n rules: readonly FormattingRule[]\n): DhType.CustomColumn[] {\n if (rules === undefined) {\n log.debug(`no rules passed.`);\n return [];\n }\n const result: DhType.CustomColumn[] = [];\n // There can be only one row format custom column\n // and multiple column format custom columns (one per column)\n let rowFormatConfig: [string, DhType.CustomColumn];\n const columnFormatConfigMap = new Map<\n string,\n [string, DhType.CustomColumn]\n >();\n rules.forEach(({ config, type: formatterType }) => {\n const { column } = config;\n // Check both name and type because the type can change\n const col = columns.find(\n ({ name, type }) => name === column.name && type === column.type\n );\n if (col === undefined) {\n log.debug(\n `Column ${column.name}:${column.type} not found. Ignoring format rule.`,\n config\n );\n return;\n }\n // Stack ternary format conditions by column\n const [prevRule, prevFormatColumn] = (formatterType ===\n FormatterType.CONDITIONAL\n ? columnFormatConfigMap.get(col.name)\n : rowFormatConfig) ?? ['null', undefined];\n const rule = makeTernaryFormatRule(config, prevRule);\n if (rule === undefined) {\n log.debug(`Ignoring format rule.`, config);\n return;\n }\n // Replace existing formatColumn with the new stacked format\n const index =\n prevFormatColumn === undefined ? -1 : result.indexOf(prevFormatColumn);\n if (index > -1) {\n result.splice(index, 1);\n }\n const formatColumn =\n formatterType === FormatterType.CONDITIONAL\n ? makeColumnFormatColumn(col, rule)\n : makeRowFormatColumn(dh, rule);\n result.push(formatColumn);\n if (formatterType === FormatterType.CONDITIONAL) {\n columnFormatConfigMap.set(col.name, [rule, formatColumn]);\n } else {\n rowFormatConfig = [rule, formatColumn];\n }\n });\n\n return result;\n}\n\n/**\n * Validate that a given date condition + value pair is valid.\n * @param condition\n * @param value\n */\nexport function isDateConditionValid(\n dh: typeof DhType,\n condition: DateCondition,\n value?: string\n): boolean {\n switch (condition) {\n case DateCondition.IS_NULL:\n case DateCondition.IS_NOT_NULL:\n return true;\n\n default: {\n const [dateTimeString, ...rest] = (value ?? '').split(' ');\n // Reconstitute all tokens after the first ' ' in case the user included garbage data at the end\n // e.g. '2020-01-01 NY blah'\n const tzCode = rest.join(' ');\n\n try {\n DateUtils.parseDateTimeString(dateTimeString);\n } catch (e) {\n log.debug('Invalid datetime string', dateTimeString);\n return false;\n }\n\n try {\n dh.i18n.TimeZone.getTimeZone(tzCode);\n } catch (e) {\n log.debug('Invalid timezone string', tzCode);\n return false;\n }\n\n // The backend timestamp parsing does not support timezones that end with ST or DT (e.g. EST, EDT)\n // Passing these to the backend will cause the table to fail.\n if (\n tzCode.toUpperCase().endsWith('ST') ||\n tzCode.toUpperCase().endsWith('DT')\n ) {\n log.debug('Timezone ending with ST or DT not supported', tzCode);\n return false;\n }\n\n return true;\n }\n }\n}\n\nexport function isSupportedColumn({ type }: ModelColumn): boolean {\n return (\n TableUtils.isNumberType(type) ||\n TableUtils.isCharType(type) ||\n TableUtils.isStringType(type) ||\n TableUtils.isDateType(type) ||\n TableUtils.isBooleanType(type)\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ConditionalFormattingUtils.js","names":["Log","DateUtils","TableUtils","makeColumnFormatColumn","makeRowFormatColumn","makeTernaryFormatRule","log","module","FormatterType","NumberCondition","StringCondition","DateCondition","BooleanCondition","CharCondition","FormatStyleType","getLabelForStyleType","option","NO_FORMATTING","POSITIVE","NEGATIVE","WARN","NEUTRAL","ACCENT_1","ACCENT_2","CUSTOM","getBackgroundForStyleConfig","config","type","customConfig","undefined","background","getColorForStyleConfig","color","getStyleDBString","style","bg","concat","getNumberConditionText","column","value","start","end","getTextForNumberCondition","name","condition","getStringConditionText","getTextForStringCondition","getDateConditionText","dh","getTextForDateCondition","getBooleanConditionText","getTextForBooleanCondition","getCharConditionText","getTextForCharCondition","getConditionDBString","isNumberType","isCharType","isStringType","isDateType","isBooleanType","Error","getLabelForNumberCondition","IS_EQUAL","IS_NOT_EQUAL","IS_BETWEEN","GREATER_THAN","GREATER_THAN_OR_EQUAL","LESS_THAN","LESS_THAN_OR_EQUAL","IS_NULL","IS_NOT_NULL","getLabelForStringCondition","IS_EXACTLY","IS_NOT_EXACTLY","CONTAINS","DOES_NOT_CONTAIN","STARTS_WITH","ENDS_WITH","getLabelForDateCondition","IS_BEFORE","IS_BEFORE_OR_EQUAL","IS_AFTER","IS_AFTER_OR_EQUAL","getLabelForBooleanCondition","IS_TRUE","IS_FALSE","getLabelForCharCondition","getDefaultConditionForType","columnType","getDefaultValueForType","getConditionConfig","getDefaultConditionConfigForType","getDefaultStyleConfig","getShortLabelForStringCondition","getShortLabelForDateCondition","getShortLabelForBooleanCondition","getShortLabelForCharCondition","getShortLabelForNumberCondition","columnName","formattedValue","dateTimeString","rest","split","tzCode","join","tz","i18n","TimeZone","getTimeZone","id","getShortLabelForConditionType","getFormatColumns","columns","rules","debug","result","rowFormatConfig","columnFormatConfigMap","Map","forEach","_ref","_ref3","formatterType","col","find","_ref2","prevRule","prevFormatColumn","CONDITIONAL","get","rule","index","indexOf","splice","formatColumn","push","set","isDateConditionValid","parseDateTimeString","e","isSupportedColumn","_ref4"],"sources":["../../../src/sidebar/conditional-formatting/ConditionalFormattingUtils.ts"],"sourcesContent":["import Log from '@deephaven/log';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport { DateUtils, TableUtils } from '@deephaven/jsapi-utils';\nimport {\n makeColumnFormatColumn,\n makeRowFormatColumn,\n makeTernaryFormatRule,\n} from './ConditionalFormattingAPIUtils';\nimport { type ColumnName } from '../../CommonTypes';\n\nconst log = Log.module('ConditionalFormattingUtils');\n\nexport type ModelColumn = {\n name: string;\n type: string;\n};\n\nexport type Condition =\n | NumberCondition\n | StringCondition\n | DateCondition\n | BooleanCondition\n | CharCondition;\n\nexport interface BaseFormatConfig {\n column: ModelColumn;\n condition: Condition;\n value?: string;\n start?: string;\n end?: string;\n style: FormatStyleConfig;\n}\n\nexport interface ConditionConfig {\n condition: Condition;\n value?: string;\n start?: string;\n end?: string;\n}\n\nexport type ChangeCallback = (\n ruleConfig: BaseFormatConfig,\n isValid: boolean\n) => void;\n\nexport enum FormatterType {\n CONDITIONAL = 'conditional',\n ROWS = 'rows',\n}\n\nexport interface FormattingRule {\n type: FormatterType;\n config: BaseFormatConfig;\n}\n\nexport enum NumberCondition {\n IS_EQUAL = 'is-equal',\n IS_NOT_EQUAL = 'is-not-equal',\n IS_BETWEEN = 'is-between',\n GREATER_THAN = 'greater-than',\n GREATER_THAN_OR_EQUAL = 'greater-than-or-equal',\n LESS_THAN = 'less-than',\n LESS_THAN_OR_EQUAL = 'less-than-or-equal',\n IS_NULL = 'is-null',\n IS_NOT_NULL = 'is-not-null',\n}\n\nexport enum StringCondition {\n IS_EXACTLY = 'is-exactly',\n IS_NOT_EXACTLY = 'is-not-exactly',\n CONTAINS = 'contains',\n DOES_NOT_CONTAIN = 'does-not-contain',\n STARTS_WITH = 'starts-with',\n ENDS_WITH = 'ends-with',\n IS_NULL = 'is-null',\n IS_NOT_NULL = 'is-not-null',\n}\n\nexport enum DateCondition {\n IS_EXACTLY = 'is-exactly',\n IS_NOT_EXACTLY = 'is-not-exactly',\n IS_BEFORE = 'is-before',\n IS_BEFORE_OR_EQUAL = 'is-before-or-equal',\n IS_AFTER = 'is-after',\n IS_AFTER_OR_EQUAL = 'is-after-or-equal',\n IS_NULL = 'is-null',\n IS_NOT_NULL = 'is-not-null',\n}\n\nexport enum BooleanCondition {\n IS_TRUE = 'is-true',\n IS_FALSE = 'is-false',\n IS_NULL = 'is-null',\n IS_NOT_NULL = 'is-not-null',\n}\n\nexport enum CharCondition {\n IS_EQUAL = 'is-equal',\n IS_NOT_EQUAL = 'is-not-equal',\n IS_NULL = 'is-null',\n IS_NOT_NULL = 'is-not-null',\n}\n\nexport enum FormatStyleType {\n NO_FORMATTING = 'no-formatting',\n POSITIVE = 'positive',\n NEGATIVE = 'negative',\n WARN = 'warn',\n NEUTRAL = 'neutral',\n ACCENT_1 = 'accent-1',\n ACCENT_2 = 'accent-2',\n CUSTOM = 'custom',\n}\n\nexport interface FormatStyleConfig {\n type: FormatStyleType;\n customConfig?: {\n color: string;\n background: string;\n };\n}\n\nexport function getLabelForStyleType(option: FormatStyleType): string {\n switch (option) {\n case FormatStyleType.NO_FORMATTING:\n return 'No formatting';\n case FormatStyleType.POSITIVE:\n return 'Positive';\n case FormatStyleType.NEGATIVE:\n return 'Negative';\n case FormatStyleType.WARN:\n return 'Warn';\n case FormatStyleType.NEUTRAL:\n return 'Neutral';\n case FormatStyleType.ACCENT_1:\n return 'Accent 1';\n case FormatStyleType.ACCENT_2:\n return 'Accent 2';\n case FormatStyleType.CUSTOM:\n return 'Custom...';\n }\n}\n\nexport function getBackgroundForStyleConfig(\n config: FormatStyleConfig\n): string | undefined {\n const { type, customConfig } = config;\n switch (type) {\n case FormatStyleType.NO_FORMATTING:\n return undefined;\n case FormatStyleType.POSITIVE:\n return '#9fde6f';\n case FormatStyleType.NEGATIVE:\n return '#ff6087';\n case FormatStyleType.WARN:\n return '#f67f40';\n case FormatStyleType.NEUTRAL:\n return '#ffd95c';\n case FormatStyleType.ACCENT_1:\n return '#78dce8';\n case FormatStyleType.ACCENT_2:\n return '#ab9bf5';\n case FormatStyleType.CUSTOM:\n return customConfig?.background;\n default:\n return undefined;\n }\n}\n\nexport function getColorForStyleConfig(\n config: FormatStyleConfig\n): string | undefined {\n const { type, customConfig } = config;\n switch (type) {\n case FormatStyleType.NO_FORMATTING:\n return undefined;\n case FormatStyleType.POSITIVE:\n return '#526a3f';\n case FormatStyleType.NEGATIVE:\n return '#802f44';\n case FormatStyleType.WARN:\n return '#663318';\n case FormatStyleType.NEUTRAL:\n return '#63562b';\n case FormatStyleType.ACCENT_1:\n return '#3f6469';\n case FormatStyleType.ACCENT_2:\n return '#554d72';\n case FormatStyleType.CUSTOM:\n return customConfig?.color;\n default:\n return undefined;\n }\n}\n\nexport function getStyleDBString(config: BaseFormatConfig): string | undefined {\n const color = getColorForStyleConfig(config.style);\n const bg = getBackgroundForStyleConfig(config.style);\n if (color === undefined || bg === undefined) {\n return undefined;\n }\n return `bgfg(\\`${bg}\\`, \\`${color}\\`)`;\n}\n\nfunction getNumberConditionText(config: BaseFormatConfig): string {\n const { column, value, start, end } = config;\n return getTextForNumberCondition(\n column.name,\n config.condition as NumberCondition,\n value,\n start,\n end\n );\n}\n\nfunction getStringConditionText(config: BaseFormatConfig): string {\n const { column, value } = config;\n return getTextForStringCondition(\n column.name,\n config.condition as StringCondition,\n value\n );\n}\n\nfunction getDateConditionText(\n dh: typeof DhType,\n config: BaseFormatConfig\n): string {\n const { column, value } = config;\n return getTextForDateCondition(\n dh,\n column.name,\n config.condition as DateCondition,\n value\n );\n}\n\nfunction getBooleanConditionText(config: BaseFormatConfig): string {\n const { column } = config;\n return getTextForBooleanCondition(\n column.name,\n config.condition as BooleanCondition\n );\n}\n\nfunction getCharConditionText(config: BaseFormatConfig): string {\n const { column, value } = config;\n return getTextForCharCondition(\n column.name,\n config.condition as CharCondition,\n value\n );\n}\n\nexport function getConditionDBString(\n dh: typeof DhType,\n config: BaseFormatConfig\n): string {\n const { column } = config;\n\n if (TableUtils.isNumberType(column.type)) {\n return getNumberConditionText(config);\n }\n if (TableUtils.isCharType(column.type)) {\n return getCharConditionText(config);\n }\n if (TableUtils.isStringType(column.type)) {\n return getStringConditionText(config);\n }\n if (TableUtils.isDateType(column.type)) {\n return getDateConditionText(dh, config);\n }\n if (TableUtils.isBooleanType(column.type)) {\n return getBooleanConditionText(config);\n }\n\n throw new Error('Invalid column type');\n}\n\nexport function getLabelForNumberCondition(condition: NumberCondition): string {\n switch (condition) {\n case NumberCondition.IS_EQUAL:\n return 'is equal to';\n case NumberCondition.IS_NOT_EQUAL:\n return 'is not equal to';\n case NumberCondition.IS_BETWEEN:\n return 'is between';\n case NumberCondition.GREATER_THAN:\n return 'greater than';\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n return 'greater than or equal to';\n case NumberCondition.LESS_THAN:\n return 'less than';\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return 'less than or equal to';\n case NumberCondition.IS_NULL:\n return 'is null';\n case NumberCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nexport function getLabelForStringCondition(condition: StringCondition): string {\n switch (condition) {\n case StringCondition.IS_EXACTLY:\n return 'is exactly';\n case StringCondition.IS_NOT_EXACTLY:\n return 'is not exactly';\n case StringCondition.CONTAINS:\n return 'contains';\n case StringCondition.DOES_NOT_CONTAIN:\n return 'does not contain';\n case StringCondition.STARTS_WITH:\n return 'starts with';\n case StringCondition.ENDS_WITH:\n return 'ends with';\n case StringCondition.IS_NULL:\n return 'is null';\n case StringCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nexport function getLabelForDateCondition(condition: DateCondition): string {\n switch (condition) {\n case DateCondition.IS_EXACTLY:\n return 'is';\n case DateCondition.IS_NOT_EXACTLY:\n return 'is not';\n case DateCondition.IS_BEFORE:\n return 'is before';\n case DateCondition.IS_BEFORE_OR_EQUAL:\n return 'is before or equal';\n case DateCondition.IS_AFTER:\n return 'is after';\n case DateCondition.IS_AFTER_OR_EQUAL:\n return 'is after or equal';\n case DateCondition.IS_NULL:\n return 'is null';\n case DateCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nexport function getLabelForBooleanCondition(\n condition: BooleanCondition\n): string {\n switch (condition) {\n case BooleanCondition.IS_TRUE:\n return 'is true';\n case BooleanCondition.IS_FALSE:\n return 'is false';\n case BooleanCondition.IS_NULL:\n return 'is null';\n case BooleanCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nexport function getLabelForCharCondition(condition: CharCondition): string {\n switch (condition) {\n case CharCondition.IS_EQUAL:\n return 'is';\n case CharCondition.IS_NOT_EQUAL:\n return 'is not';\n case CharCondition.IS_NULL:\n return 'is null';\n case CharCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nexport function getDefaultConditionForType(columnType: string): Condition {\n if (TableUtils.isNumberType(columnType)) {\n return NumberCondition.IS_EQUAL;\n }\n if (TableUtils.isCharType(columnType)) {\n return CharCondition.IS_EQUAL;\n }\n if (TableUtils.isStringType(columnType)) {\n return StringCondition.IS_EXACTLY;\n }\n if (TableUtils.isDateType(columnType)) {\n return DateCondition.IS_EXACTLY;\n }\n if (TableUtils.isBooleanType(columnType)) {\n return BooleanCondition.IS_TRUE;\n }\n\n throw new Error('Invalid column type');\n}\n\nexport function getDefaultValueForType(columnType: string): string | undefined {\n if (TableUtils.isCharType(columnType)) {\n return '';\n }\n if (TableUtils.isStringType(columnType)) {\n return '';\n }\n return undefined;\n}\n\nexport function getConditionConfig(config: BaseFormatConfig): ConditionConfig {\n const { condition, value, start, end } = config;\n return { condition, value, start, end };\n}\n\nexport function getDefaultConditionConfigForType(\n type: string\n): ConditionConfig {\n return {\n condition: getDefaultConditionForType(type),\n value: getDefaultValueForType(type),\n start: undefined,\n end: undefined,\n };\n}\n\nexport function getDefaultStyleConfig(): FormatStyleConfig {\n return {\n type: FormatStyleType.NO_FORMATTING,\n };\n}\n\nfunction getShortLabelForStringCondition(condition: StringCondition): string {\n switch (condition) {\n case StringCondition.IS_EXACTLY:\n return '==';\n case StringCondition.IS_NOT_EXACTLY:\n return '!=';\n case StringCondition.CONTAINS:\n return 'contains';\n case StringCondition.DOES_NOT_CONTAIN:\n return 'does not contain';\n case StringCondition.STARTS_WITH:\n return 'starts with';\n case StringCondition.ENDS_WITH:\n return 'ends with';\n case StringCondition.IS_NULL:\n return 'is null';\n case StringCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nfunction getShortLabelForDateCondition(condition: DateCondition): string {\n switch (condition) {\n case DateCondition.IS_EXACTLY:\n return '==';\n case DateCondition.IS_NOT_EXACTLY:\n return '!=';\n case DateCondition.IS_BEFORE:\n return '<';\n case DateCondition.IS_BEFORE_OR_EQUAL:\n return '<=';\n case DateCondition.IS_AFTER:\n return '>';\n case DateCondition.IS_AFTER_OR_EQUAL:\n return '>=';\n case DateCondition.IS_NULL:\n return 'is null';\n case DateCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nfunction getShortLabelForBooleanCondition(condition: BooleanCondition): string {\n switch (condition) {\n case BooleanCondition.IS_TRUE:\n return 'is true';\n case BooleanCondition.IS_FALSE:\n return 'is false';\n case BooleanCondition.IS_NULL:\n return 'is null';\n case BooleanCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nfunction getShortLabelForCharCondition(condition: CharCondition): string {\n switch (condition) {\n case CharCondition.IS_EQUAL:\n return '==';\n case CharCondition.IS_NOT_EQUAL:\n return '!=';\n case CharCondition.IS_NULL:\n return 'is null';\n case CharCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nexport function getShortLabelForNumberCondition(\n condition: NumberCondition\n): string {\n switch (condition) {\n case NumberCondition.IS_EQUAL:\n return '==';\n case NumberCondition.IS_NOT_EQUAL:\n return '!=';\n case NumberCondition.IS_BETWEEN:\n return '==';\n case NumberCondition.GREATER_THAN:\n return '>';\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n return '>=';\n case NumberCondition.LESS_THAN:\n return '<';\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return '<=';\n case NumberCondition.IS_NULL:\n return 'is null';\n case NumberCondition.IS_NOT_NULL:\n return 'is not null';\n }\n}\n\nexport function getTextForNumberCondition(\n columnName: ColumnName,\n condition: NumberCondition,\n value: unknown,\n start: unknown,\n end: unknown\n): string {\n switch (condition) {\n case NumberCondition.IS_EQUAL:\n return `${columnName} == ${value}`;\n case NumberCondition.IS_NOT_EQUAL:\n return `${columnName} != ${value}`;\n case NumberCondition.IS_BETWEEN:\n return `${columnName} > ${start} && ${columnName} < ${end}`;\n case NumberCondition.GREATER_THAN:\n return `${columnName} > ${value}`;\n case NumberCondition.GREATER_THAN_OR_EQUAL:\n return `${columnName} >= ${value}`;\n case NumberCondition.LESS_THAN:\n return `${columnName} < ${value}`;\n case NumberCondition.LESS_THAN_OR_EQUAL:\n return `${columnName} <= ${value}`;\n case NumberCondition.IS_NULL:\n return `${columnName} == null`;\n case NumberCondition.IS_NOT_NULL:\n return `${columnName} != null`;\n }\n}\n\nexport function getTextForStringCondition(\n columnName: ColumnName,\n condition: StringCondition,\n value: unknown\n): string {\n switch (condition) {\n case StringCondition.IS_EXACTLY:\n return `${columnName} == \"${value}\"`;\n case StringCondition.IS_NOT_EXACTLY:\n return `${columnName} != \"${value}\"`;\n case StringCondition.CONTAINS:\n return `${columnName} != null && ${columnName}.contains(\"${value}\")`;\n case StringCondition.DOES_NOT_CONTAIN:\n return `${columnName} != null && !${columnName}.contains(\"${value}\")`;\n case StringCondition.STARTS_WITH:\n return `${columnName} != null && ${columnName}.startsWith(\"${value}\")`;\n case StringCondition.ENDS_WITH:\n return `${columnName} != null && ${columnName}.endsWith(\"${value}\")`;\n case StringCondition.IS_NULL:\n return `${columnName} == null`;\n case StringCondition.IS_NOT_NULL:\n return `${columnName} != null`;\n }\n}\n\nexport function getTextForDateCondition(\n dh: typeof DhType,\n columnName: ColumnName,\n condition: DateCondition,\n value: unknown\n): string {\n let formattedValue = value;\n if (typeof value === 'string') {\n // The date time formatting may return a timezone that is not supported by the backend (e.g. 'EDT' instead of 'ET')\n // so we need to parse the date time string and reformat it with a supported timezone ID.\n // Note that we know this will be valid because the input value has already been validated with isDateConditionValid.\n const [dateTimeString, ...rest] = value.split(' ');\n const tzCode = rest.join(' ');\n const tz = dh.i18n.TimeZone.getTimeZone(tzCode);\n formattedValue = `${dateTimeString} ${tz.id}`;\n }\n\n switch (condition) {\n case DateCondition.IS_EXACTLY:\n return `${columnName} == '${formattedValue}'`;\n case DateCondition.IS_NOT_EXACTLY:\n return `${columnName} != '${formattedValue}'`;\n case DateCondition.IS_BEFORE:\n return `${columnName} < '${formattedValue}'`;\n case DateCondition.IS_BEFORE_OR_EQUAL:\n return `${columnName} <= '${formattedValue}'`;\n case DateCondition.IS_AFTER:\n return `${columnName} > '${formattedValue}'`;\n case DateCondition.IS_AFTER_OR_EQUAL:\n return `${columnName} >= '${formattedValue}'`;\n case DateCondition.IS_NULL:\n return `${columnName} == null`;\n case DateCondition.IS_NOT_NULL:\n return `${columnName} != null`;\n }\n}\n\nexport function getTextForBooleanCondition(\n columnName: ColumnName,\n condition: BooleanCondition\n): string {\n switch (condition) {\n case BooleanCondition.IS_TRUE:\n return `${columnName} == true`;\n case BooleanCondition.IS_FALSE:\n return `${columnName} == false`;\n case BooleanCondition.IS_NULL:\n return `${columnName} == null`;\n case BooleanCondition.IS_NOT_NULL:\n return `${columnName} != null`;\n }\n}\n\nexport function getTextForCharCondition(\n columnName: ColumnName,\n condition: CharCondition,\n value: unknown\n): string {\n switch (condition) {\n case CharCondition.IS_EQUAL:\n return `${columnName} == '${value}'`;\n case CharCondition.IS_NOT_EQUAL:\n return `${columnName} != '${value}'`;\n case CharCondition.IS_NULL:\n return `isNull(${columnName})`;\n case CharCondition.IS_NOT_NULL:\n return `!isNull(${columnName})`;\n }\n}\n\nexport function getShortLabelForConditionType(\n columnType: string,\n condition: Condition\n): string {\n if (TableUtils.isNumberType(columnType)) {\n return getShortLabelForNumberCondition(condition as NumberCondition);\n }\n if (TableUtils.isCharType(columnType)) {\n return getShortLabelForCharCondition(condition as CharCondition);\n }\n if (TableUtils.isStringType(columnType)) {\n return getShortLabelForStringCondition(condition as StringCondition);\n }\n if (TableUtils.isDateType(columnType)) {\n return getShortLabelForDateCondition(condition as DateCondition);\n }\n if (TableUtils.isBooleanType(columnType)) {\n return getShortLabelForBooleanCondition(condition as BooleanCondition);\n }\n\n throw new Error('Invalid column type');\n}\n\n/**\n * Get format columns array for the given columns and formatting rules\n * @param columns Available columns\n * @param rules Formatting rules to build the format columns from\n * @returns Array of format columns\n */\nexport function getFormatColumns(\n dh: typeof DhType,\n columns: readonly DhType.Column[],\n rules: readonly FormattingRule[]\n): DhType.CustomColumn[] {\n if (rules === undefined) {\n log.debug(`no rules passed.`);\n return [];\n }\n const result: DhType.CustomColumn[] = [];\n // There can be only one row format custom column\n // and multiple column format custom columns (one per column)\n let rowFormatConfig: [string, DhType.CustomColumn];\n const columnFormatConfigMap = new Map<\n string,\n [string, DhType.CustomColumn]\n >();\n rules.forEach(({ config, type: formatterType }) => {\n const { column } = config;\n // Check both name and type because the type can change\n const col = columns.find(\n ({ name, type }) => name === column.name && type === column.type\n );\n if (col === undefined) {\n log.debug(\n `Column ${column.name}:${column.type} not found. Ignoring format rule.`,\n config\n );\n return;\n }\n // Stack ternary format conditions by column\n const [prevRule, prevFormatColumn] = (formatterType ===\n FormatterType.CONDITIONAL\n ? columnFormatConfigMap.get(col.name)\n : rowFormatConfig) ?? ['null', undefined];\n const rule = makeTernaryFormatRule(dh, config, prevRule);\n if (rule === undefined) {\n log.debug(`Ignoring format rule.`, config);\n return;\n }\n // Replace existing formatColumn with the new stacked format\n const index =\n prevFormatColumn === undefined ? -1 : result.indexOf(prevFormatColumn);\n if (index > -1) {\n result.splice(index, 1);\n }\n const formatColumn =\n formatterType === FormatterType.CONDITIONAL\n ? makeColumnFormatColumn(col, rule)\n : makeRowFormatColumn(dh, rule);\n result.push(formatColumn);\n if (formatterType === FormatterType.CONDITIONAL) {\n columnFormatConfigMap.set(col.name, [rule, formatColumn]);\n } else {\n rowFormatConfig = [rule, formatColumn];\n }\n });\n\n return result;\n}\n\n/**\n * Validate that a given date condition + value pair is valid.\n * @param condition\n * @param value\n */\nexport function isDateConditionValid(\n dh: typeof DhType,\n condition: DateCondition,\n value?: string\n): boolean {\n switch (condition) {\n case DateCondition.IS_NULL:\n case DateCondition.IS_NOT_NULL:\n return true;\n\n default: {\n const [dateTimeString, ...rest] = (value ?? '').split(' ');\n // Reconstitute all tokens after the first ' ' in case the user included garbage data at the end\n // e.g. '2020-01-01 NY blah'\n const tzCode = rest.join(' ');\n\n try {\n DateUtils.parseDateTimeString(dateTimeString);\n } catch (e) {\n log.debug('Invalid datetime string', dateTimeString);\n return false;\n }\n\n try {\n dh.i18n.TimeZone.getTimeZone(tzCode);\n } catch (e) {\n log.debug('Invalid timezone string', tzCode);\n return false;\n }\n\n return true;\n }\n }\n}\n\nexport function isSupportedColumn({ type }: ModelColumn): boolean {\n return (\n TableUtils.isNumberType(type) ||\n TableUtils.isCharType(type) ||\n TableUtils.isStringType(type) ||\n TableUtils.isDateType(type) ||\n TableUtils.isBooleanType(type)\n );\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/iris-grid",
3
- "version": "1.18.0",
3
+ "version": "1.18.1",
4
4
  "description": "Deephaven Iris Grid",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -81,5 +81,5 @@
81
81
  "publishConfig": {
82
82
  "access": "public"
83
83
  },
84
- "gitHead": "bdbf87598bc177c76079c216e9d364100f135718"
84
+ "gitHead": "ce430c4d4bf89c95a6a9ade1d8bf3a88becad98d"
85
85
  }