@deephaven/iris-grid 1.26.0 → 1.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/IrisGridUtils.d.ts +7 -0
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +31 -5
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts +1 -0
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +177 -167
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +2 -2
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +23 -18
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +27 -7
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +172 -122
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/MultiColumnFormatEditor.d.ts +18 -0
- package/dist/sidebar/conditional-formatting/MultiColumnFormatEditor.d.ts.map +1 -0
- package/dist/sidebar/conditional-formatting/{ColumnFormatEditor.js → MultiColumnFormatEditor.js} +110 -22
- package/dist/sidebar/conditional-formatting/MultiColumnFormatEditor.js.map +1 -0
- package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js +8 -5
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.js +1 -1
- package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -1
- package/package.json +5 -5
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts +0 -11
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +0 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionalFormatEditor.js","names":["React","useCallback","useState","classNames","Button","Log","FormatColumnWhereIcon","FormatRowWhereIcon","ColumnFormatEditor","RowFormatEditor","FormatterType","isSupportedColumn","jsx","_jsx","jsxs","_jsxs","log","module","DEFAULT_CALLBACK","undefined","getFormatterTypeIcon","option","CONDITIONAL","ROWS","getFormatterTypeLabel","formatterTypes","ConditionalFormatEditor","props","_defaultRule$type","originalColumns","columns","dh","_props$onSave","onSave","_props$onUpdate","onUpdate","_props$onCancel","onCancel","defaultRule","rule","filter","_useState","type","_useState2","_slicedToArray","selectedFormatter","setFormatter","_useState3","_useState4","setRule","_useState5","_useState6","isValid","setIsValid","handleCancel","handleSave","error","handleFormatterChange","value","debug","handleRuleChange","ruleConfig","isRuleValid","updatedRule","config","className","children","htmlFor","map","index","active","onClick","onChange","kind","disabled"],"sources":["../../../src/sidebar/conditional-formatting/ConditionalFormatEditor.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport classNames from 'classnames';\nimport { Button } from '@deephaven/components';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { FormatColumnWhereIcon, FormatRowWhereIcon } from '../icons';\nimport ColumnFormatEditor from './ColumnFormatEditor';\nimport RowFormatEditor from './RowFormatEditor';\nimport {\n type BaseFormatConfig,\n FormatterType,\n type FormattingRule,\n isSupportedColumn,\n type ModelColumn,\n} from './ConditionalFormattingUtils';\nimport './ConditionalFormatEditor.scss';\n\nconst log = Log.module('ConditionalFormatEditor');\n\nexport type SaveCallback = (rule: FormattingRule) => void;\n\nexport type UpdateCallback = (rule?: FormattingRule) => void;\n\nexport type CancelCallback = () => void;\n\nexport interface ConditionalFormatEditorProps {\n dh: typeof DhType;\n columns: readonly ModelColumn[];\n rule?: FormattingRule;\n onCancel?: CancelCallback;\n onSave?: SaveCallback;\n onUpdate?: UpdateCallback;\n}\n\nconst DEFAULT_CALLBACK = (): void => undefined;\n\nfunction getFormatterTypeIcon(option: FormatterType): JSX.Element | undefined {\n switch (option) {\n case FormatterType.CONDITIONAL:\n return <FormatColumnWhereIcon />;\n case FormatterType.ROWS:\n return <FormatRowWhereIcon />;\n }\n}\n\nfunction getFormatterTypeLabel(option: FormatterType): string {\n switch (option) {\n case FormatterType.CONDITIONAL:\n return 'Conditional';\n case FormatterType.ROWS:\n return 'Rows';\n }\n}\n\nconst formatterTypes = [FormatterType.CONDITIONAL, FormatterType.ROWS];\n\nfunction ConditionalFormatEditor(\n props: ConditionalFormatEditorProps\n): JSX.Element {\n const {\n columns: originalColumns,\n dh,\n onSave = DEFAULT_CALLBACK,\n onUpdate = DEFAULT_CALLBACK,\n onCancel = DEFAULT_CALLBACK,\n rule: defaultRule,\n } = props;\n\n const columns = originalColumns.filter(isSupportedColumn);\n\n const [selectedFormatter, setFormatter] = useState(\n defaultRule?.type ?? formatterTypes[0]\n );\n const [rule, setRule] = useState(defaultRule);\n const [isValid, setIsValid] = useState(false);\n\n const handleCancel = useCallback(() => {\n onCancel();\n }, [onCancel]);\n\n const handleSave = useCallback(() => {\n if (rule === undefined) {\n log.error('Rule is not defined.');\n return;\n }\n onSave(rule);\n }, [onSave, rule]);\n\n const handleFormatterChange = useCallback((value: FormatterType) => {\n log.debug('handleFormatterChange', value);\n setFormatter(value);\n }, []);\n\n const handleRuleChange = useCallback(\n (ruleConfig: BaseFormatConfig, isRuleValid: boolean) => {\n log.debug('handleRuleChange', ruleConfig, isRuleValid, selectedFormatter);\n const updatedRule = {\n type: selectedFormatter,\n config: ruleConfig,\n };\n setRule(updatedRule);\n setIsValid(isRuleValid);\n onUpdate(isRuleValid ? updatedRule : undefined);\n },\n [onUpdate, selectedFormatter]\n );\n\n return (\n <div className=\"conditional-format-editor form\">\n <div className=\"mb-2\">\n <label className=\"mb-0\" htmlFor=\"formatter-select\">\n Select Formatter\n </label>\n\n <div className=\"formatter-list\">\n {formatterTypes.map((type, index) => (\n <div key={type} className=\"formatter-type\">\n <button\n type=\"button\"\n className={classNames('btn', 'btn-icon', 'btn-formatter-type', {\n active: type === selectedFormatter,\n })}\n data-index={index}\n onClick={() => handleFormatterChange(type)}\n >\n {getFormatterTypeIcon(type)}\n {getFormatterTypeLabel(type)}\n </button>\n </div>\n ))}\n </div>\n </div>\n {selectedFormatter === FormatterType.CONDITIONAL && (\n <ColumnFormatEditor\n columns={columns}\n dh={dh}\n config={rule?.config}\n onChange={handleRuleChange}\n />\n )}\n {selectedFormatter === FormatterType.ROWS && (\n <RowFormatEditor\n columns={columns}\n config={rule?.config}\n dh={dh}\n onChange={handleRuleChange}\n />\n )}\n <hr />\n <div className=\"d-flex justify-content-end my-3\">\n <Button kind=\"secondary\" onClick={handleCancel} className=\"mr-2\">\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n onClick={handleSave}\n disabled={rule === undefined || !isValid}\n >\n Done\n </Button>\n </div>\n </div>\n );\n}\n\nexport default ConditionalFormatEditor;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ConditionalFormatEditor.js","names":["React","useCallback","useState","classNames","Button","Log","FormatColumnWhereIcon","FormatRowWhereIcon","MultiColumnFormatEditor","RowFormatEditor","FormatterType","isSupportedColumn","jsx","_jsx","jsxs","_jsxs","log","module","DEFAULT_CALLBACK","undefined","getFormatterTypeIcon","option","CONDITIONAL","ROWS","getFormatterTypeLabel","formatterTypes","ConditionalFormatEditor","props","_defaultRule$type","originalColumns","columns","dh","_props$onSave","onSave","_props$onUpdate","onUpdate","_props$onCancel","onCancel","defaultRule","rule","filter","_useState","type","_useState2","_slicedToArray","selectedFormatter","setFormatter","_useState3","_useState4","setRule","_useState5","_useState6","isValid","setIsValid","handleCancel","handleSave","error","handleFormatterChange","value","debug","handleRuleChange","ruleConfig","isRuleValid","updatedRule","config","className","children","htmlFor","map","index","active","onClick","onChange","kind","disabled"],"sources":["../../../src/sidebar/conditional-formatting/ConditionalFormatEditor.tsx"],"sourcesContent":["import React, { useCallback, useState } from 'react';\nimport classNames from 'classnames';\nimport { Button } from '@deephaven/components';\nimport type { dh as DhType } from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport { FormatColumnWhereIcon, FormatRowWhereIcon } from '../icons';\nimport MultiColumnFormatEditor from './MultiColumnFormatEditor';\nimport RowFormatEditor from './RowFormatEditor';\nimport {\n type BaseFormatConfig,\n FormatterType,\n type FormattingRule,\n isSupportedColumn,\n type ModelColumn,\n} from './ConditionalFormattingUtils';\nimport './ConditionalFormatEditor.scss';\n\nconst log = Log.module('ConditionalFormatEditor');\n\nexport type SaveCallback = (rule: FormattingRule) => void;\n\nexport type UpdateCallback = (rule?: FormattingRule) => void;\n\nexport type CancelCallback = () => void;\n\nexport interface ConditionalFormatEditorProps {\n dh: typeof DhType;\n columns: readonly ModelColumn[];\n rule?: FormattingRule;\n onCancel?: CancelCallback;\n onSave?: SaveCallback;\n onUpdate?: UpdateCallback;\n}\n\nconst DEFAULT_CALLBACK = (): void => undefined;\n\nfunction getFormatterTypeIcon(option: FormatterType): JSX.Element | undefined {\n switch (option) {\n case FormatterType.CONDITIONAL:\n return <FormatColumnWhereIcon />;\n case FormatterType.ROWS:\n return <FormatRowWhereIcon />;\n }\n}\n\nfunction getFormatterTypeLabel(option: FormatterType): string {\n switch (option) {\n case FormatterType.CONDITIONAL:\n return 'Conditional';\n case FormatterType.ROWS:\n return 'Rows';\n }\n}\n\nconst formatterTypes = [FormatterType.CONDITIONAL, FormatterType.ROWS];\n\nfunction ConditionalFormatEditor(\n props: ConditionalFormatEditorProps\n): JSX.Element {\n const {\n columns: originalColumns,\n dh,\n onSave = DEFAULT_CALLBACK,\n onUpdate = DEFAULT_CALLBACK,\n onCancel = DEFAULT_CALLBACK,\n rule: defaultRule,\n } = props;\n\n const columns = originalColumns.filter(isSupportedColumn);\n\n const [selectedFormatter, setFormatter] = useState(\n defaultRule?.type ?? formatterTypes[0]\n );\n const [rule, setRule] = useState(defaultRule);\n const [isValid, setIsValid] = useState(false);\n\n const handleCancel = useCallback(() => {\n onCancel();\n }, [onCancel]);\n\n const handleSave = useCallback(() => {\n if (rule === undefined) {\n log.error('Rule is not defined.');\n return;\n }\n onSave(rule);\n }, [onSave, rule]);\n\n const handleFormatterChange = useCallback((value: FormatterType) => {\n log.debug('handleFormatterChange', value);\n setFormatter(value);\n }, []);\n\n const handleRuleChange = useCallback(\n (ruleConfig: BaseFormatConfig, isRuleValid: boolean) => {\n log.debug('handleRuleChange', ruleConfig, isRuleValid, selectedFormatter);\n const updatedRule = {\n type: selectedFormatter,\n config: ruleConfig,\n };\n setRule(updatedRule);\n setIsValid(isRuleValid);\n onUpdate(isRuleValid ? updatedRule : undefined);\n },\n [onUpdate, selectedFormatter]\n );\n\n return (\n <div className=\"conditional-format-editor form\">\n <div className=\"mb-2\">\n <label className=\"mb-0\" htmlFor=\"formatter-select\">\n Select Formatter\n </label>\n\n <div className=\"formatter-list\">\n {formatterTypes.map((type, index) => (\n <div key={type} className=\"formatter-type\">\n <button\n type=\"button\"\n className={classNames('btn', 'btn-icon', 'btn-formatter-type', {\n active: type === selectedFormatter,\n })}\n data-index={index}\n onClick={() => handleFormatterChange(type)}\n >\n {getFormatterTypeIcon(type)}\n {getFormatterTypeLabel(type)}\n </button>\n </div>\n ))}\n </div>\n </div>\n {selectedFormatter === FormatterType.CONDITIONAL && (\n <MultiColumnFormatEditor\n columns={columns}\n dh={dh}\n config={rule?.config}\n onChange={handleRuleChange}\n />\n )}\n {selectedFormatter === FormatterType.ROWS && (\n <RowFormatEditor\n columns={columns}\n config={rule?.config}\n dh={dh}\n onChange={handleRuleChange}\n />\n )}\n <hr />\n <div className=\"d-flex justify-content-end my-3\">\n <Button kind=\"secondary\" onClick={handleCancel} className=\"mr-2\">\n Cancel\n </Button>\n <Button\n kind=\"primary\"\n onClick={handleSave}\n disabled={rule === undefined || !isValid}\n >\n Done\n </Button>\n </div>\n </div>\n );\n}\n\nexport default ConditionalFormatEditor;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionalFormattingMenu.d.ts","sourceRoot":"","sources":["../../../src/sidebar/conditional-formatting/ConditionalFormattingMenu.tsx"],"names":[],"mappings":"AAaA,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EAEL,KAAK,cAAc,
|
|
1
|
+
{"version":3,"file":"ConditionalFormattingMenu.d.ts","sourceRoot":"","sources":["../../../src/sidebar/conditional-formatting/ConditionalFormattingMenu.tsx"],"names":[],"mappings":"AAaA,OAAO,kCAAkC,CAAC;AAC1C,OAAO,EAEL,KAAK,cAAc,EASpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIpD,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,KAAK,IAAI,CAAC;AAExE,MAAM,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;AAErD,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC;AAExC,MAAM,MAAM,8BAA8B,GAAG;IAC3C,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;IACjC,cAAc,CAAC,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B,CAAC;AA0DF,iBAAS,yBAAyB,CAChC,KAAK,EAAE,8BAA8B,GACpC,GAAG,CAAC,OAAO,CAwJb;AAED,eAAe,yBAAyB,CAAC"}
|
|
@@ -12,34 +12,39 @@ import { Button, DragUtils, Tooltip } from '@deephaven/components';
|
|
|
12
12
|
import { TableUtils } from '@deephaven/jsapi-utils';
|
|
13
13
|
import Log from '@deephaven/log';
|
|
14
14
|
import "./ConditionalFormattingMenu.css";
|
|
15
|
-
import { FormatterType, getBackgroundForStyleConfig, getColorForStyleConfig, getShortLabelForConditionType, NumberCondition, StringCondition
|
|
15
|
+
import { FormatterType, BooleanCondition, formatRHV, getBackgroundForStyleConfig, getColorForStyleConfig, getShortLabelForConditionType, NumberCondition, StringCondition } from "./ConditionalFormattingUtils.js";
|
|
16
16
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
17
|
var log = Log.module('ConditionalFormattingMenu');
|
|
18
18
|
var DEFAULT_CALLBACK = () => undefined;
|
|
19
19
|
function getRuleValue(config) {
|
|
20
|
-
var
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (
|
|
25
|
-
return
|
|
26
|
-
}
|
|
27
|
-
if (TableUtils.isStringType(type)) {
|
|
28
|
-
return config.condition === StringCondition.IS_NULL || config.condition === StringCondition.IS_NOT_NULL ? '' : "\"".concat(config.value, "\"");
|
|
29
|
-
}
|
|
30
|
-
if (TableUtils.isDateType(type)) {
|
|
31
|
-
return config.condition === DateCondition.IS_NULL || config.condition === DateCondition.IS_NOT_NULL ? '' : "".concat(config.value);
|
|
20
|
+
var _formatRHV;
|
|
21
|
+
var type = config.leftHandValue.type;
|
|
22
|
+
|
|
23
|
+
// Null/not-null conditions have no value to display
|
|
24
|
+
if (config.condition === StringCondition.IS_NULL || config.condition === StringCondition.IS_NOT_NULL) {
|
|
25
|
+
return '';
|
|
32
26
|
}
|
|
33
|
-
|
|
27
|
+
|
|
28
|
+
// Boolean IS_TRUE/IS_FALSE have no RHV; IS_EQUAL/IS_NOT_EQUAL do
|
|
29
|
+
if (TableUtils.isBooleanType(type) && (config.condition === BooleanCondition.IS_TRUE || config.condition === BooleanCondition.IS_FALSE)) {
|
|
34
30
|
return '';
|
|
35
31
|
}
|
|
36
|
-
|
|
32
|
+
if (!TableUtils.isNumberType(type) && !TableUtils.isCharType(type) && !TableUtils.isStringType(type) && !TableUtils.isDateType(type) && !TableUtils.isBooleanType(type)) {
|
|
33
|
+
throw new Error("Invalid column type ".concat(type, " in getRuleValue"));
|
|
34
|
+
}
|
|
35
|
+
var quote = TableUtils.isStringType(type) ? '"' : '';
|
|
36
|
+
return (_formatRHV = formatRHV(config.rightHandValue, quote)) !== null && _formatRHV !== void 0 ? _formatRHV : '';
|
|
37
37
|
}
|
|
38
38
|
function getRuleTitle(config) {
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
var _config$leftHandValue = config.leftHandValue,
|
|
40
|
+
lhvName = _config$leftHandValue.name,
|
|
41
|
+
lhvType = _config$leftHandValue.type;
|
|
42
|
+
var formattedColumns = config.formattedColumns;
|
|
43
|
+
var prefix = formattedColumns.length > 0 ? "[".concat(formattedColumns.map(c => c.name).join(', '), "] = ") : '';
|
|
44
|
+
if (TableUtils.isNumberType(lhvType) && config.condition === NumberCondition.IS_BETWEEN) {
|
|
45
|
+
return "".concat(prefix).concat(config.start, " < ").concat(lhvName, " < ").concat(config.end);
|
|
41
46
|
}
|
|
42
|
-
return "".concat(
|
|
47
|
+
return "".concat(prefix).concat(lhvName, " ").concat(getShortLabelForConditionType(lhvType, config.condition), " \n ").concat(getRuleValue(config));
|
|
43
48
|
}
|
|
44
49
|
function ConditionalFormattingMenu(props) {
|
|
45
50
|
var _props$rules = props.rules,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionalFormattingMenu.js","names":["React","useCallback","DragDropContext","Draggable","Droppable","classNames","FontAwesomeIcon","dhNewCircleLargeFilled","vsGripper","vsTrash","Button","DragUtils","Tooltip","TableUtils","Log","FormatterType","getBackgroundForStyleConfig","getColorForStyleConfig","getShortLabelForConditionType","NumberCondition","StringCondition","DateCondition","jsx","_jsx","jsxs","_jsxs","log","module","DEFAULT_CALLBACK","undefined","getRuleValue","config","type","column","isNumberType","condition","IS_NULL","IS_NOT_NULL","concat","value","isCharType","isStringType","isDateType","isBooleanType","Error","getRuleTitle","IS_BETWEEN","start","name","end","ConditionalFormattingMenu","props","_props$rules","rules","_props$onChange","onChange","_props$onCreate","onCreate","_props$onSelect","onSelect","handleRuleClick","e","rule","index","stopPropagation","debug","handleDeleteClick","updatedRules","splice","handleDragHandlerClick","handleDragEnd","result","stopDragging","destination","sourceIndex","source","destinationIndex","sourceInput","className","children","onDragStart","startDragging","onDragEnd","droppableId","provided","snapshot","_objectSpread","ref","innerRef","droppableProps","dragging","draggingFromThisWith","length","map","draggableId","disableInteractiveElementBlocking","role","tabIndex","onClick","isDragging","draggableProps","style","backgroundColor","color","ROWS","kind","icon","tooltip","dragHandleProps","placeholder"],"sources":["../../../src/sidebar/conditional-formatting/ConditionalFormattingMenu.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport {\n DragDropContext,\n Draggable,\n Droppable,\n type DropResult,\n} from '@hello-pangea/dnd';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhNewCircleLargeFilled, vsGripper, vsTrash } from '@deephaven/icons';\nimport { Button, DragUtils, Tooltip } from '@deephaven/components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport './ConditionalFormattingMenu.scss';\nimport {\n type BaseFormatConfig,\n type FormattingRule,\n FormatterType,\n getBackgroundForStyleConfig,\n getColorForStyleConfig,\n getShortLabelForConditionType,\n NumberCondition,\n StringCondition,\n DateCondition,\n} from './ConditionalFormattingUtils';\nimport { type ColumnName } from '../../CommonTypes';\n\nconst log = Log.module('ConditionalFormattingMenu');\n\nexport type ChangeCallback = (rules: readonly FormattingRule[]) => void;\n\nexport type SelectCallback = (index: number) => void;\n\nexport type CreateCallback = () => void;\n\nexport type ConditionalFormattingMenuProps = {\n rules: readonly FormattingRule[];\n selectedColumn?: ColumnName;\n onChange?: ChangeCallback;\n onCreate?: CreateCallback;\n onSelect?: SelectCallback;\n};\n\nconst DEFAULT_CALLBACK = (): void => undefined;\n\nfunction getRuleValue(config: BaseFormatConfig): string {\n const {\n column: { type },\n } = config;\n if (TableUtils.isNumberType(type)) {\n return config.condition === NumberCondition.IS_NULL ||\n config.condition === NumberCondition.IS_NOT_NULL\n ? ''\n : `${config.value}`;\n }\n if (TableUtils.isCharType(type)) {\n return config.condition === DateCondition.IS_NULL ||\n config.condition === DateCondition.IS_NOT_NULL\n ? ''\n : `${config.value}`;\n }\n if (TableUtils.isStringType(type)) {\n return config.condition === StringCondition.IS_NULL ||\n config.condition === StringCondition.IS_NOT_NULL\n ? ''\n : `\"${config.value}\"`;\n }\n if (TableUtils.isDateType(type)) {\n return config.condition === DateCondition.IS_NULL ||\n config.condition === DateCondition.IS_NOT_NULL\n ? ''\n : `${config.value}`;\n }\n if (TableUtils.isBooleanType(type)) {\n return '';\n }\n throw new Error(`Invalid column type ${type} in getRuleValue`);\n}\n\nfunction getRuleTitle(config: BaseFormatConfig): string {\n if (\n TableUtils.isNumberType(config.column.type) &&\n config.condition === NumberCondition.IS_BETWEEN\n ) {\n return `${config.start} < ${config.column.name} < ${config.end}`;\n }\n return `${config.column.name} ${getShortLabelForConditionType(\n (config as BaseFormatConfig).column.type,\n (config as BaseFormatConfig).condition\n )} \n ${getRuleValue(config as BaseFormatConfig)}`;\n}\n\nfunction ConditionalFormattingMenu(\n props: ConditionalFormattingMenuProps\n): JSX.Element {\n const {\n rules = [],\n onChange = DEFAULT_CALLBACK,\n onCreate = DEFAULT_CALLBACK,\n onSelect = DEFAULT_CALLBACK,\n } = props;\n\n const handleRuleClick = useCallback(\n (e: React.MouseEvent, rule: FormattingRule, index: number) => {\n e.stopPropagation();\n log.debug('Rule clicked', rule, index);\n onSelect(index);\n },\n [onSelect]\n );\n\n const handleDeleteClick = useCallback(\n (e: React.MouseEvent, rule: FormattingRule, index: number) => {\n e.stopPropagation();\n log.debug('Delete button clicked', rule, index);\n const updatedRules = [...rules];\n updatedRules.splice(index, 1);\n onChange(updatedRules);\n },\n [onChange, rules]\n );\n\n const handleDragHandlerClick = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n }, []);\n\n const handleDragEnd = useCallback(\n (result: DropResult) => {\n DragUtils.stopDragging();\n\n // if dropped outside the list\n if (result.destination == null) {\n return;\n }\n const sourceIndex = result.source.index;\n const destinationIndex = result.destination.index;\n const updatedRules = [...rules];\n const sourceInput = rules[sourceIndex];\n\n updatedRules.splice(sourceIndex, 1);\n updatedRules.splice(destinationIndex, 0, sourceInput);\n\n onChange(updatedRules);\n },\n [onChange, rules]\n );\n\n // Display list of rules\n return (\n <div className=\"conditional-formatting-rules\">\n <DragDropContext\n onDragStart={DragUtils.startDragging}\n onDragEnd={handleDragEnd}\n >\n <Droppable droppableId=\"droppable-custom-columns\">\n {(provided, snapshot) => (\n <div\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n className={classNames('droppable-container', {\n dragging: snapshot.draggingFromThisWith,\n })}\n >\n {rules.length === 0 && (\n <div className=\"text-muted pl-2\">No formats defined</div>\n )}\n {rules.map((rule, index) => (\n <Draggable\n // eslint-disable-next-line react/no-array-index-key\n key={`${index}-${rule.type}`}\n draggableId={`${index}-${rule.type}`}\n index={index}\n disableInteractiveElementBlocking\n >\n {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n (provided, snapshot) => (\n <div\n role=\"menuitem\"\n tabIndex={0}\n onClick={e => handleRuleClick(e, rule, index)}\n className={classNames('draggable-container', {\n dragging: snapshot.isDragging,\n })}\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.draggableProps}\n >\n <div className=\"conditional-formatting-list-item\">\n <div className=\"formatting-item\">\n <div className=\"rule-icon\">\n <span\n className=\"rule-icon-bg\"\n style={{\n backgroundColor: getBackgroundForStyleConfig(\n (rule.config as BaseFormatConfig).style\n ),\n color: getColorForStyleConfig(\n (rule.config as BaseFormatConfig).style\n ),\n }}\n >\n {rule.type === FormatterType.ROWS\n ? 'row'\n : 'col'}\n </span>\n </div>\n <div className=\"rule-title\">\n {getRuleTitle(rule.config as BaseFormatConfig)}\n </div>\n <Button\n kind=\"ghost\"\n className=\"ml-1 px-2\"\n onClick={e => handleDeleteClick(e, rule, index)}\n icon={vsTrash}\n tooltip=\"Delete rule\"\n />\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon px-2 btn-drag-handle\"\n onClick={handleDragHandlerClick}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.dragHandleProps}\n >\n <Tooltip>Drag to re-order</Tooltip>\n <FontAwesomeIcon icon={vsGripper} />\n </button>\n </div>\n </div>\n </div>\n )\n }\n </Draggable>\n ))}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n <hr />\n <Button kind=\"ghost\" onClick={onCreate} icon={dhNewCircleLargeFilled}>\n Add New Rule\n </Button>\n </div>\n );\n}\n\nexport default ConditionalFormattingMenu;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"ConditionalFormattingMenu.js","names":["React","useCallback","DragDropContext","Draggable","Droppable","classNames","FontAwesomeIcon","dhNewCircleLargeFilled","vsGripper","vsTrash","Button","DragUtils","Tooltip","TableUtils","Log","FormatterType","BooleanCondition","formatRHV","getBackgroundForStyleConfig","getColorForStyleConfig","getShortLabelForConditionType","NumberCondition","StringCondition","jsx","_jsx","jsxs","_jsxs","log","module","DEFAULT_CALLBACK","undefined","getRuleValue","config","_formatRHV","type","leftHandValue","condition","IS_NULL","IS_NOT_NULL","isBooleanType","IS_TRUE","IS_FALSE","isNumberType","isCharType","isStringType","isDateType","Error","concat","quote","rightHandValue","getRuleTitle","_config$leftHandValue","lhvName","name","lhvType","formattedColumns","prefix","length","map","c","join","IS_BETWEEN","start","end","ConditionalFormattingMenu","props","_props$rules","rules","_props$onChange","onChange","_props$onCreate","onCreate","_props$onSelect","onSelect","handleRuleClick","e","rule","index","stopPropagation","debug","handleDeleteClick","updatedRules","splice","handleDragHandlerClick","handleDragEnd","result","stopDragging","destination","sourceIndex","source","destinationIndex","sourceInput","className","children","onDragStart","startDragging","onDragEnd","droppableId","provided","snapshot","_objectSpread","ref","innerRef","droppableProps","dragging","draggingFromThisWith","draggableId","disableInteractiveElementBlocking","role","tabIndex","onClick","isDragging","draggableProps","style","backgroundColor","color","ROWS","kind","icon","tooltip","dragHandleProps","placeholder"],"sources":["../../../src/sidebar/conditional-formatting/ConditionalFormattingMenu.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport {\n DragDropContext,\n Draggable,\n Droppable,\n type DropResult,\n} from '@hello-pangea/dnd';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhNewCircleLargeFilled, vsGripper, vsTrash } from '@deephaven/icons';\nimport { Button, DragUtils, Tooltip } from '@deephaven/components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport './ConditionalFormattingMenu.scss';\nimport {\n type BaseFormatConfig,\n type FormattingRule,\n FormatterType,\n BooleanCondition,\n formatRHV,\n getBackgroundForStyleConfig,\n getColorForStyleConfig,\n getShortLabelForConditionType,\n NumberCondition,\n StringCondition,\n} from './ConditionalFormattingUtils';\nimport { type ColumnName } from '../../CommonTypes';\n\nconst log = Log.module('ConditionalFormattingMenu');\n\nexport type ChangeCallback = (rules: readonly FormattingRule[]) => void;\n\nexport type SelectCallback = (index: number) => void;\n\nexport type CreateCallback = () => void;\n\nexport type ConditionalFormattingMenuProps = {\n rules: readonly FormattingRule[];\n selectedColumn?: ColumnName;\n onChange?: ChangeCallback;\n onCreate?: CreateCallback;\n onSelect?: SelectCallback;\n};\n\nconst DEFAULT_CALLBACK = (): void => undefined;\n\nfunction getRuleValue(config: BaseFormatConfig): string {\n const { type } = config.leftHandValue;\n\n // Null/not-null conditions have no value to display\n if (\n config.condition === StringCondition.IS_NULL ||\n config.condition === StringCondition.IS_NOT_NULL\n ) {\n return '';\n }\n\n // Boolean IS_TRUE/IS_FALSE have no RHV; IS_EQUAL/IS_NOT_EQUAL do\n if (\n TableUtils.isBooleanType(type) &&\n (config.condition === BooleanCondition.IS_TRUE ||\n config.condition === BooleanCondition.IS_FALSE)\n ) {\n return '';\n }\n\n if (\n !TableUtils.isNumberType(type) &&\n !TableUtils.isCharType(type) &&\n !TableUtils.isStringType(type) &&\n !TableUtils.isDateType(type) &&\n !TableUtils.isBooleanType(type)\n ) {\n throw new Error(`Invalid column type ${type} in getRuleValue`);\n }\n\n const quote = TableUtils.isStringType(type) ? '\"' : '';\n return formatRHV(config.rightHandValue, quote) ?? '';\n}\n\nfunction getRuleTitle(config: BaseFormatConfig): string {\n const { name: lhvName, type: lhvType } = config.leftHandValue;\n const { formattedColumns } = config;\n const prefix =\n formattedColumns.length > 0\n ? `[${formattedColumns.map(c => c.name).join(', ')}] = `\n : '';\n if (\n TableUtils.isNumberType(lhvType) &&\n config.condition === NumberCondition.IS_BETWEEN\n ) {\n return `${prefix}${config.start} < ${lhvName} < ${config.end}`;\n }\n return `${prefix}${lhvName} ${getShortLabelForConditionType(\n lhvType,\n config.condition\n )} \n ${getRuleValue(config)}`;\n}\n\nfunction ConditionalFormattingMenu(\n props: ConditionalFormattingMenuProps\n): JSX.Element {\n const {\n rules = [],\n onChange = DEFAULT_CALLBACK,\n onCreate = DEFAULT_CALLBACK,\n onSelect = DEFAULT_CALLBACK,\n } = props;\n\n const handleRuleClick = useCallback(\n (e: React.MouseEvent, rule: FormattingRule, index: number) => {\n e.stopPropagation();\n log.debug('Rule clicked', rule, index);\n onSelect(index);\n },\n [onSelect]\n );\n\n const handleDeleteClick = useCallback(\n (e: React.MouseEvent, rule: FormattingRule, index: number) => {\n e.stopPropagation();\n log.debug('Delete button clicked', rule, index);\n const updatedRules = [...rules];\n updatedRules.splice(index, 1);\n onChange(updatedRules);\n },\n [onChange, rules]\n );\n\n const handleDragHandlerClick = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n }, []);\n\n const handleDragEnd = useCallback(\n (result: DropResult) => {\n DragUtils.stopDragging();\n\n // if dropped outside the list\n if (result.destination == null) {\n return;\n }\n const sourceIndex = result.source.index;\n const destinationIndex = result.destination.index;\n const updatedRules = [...rules];\n const sourceInput = rules[sourceIndex];\n\n updatedRules.splice(sourceIndex, 1);\n updatedRules.splice(destinationIndex, 0, sourceInput);\n\n onChange(updatedRules);\n },\n [onChange, rules]\n );\n\n // Display list of rules\n return (\n <div className=\"conditional-formatting-rules\">\n <DragDropContext\n onDragStart={DragUtils.startDragging}\n onDragEnd={handleDragEnd}\n >\n <Droppable droppableId=\"droppable-custom-columns\">\n {(provided, snapshot) => (\n <div\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.droppableProps}\n className={classNames('droppable-container', {\n dragging: snapshot.draggingFromThisWith,\n })}\n >\n {rules.length === 0 && (\n <div className=\"text-muted pl-2\">No formats defined</div>\n )}\n {rules.map((rule, index) => (\n <Draggable\n // eslint-disable-next-line react/no-array-index-key\n key={`${index}-${rule.type}`}\n draggableId={`${index}-${rule.type}`}\n index={index}\n disableInteractiveElementBlocking\n >\n {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n (provided, snapshot) => (\n <div\n role=\"menuitem\"\n tabIndex={0}\n onClick={e => handleRuleClick(e, rule, index)}\n className={classNames('draggable-container', {\n dragging: snapshot.isDragging,\n })}\n ref={provided.innerRef}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.draggableProps}\n >\n <div className=\"conditional-formatting-list-item\">\n <div className=\"formatting-item\">\n <div className=\"rule-icon\">\n <span\n className=\"rule-icon-bg\"\n style={{\n backgroundColor: getBackgroundForStyleConfig(\n (rule.config as BaseFormatConfig).style\n ),\n color: getColorForStyleConfig(\n (rule.config as BaseFormatConfig).style\n ),\n }}\n >\n {rule.type === FormatterType.ROWS\n ? 'row'\n : 'col'}\n </span>\n </div>\n <div className=\"rule-title\">\n {getRuleTitle(rule.config as BaseFormatConfig)}\n </div>\n <Button\n kind=\"ghost\"\n className=\"ml-1 px-2\"\n onClick={e => handleDeleteClick(e, rule, index)}\n icon={vsTrash}\n tooltip=\"Delete rule\"\n />\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon px-2 btn-drag-handle\"\n onClick={handleDragHandlerClick}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...provided.dragHandleProps}\n >\n <Tooltip>Drag to re-order</Tooltip>\n <FontAwesomeIcon icon={vsGripper} />\n </button>\n </div>\n </div>\n </div>\n )\n }\n </Draggable>\n ))}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n <hr />\n <Button kind=\"ghost\" onClick={onCreate} icon={dhNewCircleLargeFilled}>\n Add New Rule\n </Button>\n </div>\n );\n}\n\nexport default ConditionalFormattingMenu;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,16 +6,30 @@ export type ModelColumn = {
|
|
|
6
6
|
};
|
|
7
7
|
export type Condition = NumberCondition | StringCondition | DateCondition | BooleanCondition | CharCondition;
|
|
8
8
|
export interface BaseFormatConfig {
|
|
9
|
-
|
|
9
|
+
/**
|
|
10
|
+
* The columns whose formatting is applied. When set, formatting is applied to
|
|
11
|
+
* each column while the condition is evaluated against `leftHandValue`. When
|
|
12
|
+
* absent, `leftHandValue` is used as both the condition column and the format
|
|
13
|
+
* target.
|
|
14
|
+
*/
|
|
15
|
+
formattedColumns: ModelColumn[];
|
|
16
|
+
/**
|
|
17
|
+
* The column whose value is evaluated as the left-hand side of the condition.
|
|
18
|
+
*/
|
|
19
|
+
leftHandValue: ModelColumn;
|
|
10
20
|
condition: Condition;
|
|
11
|
-
|
|
21
|
+
/**
|
|
22
|
+
* The right-hand side of the condition. May be a literal string value or a
|
|
23
|
+
* column reference (`ModelColumn`).
|
|
24
|
+
*/
|
|
25
|
+
rightHandValue?: string | ModelColumn;
|
|
12
26
|
start?: string;
|
|
13
27
|
end?: string;
|
|
14
28
|
style: FormatStyleConfig;
|
|
15
29
|
}
|
|
16
30
|
export interface ConditionConfig {
|
|
17
31
|
condition: Condition;
|
|
18
|
-
|
|
32
|
+
rightHandValue?: string | ModelColumn;
|
|
19
33
|
start?: string;
|
|
20
34
|
end?: string;
|
|
21
35
|
}
|
|
@@ -62,6 +76,8 @@ export declare enum DateCondition {
|
|
|
62
76
|
export declare enum BooleanCondition {
|
|
63
77
|
IS_TRUE = "is-true",
|
|
64
78
|
IS_FALSE = "is-false",
|
|
79
|
+
IS_EQUAL = "is-equal",
|
|
80
|
+
IS_NOT_EQUAL = "is-not-equal",
|
|
65
81
|
IS_NULL = "is-null",
|
|
66
82
|
IS_NOT_NULL = "is-not-null"
|
|
67
83
|
}
|
|
@@ -92,6 +108,13 @@ export declare function getLabelForStyleType(option: FormatStyleType): string;
|
|
|
92
108
|
export declare function getBackgroundForStyleConfig(config: FormatStyleConfig): string | undefined;
|
|
93
109
|
export declare function getColorForStyleConfig(config: FormatStyleConfig): string | undefined;
|
|
94
110
|
export declare function getStyleDBString(config: BaseFormatConfig): string | undefined;
|
|
111
|
+
/**
|
|
112
|
+
* Formats a rightHandValue for use in a condition expression.
|
|
113
|
+
* - If a ModelColumn: returns the column name as a bare identifier (no quoting)
|
|
114
|
+
* - If a string: wraps it in the given quote character
|
|
115
|
+
* - If undefined: returns undefined
|
|
116
|
+
*/
|
|
117
|
+
export declare function formatRHV(value: string | ModelColumn | undefined, quote: string): string | undefined;
|
|
95
118
|
export declare function getConditionDBString(dh: typeof DhType, config: BaseFormatConfig): string;
|
|
96
119
|
export declare function getLabelForNumberCondition(condition: NumberCondition): string;
|
|
97
120
|
export declare function getLabelForStringCondition(condition: StringCondition): string;
|
|
@@ -105,10 +128,7 @@ export declare function getDefaultConditionConfigForType(type: string): Conditio
|
|
|
105
128
|
export declare function getDefaultStyleConfig(): FormatStyleConfig;
|
|
106
129
|
export declare function getShortLabelForNumberCondition(condition: NumberCondition): string;
|
|
107
130
|
export declare function getTextForNumberCondition(columnName: ColumnName, condition: NumberCondition, value: unknown, start: unknown, end: unknown): string;
|
|
108
|
-
export declare function
|
|
109
|
-
export declare function getTextForDateCondition(dh: typeof DhType, columnName: ColumnName, condition: DateCondition, value: unknown): string;
|
|
110
|
-
export declare function getTextForBooleanCondition(columnName: ColumnName, condition: BooleanCondition): string;
|
|
111
|
-
export declare function getTextForCharCondition(columnName: ColumnName, condition: CharCondition, value: unknown): string;
|
|
131
|
+
export declare function getTextForBooleanCondition(columnName: ColumnName, condition: BooleanCondition, rightHandValue?: string | ModelColumn): string;
|
|
112
132
|
export declare function getShortLabelForConditionType(columnType: string, condition: Condition): string;
|
|
113
133
|
/**
|
|
114
134
|
* Get format columns array for the given columns and formatting rules
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionalFormattingUtils.d.ts","sourceRoot":"","sources":["../../../src/sidebar/conditional-formatting/ConditionalFormattingUtils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAO3D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIpD,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,SAAS,GACjB,eAAe,GACf,eAAe,GACf,aAAa,GACb,gBAAgB,GAChB,aAAa,CAAC;AAElB,MAAM,WAAW,gBAAgB;IAC/B,
|
|
1
|
+
{"version":3,"file":"ConditionalFormattingUtils.d.ts","sourceRoot":"","sources":["../../../src/sidebar/conditional-formatting/ConditionalFormattingUtils.ts"],"names":[],"mappings":"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"}
|