@deephaven/iris-grid 0.54.1-ui.1 → 0.55.1-beta.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.
Files changed (26) hide show
  1. package/dist/AdvancedFilterCreatorFilterItem.d.ts +1 -1
  2. package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
  3. package/dist/AdvancedFilterCreatorFilterItem.js +5 -5
  4. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  5. package/dist/GotoRow.js +10 -10
  6. package/dist/GotoRow.js.map +1 -1
  7. package/dist/sidebar/ChartBuilder.d.ts +4 -4
  8. package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
  9. package/dist/sidebar/ChartBuilder.js +19 -31
  10. package/dist/sidebar/ChartBuilder.js.map +1 -1
  11. package/dist/sidebar/SelectDistinctBuilder.d.ts +1 -1
  12. package/dist/sidebar/SelectDistinctBuilder.d.ts.map +1 -1
  13. package/dist/sidebar/SelectDistinctBuilder.js +5 -8
  14. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  15. package/dist/sidebar/TableCsvExporter.d.ts +1 -1
  16. package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
  17. package/dist/sidebar/TableCsvExporter.js +4 -4
  18. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  19. package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
  20. package/dist/sidebar/conditional-formatting/ConditionEditor.js +3 -5
  21. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  22. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +2 -2
  23. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -1
  24. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +2 -2
  25. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
  26. package/package.json +15 -15
@@ -22,7 +22,7 @@ declare class SelectDistinctBuilder extends Component<SelectDistinctBuilderProps
22
22
  componentDidUpdate(prevProps: SelectDistinctBuilderProps, prevState: SelectDistinctBuilderState): void;
23
23
  handleAddColumnClick(): void;
24
24
  handleDeleteColumn(index: ModelIndex): void;
25
- handleDropdownChanged(index: number, event: React.ChangeEvent<HTMLSelectElement>): void;
25
+ handleDropdownChanged(index: number, value: string): void;
26
26
  renderInputs(): ReactElement[];
27
27
  render(): React.ReactElement;
28
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SelectDistinctBuilder.d.ts","sourceRoot":"","sources":["../../src/sidebar/SelectDistinctBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAMvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAE7C,OAAO,8BAA8B,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAI5C,UAAU,0BAA0B;IAClC,KAAK,EAAE,aAAa,CAAC;IACrB,qBAAqB,EAAE,SAAS,UAAU,EAAE,CAAC;IAC7C,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAC;CAC/C;AACD,UAAU,0BAA0B;IAClC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AACD,cAAM,qBAAsB,SAAQ,SAAS,CAC3C,0BAA0B,EAC1B,0BAA0B,CAC3B;IACC,MAAM,CAAC,YAAY;;wBAEH,IAAI;MAClB;gBAEU,KAAK,EAAE,0BAA0B;IAgB7C,kBAAkB,CAChB,SAAS,EAAE,0BAA0B,EACrC,SAAS,EAAE,0BAA0B,GACpC,IAAI;IAgBP,oBAAoB,IAAI,IAAI;IAM5B,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAS3C,qBAAqB,CACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAC1C,IAAI;IAUP,YAAY,IAAI,YAAY,EAAE;IAuC9B,MAAM,IAAI,KAAK,CAAC,YAAY;CAoC7B;AAED,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"SelectDistinctBuilder.d.ts","sourceRoot":"","sources":["../../src/sidebar/SelectDistinctBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAMvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAE7C,OAAO,8BAA8B,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAI5C,UAAU,0BAA0B;IAClC,KAAK,EAAE,aAAa,CAAC;IACrB,qBAAqB,EAAE,SAAS,UAAU,EAAE,CAAC;IAC7C,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAC;CAC/C;AACD,UAAU,0BAA0B;IAClC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AACD,cAAM,qBAAsB,SAAQ,SAAS,CAC3C,0BAA0B,EAC1B,0BAA0B,CAC3B;IACC,MAAM,CAAC,YAAY;;wBAEH,IAAI;MAClB;gBAEU,KAAK,EAAE,0BAA0B;IAgB7C,kBAAkB,CAChB,SAAS,EAAE,0BAA0B,EACrC,SAAS,EAAE,0BAA0B,GACpC,IAAI;IAgBP,oBAAoB,IAAI,IAAI;IAM5B,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAS3C,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IASzD,YAAY,IAAI,YAAY,EAAE;IAyC9B,MAAM,IAAI,KAAK,CAAC,YAAY;CAoC7B;AAED,eAAe,qBAAqB,CAAC"}
@@ -5,7 +5,7 @@ import React, { Component } from 'react';
5
5
  import deepEqual from 'deep-equal';
6
6
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
7
7
  import { dhNewCircleLargeFilled, vsTrash } from '@deephaven/icons';
8
- import { Button } from '@deephaven/components';
8
+ import { Button, Select } from '@deephaven/components';
9
9
  import Log from '@deephaven/log';
10
10
  import "./SelectDistinctBuilder.css";
11
11
  import { jsx as _jsx } from "react/jsx-runtime";
@@ -60,11 +60,8 @@ class SelectDistinctBuilder extends Component {
60
60
  };
61
61
  });
62
62
  }
63
- handleDropdownChanged(index, event) {
64
- log.debug('handleDropdownChanged', index, event);
65
- var {
66
- value
67
- } = event.target;
63
+ handleDropdownChanged(index, value) {
64
+ log.debug('handleDropdownChanged', index, value);
68
65
  this.setState(_ref3 => {
69
66
  var {
70
67
  inputs: prevInputs
@@ -101,10 +98,10 @@ class SelectDistinctBuilder extends Component {
101
98
  // eslint-disable-next-line react/no-array-index-key
102
99
  _jsxs("div", {
103
100
  className: "form-inline px-3 pb-3",
104
- children: [/*#__PURE__*/_jsxs("select", {
101
+ children: [/*#__PURE__*/_jsxs(Select, {
105
102
  className: "form-control custom-select col",
106
103
  value: value,
107
- onChange: event => this.handleDropdownChanged(index, event),
104
+ onChange: eventTargetValue => this.handleDropdownChanged(index, eventTargetValue),
108
105
  children: [/*#__PURE__*/_jsx("option", {
109
106
  value: "",
110
107
  children: "Select a column"
@@ -1 +1 @@
1
- {"version":3,"file":"SelectDistinctBuilder.js","names":["React","Component","deepEqual","FontAwesomeIcon","dhNewCircleLargeFilled","vsTrash","Button","Log","jsx","_jsx","jsxs","_jsxs","log","module","SelectDistinctBuilder","constructor","props","handleAddColumnClick","bind","handleDeleteColumn","handleDropdownChanged","model","selectDistinctColumns","state","inputs","length","columns","originalColumns","componentDidUpdate","prevProps","prevState","onChange","filteredInputs","filter","val","setState","_ref","prevInputs","index","_ref2","input","inputIndex","event","debug","value","target","_ref3","renderInputs","map","options","_ref4","name","includes","_ref5","children","className","kind","onClick","icon","transform","tooltip","render","disableAddButton","role","disabled","_defineProperty","undefined"],"sources":["../../src/sidebar/SelectDistinctBuilder.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport deepEqual from 'deep-equal';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhNewCircleLargeFilled, vsTrash } from '@deephaven/icons';\nimport { Button } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport type { Column } from '@deephaven/jsapi-types';\nimport { ModelIndex } from '@deephaven/grid';\nimport IrisGridModel from '../IrisGridModel';\n\nimport './SelectDistinctBuilder.scss';\nimport { ColumnName } from '../CommonTypes';\n\nconst log = Log.module('SelectDistinctBuilder');\n\ninterface SelectDistinctBuilderProps {\n model: IrisGridModel;\n selectDistinctColumns: readonly ColumnName[];\n onChange: (newStr: readonly string[]) => void;\n}\ninterface SelectDistinctBuilderState {\n inputs: readonly string[];\n columns: readonly Column[];\n}\nclass SelectDistinctBuilder extends Component<\n SelectDistinctBuilderProps,\n SelectDistinctBuilderState\n> {\n static defaultProps = {\n selectDistinctColumns: [],\n onChange: (): void => undefined,\n };\n\n constructor(props: SelectDistinctBuilderProps) {\n super(props);\n\n this.handleAddColumnClick = this.handleAddColumnClick.bind(this);\n this.handleDeleteColumn = this.handleDeleteColumn.bind(this);\n this.handleDropdownChanged = this.handleDropdownChanged.bind(this);\n\n const { model, selectDistinctColumns } = this.props;\n\n this.state = {\n inputs:\n selectDistinctColumns.length > 0 ? [...selectDistinctColumns] : [''],\n columns: model.originalColumns,\n };\n }\n\n componentDidUpdate(\n prevProps: SelectDistinctBuilderProps,\n prevState: SelectDistinctBuilderState\n ): void {\n const { inputs } = this.state;\n const { onChange } = this.props;\n if (prevState.inputs !== inputs) {\n const filteredInputs = inputs.filter(val => val !== '');\n if (\n !deepEqual(\n prevState.inputs.filter(val => val !== ''),\n filteredInputs\n )\n ) {\n onChange(filteredInputs);\n }\n }\n }\n\n handleAddColumnClick(): void {\n this.setState(({ inputs: prevInputs }) => ({\n inputs: [...prevInputs, ''],\n }));\n }\n\n handleDeleteColumn(index: ModelIndex): void {\n this.setState(({ inputs }) => ({\n inputs:\n inputs.length === 1 && index === 0\n ? ['']\n : inputs.filter((input, inputIndex) => index !== inputIndex),\n }));\n }\n\n handleDropdownChanged(\n index: number,\n event: React.ChangeEvent<HTMLSelectElement>\n ): void {\n log.debug('handleDropdownChanged', index, event);\n const { value } = event.target;\n this.setState(({ inputs: prevInputs }) => {\n const inputs = [...prevInputs];\n inputs[index] = value;\n return { inputs };\n });\n }\n\n renderInputs(): ReactElement[] {\n const { columns, inputs } = this.state;\n\n return inputs.map((value, index) => {\n const options = columns\n .filter(({ name }) => name === value || !inputs.includes(name))\n .map(({ name }) => (\n <option value={name} key={name}>\n {name}\n </option>\n ));\n return (\n // eslint-disable-next-line react/no-array-index-key\n <div className=\"form-inline px-3 pb-3\" key={index}>\n <select\n className=\"form-control custom-select col\"\n value={value}\n onChange={event => this.handleDropdownChanged(index, event)}\n >\n <option value=\"\">Select a column</option>\n {options}\n </select>\n\n {(inputs.length > 1 || value !== '') && (\n <Button\n kind=\"ghost\"\n className=\"ml-1 px-2\"\n onClick={() => {\n this.handleDeleteColumn(index);\n }}\n icon={<FontAwesomeIcon icon={vsTrash} transform=\"grow-3\" />}\n tooltip=\"Delete column\"\n />\n )}\n </div>\n );\n });\n }\n\n render(): React.ReactElement {\n const { columns, inputs } = this.state;\n const disableAddButton = inputs.length >= columns.length;\n return (\n <div\n role=\"presentation\"\n className=\"select-distinct-builder-container h-100\"\n >\n <div className=\"select-distinct-title\">Display Unique Values From</div>\n\n {this.renderInputs()}\n\n <hr />\n\n <div className=\"pt-1 px-3\">\n <Button\n kind=\"ghost\"\n className=\"btn-add-column\"\n onClick={this.handleAddColumnClick}\n disabled={disableAddButton}\n icon={dhNewCircleLargeFilled}\n >\n Add Additional Column\n </Button>\n </div>\n\n <div className=\"select-distinct-builder-footer\">\n <div className=\"select-distinct-builder-hint\">\n Display only unique values from the selected table columns. Note\n that this will reset any filters and display only the selected\n columns.\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default SelectDistinctBuilder;\n"],"mappings":"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"}
1
+ {"version":3,"file":"SelectDistinctBuilder.js","names":["React","Component","deepEqual","FontAwesomeIcon","dhNewCircleLargeFilled","vsTrash","Button","Select","Log","jsx","_jsx","jsxs","_jsxs","log","module","SelectDistinctBuilder","constructor","props","handleAddColumnClick","bind","handleDeleteColumn","handleDropdownChanged","model","selectDistinctColumns","state","inputs","length","columns","originalColumns","componentDidUpdate","prevProps","prevState","onChange","filteredInputs","filter","val","setState","_ref","prevInputs","index","_ref2","input","inputIndex","value","debug","_ref3","renderInputs","map","options","_ref4","name","includes","_ref5","children","className","eventTargetValue","kind","onClick","icon","transform","tooltip","render","disableAddButton","role","disabled","_defineProperty","undefined"],"sources":["../../src/sidebar/SelectDistinctBuilder.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport deepEqual from 'deep-equal';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { dhNewCircleLargeFilled, vsTrash } from '@deephaven/icons';\nimport { Button, Select } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport type { Column } from '@deephaven/jsapi-types';\nimport { ModelIndex } from '@deephaven/grid';\nimport IrisGridModel from '../IrisGridModel';\n\nimport './SelectDistinctBuilder.scss';\nimport { ColumnName } from '../CommonTypes';\n\nconst log = Log.module('SelectDistinctBuilder');\n\ninterface SelectDistinctBuilderProps {\n model: IrisGridModel;\n selectDistinctColumns: readonly ColumnName[];\n onChange: (newStr: readonly string[]) => void;\n}\ninterface SelectDistinctBuilderState {\n inputs: readonly string[];\n columns: readonly Column[];\n}\nclass SelectDistinctBuilder extends Component<\n SelectDistinctBuilderProps,\n SelectDistinctBuilderState\n> {\n static defaultProps = {\n selectDistinctColumns: [],\n onChange: (): void => undefined,\n };\n\n constructor(props: SelectDistinctBuilderProps) {\n super(props);\n\n this.handleAddColumnClick = this.handleAddColumnClick.bind(this);\n this.handleDeleteColumn = this.handleDeleteColumn.bind(this);\n this.handleDropdownChanged = this.handleDropdownChanged.bind(this);\n\n const { model, selectDistinctColumns } = this.props;\n\n this.state = {\n inputs:\n selectDistinctColumns.length > 0 ? [...selectDistinctColumns] : [''],\n columns: model.originalColumns,\n };\n }\n\n componentDidUpdate(\n prevProps: SelectDistinctBuilderProps,\n prevState: SelectDistinctBuilderState\n ): void {\n const { inputs } = this.state;\n const { onChange } = this.props;\n if (prevState.inputs !== inputs) {\n const filteredInputs = inputs.filter(val => val !== '');\n if (\n !deepEqual(\n prevState.inputs.filter(val => val !== ''),\n filteredInputs\n )\n ) {\n onChange(filteredInputs);\n }\n }\n }\n\n handleAddColumnClick(): void {\n this.setState(({ inputs: prevInputs }) => ({\n inputs: [...prevInputs, ''],\n }));\n }\n\n handleDeleteColumn(index: ModelIndex): void {\n this.setState(({ inputs }) => ({\n inputs:\n inputs.length === 1 && index === 0\n ? ['']\n : inputs.filter((input, inputIndex) => index !== inputIndex),\n }));\n }\n\n handleDropdownChanged(index: number, value: string): void {\n log.debug('handleDropdownChanged', index, value);\n this.setState(({ inputs: prevInputs }) => {\n const inputs = [...prevInputs];\n inputs[index] = value;\n return { inputs };\n });\n }\n\n renderInputs(): ReactElement[] {\n const { columns, inputs } = this.state;\n\n return inputs.map((value, index) => {\n const options = columns\n .filter(({ name }) => name === value || !inputs.includes(name))\n .map(({ name }) => (\n <option value={name} key={name}>\n {name}\n </option>\n ));\n return (\n // eslint-disable-next-line react/no-array-index-key\n <div className=\"form-inline px-3 pb-3\" key={index}>\n <Select\n className=\"form-control custom-select col\"\n value={value}\n onChange={(eventTargetValue: string) =>\n this.handleDropdownChanged(index, eventTargetValue)\n }\n >\n <option value=\"\">Select a column</option>\n {options}\n </Select>\n\n {(inputs.length > 1 || value !== '') && (\n <Button\n kind=\"ghost\"\n className=\"ml-1 px-2\"\n onClick={() => {\n this.handleDeleteColumn(index);\n }}\n icon={<FontAwesomeIcon icon={vsTrash} transform=\"grow-3\" />}\n tooltip=\"Delete column\"\n />\n )}\n </div>\n );\n });\n }\n\n render(): React.ReactElement {\n const { columns, inputs } = this.state;\n const disableAddButton = inputs.length >= columns.length;\n return (\n <div\n role=\"presentation\"\n className=\"select-distinct-builder-container h-100\"\n >\n <div className=\"select-distinct-title\">Display Unique Values From</div>\n\n {this.renderInputs()}\n\n <hr />\n\n <div className=\"pt-1 px-3\">\n <Button\n kind=\"ghost\"\n className=\"btn-add-column\"\n onClick={this.handleAddColumnClick}\n disabled={disableAddButton}\n icon={dhNewCircleLargeFilled}\n >\n Add Additional Column\n </Button>\n </div>\n\n <div className=\"select-distinct-builder-footer\">\n <div className=\"select-distinct-builder-hint\">\n Display only unique values from the selected table columns. Note\n that this will reset any filters and display only the selected\n columns.\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default SelectDistinctBuilder;\n"],"mappings":"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"}
@@ -61,7 +61,7 @@ declare class TableCsvExporter extends Component<TableCsvExporterProps, TableCsv
61
61
  resetDownloadState(): void;
62
62
  handleDownloadClick(): Promise<void>;
63
63
  handleDownloadRowOptionChanged(event: React.ChangeEvent<HTMLInputElement>): void;
64
- handleCustomizedDownloadRowOptionChanged(event: React.ChangeEvent<HTMLSelectElement>): void;
64
+ handleCustomizedDownloadRowOptionChanged(eventTargetValue: string): void;
65
65
  handleCustomizedDownloadRowsChanged(event: React.ChangeEvent<HTMLInputElement>): void;
66
66
  handleIncludeColumnHeadersChanged(): void;
67
67
  handleIncludeHiddenColumnsChanged(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"TableCsvExporter.d.ts","sourceRoot":"","sources":["../../src/sidebar/TableCsvExporter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAUvD,OAAO,EACL,SAAS,EAET,YAAY,EACZ,aAAa,EACd,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EACV,EAAE,IAAI,MAAM,EACZ,KAAK,EACL,yBAAyB,EAC1B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,yBAAyB,CAAC;AAEjC,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAI7C,UAAU,qBAAqB;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,YAAY,CAAC;IAC/B,YAAY,EAAE,SAAS,aAAa,EAAE,CAAC;IACvC,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,0BAA0B,EAAE,MAAM,CAAC;IACnC,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,UAAU,EAAE,CACV,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,KAAK,EAClB,iBAAiB,EAAE,yBAAyB,EAC5C,cAAc,EAAE,SAAS,SAAS,EAAE,EACpC,WAAW,EAAE,SAAS,SAAS,EAAE,EACjC,oBAAoB,EAAE,OAAO,EAC7B,oBAAoB,EAAE,OAAO,KAC1B,IAAI,CAAC;IACV,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,cAAc,EAAE,SAAS,SAAS,EAAE,CAAC;CACtC;AAED,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,MAAM,CAAC;IAEjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,2BAA2B,EAAE,MAAM,CAAC;IACpC,sBAAsB,EAAE,MAAM,CAAC;IAE/B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,oBAAoB,EAAE,OAAO,CAAC;IAE9B,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,EAAE,EAAE,MAAM,CAAC;CACZ;AACD,cAAM,gBAAiB,SAAQ,SAAS,CACtC,qBAAqB,EACrB,qBAAqB,CACtB;IACC,MAAM,CAAC,oBAAoB,SAAuB;IAElD,MAAM,CAAC,eAAe;;;;;MAKpB;IAEF,MAAM,CAAC,oBAAoB;;;;MAIzB;IAEF,MAAM,CAAC,uBAAuB;;;MAG5B;IAEF,MAAM,CAAC,qBAAqB,SAAO;IAEnC,MAAM,CAAC,YAAY;+BACI,IAAI;;;;;;MAMzB;IAEF,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;gBAO5B,KAAK,EAAE,qBAAqB;IAmCxC,iBAAiB,IAAI,SAAS,EAAE;IA2DhC,cAAc,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,EAAE;IAezD,kBAAkB,IAAI,IAAI;IAIpB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IA4C1C,8BAA8B,CAC5B,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,GACzC,IAAI;IAIP,wCAAwC,CACtC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAC1C,IAAI;IAIP,mCAAmC,CACjC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,GACzC,IAAI;IAIP,iCAAiC,IAAI,IAAI;IAMzC,iCAAiC,IAAI,IAAI;IAMzC,iCAAiC,IAAI,IAAI;IAMzC,mBAAmB,IAAI,OAAO;IAsC9B,MAAM,IAAI,YAAY;CAoNvB;AAED,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"TableCsvExporter.d.ts","sourceRoot":"","sources":["../../src/sidebar/TableCsvExporter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAWvD,OAAO,EACL,SAAS,EAET,YAAY,EACZ,aAAa,EACd,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EACV,EAAE,IAAI,MAAM,EACZ,KAAK,EACL,yBAAyB,EAC1B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,yBAAyB,CAAC;AAEjC,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAI7C,UAAU,qBAAqB;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,YAAY,CAAC;IAC/B,YAAY,EAAE,SAAS,aAAa,EAAE,CAAC;IACvC,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,0BAA0B,EAAE,MAAM,CAAC;IACnC,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,UAAU,EAAE,CACV,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,KAAK,EAClB,iBAAiB,EAAE,yBAAyB,EAC5C,cAAc,EAAE,SAAS,SAAS,EAAE,EACpC,WAAW,EAAE,SAAS,SAAS,EAAE,EACjC,oBAAoB,EAAE,OAAO,EAC7B,oBAAoB,EAAE,OAAO,KAC1B,IAAI,CAAC;IACV,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,cAAc,EAAE,SAAS,SAAS,EAAE,CAAC;CACtC;AAED,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,MAAM,CAAC;IAEjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,2BAA2B,EAAE,MAAM,CAAC;IACpC,sBAAsB,EAAE,MAAM,CAAC;IAE/B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,oBAAoB,EAAE,OAAO,CAAC;IAE9B,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,EAAE,EAAE,MAAM,CAAC;CACZ;AACD,cAAM,gBAAiB,SAAQ,SAAS,CACtC,qBAAqB,EACrB,qBAAqB,CACtB;IACC,MAAM,CAAC,oBAAoB,SAAuB;IAElD,MAAM,CAAC,eAAe;;;;;MAKpB;IAEF,MAAM,CAAC,oBAAoB;;;;MAIzB;IAEF,MAAM,CAAC,uBAAuB;;;MAG5B;IAEF,MAAM,CAAC,qBAAqB,SAAO;IAEnC,MAAM,CAAC,YAAY;+BACI,IAAI;;;;;;MAMzB;IAEF,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;gBAO5B,KAAK,EAAE,qBAAqB;IAmCxC,iBAAiB,IAAI,SAAS,EAAE;IA2DhC,cAAc,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,EAAE;IAezD,kBAAkB,IAAI,IAAI;IAIpB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IA4C1C,8BAA8B,CAC5B,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,GACzC,IAAI;IAIP,wCAAwC,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAIxE,mCAAmC,CACjC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,GACzC,IAAI;IAIP,iCAAiC,IAAI,IAAI;IAMzC,iCAAiC,IAAI,IAAI;IAMzC,iCAAiC,IAAI,IAAI;IAMzC,mBAAmB,IAAI,OAAO;IAsC9B,MAAM,IAAI,YAAY;CAoNvB;AAED,eAAe,gBAAgB,CAAC"}
@@ -8,7 +8,7 @@ function _toPrimitive(input, hint) { if (typeof input !== "object" || input ===
8
8
  import React, { Component } from 'react';
9
9
  import ClassNames from 'classnames';
10
10
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
11
- import { Button, Checkbox, LoadingSpinner, RadioGroup, RadioItem } from '@deephaven/components';
11
+ import { Button, Checkbox, LoadingSpinner, RadioGroup, RadioItem, Select } from '@deephaven/components';
12
12
  import { GridRange, GridUtils } from '@deephaven/grid';
13
13
  import { vsWarning } from '@deephaven/icons';
14
14
  import { TimeUtils } from '@deephaven/utils';
@@ -165,9 +165,9 @@ class TableCsvExporter extends Component {
165
165
  downloadRowOption: event.target.value
166
166
  });
167
167
  }
168
- handleCustomizedDownloadRowOptionChanged(event) {
168
+ handleCustomizedDownloadRowOptionChanged(eventTargetValue) {
169
169
  this.setState({
170
- customizedDownloadRowOption: event.target.value
170
+ customizedDownloadRowOption: eventTargetValue
171
171
  });
172
172
  }
173
173
  handleCustomizedDownloadRowsChanged(event) {
@@ -294,7 +294,7 @@ class TableCsvExporter extends Component {
294
294
  downloadRowOption: TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS
295
295
  });
296
296
  },
297
- children: [/*#__PURE__*/_jsxs("select", {
297
+ children: [/*#__PURE__*/_jsxs(Select, {
298
298
  value: customizedDownloadRowOption,
299
299
  "data-testid": "select-csv-exporter-customized-rows",
300
300
  className: "custom-select",
@@ -1 +1 @@
1
- {"version":3,"file":"TableCsvExporter.js","names":["React","Component","ClassNames","FontAwesomeIcon","Button","Checkbox","LoadingSpinner","RadioGroup","RadioItem","GridRange","GridUtils","vsWarning","TimeUtils","shortid","Log","IrisGridUtils","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","log","module","TableCsvExporter","getDateString","dh","i18n","DateTimeFormat","format","FILENAME_DATE_FORMAT","Date","constructor","props","handleDownloadClick","bind","handleDownloadRowOptionChanged","handleCustomizedDownloadRowOptionChanged","handleCustomizedDownloadRowsChanged","handleIncludeColumnHeadersChanged","handleIncludeHiddenColumnsChanged","handleUseUnformattedValuesChanged","model","name","state","fileName","concat","downloadRowOption","DOWNLOAD_ROW_OPTIONS","ALL_ROWS","customizedDownloadRowOption","CUSTOMIZED_ROWS_OPTIONS","FIRST","customizedDownloadRows","DEFAULT_DOWNLOAD_ROWS","includeColumnHeaders","includeHiddenColumns","useUnformattedValues","errorMessage","id","generate","getSnapshotRanges","selectedRanges","rowCount","columnCount","snapshotRanges","push","SELECTED_ROWS","map","range","_objectSpread","startColumn","endColumn","sort","rangeA","rangeB","startRow","CUSTOMIZED_ROWS","Math","min","LAST","max","getModelRanges","ranges","userColumnWidths","movedColumns","hiddenColumns","getHiddenColumns","modelRanges","length","subtractRanges","makeColumn","subtractRangesFromRanges","resetDownloadState","setState","_this","_asyncToGenerator","isDownloading","onDownloadStart","onDownload","onCancel","validateOptionInput","frozenTable","export","tableSubscription","setViewport","getViewportData","error","children","icon","event","target","value","parseInt","_ref","_ref2","_ref3","render","tableDownloadProgress","tableDownloadEstimatedTime","tableDownloadStatus","className","onChange","disabled","toString","replace","role","onClick","type","placeholder","htmlFor","checked","DOWNLOAD_STATUS","DOWNLOADING","INITIATING","formatElapsedTime","FINISHED","CANCELED","style","width","kind","_defineProperty","undefined"],"sources":["../../src/sidebar/TableCsvExporter.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport ClassNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n Checkbox,\n LoadingSpinner,\n RadioGroup,\n RadioItem,\n} from '@deephaven/components';\nimport {\n GridRange,\n GridUtils,\n ModelSizeMap,\n MoveOperation,\n} from '@deephaven/grid';\nimport { vsWarning } from '@deephaven/icons';\nimport type {\n dh as DhType,\n Table,\n TableViewportSubscription,\n} from '@deephaven/jsapi-types';\nimport { TimeUtils } from '@deephaven/utils';\nimport shortid from 'shortid';\nimport './TableCsvExporter.scss';\nimport Log from '@deephaven/log';\nimport IrisGridModel from '../IrisGridModel';\nimport IrisGridUtils from '../IrisGridUtils';\n\nconst log = Log.module('TableCsvExporter');\ninterface TableCsvExporterProps {\n model: IrisGridModel;\n name: string;\n userColumnWidths: ModelSizeMap;\n movedColumns: readonly MoveOperation[];\n isDownloading: boolean;\n tableDownloadStatus: string;\n tableDownloadProgress: number;\n tableDownloadEstimatedTime: number;\n onDownloadStart: () => void;\n onDownload: (\n fileName: string,\n frozenTable: Table,\n tableSubscription: TableViewportSubscription,\n snapshotRanges: readonly GridRange[],\n modelRanges: readonly GridRange[],\n includeColumnHeaders: boolean,\n useUnformattedValues: boolean\n ) => void;\n onCancel: () => void;\n selectedRanges: readonly GridRange[];\n}\n\ninterface TableCsvExporterState {\n fileName: string;\n\n downloadRowOption: string;\n customizedDownloadRowOption: string;\n customizedDownloadRows: number;\n\n includeColumnHeaders: boolean;\n includeHiddenColumns: boolean;\n useUnformattedValues: boolean;\n\n errorMessage: React.ReactNode;\n id: string;\n}\nclass TableCsvExporter extends Component<\n TableCsvExporterProps,\n TableCsvExporterState\n> {\n static FILENAME_DATE_FORMAT = 'yyyy-MM-dd-HHmmss';\n\n static DOWNLOAD_STATUS = {\n INITIATING: 'INITIATING',\n DOWNLOADING: 'DOWNLOADING',\n FINISHED: 'FINISHED',\n CANCELED: 'CANCELED',\n };\n\n static DOWNLOAD_ROW_OPTIONS = {\n ALL_ROWS: 'ALL_ROWS',\n SELECTED_ROWS: 'SELECTED_ROWS',\n CUSTOMIZED_ROWS: 'CUSTOMIZED_ROWS',\n };\n\n static CUSTOMIZED_ROWS_OPTIONS = {\n FIRST: 'FIRST',\n LAST: 'LAST',\n };\n\n static DEFAULT_DOWNLOAD_ROWS = 100;\n\n static defaultProps = {\n onDownloadStart: (): void => undefined,\n isDownloading: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n selectedRanges: [],\n };\n\n static getDateString(dh: DhType): string {\n return dh.i18n.DateTimeFormat.format(\n TableCsvExporter.FILENAME_DATE_FORMAT,\n new Date()\n );\n }\n\n constructor(props: TableCsvExporterProps) {\n super(props);\n\n this.handleDownloadClick = this.handleDownloadClick.bind(this);\n this.handleDownloadRowOptionChanged =\n this.handleDownloadRowOptionChanged.bind(this);\n this.handleCustomizedDownloadRowOptionChanged =\n this.handleCustomizedDownloadRowOptionChanged.bind(this);\n this.handleCustomizedDownloadRowsChanged =\n this.handleCustomizedDownloadRowsChanged.bind(this);\n this.handleIncludeColumnHeadersChanged =\n this.handleIncludeColumnHeadersChanged.bind(this);\n this.handleIncludeHiddenColumnsChanged =\n this.handleIncludeHiddenColumnsChanged.bind(this);\n this.handleUseUnformattedValuesChanged =\n this.handleUseUnformattedValuesChanged.bind(this);\n\n const { model, name } = props;\n this.state = {\n fileName: `${name}-${TableCsvExporter.getDateString(model.dh)}.csv`,\n\n downloadRowOption: TableCsvExporter.DOWNLOAD_ROW_OPTIONS.ALL_ROWS,\n customizedDownloadRowOption:\n TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.FIRST,\n customizedDownloadRows: TableCsvExporter.DEFAULT_DOWNLOAD_ROWS,\n\n includeColumnHeaders: true,\n includeHiddenColumns: false,\n useUnformattedValues: false,\n\n errorMessage: null,\n id: shortid.generate(),\n };\n }\n\n getSnapshotRanges(): GridRange[] {\n const { model, selectedRanges } = this.props;\n const {\n downloadRowOption,\n customizedDownloadRowOption,\n customizedDownloadRows,\n } = this.state;\n const { rowCount, columnCount } = model;\n let snapshotRanges = [] as GridRange[];\n switch (downloadRowOption) {\n case TableCsvExporter.DOWNLOAD_ROW_OPTIONS.ALL_ROWS:\n snapshotRanges.push(new GridRange(0, 0, columnCount - 1, rowCount - 1));\n break;\n case TableCsvExporter.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS:\n snapshotRanges = selectedRanges\n .map(range => ({\n ...range,\n startColumn: 0,\n endColumn: columnCount - 1,\n }))\n .sort((rangeA, rangeB) => {\n if (rangeA.startRow != null && rangeB.startRow != null) {\n return rangeA.startRow - rangeB.startRow;\n }\n return 0;\n }) as GridRange[];\n break;\n case TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS:\n switch (customizedDownloadRowOption) {\n case TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.FIRST:\n snapshotRanges.push(\n new GridRange(\n 0,\n 0,\n columnCount - 1,\n Math.min(customizedDownloadRows - 1, rowCount - 1)\n )\n );\n break;\n case TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.LAST:\n snapshotRanges.push(\n new GridRange(\n 0,\n Math.max(0, rowCount - customizedDownloadRows),\n columnCount - 1,\n rowCount - 1\n )\n );\n break;\n default:\n break;\n }\n break;\n default:\n break;\n }\n return snapshotRanges;\n }\n\n getModelRanges(ranges: readonly GridRange[]): GridRange[] {\n const { userColumnWidths, movedColumns } = this.props;\n const { includeHiddenColumns } = this.state;\n const hiddenColumns = IrisGridUtils.getHiddenColumns(userColumnWidths);\n let modelRanges = GridUtils.getModelRanges(ranges, movedColumns);\n if (!includeHiddenColumns && hiddenColumns.length > 0) {\n const subtractRanges = hiddenColumns.map(GridRange.makeColumn);\n modelRanges = GridRange.subtractRangesFromRanges(\n modelRanges,\n subtractRanges\n );\n }\n return modelRanges;\n }\n\n resetDownloadState(): void {\n this.setState({ errorMessage: null });\n }\n\n async handleDownloadClick(): Promise<void> {\n const { model, isDownloading, onDownloadStart, onDownload, onCancel } =\n this.props;\n const { fileName, includeColumnHeaders, useUnformattedValues } = this.state;\n\n if (isDownloading) {\n onCancel();\n return;\n }\n\n this.resetDownloadState();\n\n const snapshotRanges = this.getSnapshotRanges();\n const modelRanges = this.getModelRanges(snapshotRanges);\n if (this.validateOptionInput()) {\n onDownloadStart();\n try {\n const frozenTable = await model.export();\n const tableSubscription = frozenTable.setViewport(0, 0);\n await tableSubscription.getViewportData();\n onDownload(\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\n } catch (error) {\n log.error('CSV download failed', error);\n\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsWarning} /> {`${error}`}\n </p>\n ),\n });\n onCancel();\n }\n }\n }\n\n handleDownloadRowOptionChanged(\n event: React.ChangeEvent<HTMLInputElement>\n ): void {\n this.setState({ downloadRowOption: event.target.value });\n }\n\n handleCustomizedDownloadRowOptionChanged(\n event: React.ChangeEvent<HTMLSelectElement>\n ): void {\n this.setState({ customizedDownloadRowOption: event.target.value });\n }\n\n handleCustomizedDownloadRowsChanged(\n event: React.ChangeEvent<HTMLInputElement>\n ): void {\n this.setState({ customizedDownloadRows: parseInt(event.target.value, 10) });\n }\n\n handleIncludeColumnHeadersChanged(): void {\n this.setState(({ includeColumnHeaders }) => ({\n includeColumnHeaders: !includeColumnHeaders,\n }));\n }\n\n handleIncludeHiddenColumnsChanged(): void {\n this.setState(({ includeHiddenColumns }) => ({\n includeHiddenColumns: !includeHiddenColumns,\n }));\n }\n\n handleUseUnformattedValuesChanged(): void {\n this.setState(({ useUnformattedValues }) => ({\n useUnformattedValues: !useUnformattedValues,\n }));\n }\n\n validateOptionInput(): boolean {\n const { selectedRanges } = this.props;\n const { downloadRowOption, customizedDownloadRows } = this.state;\n\n if (\n downloadRowOption ===\n TableCsvExporter.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS &&\n selectedRanges.length === 0\n ) {\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsWarning} /> No rows selected. Please select\n some rows in the table.\n </p>\n ),\n });\n return false;\n }\n\n if (\n downloadRowOption ===\n TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS &&\n customizedDownloadRows <= 0\n ) {\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsWarning} /> Number of rows to output must\n be greater than 0\n </p>\n ),\n });\n return false;\n }\n return true;\n }\n\n render(): ReactElement {\n const {\n model,\n isDownloading,\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n selectedRanges,\n tableDownloadStatus,\n } = this.props;\n const {\n fileName,\n downloadRowOption,\n customizedDownloadRowOption,\n customizedDownloadRows,\n includeColumnHeaders,\n includeHiddenColumns,\n useUnformattedValues,\n errorMessage,\n id,\n } = this.state;\n const { rowCount } = model;\n return (\n <div className=\"table-csv-exporter\">\n <div className=\"section-title\">Download Rows</div>\n <div className=\"form-group\">\n <RadioGroup\n onChange={this.handleDownloadRowOptionChanged}\n value={downloadRowOption}\n disabled={isDownloading}\n >\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_ROW_OPTIONS.ALL_ROWS}\n data-testid=\"radio-csv-exporter-download-all\"\n >\n All Rows\n <span className=\"text-muted ml-2\">\n {`(${rowCount\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')} rows)`}\n </span>\n </RadioItem>\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS}\n data-testid=\"radio-csv-exporter-only-selected\"\n >\n Only Selected Rows\n <span className=\"text-muted ml-2\">\n {selectedRanges.length > 0\n ? `(${GridRange.rowCount(selectedRanges)\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')} rows)`\n : null}\n </span>\n </RadioItem>\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS}\n data-testid=\"radio-csv-exporter-customized-rows\"\n >\n <div\n className=\"radio-input-row\"\n role=\"presentation\"\n onClick={() => {\n this.setState({\n downloadRowOption:\n TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS,\n });\n }}\n >\n <select\n value={customizedDownloadRowOption}\n data-testid=\"select-csv-exporter-customized-rows\"\n className=\"custom-select\"\n disabled={isDownloading}\n onChange={this.handleCustomizedDownloadRowOptionChanged}\n >\n <option value=\"FIRST\">First</option>\n <option value=\"LAST\">Last</option>\n </select>\n <input\n type=\"number\"\n className=\"form-control\"\n id={`customizedRows-${id}`}\n data-testid=\"input-csv-exporter-customized-rows\"\n name={`customizedRows-${id}`}\n placeholder=\"100\"\n value={customizedDownloadRows}\n disabled={isDownloading}\n onChange={this.handleCustomizedDownloadRowsChanged}\n />\n <div>Rows</div>\n </div>\n </RadioItem>\n </RadioGroup>\n </div>\n <div className=\"form-group\">\n <label htmlFor={`customizedRows-${id}`}>File Name</label>\n <input\n type=\"text\"\n className=\"form-control\"\n id={`filename-${id}`}\n data-testid=\"input-csv-exporter-file-name\"\n name={`filename-${id}`}\n value={fileName}\n onChange={event => {\n this.setState({ fileName: event.target.value });\n }}\n disabled={isDownloading}\n />\n </div>\n <div className=\"checkbox-options\">\n <Checkbox\n checked={includeColumnHeaders}\n onChange={this.handleIncludeColumnHeadersChanged}\n >\n Include column headers\n </Checkbox>\n <Checkbox\n checked={includeHiddenColumns}\n onChange={this.handleIncludeHiddenColumnsChanged}\n >\n Include hidden columns\n </Checkbox>\n <Checkbox\n checked={useUnformattedValues}\n onChange={this.handleUseUnformattedValuesChanged}\n >\n Use unformatted values\n </Checkbox>\n </div>\n <div className=\"section-footer flex-column\">\n {errorMessage != null && (\n <div className=\"error-message\">{errorMessage}</div>\n )}\n {tableDownloadStatus && (\n <div className=\"download-status\">\n {(tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING ||\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING) && (\n <>\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING && (\n <div className=\"text-muted\">Starting Download...</div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING && (\n <div className=\"text-muted d-flex justify-content-between\">\n <span>\n {tableDownloadEstimatedTime ||\n tableDownloadEstimatedTime === 0\n ? `Estimated time: ${TimeUtils.formatElapsedTime(\n tableDownloadEstimatedTime\n )}`\n : null}\n </span>\n <span>{`${tableDownloadProgress}%`}</span>\n </div>\n )}\n </>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.FINISHED && (\n <div className=\"text-muted text-right\">Download Completed</div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.CANCELED && (\n <div className=\"text-muted\">Download Canceled</div>\n )}\n\n {(tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING ||\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING) && (\n <div className=\"progress\">\n <div\n className=\"progress-bar progress-bar-striped progress-bar-animated\"\n style={{ width: `${tableDownloadProgress}%` }}\n />\n </div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.FINISHED && (\n <div className=\"progress\">\n <div\n className=\"progress-bar bg-success\"\n style={{ width: `${tableDownloadProgress}%` }}\n />\n </div>\n )}\n </div>\n )}\n <Button\n kind=\"primary\"\n data-testid=\"btn-csv-exporter-download\"\n className={ClassNames('btn-downloading', {\n 'btn-spinner btn-cancelable': isDownloading,\n })}\n onClick={this.handleDownloadClick}\n >\n {isDownloading && (\n <span>\n <LoadingSpinner className=\"loading-spinner-vertical-align\" />\n <span className=\"btn-normal-content\">Downloading</span>\n <span className=\"btn-hover-content\">Cancel</span>\n </span>\n )}\n {!isDownloading && 'Download'}\n </Button>\n </div>\n </div>\n );\n }\n}\n\nexport default TableCsvExporter;\n"],"mappings":"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"}
1
+ {"version":3,"file":"TableCsvExporter.js","names":["React","Component","ClassNames","FontAwesomeIcon","Button","Checkbox","LoadingSpinner","RadioGroup","RadioItem","Select","GridRange","GridUtils","vsWarning","TimeUtils","shortid","Log","IrisGridUtils","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","log","module","TableCsvExporter","getDateString","dh","i18n","DateTimeFormat","format","FILENAME_DATE_FORMAT","Date","constructor","props","handleDownloadClick","bind","handleDownloadRowOptionChanged","handleCustomizedDownloadRowOptionChanged","handleCustomizedDownloadRowsChanged","handleIncludeColumnHeadersChanged","handleIncludeHiddenColumnsChanged","handleUseUnformattedValuesChanged","model","name","state","fileName","concat","downloadRowOption","DOWNLOAD_ROW_OPTIONS","ALL_ROWS","customizedDownloadRowOption","CUSTOMIZED_ROWS_OPTIONS","FIRST","customizedDownloadRows","DEFAULT_DOWNLOAD_ROWS","includeColumnHeaders","includeHiddenColumns","useUnformattedValues","errorMessage","id","generate","getSnapshotRanges","selectedRanges","rowCount","columnCount","snapshotRanges","push","SELECTED_ROWS","map","range","_objectSpread","startColumn","endColumn","sort","rangeA","rangeB","startRow","CUSTOMIZED_ROWS","Math","min","LAST","max","getModelRanges","ranges","userColumnWidths","movedColumns","hiddenColumns","getHiddenColumns","modelRanges","length","subtractRanges","makeColumn","subtractRangesFromRanges","resetDownloadState","setState","_this","_asyncToGenerator","isDownloading","onDownloadStart","onDownload","onCancel","validateOptionInput","frozenTable","export","tableSubscription","setViewport","getViewportData","error","children","icon","event","target","value","eventTargetValue","parseInt","_ref","_ref2","_ref3","render","tableDownloadProgress","tableDownloadEstimatedTime","tableDownloadStatus","className","onChange","disabled","toString","replace","role","onClick","type","placeholder","htmlFor","checked","DOWNLOAD_STATUS","DOWNLOADING","INITIATING","formatElapsedTime","FINISHED","CANCELED","style","width","kind","_defineProperty","undefined"],"sources":["../../src/sidebar/TableCsvExporter.tsx"],"sourcesContent":["import React, { Component, ReactElement } from 'react';\nimport ClassNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n Checkbox,\n LoadingSpinner,\n RadioGroup,\n RadioItem,\n Select,\n} from '@deephaven/components';\nimport {\n GridRange,\n GridUtils,\n ModelSizeMap,\n MoveOperation,\n} from '@deephaven/grid';\nimport { vsWarning } from '@deephaven/icons';\nimport type {\n dh as DhType,\n Table,\n TableViewportSubscription,\n} from '@deephaven/jsapi-types';\nimport { TimeUtils } from '@deephaven/utils';\nimport shortid from 'shortid';\nimport './TableCsvExporter.scss';\nimport Log from '@deephaven/log';\nimport IrisGridModel from '../IrisGridModel';\nimport IrisGridUtils from '../IrisGridUtils';\n\nconst log = Log.module('TableCsvExporter');\ninterface TableCsvExporterProps {\n model: IrisGridModel;\n name: string;\n userColumnWidths: ModelSizeMap;\n movedColumns: readonly MoveOperation[];\n isDownloading: boolean;\n tableDownloadStatus: string;\n tableDownloadProgress: number;\n tableDownloadEstimatedTime: number;\n onDownloadStart: () => void;\n onDownload: (\n fileName: string,\n frozenTable: Table,\n tableSubscription: TableViewportSubscription,\n snapshotRanges: readonly GridRange[],\n modelRanges: readonly GridRange[],\n includeColumnHeaders: boolean,\n useUnformattedValues: boolean\n ) => void;\n onCancel: () => void;\n selectedRanges: readonly GridRange[];\n}\n\ninterface TableCsvExporterState {\n fileName: string;\n\n downloadRowOption: string;\n customizedDownloadRowOption: string;\n customizedDownloadRows: number;\n\n includeColumnHeaders: boolean;\n includeHiddenColumns: boolean;\n useUnformattedValues: boolean;\n\n errorMessage: React.ReactNode;\n id: string;\n}\nclass TableCsvExporter extends Component<\n TableCsvExporterProps,\n TableCsvExporterState\n> {\n static FILENAME_DATE_FORMAT = 'yyyy-MM-dd-HHmmss';\n\n static DOWNLOAD_STATUS = {\n INITIATING: 'INITIATING',\n DOWNLOADING: 'DOWNLOADING',\n FINISHED: 'FINISHED',\n CANCELED: 'CANCELED',\n };\n\n static DOWNLOAD_ROW_OPTIONS = {\n ALL_ROWS: 'ALL_ROWS',\n SELECTED_ROWS: 'SELECTED_ROWS',\n CUSTOMIZED_ROWS: 'CUSTOMIZED_ROWS',\n };\n\n static CUSTOMIZED_ROWS_OPTIONS = {\n FIRST: 'FIRST',\n LAST: 'LAST',\n };\n\n static DEFAULT_DOWNLOAD_ROWS = 100;\n\n static defaultProps = {\n onDownloadStart: (): void => undefined,\n isDownloading: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n selectedRanges: [],\n };\n\n static getDateString(dh: DhType): string {\n return dh.i18n.DateTimeFormat.format(\n TableCsvExporter.FILENAME_DATE_FORMAT,\n new Date()\n );\n }\n\n constructor(props: TableCsvExporterProps) {\n super(props);\n\n this.handleDownloadClick = this.handleDownloadClick.bind(this);\n this.handleDownloadRowOptionChanged =\n this.handleDownloadRowOptionChanged.bind(this);\n this.handleCustomizedDownloadRowOptionChanged =\n this.handleCustomizedDownloadRowOptionChanged.bind(this);\n this.handleCustomizedDownloadRowsChanged =\n this.handleCustomizedDownloadRowsChanged.bind(this);\n this.handleIncludeColumnHeadersChanged =\n this.handleIncludeColumnHeadersChanged.bind(this);\n this.handleIncludeHiddenColumnsChanged =\n this.handleIncludeHiddenColumnsChanged.bind(this);\n this.handleUseUnformattedValuesChanged =\n this.handleUseUnformattedValuesChanged.bind(this);\n\n const { model, name } = props;\n this.state = {\n fileName: `${name}-${TableCsvExporter.getDateString(model.dh)}.csv`,\n\n downloadRowOption: TableCsvExporter.DOWNLOAD_ROW_OPTIONS.ALL_ROWS,\n customizedDownloadRowOption:\n TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.FIRST,\n customizedDownloadRows: TableCsvExporter.DEFAULT_DOWNLOAD_ROWS,\n\n includeColumnHeaders: true,\n includeHiddenColumns: false,\n useUnformattedValues: false,\n\n errorMessage: null,\n id: shortid.generate(),\n };\n }\n\n getSnapshotRanges(): GridRange[] {\n const { model, selectedRanges } = this.props;\n const {\n downloadRowOption,\n customizedDownloadRowOption,\n customizedDownloadRows,\n } = this.state;\n const { rowCount, columnCount } = model;\n let snapshotRanges = [] as GridRange[];\n switch (downloadRowOption) {\n case TableCsvExporter.DOWNLOAD_ROW_OPTIONS.ALL_ROWS:\n snapshotRanges.push(new GridRange(0, 0, columnCount - 1, rowCount - 1));\n break;\n case TableCsvExporter.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS:\n snapshotRanges = selectedRanges\n .map(range => ({\n ...range,\n startColumn: 0,\n endColumn: columnCount - 1,\n }))\n .sort((rangeA, rangeB) => {\n if (rangeA.startRow != null && rangeB.startRow != null) {\n return rangeA.startRow - rangeB.startRow;\n }\n return 0;\n }) as GridRange[];\n break;\n case TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS:\n switch (customizedDownloadRowOption) {\n case TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.FIRST:\n snapshotRanges.push(\n new GridRange(\n 0,\n 0,\n columnCount - 1,\n Math.min(customizedDownloadRows - 1, rowCount - 1)\n )\n );\n break;\n case TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.LAST:\n snapshotRanges.push(\n new GridRange(\n 0,\n Math.max(0, rowCount - customizedDownloadRows),\n columnCount - 1,\n rowCount - 1\n )\n );\n break;\n default:\n break;\n }\n break;\n default:\n break;\n }\n return snapshotRanges;\n }\n\n getModelRanges(ranges: readonly GridRange[]): GridRange[] {\n const { userColumnWidths, movedColumns } = this.props;\n const { includeHiddenColumns } = this.state;\n const hiddenColumns = IrisGridUtils.getHiddenColumns(userColumnWidths);\n let modelRanges = GridUtils.getModelRanges(ranges, movedColumns);\n if (!includeHiddenColumns && hiddenColumns.length > 0) {\n const subtractRanges = hiddenColumns.map(GridRange.makeColumn);\n modelRanges = GridRange.subtractRangesFromRanges(\n modelRanges,\n subtractRanges\n );\n }\n return modelRanges;\n }\n\n resetDownloadState(): void {\n this.setState({ errorMessage: null });\n }\n\n async handleDownloadClick(): Promise<void> {\n const { model, isDownloading, onDownloadStart, onDownload, onCancel } =\n this.props;\n const { fileName, includeColumnHeaders, useUnformattedValues } = this.state;\n\n if (isDownloading) {\n onCancel();\n return;\n }\n\n this.resetDownloadState();\n\n const snapshotRanges = this.getSnapshotRanges();\n const modelRanges = this.getModelRanges(snapshotRanges);\n if (this.validateOptionInput()) {\n onDownloadStart();\n try {\n const frozenTable = await model.export();\n const tableSubscription = frozenTable.setViewport(0, 0);\n await tableSubscription.getViewportData();\n onDownload(\n fileName,\n frozenTable,\n tableSubscription,\n snapshotRanges,\n modelRanges,\n includeColumnHeaders,\n useUnformattedValues\n );\n } catch (error) {\n log.error('CSV download failed', error);\n\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsWarning} /> {`${error}`}\n </p>\n ),\n });\n onCancel();\n }\n }\n }\n\n handleDownloadRowOptionChanged(\n event: React.ChangeEvent<HTMLInputElement>\n ): void {\n this.setState({ downloadRowOption: event.target.value });\n }\n\n handleCustomizedDownloadRowOptionChanged(eventTargetValue: string): void {\n this.setState({ customizedDownloadRowOption: eventTargetValue });\n }\n\n handleCustomizedDownloadRowsChanged(\n event: React.ChangeEvent<HTMLInputElement>\n ): void {\n this.setState({ customizedDownloadRows: parseInt(event.target.value, 10) });\n }\n\n handleIncludeColumnHeadersChanged(): void {\n this.setState(({ includeColumnHeaders }) => ({\n includeColumnHeaders: !includeColumnHeaders,\n }));\n }\n\n handleIncludeHiddenColumnsChanged(): void {\n this.setState(({ includeHiddenColumns }) => ({\n includeHiddenColumns: !includeHiddenColumns,\n }));\n }\n\n handleUseUnformattedValuesChanged(): void {\n this.setState(({ useUnformattedValues }) => ({\n useUnformattedValues: !useUnformattedValues,\n }));\n }\n\n validateOptionInput(): boolean {\n const { selectedRanges } = this.props;\n const { downloadRowOption, customizedDownloadRows } = this.state;\n\n if (\n downloadRowOption ===\n TableCsvExporter.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS &&\n selectedRanges.length === 0\n ) {\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsWarning} /> No rows selected. Please select\n some rows in the table.\n </p>\n ),\n });\n return false;\n }\n\n if (\n downloadRowOption ===\n TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS &&\n customizedDownloadRows <= 0\n ) {\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsWarning} /> Number of rows to output must\n be greater than 0\n </p>\n ),\n });\n return false;\n }\n return true;\n }\n\n render(): ReactElement {\n const {\n model,\n isDownloading,\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n selectedRanges,\n tableDownloadStatus,\n } = this.props;\n const {\n fileName,\n downloadRowOption,\n customizedDownloadRowOption,\n customizedDownloadRows,\n includeColumnHeaders,\n includeHiddenColumns,\n useUnformattedValues,\n errorMessage,\n id,\n } = this.state;\n const { rowCount } = model;\n return (\n <div className=\"table-csv-exporter\">\n <div className=\"section-title\">Download Rows</div>\n <div className=\"form-group\">\n <RadioGroup\n onChange={this.handleDownloadRowOptionChanged}\n value={downloadRowOption}\n disabled={isDownloading}\n >\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_ROW_OPTIONS.ALL_ROWS}\n data-testid=\"radio-csv-exporter-download-all\"\n >\n All Rows\n <span className=\"text-muted ml-2\">\n {`(${rowCount\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')} rows)`}\n </span>\n </RadioItem>\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_ROW_OPTIONS.SELECTED_ROWS}\n data-testid=\"radio-csv-exporter-only-selected\"\n >\n Only Selected Rows\n <span className=\"text-muted ml-2\">\n {selectedRanges.length > 0\n ? `(${GridRange.rowCount(selectedRanges)\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')} rows)`\n : null}\n </span>\n </RadioItem>\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS}\n data-testid=\"radio-csv-exporter-customized-rows\"\n >\n <div\n className=\"radio-input-row\"\n role=\"presentation\"\n onClick={() => {\n this.setState({\n downloadRowOption:\n TableCsvExporter.DOWNLOAD_ROW_OPTIONS.CUSTOMIZED_ROWS,\n });\n }}\n >\n <Select\n value={customizedDownloadRowOption}\n data-testid=\"select-csv-exporter-customized-rows\"\n className=\"custom-select\"\n disabled={isDownloading}\n onChange={this.handleCustomizedDownloadRowOptionChanged}\n >\n <option value=\"FIRST\">First</option>\n <option value=\"LAST\">Last</option>\n </Select>\n <input\n type=\"number\"\n className=\"form-control\"\n id={`customizedRows-${id}`}\n data-testid=\"input-csv-exporter-customized-rows\"\n name={`customizedRows-${id}`}\n placeholder=\"100\"\n value={customizedDownloadRows}\n disabled={isDownloading}\n onChange={this.handleCustomizedDownloadRowsChanged}\n />\n <div>Rows</div>\n </div>\n </RadioItem>\n </RadioGroup>\n </div>\n <div className=\"form-group\">\n <label htmlFor={`customizedRows-${id}`}>File Name</label>\n <input\n type=\"text\"\n className=\"form-control\"\n id={`filename-${id}`}\n data-testid=\"input-csv-exporter-file-name\"\n name={`filename-${id}`}\n value={fileName}\n onChange={event => {\n this.setState({ fileName: event.target.value });\n }}\n disabled={isDownloading}\n />\n </div>\n <div className=\"checkbox-options\">\n <Checkbox\n checked={includeColumnHeaders}\n onChange={this.handleIncludeColumnHeadersChanged}\n >\n Include column headers\n </Checkbox>\n <Checkbox\n checked={includeHiddenColumns}\n onChange={this.handleIncludeHiddenColumnsChanged}\n >\n Include hidden columns\n </Checkbox>\n <Checkbox\n checked={useUnformattedValues}\n onChange={this.handleUseUnformattedValuesChanged}\n >\n Use unformatted values\n </Checkbox>\n </div>\n <div className=\"section-footer flex-column\">\n {errorMessage != null && (\n <div className=\"error-message\">{errorMessage}</div>\n )}\n {tableDownloadStatus && (\n <div className=\"download-status\">\n {(tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING ||\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING) && (\n <>\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING && (\n <div className=\"text-muted\">Starting Download...</div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING && (\n <div className=\"text-muted d-flex justify-content-between\">\n <span>\n {tableDownloadEstimatedTime ||\n tableDownloadEstimatedTime === 0\n ? `Estimated time: ${TimeUtils.formatElapsedTime(\n tableDownloadEstimatedTime\n )}`\n : null}\n </span>\n <span>{`${tableDownloadProgress}%`}</span>\n </div>\n )}\n </>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.FINISHED && (\n <div className=\"text-muted text-right\">Download Completed</div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.CANCELED && (\n <div className=\"text-muted\">Download Canceled</div>\n )}\n\n {(tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING ||\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING) && (\n <div className=\"progress\">\n <div\n className=\"progress-bar progress-bar-striped progress-bar-animated\"\n style={{ width: `${tableDownloadProgress}%` }}\n />\n </div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.FINISHED && (\n <div className=\"progress\">\n <div\n className=\"progress-bar bg-success\"\n style={{ width: `${tableDownloadProgress}%` }}\n />\n </div>\n )}\n </div>\n )}\n <Button\n kind=\"primary\"\n data-testid=\"btn-csv-exporter-download\"\n className={ClassNames('btn-downloading', {\n 'btn-spinner btn-cancelable': isDownloading,\n })}\n onClick={this.handleDownloadClick}\n >\n {isDownloading && (\n <span>\n <LoadingSpinner className=\"loading-spinner-vertical-align\" />\n <span className=\"btn-normal-content\">Downloading</span>\n <span className=\"btn-hover-content\">Cancel</span>\n </span>\n )}\n {!isDownloading && 'Download'}\n </Button>\n </div>\n </div>\n );\n }\n}\n\nexport default TableCsvExporter;\n"],"mappings":"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"}
@@ -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;AAE3D,OAAO,EAOL,WAAW,EACX,eAAe,EAQhB,MAAM,8BAA8B,CAAC;AAItC,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,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,CA0LjE;AAED,eAAe,eAAe,CAAC"}
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,WAAW,EACX,eAAe,EAShB,MAAM,8BAA8B,CAAC;AAItC,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,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,CAyLjE;AAED,eAAe,eAAe,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { useCallback, useEffect, useMemo, useState } from 'react';
2
2
  import { TableUtils } from '@deephaven/jsapi-utils';
3
3
  import Log from '@deephaven/log';
4
+ import { Select } from '@deephaven/components';
4
5
  import { StringCondition, DateCondition, getLabelForNumberCondition, getLabelForDateCondition, getLabelForStringCondition, NumberCondition, getDefaultConditionForType, getLabelForBooleanCondition, BooleanCondition, CharCondition, getLabelForCharCondition, isDateConditionValid, getDefaultValueForType } from "./ConditionalFormattingUtils.js";
5
6
  import { jsx as _jsx } from "react/jsx-runtime";
6
7
  import { jsxs as _jsxs } from "react/jsx-runtime";
@@ -165,10 +166,7 @@ function ConditionEditor(props) {
165
166
  return booleanConditions;
166
167
  }
167
168
  }, [selectedColumnType]);
168
- var handleConditionChange = useCallback(e => {
169
- var {
170
- value
171
- } = e.target;
169
+ var handleConditionChange = useCallback(value => {
172
170
  log.debug('handleConditionChange', value);
173
171
  setCondition(value);
174
172
  }, []);
@@ -235,7 +233,7 @@ function ConditionEditor(props) {
235
233
  }, [selectedColumnType, selectedCondition, conditionValue, startValue, endValue, handleValueChange, handleStartValueChange, handleEndValueChange]);
236
234
  return /*#__PURE__*/_jsxs("div", {
237
235
  className: "condition-editor mb-2",
238
- children: [/*#__PURE__*/_jsx("select", {
236
+ children: [/*#__PURE__*/_jsx(Select, {
239
237
  value: selectedCondition,
240
238
  "data-testid": "condition-select",
241
239
  className: "custom-select mb-2",
@@ -1 +1 @@
1
- {"version":3,"file":"ConditionEditor.js","names":["useCallback","useEffect","useMemo","useState","TableUtils","Log","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","e","target","debug","changeCondition","isValid","conditionInputs"],"sources":["../../../src/sidebar/conditional-formatting/ConditionEditor.tsx"],"sourcesContent":["import { 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 {\n StringCondition,\n DateCondition,\n getLabelForNumberCondition,\n getLabelForDateCondition,\n getLabelForStringCondition,\n NumberCondition,\n ModelColumn,\n ConditionConfig,\n getDefaultConditionForType,\n getLabelForBooleanCondition,\n BooleanCondition,\n CharCondition,\n getLabelForCharCondition,\n isDateConditionValid,\n getDefaultValueForType,\n} from './ConditionalFormattingUtils';\n\nconst log = Log.module('ConditionEditor');\n\nexport interface ConditionEditorProps {\n dh: 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: unknown) => void,\n handleStartValueChange: (e: unknown) => void,\n handleEndValueChange: (e: unknown) => 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: unknown) => 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: unknown) => 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: unknown) => 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(e => {\n const { value } = e.target;\n log.debug('handleConditionChange', value);\n setCondition(value);\n }, []);\n\n const handleValueChange = useCallback(e => {\n const { value } = e.target;\n log.debug('handleValueChange', value);\n setValue(value);\n }, []);\n\n const handleStartValueChange = useCallback(e => {\n const { value } = e.target;\n log.debug('handleStartValueChange', value);\n setStartValue(value);\n }, []);\n\n const handleEndValueChange = useCallback(e => {\n const { value } = e.target;\n log.debug('handleEndValueChange', value);\n setEndValue(value);\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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"}
1
+ {"version":3,"file":"ConditionEditor.js","names":["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 { 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 ModelColumn,\n ConditionConfig,\n getDefaultConditionForType,\n getLabelForBooleanCondition,\n BooleanCondition,\n CharCondition,\n Condition,\n getLabelForCharCondition,\n isDateConditionValid,\n getDefaultValueForType,\n} from './ConditionalFormattingUtils';\n\nconst log = Log.module('ConditionEditor');\n\nexport interface ConditionEditorProps {\n dh: 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: unknown) => void,\n handleStartValueChange: (e: unknown) => void,\n handleEndValueChange: (e: unknown) => 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: unknown) => 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: unknown) => 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: unknown) => 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(e => {\n const { value } = e.target;\n log.debug('handleValueChange', value);\n setValue(value);\n }, []);\n\n const handleStartValueChange = useCallback(e => {\n const { value } = e.target;\n log.debug('handleStartValueChange', value);\n setStartValue(value);\n }, []);\n\n const handleEndValueChange = useCallback(e => {\n const { value } = e.target;\n log.debug('handleEndValueChange', value);\n setEndValue(value);\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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"}
@@ -1,5 +1,5 @@
1
1
  /// <reference types="lodash" />
2
- import React, { ChangeEvent, Component, ReactElement } from 'react';
2
+ import React, { ChangeEvent, PureComponent, ReactElement } from 'react';
3
3
  import { ModelIndex, MoveOperation, VisibleIndex } from '@deephaven/grid';
4
4
  import type { Column } from '@deephaven/jsapi-types';
5
5
  import memoize from 'memoizee';
@@ -24,7 +24,7 @@ interface VisibilityOrderingBuilderState {
24
24
  lastSelectedColumn: string;
25
25
  searchFilter: string;
26
26
  }
27
- declare class VisibilityOrderingBuilder extends Component<VisibilityOrderingBuilderProps, VisibilityOrderingBuilderState> {
27
+ declare class VisibilityOrderingBuilder extends PureComponent<VisibilityOrderingBuilderProps, VisibilityOrderingBuilderState> {
28
28
  static SORTING_OPTIONS: {
29
29
  readonly DSC: "DSC";
30
30
  readonly ASC: "ASC";
@@ -1 +1 @@
1
- {"version":3,"file":"VisibilityOrderingBuilder.d.ts","sourceRoot":"","sources":["../../../src/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VisibilityOrderingBuilder.d.ts","sourceRoot":"","sources":["../../../src/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.tsx"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
3
3
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
4
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
5
5
  function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
6
- import React, { Component } from 'react';
6
+ import React, { PureComponent } from 'react';
7
7
  import classNames from 'classnames';
8
8
  import { GridUtils } from '@deephaven/grid';
9
9
  import { TextUtils, assertNotNull, DbNameValidator } from '@deephaven/utils';
@@ -23,7 +23,7 @@ import { moveItemsFromDrop, moveToGroup } from "./VisibilityOrderingBuilderUtils
23
23
  import { jsx as _jsx } from "react/jsx-runtime";
24
24
  import { jsxs as _jsxs } from "react/jsx-runtime";
25
25
  var DEBOUNCE_SEARCH_COLUMN = 150;
26
- class VisibilityOrderingBuilder extends Component {
26
+ class VisibilityOrderingBuilder extends PureComponent {
27
27
  constructor(props) {
28
28
  super(props);
29
29
  _defineProperty(this, "list", void 0);