@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.
- package/dist/AdvancedFilterCreatorFilterItem.d.ts +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +5 -5
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/GotoRow.js +10 -10
- package/dist/GotoRow.js.map +1 -1
- package/dist/sidebar/ChartBuilder.d.ts +4 -4
- package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
- package/dist/sidebar/ChartBuilder.js +19 -31
- package/dist/sidebar/ChartBuilder.js.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.d.ts +1 -1
- package/dist/sidebar/SelectDistinctBuilder.d.ts.map +1 -1
- package/dist/sidebar/SelectDistinctBuilder.js +5 -8
- package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
- package/dist/sidebar/TableCsvExporter.d.ts +1 -1
- package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
- package/dist/sidebar/TableCsvExporter.js +4 -4
- package/dist/sidebar/TableCsvExporter.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +3 -5
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +2 -2
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +2 -2
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
- package/package.json +15 -15
|
@@ -20,7 +20,7 @@ export declare class AdvancedFilterCreatorFilterItem extends PureComponent<Advan
|
|
|
20
20
|
componentDidMount(): void;
|
|
21
21
|
componentDidUpdate(prevProps: AdvancedFilterCreatorFilterItemProps): void;
|
|
22
22
|
typeDropdown: HTMLSelectElement | null;
|
|
23
|
-
handleTypeChange(
|
|
23
|
+
handleTypeChange(eventTargetValue: string): void;
|
|
24
24
|
handleValueChange(event: React.ChangeEvent<HTMLInputElement>): void;
|
|
25
25
|
handleDelete(): void;
|
|
26
26
|
getCachedIsValid: (column: Column, operation: FilterTypeValue, value: string, timeZone: string, tableUtils: TableUtils) => boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedFilterCreatorFilterItem.d.ts","sourceRoot":"","sources":["../src/AdvancedFilterCreatorFilterItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAKL,SAAS,IAAI,eAAe,EAC7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EACL,sBAAsB,EACtB,SAAS,EACT,UAAU,EACX,MAAM,wBAAwB,CAAC;AAIhC,OAAO,wCAAwC,CAAC;AAIhD,MAAM,WAAW,oCAAoC;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,MAAM,oCAAoC,GAAG,sBAAsB,CAAC;AAE1E,qBAAa,+BAAgC,SAAQ,aAAa,CAChE,oCAAoC,EACpC,oCAAoC,CACrC;IACC,MAAM,CAAC,iBAAiB,CACtB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,eAAe,GAC1B,MAAM;gBAwBG,KAAK,EAAE,oCAAoC;IAgBvD,iBAAiB,IAAI,IAAI;IAIzB,kBAAkB,CAAC,SAAS,EAAE,oCAAoC,GAAG,IAAI;IAUzE,YAAY,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAEvC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"AdvancedFilterCreatorFilterItem.d.ts","sourceRoot":"","sources":["../src/AdvancedFilterCreatorFilterItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAKL,SAAS,IAAI,eAAe,EAC7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EACL,sBAAsB,EACtB,SAAS,EACT,UAAU,EACX,MAAM,wBAAwB,CAAC;AAIhC,OAAO,wCAAwC,CAAC;AAIhD,MAAM,WAAW,oCAAoC;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,MAAM,MAAM,oCAAoC,GAAG,sBAAsB,CAAC;AAE1E,qBAAa,+BAAgC,SAAQ,aAAa,CAChE,oCAAoC,EACpC,oCAAoC,CACrC;IACC,MAAM,CAAC,iBAAiB,CACtB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,eAAe,GAC1B,MAAM;gBAwBG,KAAK,EAAE,oCAAoC;IAgBvD,iBAAiB,IAAI,IAAI;IAIzB,kBAAkB,CAAC,SAAS,EAAE,oCAAoC,GAAG,IAAI;IAUzE,YAAY,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAEvC,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAahD,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAanE,YAAY,IAAI,IAAI;IAOpB,gBAAgB,WAEJ,MAAM,aACH,eAAe,SACnB,MAAM,YACH,MAAM,cACJ,UAAU,KACrB,OAAO,CAgBV;IAEF,MAAM,IAAI,GAAG,CAAC,OAAO;CAmEtB;AAED,eAAe,+BAA+B,CAAC"}
|
|
@@ -3,7 +3,7 @@ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typ
|
|
|
3
3
|
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); }
|
|
4
4
|
/* eslint react/no-did-update-set-state: "off" */
|
|
5
5
|
import React, { PureComponent } from 'react';
|
|
6
|
-
import { Button } from '@deephaven/components';
|
|
6
|
+
import { Button, Select } from '@deephaven/components';
|
|
7
7
|
import { getLabelForBooleanFilter, getLabelForDateFilter, getLabelForNumberFilter, getLabelForTextFilter } from '@deephaven/filters';
|
|
8
8
|
import { vsTrash } from '@deephaven/icons';
|
|
9
9
|
import { TableUtils } from '@deephaven/jsapi-utils';
|
|
@@ -80,8 +80,8 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
|
|
|
80
80
|
});
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
|
-
handleTypeChange(
|
|
84
|
-
var selectedType =
|
|
83
|
+
handleTypeChange(eventTargetValue) {
|
|
84
|
+
var selectedType = eventTargetValue;
|
|
85
85
|
log.debug2('typeChange', selectedType);
|
|
86
86
|
this.setState({
|
|
87
87
|
selectedType
|
|
@@ -152,8 +152,8 @@ export class AdvancedFilterCreatorFilterItem extends PureComponent {
|
|
|
152
152
|
className: "form-row",
|
|
153
153
|
children: [/*#__PURE__*/_jsx("div", {
|
|
154
154
|
className: "form-group col",
|
|
155
|
-
children: /*#__PURE__*/_jsx(
|
|
156
|
-
className: "form-control
|
|
155
|
+
children: /*#__PURE__*/_jsx(Select, {
|
|
156
|
+
className: "form-control",
|
|
157
157
|
value: selectedType,
|
|
158
158
|
onChange: this.handleTypeChange,
|
|
159
159
|
ref: typeDropdown => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedFilterCreatorFilterItem.js","names":["React","PureComponent","Button","getLabelForBooleanFilter","getLabelForDateFilter","getLabelForNumberFilter","getLabelForTextFilter","vsTrash","TableUtils","Log","classNames","memoizeOne","jsx","_jsx","jsxs","_jsxs","log","module","AdvancedFilterCreatorFilterItem","getLabelForFilter","columnType","filterType","isNumberType","isCharType","isTextType","isDateType","isBooleanType","Error","concat","e","warn","constructor","props","_defineProperty","column","operation","value","timeZone","tableUtils","makeAdvancedValueFilter","handleDelete","bind","handleTypeChange","handleValueChange","typeDropdown","filterTypes","selectedType","state","componentDidMount","_this$typeDropdown","focus","componentDidUpdate","prevProps","undefined","setState","event","target","debug2","onChange","length","debug","onDelete","render","formatter","showValueInput","type","typeOptionElements","isValid","getCachedIsValid","i","label","element","children","push","className","ref","error","placeholder","kind","onClick","icon","tooltip"],"sources":["../src/AdvancedFilterCreatorFilterItem.tsx"],"sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { Button } from '@deephaven/components';\nimport {\n getLabelForBooleanFilter,\n getLabelForDateFilter,\n getLabelForNumberFilter,\n getLabelForTextFilter,\n TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport { vsTrash } from '@deephaven/icons';\nimport type { Column } from '@deephaven/jsapi-types';\nimport {\n AdvancedFilterItemType,\n Formatter,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport classNames from 'classnames';\nimport memoizeOne from 'memoize-one';\nimport './AdvancedFilterCreatorFilterItem.scss';\n\nconst log = Log.module('AdvancedFilterCreatorFilterItem');\n\nexport interface AdvancedFilterCreatorFilterItemProps {\n column: Column;\n filterTypes: FilterTypeValue[];\n onChange: (type: FilterTypeValue, value: string) => void;\n onDelete: () => void;\n selectedType?: FilterTypeValue;\n value?: string;\n formatter: Formatter;\n tableUtils: TableUtils;\n}\n\nexport type AdvancedFilterCreatorFilterItemState = AdvancedFilterItemType;\n\nexport class AdvancedFilterCreatorFilterItem extends PureComponent<\n AdvancedFilterCreatorFilterItemProps,\n AdvancedFilterCreatorFilterItemState\n> {\n static getLabelForFilter(\n columnType: string,\n filterType: FilterTypeValue\n ): string {\n try {\n if (\n TableUtils.isNumberType(columnType) ||\n TableUtils.isCharType(columnType)\n ) {\n return getLabelForNumberFilter(filterType);\n }\n if (TableUtils.isTextType(columnType)) {\n return getLabelForTextFilter(filterType);\n }\n if (TableUtils.isDateType(columnType)) {\n return getLabelForDateFilter(filterType);\n }\n if (TableUtils.isBooleanType(columnType)) {\n return getLabelForBooleanFilter(filterType);\n }\n throw new Error(`Unrecognized column type: ${columnType}`);\n } catch (e) {\n log.warn(e);\n return '';\n }\n }\n\n constructor(props: AdvancedFilterCreatorFilterItemProps) {\n super(props);\n\n this.handleDelete = this.handleDelete.bind(this);\n this.handleTypeChange = this.handleTypeChange.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n this.typeDropdown = null;\n\n const { value = '', filterTypes, selectedType = filterTypes[0] } = props;\n\n this.state = {\n selectedType,\n value,\n };\n }\n\n componentDidMount(): void {\n this.typeDropdown?.focus();\n }\n\n componentDidUpdate(prevProps: AdvancedFilterCreatorFilterItemProps): void {\n const { value, selectedType } = this.props;\n if (selectedType !== undefined && prevProps.selectedType !== selectedType) {\n this.setState({ selectedType });\n }\n if (value !== undefined && prevProps.value !== value) {\n this.setState({ value });\n }\n }\n\n typeDropdown: HTMLSelectElement | null;\n\n handleTypeChange(event: React.ChangeEvent<HTMLSelectElement>): void {\n const selectedType = event.target.value as FilterTypeValue;\n log.debug2('typeChange', selectedType);\n this.setState({ selectedType });\n\n const { onChange } = this.props;\n const { value } = this.state;\n if (value != null && value.length > 0) {\n // Don't send an update unless there's already a value entered\n onChange(selectedType, value);\n }\n }\n\n handleValueChange(event: React.ChangeEvent<HTMLInputElement>): void {\n log.debug2('valueChange');\n const { value } = event.target;\n this.setState({ value });\n\n const { onChange } = this.props;\n const { selectedType } = this.state;\n if (selectedType != null) {\n // Don't send an update unless they've already selected a type\n onChange(selectedType, value);\n }\n }\n\n handleDelete(): void {\n log.debug('delete');\n\n const { onDelete } = this.props;\n onDelete();\n }\n\n getCachedIsValid = memoizeOne(\n (\n column: Column,\n operation: FilterTypeValue,\n value: string,\n timeZone: string,\n tableUtils: TableUtils\n ): boolean => {\n try {\n // We don't want to show an error for an empty value\n return (\n !value ||\n tableUtils.makeAdvancedValueFilter(\n column,\n operation,\n value,\n timeZone\n ) != null\n );\n } catch (e) {\n return false;\n }\n }\n );\n\n render(): JSX.Element {\n const { column, filterTypes, formatter, tableUtils } = this.props;\n const { selectedType, value } = this.state;\n const showValueInput = !TableUtils.isBooleanType(column.type);\n const typeOptionElements = [];\n const isValid = this.getCachedIsValid(\n column,\n selectedType,\n value,\n formatter.timeZone,\n tableUtils\n );\n for (let i = 0; i < filterTypes.length; i += 1) {\n const type = filterTypes[i];\n const label = AdvancedFilterCreatorFilterItem.getLabelForFilter(\n column.type,\n type\n );\n const element = (\n <option key={type} value={type}>\n {label}\n </option>\n );\n typeOptionElements.push(element);\n }\n\n return (\n <div className=\"advanced-filter-creator-filter-item\">\n <div className=\"form-row\">\n <div className=\"form-group col\">\n <select\n className=\"form-control custom-select\"\n value={selectedType}\n onChange={this.handleTypeChange}\n ref={typeDropdown => {\n this.typeDropdown = typeDropdown;\n }}\n >\n {typeOptionElements}\n </select>\n </div>\n {showValueInput && (\n <div className=\"form-group col\">\n <div className=\"input-group\">\n <input\n type=\"text\"\n className={classNames('form-control', { error: !isValid })}\n placeholder=\"Enter value\"\n value={value}\n onChange={this.handleValueChange}\n />\n </div>\n </div>\n )}\n <div className=\"form-group col-1 px-0\">\n <Button\n kind=\"ghost\"\n className=\"w-100 h-100 p-0 m-0\"\n onClick={this.handleDelete}\n icon={vsTrash}\n tooltip=\"Remove Filter\"\n />\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorFilterItem;\n"],"mappings":";;;AAAA;AACA,OAAOA,KAAK,IAAIC,aAAa,QAAQ,OAAO;AAC5C,SAASC,MAAM,QAAQ,uBAAuB;AAC9C,SACEC,wBAAwB,EACxBC,qBAAqB,EACrBC,uBAAuB,EACvBC,qBAAqB,QAEhB,oBAAoB;AAC3B,SAASC,OAAO,QAAQ,kBAAkB;AAE1C,SAGEC,UAAU,QACL,wBAAwB;AAC/B,OAAOC,GAAG,MAAM,gBAAgB;AAChC,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,UAAU,MAAM,aAAa;AAAC;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAAA,SAAAC,IAAA,IAAAC,KAAA;AAGrC,IAAMC,GAAG,GAAGP,GAAG,CAACQ,MAAM,CAAC,iCAAiC,CAAC;AAezD,OAAO,MAAMC,+BAA+B,SAASjB,aAAa,CAGhE;EACA,OAAOkB,iBAAiBA,CACtBC,UAAkB,EAClBC,UAA2B,EACnB;IACR,IAAI;MACF,IACEb,UAAU,CAACc,YAAY,CAACF,UAAU,CAAC,IACnCZ,UAAU,CAACe,UAAU,CAACH,UAAU,CAAC,EACjC;QACA,OAAOf,uBAAuB,CAACgB,UAAU,CAAC;MAC5C;MACA,IAAIb,UAAU,CAACgB,UAAU,CAACJ,UAAU,CAAC,EAAE;QACrC,OAAOd,qBAAqB,CAACe,UAAU,CAAC;MAC1C;MACA,IAAIb,UAAU,CAACiB,UAAU,CAACL,UAAU,CAAC,EAAE;QACrC,OAAOhB,qBAAqB,CAACiB,UAAU,CAAC;MAC1C;MACA,IAAIb,UAAU,CAACkB,aAAa,CAACN,UAAU,CAAC,EAAE;QACxC,OAAOjB,wBAAwB,CAACkB,UAAU,CAAC;MAC7C;MACA,MAAM,IAAIM,KAAK,8BAAAC,MAAA,CAA8BR,UAAU,CAAE,CAAC;IAC5D,CAAC,CAAC,OAAOS,CAAC,EAAE;MACVb,GAAG,CAACc,IAAI,CAACD,CAAC,CAAC;MACX,OAAO,EAAE;IACX;EACF;EAEAE,WAAWA,CAACC,KAA2C,EAAE;IACvD,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA;IAAAA,eAAA,2BAgEItB,UAAU,CAC3B,CACEuB,MAAc,EACdC,SAA0B,EAC1BC,KAAa,EACbC,QAAgB,EAChBC,UAAsB,KACV;MACZ,IAAI;QACF;QACA,OACE,CAACF,KAAK,IACNE,UAAU,CAACC,uBAAuB,CAChCL,MAAM,EACNC,SAAS,EACTC,KAAK,EACLC,QACF,CAAC,IAAI,IAAI;MAEb,CAAC,CAAC,OAAOR,CAAC,EAAE;QACV,OAAO,KAAK;MACd;IACF,CACF,CAAC;IArFC,IAAI,CAACW,YAAY,GAAG,IAAI,CAACA,YAAY,CAACC,IAAI,CAAC,IAAI,CAAC;IAChD,IAAI,CAACC,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACD,IAAI,CAAC,IAAI,CAAC;IACxD,IAAI,CAACE,iBAAiB,GAAG,IAAI,CAACA,iBAAiB,CAACF,IAAI,CAAC,IAAI,CAAC;IAC1D,IAAI,CAACG,YAAY,GAAG,IAAI;IAExB,IAAM;MAAER,KAAK,EAALA,MAAK,GAAG,EAAE;MAAES,WAAW;MAAEC,YAAY,GAAGD,WAAW,CAAC,CAAC;IAAE,CAAC,GAAGb,KAAK;IAExE,IAAI,CAACe,KAAK,GAAG;MACXD,YAAY;MACZV,KAAK,EAALA;IACF,CAAC;EACH;EAEAY,iBAAiBA,CAAA,EAAS;IAAA,IAAAC,kBAAA;IACxB,CAAAA,kBAAA,OAAI,CAACL,YAAY,cAAAK,kBAAA,uBAAjBA,kBAAA,CAAmBC,KAAK,CAAC,CAAC;EAC5B;EAEAC,kBAAkBA,CAACC,SAA+C,EAAQ;IACxE,IAAM;MAAEhB,KAAK;MAAEU;IAAa,CAAC,GAAG,IAAI,CAACd,KAAK;IAC1C,IAAIc,YAAY,KAAKO,SAAS,IAAID,SAAS,CAACN,YAAY,KAAKA,YAAY,EAAE;MACzE,IAAI,CAACQ,QAAQ,CAAC;QAAER;MAAa,CAAC,CAAC;IACjC;IACA,IAAIV,KAAK,KAAKiB,SAAS,IAAID,SAAS,CAAChB,KAAK,KAAKA,KAAK,EAAE;MACpD,IAAI,CAACkB,QAAQ,CAAC;QAAElB;MAAM,CAAC,CAAC;IAC1B;EACF;EAIAM,gBAAgBA,CAACa,KAA2C,EAAQ;IAClE,IAAMT,YAAY,GAAGS,KAAK,CAACC,MAAM,CAACpB,KAAwB;IAC1DpB,GAAG,CAACyC,MAAM,CAAC,YAAY,EAAEX,YAAY,CAAC;IACtC,IAAI,CAACQ,QAAQ,CAAC;MAAER;IAAa,CAAC,CAAC;IAE/B,IAAM;MAAEY;IAAS,CAAC,GAAG,IAAI,CAAC1B,KAAK;IAC/B,IAAM;MAAEI;IAAM,CAAC,GAAG,IAAI,CAACW,KAAK;IAC5B,IAAIX,KAAK,IAAI,IAAI,IAAIA,KAAK,CAACuB,MAAM,GAAG,CAAC,EAAE;MACrC;MACAD,QAAQ,CAACZ,YAAY,EAAEV,KAAK,CAAC;IAC/B;EACF;EAEAO,iBAAiBA,CAACY,KAA0C,EAAQ;IAClEvC,GAAG,CAACyC,MAAM,CAAC,aAAa,CAAC;IACzB,IAAM;MAAErB;IAAM,CAAC,GAAGmB,KAAK,CAACC,MAAM;IAC9B,IAAI,CAACF,QAAQ,CAAC;MAAElB;IAAM,CAAC,CAAC;IAExB,IAAM;MAAEsB;IAAS,CAAC,GAAG,IAAI,CAAC1B,KAAK;IAC/B,IAAM;MAAEc;IAAa,CAAC,GAAG,IAAI,CAACC,KAAK;IACnC,IAAID,YAAY,IAAI,IAAI,EAAE;MACxB;MACAY,QAAQ,CAACZ,YAAY,EAAEV,KAAK,CAAC;IAC/B;EACF;EAEAI,YAAYA,CAAA,EAAS;IACnBxB,GAAG,CAAC4C,KAAK,CAAC,QAAQ,CAAC;IAEnB,IAAM;MAAEC;IAAS,CAAC,GAAG,IAAI,CAAC7B,KAAK;IAC/B6B,QAAQ,CAAC,CAAC;EACZ;EA2BAC,MAAMA,CAAA,EAAgB;IACpB,IAAM;MAAE5B,MAAM;MAAEW,WAAW;MAAEkB,SAAS;MAAEzB;IAAW,CAAC,GAAG,IAAI,CAACN,KAAK;IACjE,IAAM;MAAEc,YAAY;MAAEV;IAAM,CAAC,GAAG,IAAI,CAACW,KAAK;IAC1C,IAAMiB,cAAc,GAAG,CAACxD,UAAU,CAACkB,aAAa,CAACQ,MAAM,CAAC+B,IAAI,CAAC;IAC7D,IAAMC,kBAAkB,GAAG,EAAE;IAC7B,IAAMC,OAAO,GAAG,IAAI,CAACC,gBAAgB,CACnClC,MAAM,EACNY,YAAY,EACZV,KAAK,EACL2B,SAAS,CAAC1B,QAAQ,EAClBC,UACF,CAAC;IACD,KAAK,IAAI+B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGxB,WAAW,CAACc,MAAM,EAAEU,CAAC,IAAI,CAAC,EAAE;MAC9C,IAAMJ,KAAI,GAAGpB,WAAW,CAACwB,CAAC,CAAC;MAC3B,IAAMC,KAAK,GAAGpD,+BAA+B,CAACC,iBAAiB,CAC7De,MAAM,CAAC+B,IAAI,EACXA,KACF,CAAC;MACD,IAAMM,OAAO,gBACX1D,IAAA;QAAmBuB,KAAK,EAAE6B,KAAK;QAAAO,QAAA,EAC5BF;MAAK,GADKL,KAEL,CACT;MACDC,kBAAkB,CAACO,IAAI,CAACF,OAAO,CAAC;IAClC;IAEA,oBACE1D,IAAA;MAAK6D,SAAS,EAAC,qCAAqC;MAAAF,QAAA,eAClDzD,KAAA;QAAK2D,SAAS,EAAC,UAAU;QAAAF,QAAA,gBACvB3D,IAAA;UAAK6D,SAAS,EAAC,gBAAgB;UAAAF,QAAA,eAC7B3D,IAAA;YACE6D,SAAS,EAAC,4BAA4B;YACtCtC,KAAK,EAAEU,YAAa;YACpBY,QAAQ,EAAE,IAAI,CAAChB,gBAAiB;YAChCiC,GAAG,EAAE/B,YAAY,IAAI;cACnB,IAAI,CAACA,YAAY,GAAGA,YAAY;YAClC,CAAE;YAAA4B,QAAA,EAEDN;UAAkB,CACb;QAAC,CACN,CAAC,EACLF,cAAc,iBACbnD,IAAA;UAAK6D,SAAS,EAAC,gBAAgB;UAAAF,QAAA,eAC7B3D,IAAA;YAAK6D,SAAS,EAAC,aAAa;YAAAF,QAAA,eAC1B3D,IAAA;cACEoD,IAAI,EAAC,MAAM;cACXS,SAAS,EAAEhE,UAAU,CAAC,cAAc,EAAE;gBAAEkE,KAAK,EAAE,CAACT;cAAQ,CAAC,CAAE;cAC3DU,WAAW,EAAC,aAAa;cACzBzC,KAAK,EAAEA,KAAM;cACbsB,QAAQ,EAAE,IAAI,CAACf;YAAkB,CAClC;UAAC,CACC;QAAC,CACH,CACN,eACD9B,IAAA;UAAK6D,SAAS,EAAC,uBAAuB;UAAAF,QAAA,eACpC3D,IAAA,CAACX,MAAM;YACL4E,IAAI,EAAC,OAAO;YACZJ,SAAS,EAAC,qBAAqB;YAC/BK,OAAO,EAAE,IAAI,CAACvC,YAAa;YAC3BwC,IAAI,EAAEzE,OAAQ;YACd0E,OAAO,EAAC;UAAe,CACxB;QAAC,CACC,CAAC;MAAA,CACH;IAAC,CACH,CAAC;EAEV;AACF;AAEA,eAAe/D,+BAA+B"}
|
|
1
|
+
{"version":3,"file":"AdvancedFilterCreatorFilterItem.js","names":["React","PureComponent","Button","Select","getLabelForBooleanFilter","getLabelForDateFilter","getLabelForNumberFilter","getLabelForTextFilter","vsTrash","TableUtils","Log","classNames","memoizeOne","jsx","_jsx","jsxs","_jsxs","log","module","AdvancedFilterCreatorFilterItem","getLabelForFilter","columnType","filterType","isNumberType","isCharType","isTextType","isDateType","isBooleanType","Error","concat","e","warn","constructor","props","_defineProperty","column","operation","value","timeZone","tableUtils","makeAdvancedValueFilter","handleDelete","bind","handleTypeChange","handleValueChange","typeDropdown","filterTypes","selectedType","state","componentDidMount","_this$typeDropdown","focus","componentDidUpdate","prevProps","undefined","setState","eventTargetValue","debug2","onChange","length","event","target","debug","onDelete","render","formatter","showValueInput","type","typeOptionElements","isValid","getCachedIsValid","i","label","element","children","push","className","ref","error","placeholder","kind","onClick","icon","tooltip"],"sources":["../src/AdvancedFilterCreatorFilterItem.tsx"],"sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { Button, Select } from '@deephaven/components';\nimport {\n getLabelForBooleanFilter,\n getLabelForDateFilter,\n getLabelForNumberFilter,\n getLabelForTextFilter,\n TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport { vsTrash } from '@deephaven/icons';\nimport type { Column } from '@deephaven/jsapi-types';\nimport {\n AdvancedFilterItemType,\n Formatter,\n TableUtils,\n} from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\nimport classNames from 'classnames';\nimport memoizeOne from 'memoize-one';\nimport './AdvancedFilterCreatorFilterItem.scss';\n\nconst log = Log.module('AdvancedFilterCreatorFilterItem');\n\nexport interface AdvancedFilterCreatorFilterItemProps {\n column: Column;\n filterTypes: FilterTypeValue[];\n onChange: (type: FilterTypeValue, value: string) => void;\n onDelete: () => void;\n selectedType?: FilterTypeValue;\n value?: string;\n formatter: Formatter;\n tableUtils: TableUtils;\n}\n\nexport type AdvancedFilterCreatorFilterItemState = AdvancedFilterItemType;\n\nexport class AdvancedFilterCreatorFilterItem extends PureComponent<\n AdvancedFilterCreatorFilterItemProps,\n AdvancedFilterCreatorFilterItemState\n> {\n static getLabelForFilter(\n columnType: string,\n filterType: FilterTypeValue\n ): string {\n try {\n if (\n TableUtils.isNumberType(columnType) ||\n TableUtils.isCharType(columnType)\n ) {\n return getLabelForNumberFilter(filterType);\n }\n if (TableUtils.isTextType(columnType)) {\n return getLabelForTextFilter(filterType);\n }\n if (TableUtils.isDateType(columnType)) {\n return getLabelForDateFilter(filterType);\n }\n if (TableUtils.isBooleanType(columnType)) {\n return getLabelForBooleanFilter(filterType);\n }\n throw new Error(`Unrecognized column type: ${columnType}`);\n } catch (e) {\n log.warn(e);\n return '';\n }\n }\n\n constructor(props: AdvancedFilterCreatorFilterItemProps) {\n super(props);\n\n this.handleDelete = this.handleDelete.bind(this);\n this.handleTypeChange = this.handleTypeChange.bind(this);\n this.handleValueChange = this.handleValueChange.bind(this);\n this.typeDropdown = null;\n\n const { value = '', filterTypes, selectedType = filterTypes[0] } = props;\n\n this.state = {\n selectedType,\n value,\n };\n }\n\n componentDidMount(): void {\n this.typeDropdown?.focus();\n }\n\n componentDidUpdate(prevProps: AdvancedFilterCreatorFilterItemProps): void {\n const { value, selectedType } = this.props;\n if (selectedType !== undefined && prevProps.selectedType !== selectedType) {\n this.setState({ selectedType });\n }\n if (value !== undefined && prevProps.value !== value) {\n this.setState({ value });\n }\n }\n\n typeDropdown: HTMLSelectElement | null;\n\n handleTypeChange(eventTargetValue: string): void {\n const selectedType = eventTargetValue as FilterTypeValue;\n log.debug2('typeChange', selectedType);\n this.setState({ selectedType });\n\n const { onChange } = this.props;\n const { value } = this.state;\n if (value != null && value.length > 0) {\n // Don't send an update unless there's already a value entered\n onChange(selectedType, value);\n }\n }\n\n handleValueChange(event: React.ChangeEvent<HTMLInputElement>): void {\n log.debug2('valueChange');\n const { value } = event.target;\n this.setState({ value });\n\n const { onChange } = this.props;\n const { selectedType } = this.state;\n if (selectedType != null) {\n // Don't send an update unless they've already selected a type\n onChange(selectedType, value);\n }\n }\n\n handleDelete(): void {\n log.debug('delete');\n\n const { onDelete } = this.props;\n onDelete();\n }\n\n getCachedIsValid = memoizeOne(\n (\n column: Column,\n operation: FilterTypeValue,\n value: string,\n timeZone: string,\n tableUtils: TableUtils\n ): boolean => {\n try {\n // We don't want to show an error for an empty value\n return (\n !value ||\n tableUtils.makeAdvancedValueFilter(\n column,\n operation,\n value,\n timeZone\n ) != null\n );\n } catch (e) {\n return false;\n }\n }\n );\n\n render(): JSX.Element {\n const { column, filterTypes, formatter, tableUtils } = this.props;\n const { selectedType, value } = this.state;\n const showValueInput = !TableUtils.isBooleanType(column.type);\n const typeOptionElements = [];\n const isValid = this.getCachedIsValid(\n column,\n selectedType,\n value,\n formatter.timeZone,\n tableUtils\n );\n for (let i = 0; i < filterTypes.length; i += 1) {\n const type = filterTypes[i];\n const label = AdvancedFilterCreatorFilterItem.getLabelForFilter(\n column.type,\n type\n );\n const element = (\n <option key={type} value={type}>\n {label}\n </option>\n );\n typeOptionElements.push(element);\n }\n\n return (\n <div className=\"advanced-filter-creator-filter-item\">\n <div className=\"form-row\">\n <div className=\"form-group col\">\n <Select\n className=\"form-control\"\n value={selectedType}\n onChange={this.handleTypeChange}\n ref={typeDropdown => {\n this.typeDropdown = typeDropdown;\n }}\n >\n {typeOptionElements}\n </Select>\n </div>\n {showValueInput && (\n <div className=\"form-group col\">\n <div className=\"input-group\">\n <input\n type=\"text\"\n className={classNames('form-control', { error: !isValid })}\n placeholder=\"Enter value\"\n value={value}\n onChange={this.handleValueChange}\n />\n </div>\n </div>\n )}\n <div className=\"form-group col-1 px-0\">\n <Button\n kind=\"ghost\"\n className=\"w-100 h-100 p-0 m-0\"\n onClick={this.handleDelete}\n icon={vsTrash}\n tooltip=\"Remove Filter\"\n />\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorFilterItem;\n"],"mappings":"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"}
|
package/dist/GotoRow.js
CHANGED
|
@@ -2,7 +2,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
|
2
2
|
import { vsClose, vsArrowUp, vsArrowDown } from '@deephaven/icons';
|
|
3
3
|
import React, { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
|
|
4
4
|
import { Type as FilterType } from '@deephaven/filters';
|
|
5
|
-
import { Button, DateTimeInput } from '@deephaven/components';
|
|
5
|
+
import { Button, DateTimeInput, Select } from '@deephaven/components';
|
|
6
6
|
import { TableUtils } from '@deephaven/jsapi-utils';
|
|
7
7
|
import classNames from 'classnames';
|
|
8
8
|
import "./GotoRow.css";
|
|
@@ -138,10 +138,10 @@ var GotoRow = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
138
138
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
139
139
|
children: [/*#__PURE__*/_jsx("div", {
|
|
140
140
|
className: "goto-row-input",
|
|
141
|
-
children: /*#__PURE__*/_jsxs(
|
|
141
|
+
children: /*#__PURE__*/_jsxs(Select, {
|
|
142
142
|
className: "custom-select",
|
|
143
|
-
onChange:
|
|
144
|
-
onGotoValueSelectedFilterChanged(
|
|
143
|
+
onChange: eventTargetValue => {
|
|
144
|
+
onGotoValueSelectedFilterChanged(eventTargetValue);
|
|
145
145
|
},
|
|
146
146
|
value: gotoValueFilter,
|
|
147
147
|
"aria-label": "filter-type-select",
|
|
@@ -177,10 +177,10 @@ var GotoRow = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
177
177
|
case TableUtils.dataType.BOOLEAN:
|
|
178
178
|
return /*#__PURE__*/_jsx("div", {
|
|
179
179
|
className: "goto-row-input",
|
|
180
|
-
children: /*#__PURE__*/_jsxs(
|
|
180
|
+
children: /*#__PURE__*/_jsxs(Select, {
|
|
181
181
|
className: "custom-select",
|
|
182
|
-
onChange:
|
|
183
|
-
onGotoValueInputChanged(
|
|
182
|
+
onChange: eventTargetValue => {
|
|
183
|
+
onGotoValueInputChanged(eventTargetValue);
|
|
184
184
|
},
|
|
185
185
|
value: gotoValue,
|
|
186
186
|
"aria-label": "Value Input",
|
|
@@ -292,10 +292,10 @@ var GotoRow = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
292
292
|
children: "Go to value"
|
|
293
293
|
}), /*#__PURE__*/_jsx("div", {
|
|
294
294
|
className: "goto-row-input",
|
|
295
|
-
children: /*#__PURE__*/_jsx(
|
|
295
|
+
children: /*#__PURE__*/_jsx(Select, {
|
|
296
296
|
className: "custom-select",
|
|
297
|
-
onChange:
|
|
298
|
-
var columnName =
|
|
297
|
+
onChange: eventTargetValue => {
|
|
298
|
+
var columnName = eventTargetValue;
|
|
299
299
|
onGotoValueSelectedColumnNameChanged(columnName);
|
|
300
300
|
},
|
|
301
301
|
value: gotoValueSelectedColumnName,
|
package/dist/GotoRow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GotoRow.js","names":["FontAwesomeIcon","vsClose","vsArrowUp","vsArrowDown","React","forwardRef","useEffect","useImperativeHandle","useMemo","useRef","useState","Type","FilterType","Button","DateTimeInput","TableUtils","classNames","shortid","IrisGridBottomBar","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","isIrisGridProxyModel","model","undefined","DEFAULT_FORMAT_STRING","GotoRow","_ref","ref","gotoRow","gotoRowError","gotoValueError","onGotoRowSubmit","isShown","onEntering","onEntered","onExiting","onExited","onGotoRowNumberChanged","onClose","gotoValueSelectedColumnName","gotoValue","gotoValueFilter","onGotoValueSelectedColumnNameChanged","onGotoValueSelectedFilterChanged","onGotoValueChanged","onGotoValueSubmit","gotoRowInputRef","gotoValueInputRef","isGotoRowActive","setIsGotoRowActive","columns","table","dh","rowCount","gotoRowInputId","concat","handleGotoValueNumberKeyDown","e","key","stopPropagation","preventDefault","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","onGotoValueInputChanged","handleGotoValueKeySubmit","shiftKey","index","getColumnIndexByName","selectedColumn","columnType","type","normalizedType","getNormalizedType","value","focus","_gotoRowInputRef$curr","current","select","selectInput","document","activeElement","_gotoRowInputRef$curr2","_gotoValueInputRef$cu","renderValueInput","dataType","DECIMAL","INT","className","children","onKeyDown","placeholder","onChange","target","toLowerCase","test","DATETIME","defaultValue","onSubmit","STRING","event","eqIgnoreCase","containsIgnoreCase","eq","contains","BOOLEAN","onClick","onFocus","role","htmlFor","id","i18n","NumberFormat","format","kind","icon","style","marginRight","isSeekRowAvailable","columnName","map","column","name","tooltip","disabled","displayName"],"sources":["../src/GotoRow.tsx"],"sourcesContent":["import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsClose, vsArrowUp, vsArrowDown } from '@deephaven/icons';\nimport React, {\n ChangeEvent,\n KeyboardEvent,\n ReactElement,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { Column } from '@deephaven/jsapi-types';\nimport {\n Type as FilterType,\n TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport { Button, DateTimeInput } from '@deephaven/components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport classNames from 'classnames';\nimport './GotoRow.scss';\nimport shortid from 'shortid';\nimport IrisGridModel from './IrisGridModel';\nimport IrisGridProxyModel from './IrisGridProxyModel';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport { ColumnName } from './CommonTypes';\n\nfunction isIrisGridProxyModel(\n model: IrisGridModel\n): model is IrisGridProxyModel {\n return (model as IrisGridProxyModel).model !== undefined;\n}\n\nconst DEFAULT_FORMAT_STRING = '###,##0';\n\ninterface GotoRowProps {\n gotoRow: string;\n gotoRowError: string;\n gotoValueError: string;\n onGotoRowSubmit: () => void;\n model: IrisGridModel;\n onGotoRowNumberChanged: (event: ChangeEvent<HTMLInputElement>) => void;\n onClose: () => void;\n isShown: boolean;\n onEntering: () => void;\n onEntered: () => void;\n onExiting: () => void;\n onExited: () => void;\n\n gotoValueSelectedColumnName: ColumnName;\n gotoValue: string;\n gotoValueFilter: FilterTypeValue;\n onGotoValueSelectedColumnNameChanged: (columnName: ColumnName) => void;\n onGotoValueSelectedFilterChanged: (filter: FilterTypeValue) => void;\n onGotoValueChanged: (input: string) => void;\n onGotoValueSubmit: (isBackward?: boolean) => void;\n}\n\nexport type GotoRowElement = { focus: () => void };\n\nconst GotoRow = forwardRef<GotoRowElement, GotoRowProps>(\n (\n {\n gotoRow,\n gotoRowError,\n gotoValueError,\n onGotoRowSubmit,\n isShown,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n model,\n onGotoRowNumberChanged,\n onClose,\n gotoValueSelectedColumnName,\n gotoValue,\n gotoValueFilter,\n onGotoValueSelectedColumnNameChanged,\n onGotoValueSelectedFilterChanged,\n onGotoValueChanged,\n onGotoValueSubmit,\n }: GotoRowProps,\n ref\n ): ReactElement => {\n const gotoRowInputRef = useRef<HTMLInputElement>(null);\n const gotoValueInputRef = useRef<HTMLInputElement>(null);\n\n const [isGotoRowActive, setIsGotoRowActive] = useState(false);\n let columns: Column[] = [];\n\n if (isIrisGridProxyModel(model) && model.table !== undefined) {\n ({ columns } = model.table);\n }\n\n const { dh, rowCount } = model;\n\n const gotoRowInputId = useMemo(() => `goto-row-input-${shortid()}`, []);\n\n const handleGotoValueNumberKeyDown = (\n e: KeyboardEvent<HTMLInputElement>\n ): void => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit();\n } else if (\n (e.key === 'Backspace' || e.key === 'Delete') &&\n (gotoValue === `${Number.POSITIVE_INFINITY}` ||\n gotoValue === `${Number.NEGATIVE_INFINITY}`)\n ) {\n onGotoValueInputChanged('');\n }\n };\n\n const handleGotoValueKeySubmit = (\n e: KeyboardEvent<HTMLInputElement>\n ): void => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit(e.shiftKey);\n }\n };\n\n const index = model.getColumnIndexByName(gotoValueSelectedColumnName);\n\n const selectedColumn = columns[index ?? 0];\n\n const columnType = selectedColumn?.type;\n\n const normalizedType = TableUtils.getNormalizedType(columnType);\n const onGotoValueInputChanged = (value?: string): void => {\n onGotoValueChanged(value ?? '');\n };\n useImperativeHandle(ref, () => ({\n focus(): void {\n setIsGotoRowActive(true);\n gotoRowInputRef.current?.select();\n },\n }));\n const selectInput = (): void => {\n // when row changes without focus (i.e. via context menu), re-select input\n if (\n isGotoRowActive &&\n document.activeElement !== gotoRowInputRef.current\n ) {\n gotoRowInputRef.current?.select();\n } else if (\n !isGotoRowActive &&\n document.activeElement !== gotoValueInputRef.current\n ) {\n gotoValueInputRef.current?.select();\n }\n };\n useEffect(selectInput, [isGotoRowActive]);\n\n const renderValueInput = (): JSX.Element => {\n switch (normalizedType) {\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT:\n return (\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className={classNames('form-control', {\n 'is-invalid': gotoValueError !== '',\n })}\n onKeyDown={handleGotoValueNumberKeyDown}\n placeholder=\"value\"\n onChange={e => {\n const value = e.target.value.toLowerCase();\n // regex tests for\n if (/^-?[0-9]*\\.?[0-9]*$/.test(e.target.value)) {\n onGotoValueInputChanged(e.target.value);\n } else if (value === '-i' || value === '-infinity') {\n onGotoValueInputChanged(`${Number.NEGATIVE_INFINITY}`);\n } else if (value === 'i' || value === 'infinity') {\n onGotoValueInputChanged(`${Number.POSITIVE_INFINITY}`);\n }\n }}\n value={gotoValue}\n aria-label=\"Value Input\"\n />\n </div>\n );\n case TableUtils.dataType.DATETIME:\n return (\n <div className=\"goto-value-date-time-input\">\n <DateTimeInput\n ref={gotoValueInputRef}\n className={classNames(\n 'form-control',\n 'goto-value-date-time-input',\n {\n 'is-invalid': gotoValueError !== '',\n }\n )}\n defaultValue={gotoValue}\n onChange={onGotoValueInputChanged}\n onSubmit={handleGotoValueKeySubmit}\n aria-label=\"Value Input\"\n />\n </div>\n );\n case TableUtils.dataType.STRING:\n return (\n <>\n <div className=\"goto-row-input\">\n <select\n className=\"custom-select\"\n onChange={event => {\n onGotoValueSelectedFilterChanged(\n event.target.value as FilterTypeValue\n );\n }}\n value={gotoValueFilter}\n aria-label=\"filter-type-select\"\n >\n <option\n key={FilterType.eqIgnoreCase}\n value={FilterType.eqIgnoreCase}\n >\n Equals (case-insensitive)\n </option>\n <option\n key={FilterType.containsIgnoreCase}\n value={FilterType.containsIgnoreCase}\n >\n Contains (case-insensitive)\n </option>\n <option key={FilterType.eq} value={FilterType.eq}>\n Equals\n </option>\n <option key={FilterType.contains} value={FilterType.contains}>\n Contains\n </option>\n </select>\n </div>\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className={classNames('form-control', {\n 'is-invalid': gotoValueError !== '',\n })}\n onKeyDown={handleGotoValueKeySubmit}\n placeholder=\"value\"\n onChange={e => onGotoValueInputChanged(e.target.value)}\n value={gotoValue}\n aria-label=\"Value Input\"\n />\n </div>\n </>\n );\n case TableUtils.dataType.BOOLEAN:\n return (\n <div className=\"goto-row-input\">\n <select\n className=\"custom-select\"\n onChange={event => {\n onGotoValueInputChanged(event.target.value);\n }}\n value={gotoValue}\n aria-label=\"Value Input\"\n >\n <option aria-label=\"null value\" key=\"null\" value=\"\" />\n <option key=\"true\" value=\"true\">\n true\n </option>\n <option key=\"false\" value=\"false\">\n false\n </option>\n </select>\n </div>\n );\n default:\n return (\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className=\"form-control\"\n onKeyDown={handleGotoValueKeySubmit}\n placeholder=\"value\"\n onChange={e => onGotoValueInputChanged(e.target.value)}\n value={gotoValue}\n aria-label=\"Value Input\"\n />\n </div>\n );\n }\n };\n return (\n <IrisGridBottomBar\n isShown={isShown}\n className={classNames('goto-row')}\n onEntering={onEntering}\n onEntered={() => {\n onEntered();\n selectInput();\n }}\n onExiting={onExiting}\n onExited={onExited}\n >\n <>\n <div className=\"goto-row-row\">\n <div\n className={classNames('goto-row-wrapper', {\n 'is-inactive': !isGotoRowActive,\n })}\n onClick={() => setIsGotoRowActive(true)}\n onFocus={() => setIsGotoRowActive(true)}\n role=\"group\"\n >\n <label className=\"goto-row-text\" htmlFor={gotoRowInputId}>\n Go to row\n </label>\n <div className=\"goto-row-input\">\n <input\n ref={gotoRowInputRef}\n data-testid=\"goto-row-input\"\n type=\"number\"\n onKeyDown={e => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoRowSubmit();\n }\n }}\n className={classNames('form-control', {\n 'is-invalid': gotoRowError !== '',\n })}\n placeholder=\"Row number\"\n onChange={event => {\n onGotoRowNumberChanged(event);\n }}\n value={gotoRow}\n id={gotoRowInputId}\n />\n </div>\n <div className=\"goto-row-text\">\n of{' '}\n {dh.i18n.NumberFormat.format(DEFAULT_FORMAT_STRING, rowCount)}\n </div>\n {gotoRowError && (\n <div className=\"text-danger\">{gotoRowError}</div>\n )}\n </div>\n <div className=\"goto-row-close\">\n <Button kind=\"ghost\" onClick={onClose}>\n <FontAwesomeIcon icon={vsClose} style={{ marginRight: '0' }} />\n </Button>\n </div>\n </div>\n {model.isSeekRowAvailable && (\n <div className=\"goto-row-row\">\n <div\n className={classNames('goto-row-wrapper', {\n 'is-inactive': isGotoRowActive,\n })}\n onClick={() => setIsGotoRowActive(false)}\n onFocus={() => setIsGotoRowActive(false)}\n role=\"group\"\n >\n <div className=\"goto-row-text\">Go to value</div>\n <div className=\"goto-row-input\">\n <select\n className=\"custom-select\"\n onChange={event => {\n const columnName = event.target.value;\n onGotoValueSelectedColumnNameChanged(columnName);\n }}\n value={gotoValueSelectedColumnName}\n aria-label=\"column-name-select\"\n >\n {columns.map(column => (\n <option key={column.name} value={column.name}>\n {column.name}\n </option>\n ))}\n </select>\n </div>\n\n {renderValueInput()}\n\n <div>\n <Button\n tooltip=\"Next match\"\n icon={vsArrowUp}\n kind=\"ghost\"\n disabled={gotoValue === ''}\n onClick={() => {\n onGotoValueSubmit(true);\n }}\n />\n <Button\n tooltip=\"Previous match\"\n icon={vsArrowDown}\n kind=\"ghost\"\n disabled={gotoValue === ''}\n onClick={() => {\n onGotoValueSubmit(false);\n }}\n />\n </div>\n {gotoValueError && (\n <div className=\"text-danger\">{gotoValueError}</div>\n )}\n </div>\n </div>\n )}\n </>\n </IrisGridBottomBar>\n );\n }\n);\nGotoRow.displayName = 'GotoRow';\n\nexport default GotoRow;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GotoRow.js","names":["FontAwesomeIcon","vsClose","vsArrowUp","vsArrowDown","React","forwardRef","useEffect","useImperativeHandle","useMemo","useRef","useState","Type","FilterType","Button","DateTimeInput","Select","TableUtils","classNames","shortid","IrisGridBottomBar","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","isIrisGridProxyModel","model","undefined","DEFAULT_FORMAT_STRING","GotoRow","_ref","ref","gotoRow","gotoRowError","gotoValueError","onGotoRowSubmit","isShown","onEntering","onEntered","onExiting","onExited","onGotoRowNumberChanged","onClose","gotoValueSelectedColumnName","gotoValue","gotoValueFilter","onGotoValueSelectedColumnNameChanged","onGotoValueSelectedFilterChanged","onGotoValueChanged","onGotoValueSubmit","gotoRowInputRef","gotoValueInputRef","isGotoRowActive","setIsGotoRowActive","columns","table","dh","rowCount","gotoRowInputId","concat","handleGotoValueNumberKeyDown","e","key","stopPropagation","preventDefault","Number","POSITIVE_INFINITY","NEGATIVE_INFINITY","onGotoValueInputChanged","handleGotoValueKeySubmit","shiftKey","index","getColumnIndexByName","selectedColumn","columnType","type","normalizedType","getNormalizedType","value","focus","_gotoRowInputRef$curr","current","select","selectInput","document","activeElement","_gotoRowInputRef$curr2","_gotoValueInputRef$cu","renderValueInput","dataType","DECIMAL","INT","className","children","onKeyDown","placeholder","onChange","target","toLowerCase","test","DATETIME","defaultValue","onSubmit","STRING","eventTargetValue","eqIgnoreCase","containsIgnoreCase","eq","contains","BOOLEAN","onClick","onFocus","role","htmlFor","event","id","i18n","NumberFormat","format","kind","icon","style","marginRight","isSeekRowAvailable","columnName","map","column","name","tooltip","disabled","displayName"],"sources":["../src/GotoRow.tsx"],"sourcesContent":["import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsClose, vsArrowUp, vsArrowDown } from '@deephaven/icons';\nimport React, {\n ChangeEvent,\n KeyboardEvent,\n ReactElement,\n forwardRef,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport type { Column } from '@deephaven/jsapi-types';\nimport {\n Type as FilterType,\n TypeValue as FilterTypeValue,\n} from '@deephaven/filters';\nimport { Button, DateTimeInput, Select } from '@deephaven/components';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport classNames from 'classnames';\nimport './GotoRow.scss';\nimport shortid from 'shortid';\nimport IrisGridModel from './IrisGridModel';\nimport IrisGridProxyModel from './IrisGridProxyModel';\nimport IrisGridBottomBar from './IrisGridBottomBar';\nimport { ColumnName } from './CommonTypes';\n\nfunction isIrisGridProxyModel(\n model: IrisGridModel\n): model is IrisGridProxyModel {\n return (model as IrisGridProxyModel).model !== undefined;\n}\n\nconst DEFAULT_FORMAT_STRING = '###,##0';\n\ninterface GotoRowProps {\n gotoRow: string;\n gotoRowError: string;\n gotoValueError: string;\n onGotoRowSubmit: () => void;\n model: IrisGridModel;\n onGotoRowNumberChanged: (event: ChangeEvent<HTMLInputElement>) => void;\n onClose: () => void;\n isShown: boolean;\n onEntering: () => void;\n onEntered: () => void;\n onExiting: () => void;\n onExited: () => void;\n\n gotoValueSelectedColumnName: ColumnName;\n gotoValue: string;\n gotoValueFilter: FilterTypeValue;\n onGotoValueSelectedColumnNameChanged: (columnName: ColumnName) => void;\n onGotoValueSelectedFilterChanged: (filter: FilterTypeValue) => void;\n onGotoValueChanged: (input: string) => void;\n onGotoValueSubmit: (isBackward?: boolean) => void;\n}\n\nexport type GotoRowElement = { focus: () => void };\n\nconst GotoRow = forwardRef<GotoRowElement, GotoRowProps>(\n (\n {\n gotoRow,\n gotoRowError,\n gotoValueError,\n onGotoRowSubmit,\n isShown,\n onEntering,\n onEntered,\n onExiting,\n onExited,\n model,\n onGotoRowNumberChanged,\n onClose,\n gotoValueSelectedColumnName,\n gotoValue,\n gotoValueFilter,\n onGotoValueSelectedColumnNameChanged,\n onGotoValueSelectedFilterChanged,\n onGotoValueChanged,\n onGotoValueSubmit,\n }: GotoRowProps,\n ref\n ): ReactElement => {\n const gotoRowInputRef = useRef<HTMLInputElement>(null);\n const gotoValueInputRef = useRef<HTMLInputElement>(null);\n\n const [isGotoRowActive, setIsGotoRowActive] = useState(false);\n let columns: Column[] = [];\n\n if (isIrisGridProxyModel(model) && model.table !== undefined) {\n ({ columns } = model.table);\n }\n\n const { dh, rowCount } = model;\n\n const gotoRowInputId = useMemo(() => `goto-row-input-${shortid()}`, []);\n\n const handleGotoValueNumberKeyDown = (\n e: KeyboardEvent<HTMLInputElement>\n ): void => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit();\n } else if (\n (e.key === 'Backspace' || e.key === 'Delete') &&\n (gotoValue === `${Number.POSITIVE_INFINITY}` ||\n gotoValue === `${Number.NEGATIVE_INFINITY}`)\n ) {\n onGotoValueInputChanged('');\n }\n };\n\n const handleGotoValueKeySubmit = (\n e: KeyboardEvent<HTMLInputElement>\n ): void => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoValueSubmit(e.shiftKey);\n }\n };\n\n const index = model.getColumnIndexByName(gotoValueSelectedColumnName);\n\n const selectedColumn = columns[index ?? 0];\n\n const columnType = selectedColumn?.type;\n\n const normalizedType = TableUtils.getNormalizedType(columnType);\n const onGotoValueInputChanged = (value?: string): void => {\n onGotoValueChanged(value ?? '');\n };\n useImperativeHandle(ref, () => ({\n focus(): void {\n setIsGotoRowActive(true);\n gotoRowInputRef.current?.select();\n },\n }));\n const selectInput = (): void => {\n // when row changes without focus (i.e. via context menu), re-select input\n if (\n isGotoRowActive &&\n document.activeElement !== gotoRowInputRef.current\n ) {\n gotoRowInputRef.current?.select();\n } else if (\n !isGotoRowActive &&\n document.activeElement !== gotoValueInputRef.current\n ) {\n gotoValueInputRef.current?.select();\n }\n };\n useEffect(selectInput, [isGotoRowActive]);\n\n const renderValueInput = (): JSX.Element => {\n switch (normalizedType) {\n case TableUtils.dataType.DECIMAL:\n case TableUtils.dataType.INT:\n return (\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className={classNames('form-control', {\n 'is-invalid': gotoValueError !== '',\n })}\n onKeyDown={handleGotoValueNumberKeyDown}\n placeholder=\"value\"\n onChange={e => {\n const value = e.target.value.toLowerCase();\n // regex tests for\n if (/^-?[0-9]*\\.?[0-9]*$/.test(e.target.value)) {\n onGotoValueInputChanged(e.target.value);\n } else if (value === '-i' || value === '-infinity') {\n onGotoValueInputChanged(`${Number.NEGATIVE_INFINITY}`);\n } else if (value === 'i' || value === 'infinity') {\n onGotoValueInputChanged(`${Number.POSITIVE_INFINITY}`);\n }\n }}\n value={gotoValue}\n aria-label=\"Value Input\"\n />\n </div>\n );\n case TableUtils.dataType.DATETIME:\n return (\n <div className=\"goto-value-date-time-input\">\n <DateTimeInput\n ref={gotoValueInputRef}\n className={classNames(\n 'form-control',\n 'goto-value-date-time-input',\n {\n 'is-invalid': gotoValueError !== '',\n }\n )}\n defaultValue={gotoValue}\n onChange={onGotoValueInputChanged}\n onSubmit={handleGotoValueKeySubmit}\n aria-label=\"Value Input\"\n />\n </div>\n );\n case TableUtils.dataType.STRING:\n return (\n <>\n <div className=\"goto-row-input\">\n <Select\n className=\"custom-select\"\n onChange={eventTargetValue => {\n onGotoValueSelectedFilterChanged(\n eventTargetValue as FilterTypeValue\n );\n }}\n value={gotoValueFilter}\n aria-label=\"filter-type-select\"\n >\n <option\n key={FilterType.eqIgnoreCase}\n value={FilterType.eqIgnoreCase}\n >\n Equals (case-insensitive)\n </option>\n <option\n key={FilterType.containsIgnoreCase}\n value={FilterType.containsIgnoreCase}\n >\n Contains (case-insensitive)\n </option>\n <option key={FilterType.eq} value={FilterType.eq}>\n Equals\n </option>\n <option key={FilterType.contains} value={FilterType.contains}>\n Contains\n </option>\n </Select>\n </div>\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className={classNames('form-control', {\n 'is-invalid': gotoValueError !== '',\n })}\n onKeyDown={handleGotoValueKeySubmit}\n placeholder=\"value\"\n onChange={e => onGotoValueInputChanged(e.target.value)}\n value={gotoValue}\n aria-label=\"Value Input\"\n />\n </div>\n </>\n );\n case TableUtils.dataType.BOOLEAN:\n return (\n <div className=\"goto-row-input\">\n <Select\n className=\"custom-select\"\n onChange={eventTargetValue => {\n onGotoValueInputChanged(eventTargetValue);\n }}\n value={gotoValue}\n aria-label=\"Value Input\"\n >\n <option aria-label=\"null value\" key=\"null\" value=\"\" />\n <option key=\"true\" value=\"true\">\n true\n </option>\n <option key=\"false\" value=\"false\">\n false\n </option>\n </Select>\n </div>\n );\n default:\n return (\n <div className=\"goto-row-input\">\n <input\n ref={gotoValueInputRef}\n className=\"form-control\"\n onKeyDown={handleGotoValueKeySubmit}\n placeholder=\"value\"\n onChange={e => onGotoValueInputChanged(e.target.value)}\n value={gotoValue}\n aria-label=\"Value Input\"\n />\n </div>\n );\n }\n };\n return (\n <IrisGridBottomBar\n isShown={isShown}\n className={classNames('goto-row')}\n onEntering={onEntering}\n onEntered={() => {\n onEntered();\n selectInput();\n }}\n onExiting={onExiting}\n onExited={onExited}\n >\n <>\n <div className=\"goto-row-row\">\n <div\n className={classNames('goto-row-wrapper', {\n 'is-inactive': !isGotoRowActive,\n })}\n onClick={() => setIsGotoRowActive(true)}\n onFocus={() => setIsGotoRowActive(true)}\n role=\"group\"\n >\n <label className=\"goto-row-text\" htmlFor={gotoRowInputId}>\n Go to row\n </label>\n <div className=\"goto-row-input\">\n <input\n ref={gotoRowInputRef}\n data-testid=\"goto-row-input\"\n type=\"number\"\n onKeyDown={e => {\n if (e.key === 'Enter') {\n e.stopPropagation();\n e.preventDefault();\n onGotoRowSubmit();\n }\n }}\n className={classNames('form-control', {\n 'is-invalid': gotoRowError !== '',\n })}\n placeholder=\"Row number\"\n onChange={event => {\n onGotoRowNumberChanged(event);\n }}\n value={gotoRow}\n id={gotoRowInputId}\n />\n </div>\n <div className=\"goto-row-text\">\n of{' '}\n {dh.i18n.NumberFormat.format(DEFAULT_FORMAT_STRING, rowCount)}\n </div>\n {gotoRowError && (\n <div className=\"text-danger\">{gotoRowError}</div>\n )}\n </div>\n <div className=\"goto-row-close\">\n <Button kind=\"ghost\" onClick={onClose}>\n <FontAwesomeIcon icon={vsClose} style={{ marginRight: '0' }} />\n </Button>\n </div>\n </div>\n {model.isSeekRowAvailable && (\n <div className=\"goto-row-row\">\n <div\n className={classNames('goto-row-wrapper', {\n 'is-inactive': isGotoRowActive,\n })}\n onClick={() => setIsGotoRowActive(false)}\n onFocus={() => setIsGotoRowActive(false)}\n role=\"group\"\n >\n <div className=\"goto-row-text\">Go to value</div>\n <div className=\"goto-row-input\">\n <Select\n className=\"custom-select\"\n onChange={eventTargetValue => {\n const columnName = eventTargetValue;\n onGotoValueSelectedColumnNameChanged(columnName);\n }}\n value={gotoValueSelectedColumnName}\n aria-label=\"column-name-select\"\n >\n {columns.map(column => (\n <option key={column.name} value={column.name}>\n {column.name}\n </option>\n ))}\n </Select>\n </div>\n\n {renderValueInput()}\n\n <div>\n <Button\n tooltip=\"Next match\"\n icon={vsArrowUp}\n kind=\"ghost\"\n disabled={gotoValue === ''}\n onClick={() => {\n onGotoValueSubmit(true);\n }}\n />\n <Button\n tooltip=\"Previous match\"\n icon={vsArrowDown}\n kind=\"ghost\"\n disabled={gotoValue === ''}\n onClick={() => {\n onGotoValueSubmit(false);\n }}\n />\n </div>\n {gotoValueError && (\n <div className=\"text-danger\">{gotoValueError}</div>\n )}\n </div>\n </div>\n )}\n </>\n </IrisGridBottomBar>\n );\n }\n);\nGotoRow.displayName = 'GotoRow';\n\nexport default GotoRow;\n"],"mappings":"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"}
|
|
@@ -48,11 +48,11 @@ declare class ChartBuilder extends PureComponent<ChartBuilderProps, ChartBuilder
|
|
|
48
48
|
handleAddSeries(): void;
|
|
49
49
|
handleLinkStateChange(event: React.ChangeEvent<HTMLInputElement>): void;
|
|
50
50
|
handleReset(): void;
|
|
51
|
-
handleSeriesChange(
|
|
52
|
-
handleSeriesDeleteClick(
|
|
51
|
+
handleSeriesChange(eventTargetValue: string, index: number): void;
|
|
52
|
+
handleSeriesDeleteClick(index: number): void;
|
|
53
53
|
handleSubmit(event: React.FormEvent<HTMLFormElement>): void;
|
|
54
|
-
handleTypeClick(
|
|
55
|
-
handleXAxisChange(
|
|
54
|
+
handleTypeClick(index: number): void;
|
|
55
|
+
handleXAxisChange(eventTargetValue: string): void;
|
|
56
56
|
sendChange(): void;
|
|
57
57
|
render(): JSX.Element;
|
|
58
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartBuilder.d.ts","sourceRoot":"","sources":["../../src/sidebar/ChartBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAY7C,OAAO,KAAK,EACV,MAAM,EACN,EAAE,IAAI,MAAM,EACZ,eAAe,EAChB,MAAM,wBAAwB,CAAC;AAUhC,OAAO,qBAAqB,CAAC;AAC7B,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAI7C,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AACF,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,UAAU,iBAAiB;IACzB,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,CAAC,GAAG,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC9C,QAAQ,EAAE,CAAC,GAAG,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAC/C;AACD,UAAU,iBAAiB;IACzB,8BAA8B;IAC9B,IAAI,EAAE,eAAe,CAAC;IAEtB,qDAAqD;IACrD,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;IAEnC,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IAEd,mGAAmG;IACnG,QAAQ,EAAE,OAAO,CAAC;CACnB;AACD;;GAEG;AACH,cAAM,YAAa,SAAQ,aAAa,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC5E,MAAM,CAAC,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,MAAM;IAWnE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAIhD,MAAM,CAAC,sBAAsB,CAC3B,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,UAAU,EAAE;IAUf,MAAM,CAAC,eAAe,CACpB,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,MAAM,GAAG,IAAI;gBAQJ,KAAK,EAAE,iBAAiB;IAmCpC,QAAQ,IAAI,eAAe,EAAE;IAa7B;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,eAAe;IAmB5D,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI;IAmB7D,aAAa,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM;IAa5C,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM;IAW7C,eAAe,IAAI,IAAI;IAgBvB,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAIvE,WAAW,IAAI,IAAI;IAYnB,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"ChartBuilder.d.ts","sourceRoot":"","sources":["../../src/sidebar/ChartBuilder.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAY7C,OAAO,KAAK,EACV,MAAM,EACN,EAAE,IAAI,MAAM,EACZ,eAAe,EAChB,MAAM,wBAAwB,CAAC;AAUhC,OAAO,qBAAqB,CAAC;AAC7B,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAI7C,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AACF,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,UAAU,iBAAiB;IACzB,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,CAAC,GAAG,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC9C,QAAQ,EAAE,CAAC,GAAG,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAC/C;AACD,UAAU,iBAAiB;IACzB,8BAA8B;IAC9B,IAAI,EAAE,eAAe,CAAC;IAEtB,qDAAqD;IACrD,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;IAEnC,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IAEd,mGAAmG;IACnG,QAAQ,EAAE,OAAO,CAAC;CACnB;AACD;;GAEG;AACH,cAAM,YAAa,SAAQ,aAAa,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC5E,MAAM,CAAC,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,MAAM;IAWnE,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAIhD,MAAM,CAAC,sBAAsB,CAC3B,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,UAAU,EAAE;IAUf,MAAM,CAAC,eAAe,CACpB,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,MAAM,GAAG,IAAI;gBAQJ,KAAK,EAAE,iBAAiB;IAmCpC,QAAQ,IAAI,eAAe,EAAE;IAa7B;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,eAAe;IAmB5D,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI;IAmB7D,aAAa,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM;IAa5C,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM;IAW7C,eAAe,IAAI,IAAI;IAgBvB,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAIvE,WAAW,IAAI,IAAI;IAYnB,kBAAkB,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAYjE,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAW5C,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,GAAG,IAAI;IAc3D,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAoBpC,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAOjD,UAAU,IAAI,IAAI;IAQlB,MAAM,IAAI,GAAG,CAAC,OAAO;CAwJtB;AAED,eAAe,YAAY,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { PureComponent } from 'react';
|
|
2
2
|
import classNames from 'classnames';
|
|
3
3
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
4
|
-
import { Button, RadioGroup, RadioItem } from '@deephaven/components';
|
|
4
|
+
import { Button, RadioGroup, RadioItem, Select } from '@deephaven/components';
|
|
5
5
|
import { vsLink, dhUnlink, dhTable, dhNewCircleLargeFilled, vsCircleLargeFilled, vsTrash } from '@deephaven/icons';
|
|
6
6
|
import Log from '@deephaven/log';
|
|
7
7
|
import shortid from 'shortid';
|
|
@@ -212,33 +212,26 @@ class ChartBuilder extends PureComponent {
|
|
|
212
212
|
isLinked
|
|
213
213
|
}, this.sendChange);
|
|
214
214
|
}
|
|
215
|
-
handleSeriesChange(
|
|
216
|
-
var
|
|
217
|
-
value
|
|
218
|
-
} = event.target;
|
|
219
|
-
var index = event.target.getAttribute('data-index');
|
|
220
|
-
var intIndex = parseInt(index, 10);
|
|
215
|
+
handleSeriesChange(eventTargetValue, index) {
|
|
216
|
+
var value = eventTargetValue;
|
|
221
217
|
this.setState(state => {
|
|
222
218
|
var {
|
|
223
219
|
seriesItems
|
|
224
220
|
} = state;
|
|
225
221
|
seriesItems = [...seriesItems];
|
|
226
|
-
seriesItems[
|
|
222
|
+
seriesItems[index].value = value;
|
|
227
223
|
return {
|
|
228
224
|
seriesItems
|
|
229
225
|
};
|
|
230
226
|
}, this.sendChange);
|
|
231
227
|
}
|
|
232
|
-
handleSeriesDeleteClick(
|
|
233
|
-
var changeEvent = event;
|
|
234
|
-
var index = changeEvent.target.getAttribute('data-index');
|
|
235
|
-
var intIndex = parseInt(index, 10);
|
|
228
|
+
handleSeriesDeleteClick(index) {
|
|
236
229
|
this.setState(state => {
|
|
237
230
|
var {
|
|
238
231
|
seriesItems
|
|
239
232
|
} = state;
|
|
240
233
|
var newSeriesItems = [...seriesItems];
|
|
241
|
-
newSeriesItems.splice(
|
|
234
|
+
newSeriesItems.splice(index, 1);
|
|
242
235
|
return {
|
|
243
236
|
seriesItems: newSeriesItems
|
|
244
237
|
};
|
|
@@ -263,11 +256,8 @@ class ChartBuilder extends PureComponent {
|
|
|
263
256
|
isLinked
|
|
264
257
|
});
|
|
265
258
|
}
|
|
266
|
-
handleTypeClick(
|
|
267
|
-
var
|
|
268
|
-
var index = changeEvent.target.getAttribute('data-index');
|
|
269
|
-
var intIndex = parseInt(index, 10);
|
|
270
|
-
var type = this.getTypes()[intIndex];
|
|
259
|
+
handleTypeClick(index) {
|
|
260
|
+
var type = this.getTypes()[index];
|
|
271
261
|
log.debug2('handleTypeSelect', type);
|
|
272
262
|
this.setState(state => {
|
|
273
263
|
var {
|
|
@@ -293,8 +283,8 @@ class ChartBuilder extends PureComponent {
|
|
|
293
283
|
};
|
|
294
284
|
}, this.sendChange);
|
|
295
285
|
}
|
|
296
|
-
handleXAxisChange(
|
|
297
|
-
var xAxis =
|
|
286
|
+
handleXAxisChange(eventTargetValue) {
|
|
287
|
+
var xAxis = eventTargetValue;
|
|
298
288
|
log.debug2('x-axis change', xAxis);
|
|
299
289
|
this.setState({
|
|
300
290
|
xAxis
|
|
@@ -356,8 +346,7 @@ class ChartBuilder extends PureComponent {
|
|
|
356
346
|
className: classNames('btn', 'btn-icon', 'btn-chart-type', {
|
|
357
347
|
active: chartType === type
|
|
358
348
|
}),
|
|
359
|
-
|
|
360
|
-
onClick: this.handleTypeClick,
|
|
349
|
+
onClick: () => this.handleTypeClick(index),
|
|
361
350
|
children: [this.getTypeIcon(chartType), this.getTypeName(chartType)]
|
|
362
351
|
})
|
|
363
352
|
}, key);
|
|
@@ -368,8 +357,8 @@ class ChartBuilder extends PureComponent {
|
|
|
368
357
|
children: [/*#__PURE__*/_jsx("label", {
|
|
369
358
|
className: "col-2 label-left",
|
|
370
359
|
children: xAxisLabel
|
|
371
|
-
}), /*#__PURE__*/_jsx(
|
|
372
|
-
className: "form-control
|
|
360
|
+
}), /*#__PURE__*/_jsx(Select, {
|
|
361
|
+
className: "form-control select-x-axis col",
|
|
373
362
|
value: xAxis,
|
|
374
363
|
onChange: this.handleXAxisChange,
|
|
375
364
|
children: columns.map(column => /*#__PURE__*/_jsx("option", {
|
|
@@ -383,23 +372,22 @@ class ChartBuilder extends PureComponent {
|
|
|
383
372
|
children: [/*#__PURE__*/_jsx("label", {
|
|
384
373
|
className: "col-2 label-left",
|
|
385
374
|
children: i === 0 ? seriesLabel : ''
|
|
386
|
-
}), /*#__PURE__*/_jsx(
|
|
387
|
-
className: "form-control
|
|
375
|
+
}), /*#__PURE__*/_jsx(Select, {
|
|
376
|
+
className: "form-control select-series col",
|
|
388
377
|
value: seriesItem.value,
|
|
389
|
-
onChange: this.handleSeriesChange,
|
|
378
|
+
onChange: v => this.handleSeriesChange(v, i),
|
|
390
379
|
"data-testid": "select-series-item-".concat(i),
|
|
391
|
-
"data-index": i,
|
|
392
380
|
children: columns.map(column => /*#__PURE__*/_jsx("option", {
|
|
393
381
|
value: column.name,
|
|
394
|
-
"data-index": i,
|
|
395
382
|
children: column.name
|
|
396
383
|
}, column.name))
|
|
397
384
|
}), seriesItems.length > 1 && /*#__PURE__*/_jsx(Button, {
|
|
398
385
|
kind: "ghost",
|
|
399
386
|
className: "btn-delete-series ml-2 px-2",
|
|
400
|
-
"data-index": i,
|
|
401
387
|
"data-testid": "delete-series-".concat(i),
|
|
402
|
-
onClick:
|
|
388
|
+
onClick: () => {
|
|
389
|
+
this.handleSeriesDeleteClick(i);
|
|
390
|
+
},
|
|
403
391
|
icon: vsTrash,
|
|
404
392
|
tooltip: "Delete"
|
|
405
393
|
})]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartBuilder.js","names":["React","PureComponent","classNames","FontAwesomeIcon","Button","RadioGroup","RadioItem","vsLink","dhUnlink","dhTable","dhNewCircleLargeFilled","vsCircleLargeFilled","vsTrash","Log","shortid","BarIcon","HistogramIcon","LineIcon","PieIcon","ScatterIcon","jsx","_jsx","jsxs","_jsxs","log","module","ChartBuilder","getMaxSeriesCount","dh","type","plot","SeriesPlotStyle","PIE","HISTOGRAM","makeSeriesItem","value","id","generate","makeDefaultSeriesItems","columns","maxSeriesCount","length","name","getDefaultXAxis","constructor","props","handleAddSeries","bind","handleLinkStateChange","handleReset","handleSeriesChange","handleSeriesDeleteClick","handleSubmit","handleTypeClick","handleXAxisChange","sendChange","model","getTypes","xAxis","seriesItems","state","isLinked","LINE","BAR","SCATTER","getTypeName","getTypeIcon","getXAxisLabel","getSeriesLabel","setState","newSeriesItems","push","event","target","index","getAttribute","intIndex","parseInt","changeEvent","splice","preventDefault","onSubmit","series","map","item","debug2","slice","onChange","render","xAxisLabel","seriesLabel","isSeriesVisible","isAddSeriesVisible","className","children","chartType","key","active","onClick","column","seriesItem","i","concat","kind","icon","tooltip","mask","transform"],"sources":["../../src/sidebar/ChartBuilder.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, RadioGroup, RadioItem } from '@deephaven/components';\nimport {\n vsLink,\n dhUnlink,\n dhTable,\n dhNewCircleLargeFilled,\n vsCircleLargeFilled,\n vsTrash,\n} from '@deephaven/icons';\nimport type {\n Column,\n dh as DhType,\n SeriesPlotStyle,\n} from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport shortid from 'shortid';\nimport {\n BarIcon,\n HistogramIcon,\n LineIcon,\n PieIcon,\n ScatterIcon,\n} from './icons';\nimport './ChartBuilder.scss';\nimport IrisGridModel from '../IrisGridModel';\n\nconst log = Log.module('ChartBuilder');\n\nexport type ChartBuilderSettings = {\n type: SeriesPlotStyle;\n series: string[];\n xAxis: string;\n isLinked: boolean;\n};\nexport type SeriesItem = {\n id: string;\n value: string;\n};\n\ninterface ChartBuilderProps {\n model: IrisGridModel;\n onSubmit: (obj: ChartBuilderSettings) => void;\n onChange: (obj: ChartBuilderSettings) => void;\n}\ninterface ChartBuilderState {\n /** The selected chart type */\n type: SeriesPlotStyle;\n\n /** Array of column names of the series to display */\n seriesItems: readonly SeriesItem[];\n\n /** The column name to use as the x-axis */\n xAxis: string;\n\n /** Whether the newly created chart should be linked with the table (update when filters update) */\n isLinked: boolean;\n}\n/**\n * Form for configuring all the settings when creating a console.\n */\nclass ChartBuilder extends PureComponent<ChartBuilderProps, ChartBuilderState> {\n static getMaxSeriesCount(dh: DhType, type: SeriesPlotStyle): number {\n switch (type) {\n case dh.plot.SeriesPlotStyle.PIE:\n return 1;\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 0;\n default:\n return 100;\n }\n }\n\n static makeSeriesItem(value: string): SeriesItem {\n return { id: shortid.generate(), value };\n }\n\n static makeDefaultSeriesItems(\n dh: DhType,\n type: SeriesPlotStyle,\n columns: readonly Column[]\n ): SeriesItem[] {\n const maxSeriesCount = ChartBuilder.getMaxSeriesCount(dh, type);\n if (maxSeriesCount === 0 || columns == null || columns.length === 0) {\n return [];\n }\n\n const value = columns.length > 1 ? columns[1].name : columns[0].name;\n return [ChartBuilder.makeSeriesItem(value)];\n }\n\n static getDefaultXAxis(\n type: SeriesPlotStyle,\n columns: readonly Column[]\n ): string | null {\n if (columns != null && columns.length > 0) {\n return columns[0].name;\n }\n\n return null;\n }\n\n constructor(props: ChartBuilderProps) {\n super(props);\n\n this.handleAddSeries = this.handleAddSeries.bind(this);\n this.handleLinkStateChange = this.handleLinkStateChange.bind(this);\n this.handleReset = this.handleReset.bind(this);\n this.handleSeriesChange = this.handleSeriesChange.bind(this);\n this.handleSeriesDeleteClick = this.handleSeriesDeleteClick.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleTypeClick = this.handleTypeClick.bind(this);\n this.handleXAxisChange = this.handleXAxisChange.bind(this);\n this.sendChange = this.sendChange.bind(this);\n\n const { model } = props;\n const { columns, dh } = model;\n\n const type = this.getTypes()[0];\n const xAxis = ChartBuilder.getDefaultXAxis(type, columns) as string;\n const seriesItems = ChartBuilder.makeDefaultSeriesItems(dh, type, columns);\n\n this.state = {\n /** The selected chart type */\n type,\n\n /** Array of column names of the series to display */\n seriesItems,\n\n /** The column name to use as the x-axis */\n xAxis,\n\n /** Whether the newly created chart should be linked with the table (update when filters update) */\n isLinked: true,\n };\n }\n\n getTypes(): SeriesPlotStyle[] {\n const { model } = this.props;\n const { dh } = model;\n return [\n dh.plot.SeriesPlotStyle.LINE,\n dh.plot.SeriesPlotStyle.BAR,\n dh.plot.SeriesPlotStyle.SCATTER,\n dh.plot.SeriesPlotStyle.PIE,\n // IDS-6808: Disable Histogram in Chart Builder until we pipe histogram creation through the API\n // dh.plot.SeriesPlotStyle.HISTOGRAM,\n ];\n }\n\n /**\n * Converts the provided chart type into a readable type.\n * Just replaces underscores with spaces and capitals the first letter of each word.\n */\n getTypeName(type: SeriesPlotStyle): string | SeriesPlotStyle {\n const { model } = this.props;\n const { dh } = model;\n switch (type) {\n case dh.plot.SeriesPlotStyle.LINE:\n return 'Line';\n case dh.plot.SeriesPlotStyle.BAR:\n return 'Bar';\n case dh.plot.SeriesPlotStyle.SCATTER:\n return 'Scatter';\n case dh.plot.SeriesPlotStyle.PIE:\n return 'Pie';\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 'Histogram';\n default:\n return type;\n }\n }\n\n getTypeIcon(type: SeriesPlotStyle): React.ReactElement | null {\n const { model } = this.props;\n const { dh } = model;\n switch (type) {\n case dh.plot.SeriesPlotStyle.LINE:\n return <LineIcon />;\n case dh.plot.SeriesPlotStyle.BAR:\n return <BarIcon />;\n case dh.plot.SeriesPlotStyle.SCATTER:\n return <ScatterIcon />;\n case dh.plot.SeriesPlotStyle.PIE:\n return <PieIcon />;\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return <HistogramIcon />;\n default:\n return null;\n }\n }\n\n getXAxisLabel(type: SeriesPlotStyle): string {\n const { model } = this.props;\n const { dh } = model;\n switch (type) {\n case dh.plot.SeriesPlotStyle.PIE:\n return 'Labels';\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 'Data';\n default:\n return 'X-Axis';\n }\n }\n\n getSeriesLabel(type: SeriesPlotStyle): string {\n const { model } = this.props;\n const { dh } = model;\n switch (type) {\n case dh.plot.SeriesPlotStyle.PIE:\n return 'Values';\n default:\n return 'Series';\n }\n }\n\n handleAddSeries(): void {\n this.setState(state => {\n const { seriesItems } = state;\n const newSeriesItems = [...seriesItems];\n\n const { model } = this.props;\n const { columns } = model;\n newSeriesItems.push({\n id: shortid.generate(),\n value: columns[0].name,\n });\n\n return { seriesItems: newSeriesItems };\n }, this.sendChange);\n }\n\n handleLinkStateChange(event: React.ChangeEvent<HTMLInputElement>): void {\n this.setState({ isLinked: event.target.value === 'true' }, this.sendChange);\n }\n\n handleReset(): void {\n const { model } = this.props;\n const { columns, dh } = model;\n\n const type = this.getTypes()[0];\n const xAxis = ChartBuilder.getDefaultXAxis(type, columns) as string;\n const seriesItems = ChartBuilder.makeDefaultSeriesItems(dh, type, columns);\n const isLinked = true;\n\n this.setState({ type, seriesItems, xAxis, isLinked }, this.sendChange);\n }\n\n handleSeriesChange(event: React.ChangeEvent<HTMLSelectElement>): void {\n const { value } = event.target;\n const index = event.target.getAttribute('data-index') as string;\n const intIndex = parseInt(index, 10);\n\n this.setState(state => {\n let { seriesItems } = state;\n\n seriesItems = [...seriesItems];\n seriesItems[intIndex].value = value;\n\n return { seriesItems };\n }, this.sendChange);\n }\n\n handleSeriesDeleteClick(event: React.MouseEvent<HTMLButtonElement>): void {\n const changeEvent =\n event as unknown as React.ChangeEvent<HTMLButtonElement>;\n const index = changeEvent.target.getAttribute('data-index') as string;\n const intIndex = parseInt(index, 10);\n\n this.setState(state => {\n const { seriesItems } = state;\n const newSeriesItems = [...seriesItems];\n\n newSeriesItems.splice(intIndex, 1);\n\n return { seriesItems: newSeriesItems };\n }, this.sendChange);\n }\n\n handleSubmit(event: React.FormEvent<HTMLFormElement>): void {\n event.preventDefault();\n\n const { onSubmit } = this.props;\n const { type, seriesItems, xAxis, isLinked } = this.state;\n const series = seriesItems.map(item => item.value);\n onSubmit({\n type,\n series,\n xAxis,\n isLinked,\n });\n }\n\n handleTypeClick(event: React.MouseEvent<HTMLButtonElement>): void {\n const changeEvent =\n event as unknown as React.ChangeEvent<HTMLButtonElement>;\n const index = changeEvent.target.getAttribute('data-index') as string;\n const intIndex = parseInt(index, 10);\n\n const type = this.getTypes()[intIndex];\n\n log.debug2('handleTypeSelect', type);\n\n this.setState(state => {\n const { model } = this.props;\n const { dh } = model;\n const maxSeriesCount = ChartBuilder.getMaxSeriesCount(dh, type);\n let { seriesItems } = state;\n seriesItems = seriesItems.slice(0, maxSeriesCount);\n if (seriesItems.length === 0 && maxSeriesCount > 0) {\n const { columns } = model;\n seriesItems = ChartBuilder.makeDefaultSeriesItems(dh, type, columns);\n }\n\n return { type, seriesItems };\n }, this.sendChange);\n }\n\n handleXAxisChange(event: React.ChangeEvent<HTMLSelectElement>): void {\n const xAxis = event.target.value;\n log.debug2('x-axis change', xAxis);\n\n this.setState({ xAxis }, this.sendChange);\n }\n\n sendChange(): void {\n const { onChange } = this.props;\n const { isLinked, type, seriesItems, xAxis } = this.state;\n const series = seriesItems.map(item => item.value);\n\n onChange({ type, series, xAxis, isLinked });\n }\n\n render(): JSX.Element {\n const { model } = this.props;\n const { columns, dh } = model;\n const { seriesItems, type, xAxis, isLinked } = this.state;\n const maxSeriesCount = ChartBuilder.getMaxSeriesCount(dh, type);\n const xAxisLabel = this.getXAxisLabel(type);\n const seriesLabel = this.getSeriesLabel(type);\n const isSeriesVisible = seriesItems.length > 0;\n const isAddSeriesVisible = seriesItems.length < maxSeriesCount;\n\n return (\n <div className=\"chart-builder\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"form-row\">\n <label>Select Chart Type</label>\n <div className=\"form-row\">\n {this.getTypes().map((chartType, index) => {\n const key = chartType as unknown as React.Key;\n return (\n <div key={key} className=\"col col-chart-type\">\n <button\n type=\"button\"\n className={classNames(\n 'btn',\n 'btn-icon',\n 'btn-chart-type',\n {\n active: chartType === type,\n }\n )}\n data-index={index}\n onClick={this.handleTypeClick}\n >\n {this.getTypeIcon(chartType)}\n {this.getTypeName(chartType)}\n </button>\n </div>\n );\n })}\n </div>\n </div>\n <hr />\n <div className=\"form-row form-inline\">\n <label className=\"col-2 label-left\">{xAxisLabel}</label>\n <select\n className=\"form-control custom-select select-x-axis col\"\n value={xAxis}\n onChange={this.handleXAxisChange}\n >\n {columns.map(column => (\n <option key={column.name} value={column.name}>\n {column.name}\n </option>\n ))}\n </select>\n </div>\n {isSeriesVisible && <hr />}\n {seriesItems.map((seriesItem, i) => (\n <div\n className=\"form-row form-inline form-series-item\"\n key={seriesItem.id}\n data-testid={`form-series-item-${i}`}\n >\n <label className=\"col-2 label-left\">\n {i === 0 ? seriesLabel : ''}\n </label>\n <select\n className=\"form-control custom-select select-series col\"\n value={seriesItem.value}\n onChange={this.handleSeriesChange}\n data-testid={`select-series-item-${i}`}\n data-index={i}\n >\n {columns.map(column => (\n <option key={column.name} value={column.name} data-index={i}>\n {column.name}\n </option>\n ))}\n </select>\n {seriesItems.length > 1 && (\n <Button\n kind=\"ghost\"\n className=\"btn-delete-series ml-2 px-2\"\n data-index={i}\n data-testid={`delete-series-${i}`}\n onClick={this.handleSeriesDeleteClick}\n icon={vsTrash}\n tooltip=\"Delete\"\n />\n )}\n </div>\n ))}\n {isAddSeriesVisible && (\n <div className=\"form-row\">\n <div className=\"col-2\" />\n <Button\n kind=\"ghost\"\n className=\"btn-add-series mt-1\"\n onClick={this.handleAddSeries}\n icon={dhNewCircleLargeFilled}\n >\n Add Series\n </Button>\n </div>\n )}\n <div className=\"form-row chart-builder-link\">\n <label className=\"col-2 label-right\">\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n mask={dhTable}\n icon={vsCircleLargeFilled}\n transform=\"right-5 down-5\"\n />\n <FontAwesomeIcon\n icon={isLinked ? vsLink : dhUnlink}\n transform=\"grow-2 right-8 down-6\"\n />\n </div>\n </label>\n <RadioGroup\n onChange={this.handleLinkStateChange}\n value={`${isLinked}`}\n >\n <RadioItem value=\"true\">Sync State</RadioItem>\n <RadioItem value=\"false\">Freeze State</RadioItem>\n </RadioGroup>\n </div>\n <div className=\"form-row\">\n <div className=\"col-2 label-right\" />\n <div className=\"col chart-builder-link-info\">\n {isLinked\n ? 'Charts with synced state will update to match any filters or user modifications applied to the parent table.'\n : 'Freeze State disconnects the chart state from the parent table. New filters or user modifications on the parent table will not be applied.'}\n </div>\n </div>\n <div\n className={classNames('form-row', 'justify-content-end', 'my-3')}\n >\n <Button\n kind=\"secondary\"\n className=\"btn-reset\"\n onClick={this.handleReset}\n >\n Reset\n </Button>\n <Button kind=\"primary\" type=\"submit\" className=\"btn-submit\">\n Create\n </Button>\n </div>\n </form>\n </div>\n );\n }\n}\n\nexport default ChartBuilder;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ChartBuilder.js","names":["React","PureComponent","classNames","FontAwesomeIcon","Button","RadioGroup","RadioItem","Select","vsLink","dhUnlink","dhTable","dhNewCircleLargeFilled","vsCircleLargeFilled","vsTrash","Log","shortid","BarIcon","HistogramIcon","LineIcon","PieIcon","ScatterIcon","jsx","_jsx","jsxs","_jsxs","log","module","ChartBuilder","getMaxSeriesCount","dh","type","plot","SeriesPlotStyle","PIE","HISTOGRAM","makeSeriesItem","value","id","generate","makeDefaultSeriesItems","columns","maxSeriesCount","length","name","getDefaultXAxis","constructor","props","handleAddSeries","bind","handleLinkStateChange","handleReset","handleSeriesChange","handleSeriesDeleteClick","handleSubmit","handleTypeClick","handleXAxisChange","sendChange","model","getTypes","xAxis","seriesItems","state","isLinked","LINE","BAR","SCATTER","getTypeName","getTypeIcon","getXAxisLabel","getSeriesLabel","setState","newSeriesItems","push","event","target","eventTargetValue","index","splice","preventDefault","onSubmit","series","map","item","debug2","slice","onChange","render","xAxisLabel","seriesLabel","isSeriesVisible","isAddSeriesVisible","className","children","chartType","key","active","onClick","column","seriesItem","i","concat","v","kind","icon","tooltip","mask","transform"],"sources":["../../src/sidebar/ChartBuilder.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, RadioGroup, RadioItem, Select } from '@deephaven/components';\nimport {\n vsLink,\n dhUnlink,\n dhTable,\n dhNewCircleLargeFilled,\n vsCircleLargeFilled,\n vsTrash,\n} from '@deephaven/icons';\nimport type {\n Column,\n dh as DhType,\n SeriesPlotStyle,\n} from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport shortid from 'shortid';\nimport {\n BarIcon,\n HistogramIcon,\n LineIcon,\n PieIcon,\n ScatterIcon,\n} from './icons';\nimport './ChartBuilder.scss';\nimport IrisGridModel from '../IrisGridModel';\n\nconst log = Log.module('ChartBuilder');\n\nexport type ChartBuilderSettings = {\n type: SeriesPlotStyle;\n series: string[];\n xAxis: string;\n isLinked: boolean;\n};\nexport type SeriesItem = {\n id: string;\n value: string;\n};\n\ninterface ChartBuilderProps {\n model: IrisGridModel;\n onSubmit: (obj: ChartBuilderSettings) => void;\n onChange: (obj: ChartBuilderSettings) => void;\n}\ninterface ChartBuilderState {\n /** The selected chart type */\n type: SeriesPlotStyle;\n\n /** Array of column names of the series to display */\n seriesItems: readonly SeriesItem[];\n\n /** The column name to use as the x-axis */\n xAxis: string;\n\n /** Whether the newly created chart should be linked with the table (update when filters update) */\n isLinked: boolean;\n}\n/**\n * Form for configuring all the settings when creating a console.\n */\nclass ChartBuilder extends PureComponent<ChartBuilderProps, ChartBuilderState> {\n static getMaxSeriesCount(dh: DhType, type: SeriesPlotStyle): number {\n switch (type) {\n case dh.plot.SeriesPlotStyle.PIE:\n return 1;\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 0;\n default:\n return 100;\n }\n }\n\n static makeSeriesItem(value: string): SeriesItem {\n return { id: shortid.generate(), value };\n }\n\n static makeDefaultSeriesItems(\n dh: DhType,\n type: SeriesPlotStyle,\n columns: readonly Column[]\n ): SeriesItem[] {\n const maxSeriesCount = ChartBuilder.getMaxSeriesCount(dh, type);\n if (maxSeriesCount === 0 || columns == null || columns.length === 0) {\n return [];\n }\n\n const value = columns.length > 1 ? columns[1].name : columns[0].name;\n return [ChartBuilder.makeSeriesItem(value)];\n }\n\n static getDefaultXAxis(\n type: SeriesPlotStyle,\n columns: readonly Column[]\n ): string | null {\n if (columns != null && columns.length > 0) {\n return columns[0].name;\n }\n\n return null;\n }\n\n constructor(props: ChartBuilderProps) {\n super(props);\n\n this.handleAddSeries = this.handleAddSeries.bind(this);\n this.handleLinkStateChange = this.handleLinkStateChange.bind(this);\n this.handleReset = this.handleReset.bind(this);\n this.handleSeriesChange = this.handleSeriesChange.bind(this);\n this.handleSeriesDeleteClick = this.handleSeriesDeleteClick.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleTypeClick = this.handleTypeClick.bind(this);\n this.handleXAxisChange = this.handleXAxisChange.bind(this);\n this.sendChange = this.sendChange.bind(this);\n\n const { model } = props;\n const { columns, dh } = model;\n\n const type = this.getTypes()[0];\n const xAxis = ChartBuilder.getDefaultXAxis(type, columns) as string;\n const seriesItems = ChartBuilder.makeDefaultSeriesItems(dh, type, columns);\n\n this.state = {\n /** The selected chart type */\n type,\n\n /** Array of column names of the series to display */\n seriesItems,\n\n /** The column name to use as the x-axis */\n xAxis,\n\n /** Whether the newly created chart should be linked with the table (update when filters update) */\n isLinked: true,\n };\n }\n\n getTypes(): SeriesPlotStyle[] {\n const { model } = this.props;\n const { dh } = model;\n return [\n dh.plot.SeriesPlotStyle.LINE,\n dh.plot.SeriesPlotStyle.BAR,\n dh.plot.SeriesPlotStyle.SCATTER,\n dh.plot.SeriesPlotStyle.PIE,\n // IDS-6808: Disable Histogram in Chart Builder until we pipe histogram creation through the API\n // dh.plot.SeriesPlotStyle.HISTOGRAM,\n ];\n }\n\n /**\n * Converts the provided chart type into a readable type.\n * Just replaces underscores with spaces and capitals the first letter of each word.\n */\n getTypeName(type: SeriesPlotStyle): string | SeriesPlotStyle {\n const { model } = this.props;\n const { dh } = model;\n switch (type) {\n case dh.plot.SeriesPlotStyle.LINE:\n return 'Line';\n case dh.plot.SeriesPlotStyle.BAR:\n return 'Bar';\n case dh.plot.SeriesPlotStyle.SCATTER:\n return 'Scatter';\n case dh.plot.SeriesPlotStyle.PIE:\n return 'Pie';\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 'Histogram';\n default:\n return type;\n }\n }\n\n getTypeIcon(type: SeriesPlotStyle): React.ReactElement | null {\n const { model } = this.props;\n const { dh } = model;\n switch (type) {\n case dh.plot.SeriesPlotStyle.LINE:\n return <LineIcon />;\n case dh.plot.SeriesPlotStyle.BAR:\n return <BarIcon />;\n case dh.plot.SeriesPlotStyle.SCATTER:\n return <ScatterIcon />;\n case dh.plot.SeriesPlotStyle.PIE:\n return <PieIcon />;\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return <HistogramIcon />;\n default:\n return null;\n }\n }\n\n getXAxisLabel(type: SeriesPlotStyle): string {\n const { model } = this.props;\n const { dh } = model;\n switch (type) {\n case dh.plot.SeriesPlotStyle.PIE:\n return 'Labels';\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 'Data';\n default:\n return 'X-Axis';\n }\n }\n\n getSeriesLabel(type: SeriesPlotStyle): string {\n const { model } = this.props;\n const { dh } = model;\n switch (type) {\n case dh.plot.SeriesPlotStyle.PIE:\n return 'Values';\n default:\n return 'Series';\n }\n }\n\n handleAddSeries(): void {\n this.setState(state => {\n const { seriesItems } = state;\n const newSeriesItems = [...seriesItems];\n\n const { model } = this.props;\n const { columns } = model;\n newSeriesItems.push({\n id: shortid.generate(),\n value: columns[0].name,\n });\n\n return { seriesItems: newSeriesItems };\n }, this.sendChange);\n }\n\n handleLinkStateChange(event: React.ChangeEvent<HTMLInputElement>): void {\n this.setState({ isLinked: event.target.value === 'true' }, this.sendChange);\n }\n\n handleReset(): void {\n const { model } = this.props;\n const { columns, dh } = model;\n\n const type = this.getTypes()[0];\n const xAxis = ChartBuilder.getDefaultXAxis(type, columns) as string;\n const seriesItems = ChartBuilder.makeDefaultSeriesItems(dh, type, columns);\n const isLinked = true;\n\n this.setState({ type, seriesItems, xAxis, isLinked }, this.sendChange);\n }\n\n handleSeriesChange(eventTargetValue: string, index: number): void {\n const value = eventTargetValue;\n\n this.setState(state => {\n let { seriesItems } = state;\n seriesItems = [...seriesItems];\n seriesItems[index].value = value;\n\n return { seriesItems };\n }, this.sendChange);\n }\n\n handleSeriesDeleteClick(index: number): void {\n this.setState(state => {\n const { seriesItems } = state;\n const newSeriesItems = [...seriesItems];\n\n newSeriesItems.splice(index, 1);\n\n return { seriesItems: newSeriesItems };\n }, this.sendChange);\n }\n\n handleSubmit(event: React.FormEvent<HTMLFormElement>): void {\n event.preventDefault();\n\n const { onSubmit } = this.props;\n const { type, seriesItems, xAxis, isLinked } = this.state;\n const series = seriesItems.map(item => item.value);\n onSubmit({\n type,\n series,\n xAxis,\n isLinked,\n });\n }\n\n handleTypeClick(index: number): void {\n const type = this.getTypes()[index];\n\n log.debug2('handleTypeSelect', type);\n\n this.setState(state => {\n const { model } = this.props;\n const { dh } = model;\n const maxSeriesCount = ChartBuilder.getMaxSeriesCount(dh, type);\n let { seriesItems } = state;\n seriesItems = seriesItems.slice(0, maxSeriesCount);\n if (seriesItems.length === 0 && maxSeriesCount > 0) {\n const { columns } = model;\n seriesItems = ChartBuilder.makeDefaultSeriesItems(dh, type, columns);\n }\n\n return { type, seriesItems };\n }, this.sendChange);\n }\n\n handleXAxisChange(eventTargetValue: string): void {\n const xAxis = eventTargetValue;\n log.debug2('x-axis change', xAxis);\n\n this.setState({ xAxis }, this.sendChange);\n }\n\n sendChange(): void {\n const { onChange } = this.props;\n const { isLinked, type, seriesItems, xAxis } = this.state;\n const series = seriesItems.map(item => item.value);\n\n onChange({ type, series, xAxis, isLinked });\n }\n\n render(): JSX.Element {\n const { model } = this.props;\n const { columns, dh } = model;\n const { seriesItems, type, xAxis, isLinked } = this.state;\n const maxSeriesCount = ChartBuilder.getMaxSeriesCount(dh, type);\n const xAxisLabel = this.getXAxisLabel(type);\n const seriesLabel = this.getSeriesLabel(type);\n const isSeriesVisible = seriesItems.length > 0;\n const isAddSeriesVisible = seriesItems.length < maxSeriesCount;\n\n return (\n <div className=\"chart-builder\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"form-row\">\n <label>Select Chart Type</label>\n <div className=\"form-row\">\n {this.getTypes().map((chartType, index) => {\n const key = chartType as unknown as React.Key;\n return (\n <div key={key} className=\"col col-chart-type\">\n <button\n type=\"button\"\n className={classNames(\n 'btn',\n 'btn-icon',\n 'btn-chart-type',\n {\n active: chartType === type,\n }\n )}\n onClick={() => this.handleTypeClick(index)}\n >\n {this.getTypeIcon(chartType)}\n {this.getTypeName(chartType)}\n </button>\n </div>\n );\n })}\n </div>\n </div>\n <hr />\n <div className=\"form-row form-inline\">\n <label className=\"col-2 label-left\">{xAxisLabel}</label>\n <Select\n className=\"form-control select-x-axis col\"\n value={xAxis}\n onChange={this.handleXAxisChange}\n >\n {columns.map(column => (\n <option key={column.name} value={column.name}>\n {column.name}\n </option>\n ))}\n </Select>\n </div>\n {isSeriesVisible && <hr />}\n {seriesItems.map((seriesItem, i) => (\n <div\n className=\"form-row form-inline form-series-item\"\n key={seriesItem.id}\n data-testid={`form-series-item-${i}`}\n >\n <label className=\"col-2 label-left\">\n {i === 0 ? seriesLabel : ''}\n </label>\n <Select\n className=\"form-control select-series col\"\n value={seriesItem.value}\n onChange={v => this.handleSeriesChange(v, i)}\n data-testid={`select-series-item-${i}`}\n >\n {columns.map(column => (\n <option key={column.name} value={column.name}>\n {column.name}\n </option>\n ))}\n </Select>\n {seriesItems.length > 1 && (\n <Button\n kind=\"ghost\"\n className=\"btn-delete-series ml-2 px-2\"\n data-testid={`delete-series-${i}`}\n onClick={() => {\n this.handleSeriesDeleteClick(i);\n }}\n icon={vsTrash}\n tooltip=\"Delete\"\n />\n )}\n </div>\n ))}\n {isAddSeriesVisible && (\n <div className=\"form-row\">\n <div className=\"col-2\" />\n <Button\n kind=\"ghost\"\n className=\"btn-add-series mt-1\"\n onClick={this.handleAddSeries}\n icon={dhNewCircleLargeFilled}\n >\n Add Series\n </Button>\n </div>\n )}\n <div className=\"form-row chart-builder-link\">\n <label className=\"col-2 label-right\">\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n mask={dhTable}\n icon={vsCircleLargeFilled}\n transform=\"right-5 down-5\"\n />\n <FontAwesomeIcon\n icon={isLinked ? vsLink : dhUnlink}\n transform=\"grow-2 right-8 down-6\"\n />\n </div>\n </label>\n <RadioGroup\n onChange={this.handleLinkStateChange}\n value={`${isLinked}`}\n >\n <RadioItem value=\"true\">Sync State</RadioItem>\n <RadioItem value=\"false\">Freeze State</RadioItem>\n </RadioGroup>\n </div>\n <div className=\"form-row\">\n <div className=\"col-2 label-right\" />\n <div className=\"col chart-builder-link-info\">\n {isLinked\n ? 'Charts with synced state will update to match any filters or user modifications applied to the parent table.'\n : 'Freeze State disconnects the chart state from the parent table. New filters or user modifications on the parent table will not be applied.'}\n </div>\n </div>\n <div\n className={classNames('form-row', 'justify-content-end', 'my-3')}\n >\n <Button\n kind=\"secondary\"\n className=\"btn-reset\"\n onClick={this.handleReset}\n >\n Reset\n </Button>\n <Button kind=\"primary\" type=\"submit\" className=\"btn-submit\">\n Create\n </Button>\n </div>\n </form>\n </div>\n );\n }\n}\n\nexport default ChartBuilder;\n"],"mappings":"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"}
|