@deephaven/iris-grid 0.12.1-beta.5 → 0.13.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/AdvancedFilterCreator.d.ts +2 -2
- package/dist/AdvancedFilterCreator.d.ts.map +1 -1
- package/dist/AdvancedFilterCreator.js +2 -3
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.d.ts +5 -11
- package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +21 -121
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.d.ts +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +1 -2
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/CrossColumnSearch.js +1 -1
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +1 -4
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridMetricCalculator.js +1 -1
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.d.ts +1 -1
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.d.ts +1 -1
- package/dist/IrisGridModelFactory.js +1 -1
- package/dist/IrisGridModelFactory.js.map +1 -1
- package/dist/IrisGridModelUpdater.d.ts +1 -2
- package/dist/IrisGridModelUpdater.d.ts.map +1 -1
- package/dist/IrisGridModelUpdater.js +1 -1
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridProxyModel.d.ts +1 -1
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js +1 -2
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.js +1 -1
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +2 -2
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +1 -3
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTestUtils.d.ts +1 -1
- package/dist/IrisGridTestUtils.js +1 -1
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +1 -2
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/format-context-menus/DateTimeFormatContextMenu.d.ts +1 -2
- package/dist/format-context-menus/DateTimeFormatContextMenu.d.ts.map +1 -1
- package/dist/format-context-menus/DateTimeFormatContextMenu.js +1 -2
- package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.d.ts +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.d.ts.map +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.js +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.d.ts +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.d.ts.map +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.js +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.d.ts +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.d.ts.map +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.js +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
- package/dist/index.d.ts +1 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -5
- package/dist/index.js.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.d.ts.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.js +1 -1
- package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +1 -2
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/sidebar/RollupRows.js +1 -1
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/TableSaver.d.ts +2 -2
- package/dist/sidebar/TableSaver.d.ts.map +1 -1
- package/dist/sidebar/TableSaver.js +1 -2
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.d.ts.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/index.d.ts +2 -1
- package/dist/sidebar/index.js +2 -1
- package/dist/sidebar/index.js.map +1 -1
- package/package.json +15 -14
- package/dist/DateUtils.d.ts +0 -82
- package/dist/DateUtils.d.ts.map +0 -1
- package/dist/DateUtils.js +0 -285
- package/dist/DateUtils.js.map +0 -1
- package/dist/Formatter.d.ts +0 -65
- package/dist/Formatter.d.ts.map +0 -1
- package/dist/Formatter.js +0 -169
- package/dist/Formatter.js.map +0 -1
- package/dist/FormatterUtils.d.ts +0 -24
- package/dist/FormatterUtils.d.ts.map +0 -1
- package/dist/FormatterUtils.js +0 -42
- package/dist/FormatterUtils.js.map +0 -1
- package/dist/TableUtils.d.ts +0 -191
- package/dist/TableUtils.d.ts.map +0 -1
- package/dist/TableUtils.js +0 -1326
- package/dist/TableUtils.js.map +0 -1
- package/dist/filters/FilterOperator.d.ts +0 -3
- package/dist/filters/FilterOperator.d.ts.map +0 -1
- package/dist/filters/FilterOperator.js +0 -2
- package/dist/filters/FilterOperator.js.map +0 -1
- package/dist/filters/FilterType.d.ts +0 -3
- package/dist/filters/FilterType.d.ts.map +0 -1
- package/dist/filters/FilterType.js +0 -2
- package/dist/filters/FilterType.js.map +0 -1
- package/dist/filters/index.d.ts +0 -3
- package/dist/filters/index.d.ts.map +0 -1
- package/dist/filters/index.js +0 -3
- package/dist/filters/index.js.map +0 -1
- package/dist/formatters/BooleanColumnFormatter.d.ts +0 -7
- package/dist/formatters/BooleanColumnFormatter.d.ts.map +0 -1
- package/dist/formatters/BooleanColumnFormatter.js +0 -26
- package/dist/formatters/BooleanColumnFormatter.js.map +0 -1
- package/dist/formatters/CharColumnFormatter.d.ts +0 -7
- package/dist/formatters/CharColumnFormatter.d.ts.map +0 -1
- package/dist/formatters/CharColumnFormatter.js +0 -15
- package/dist/formatters/CharColumnFormatter.js.map +0 -1
- package/dist/formatters/DateTimeColumnFormatter.d.ts +0 -40
- package/dist/formatters/DateTimeColumnFormatter.d.ts.map +0 -1
- package/dist/formatters/DateTimeColumnFormatter.js +0 -123
- package/dist/formatters/DateTimeColumnFormatter.js.map +0 -1
- package/dist/formatters/DecimalColumnFormatter.d.ts +0 -64
- package/dist/formatters/DecimalColumnFormatter.d.ts.map +0 -1
- package/dist/formatters/DecimalColumnFormatter.js +0 -128
- package/dist/formatters/DecimalColumnFormatter.js.map +0 -1
- package/dist/formatters/DefaultColumnFormatter.d.ts +0 -6
- package/dist/formatters/DefaultColumnFormatter.d.ts.map +0 -1
- package/dist/formatters/DefaultColumnFormatter.js +0 -14
- package/dist/formatters/DefaultColumnFormatter.js.map +0 -1
- package/dist/formatters/IntegerColumnFormatter.d.ts +0 -60
- package/dist/formatters/IntegerColumnFormatter.d.ts.map +0 -1
- package/dist/formatters/IntegerColumnFormatter.js +0 -121
- package/dist/formatters/IntegerColumnFormatter.js.map +0 -1
- package/dist/formatters/StringColumnFormatter.d.ts +0 -7
- package/dist/formatters/StringColumnFormatter.d.ts.map +0 -1
- package/dist/formatters/StringColumnFormatter.js +0 -13
- package/dist/formatters/StringColumnFormatter.js.map +0 -1
- package/dist/formatters/TableColumnFormatter.d.ts +0 -44
- package/dist/formatters/TableColumnFormatter.d.ts.map +0 -1
- package/dist/formatters/TableColumnFormatter.js +0 -65
- package/dist/formatters/TableColumnFormatter.js.map +0 -1
- package/dist/formatters/index.d.ts +0 -9
- package/dist/formatters/index.d.ts.map +0 -1
- package/dist/formatters/index.js +0 -9
- package/dist/formatters/index.js.map +0 -1
|
@@ -22,7 +22,7 @@ declare class AdvancedFilterCreator extends React.PureComponent<any, any, any> {
|
|
|
22
22
|
valuesTablePromise: import("@deephaven/utils").CancelablePromise<import("@deephaven/jsapi-shim").Table> | null;
|
|
23
23
|
getFilterChangeHandler(index: any): (selectedType?: any, value?: any) => void;
|
|
24
24
|
getFilterDeleteHandler(index: any): () => void;
|
|
25
|
-
getFilterTypes: (this: any, columnType: any) => import("
|
|
25
|
+
getFilterTypes: (this: any, columnType: any) => import("@deephaven/filters").Type[];
|
|
26
26
|
initValuesTable(): void;
|
|
27
27
|
makeFilterItem(updateKey?: boolean): {
|
|
28
28
|
selectedType: string;
|
|
@@ -78,5 +78,5 @@ declare namespace AdvancedFilterCreator {
|
|
|
78
78
|
}
|
|
79
79
|
import React from "react";
|
|
80
80
|
import PropTypes from "prop-types";
|
|
81
|
-
import Formatter from "
|
|
81
|
+
import { Formatter } from "packages/jsapi-utils/src/Formatter";
|
|
82
82
|
//# sourceMappingURL=AdvancedFilterCreator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedFilterCreator.d.ts","sourceRoot":"","sources":["../src/AdvancedFilterCreator.jsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"AdvancedFilterCreator.d.ts","sourceRoot":"","sources":["../src/AdvancedFilterCreator.jsx"],"names":[],"mappings":";AAqBA;IACE,oCAAkC;IAElC,wBA2DC;IAmED,qBAKC;IAED,oBAKC;IAED,6CAWC;IA0ED,6BASC;IAjFD,0EASC;IAED,2CAsBC;IAED,yEAIC;IAED,oBAWC;IAED,iCAGC;IAED,+BAGC;IAED,+BAMC;IAxGD,6BAKC;IAZD,2BAKC;IAuHD,4BAGC;IA3NC,yCAA2C;IAC3C,uCAA2B;IAC3B,kBAAkB;IAClB,+GAA8B;IAoDhC,8EAEC;IAED,+CAEC;IAED,oFAA8E;IAE9E,wBAyBC;IAmID;;;;MAMC;IAED;;;;OAIG;IACH,+BAeC;IAED;;;;OAIG;IACH,6CAFW,OAAO,QAKjB;IAED,yBAOC;IAED,wBAKC;IAED,mBAwBC;CAyLF"}
|
|
@@ -7,15 +7,14 @@ import classNames from 'classnames';
|
|
|
7
7
|
import PropTypes from 'prop-types';
|
|
8
8
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
9
9
|
import memoize from 'memoize-one';
|
|
10
|
+
import { Operator as FilterOperator } from '@deephaven/filters';
|
|
10
11
|
import { dhSortAmountDown, dhNewCircleLargeFilled } from '@deephaven/icons';
|
|
12
|
+
import { Formatter, TableUtils } from '@deephaven/jsapi-utils';
|
|
11
13
|
import { ContextActionUtils, Tooltip } from '@deephaven/components';
|
|
12
14
|
import Log from '@deephaven/log';
|
|
13
15
|
import { PromiseUtils } from '@deephaven/utils';
|
|
14
|
-
import TableUtils from "./TableUtils.js";
|
|
15
|
-
import { FilterOperator } from "./filters/index.js";
|
|
16
16
|
import AdvancedFilterCreatorFilterItem from "./AdvancedFilterCreatorFilterItem.js";
|
|
17
17
|
import AdvancedFilterCreatorSelectValue from "./AdvancedFilterCreatorSelectValue.js";
|
|
18
|
-
import Formatter from "./Formatter.js";
|
|
19
18
|
import IrisGridModel from "./IrisGridModel.js";
|
|
20
19
|
import "./AdvancedFilterCreator.css";
|
|
21
20
|
var log = Log.module('AdvancedFilterCreator');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/AdvancedFilterCreator.jsx"],"names":["React","PureComponent","classNames","PropTypes","FontAwesomeIcon","memoize","dhSortAmountDown","dhNewCircleLargeFilled","ContextActionUtils","Tooltip","Log","PromiseUtils","TableUtils","FilterOperator","AdvancedFilterCreatorFilterItem","AdvancedFilterCreatorSelectValue","Formatter","IrisGridModel","log","module","AdvancedFilterCreator","constructor","props","columnType","getFilterTypes","handleAddAnd","bind","handleAddOr","handleChangeFilterOperator","handleDone","handleFilterChange","handleFilterDelete","handleSelectValueChange","handleReset","handleSortDown","handleSortUp","handleSubmit","handleFocusTrapStart","handleFocusTrapEnd","handleUpdateTimeout","focusTrapContainer","createRef","debounceTimeout","filterKey","valuesTablePromise","options","filterItems","filterOperators","invertSelection","selectedValues","makeFilterItem","state","valuesTableError","valuesTable","componentDidMount","initValuesTable","componentWillUnmount","clearTimeout","sendUpdate","cancel","getFilterChangeHandler","index","getFilterDeleteHandler","model","column","isValuesTableAvailable","debug","makeCancelableTablePromise","then","sort","columns","asc","applySort","setState","catch","error","isCanceled","inputs","current","querySelectorAll","focus","length","concat","and","or","event","parseInt","target","dataset","operator","startUpdateTimer","filterIndex","selectedType","value","key","splice","push","addToExisting","isModifierKeyDown","sortTable","sortDirection","descending","ascending","stopUpdateTimer","preventDefault","onDone","updateKey","shouldShowAddFilter","filterItem","direction","onSortChange","setTimeout","debounceFilterUpdate","onFilterChange","formatter","filter","makeAdvancedFilter","timeZone","render","isBoolean","isBooleanType","type","isDateType","filterTypes","substring","lastIndexOf","filterItemElements","i","element","filterOperator","isAndFilter","operatorElement","active","showAddFilterItem","addFilterItem","hidden","name","propTypes","instanceOf","isRequired","shape","string","func","arrayOf","bool","any","defaultProps"],"mappings":"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","sourcesContent":["/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n// disabled for tab-index on focus traps, which are intentionally non-interactive\n\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport memoize from 'memoize-one';\nimport { dhSortAmountDown, dhNewCircleLargeFilled } from '@deephaven/icons';\nimport { ContextActionUtils, Tooltip } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport TableUtils from './TableUtils';\nimport { FilterOperator } from './filters';\nimport AdvancedFilterCreatorFilterItem from './AdvancedFilterCreatorFilterItem';\nimport AdvancedFilterCreatorSelectValue from './AdvancedFilterCreatorSelectValue';\nimport Formatter from './Formatter';\nimport IrisGridModel from './IrisGridModel';\nimport './AdvancedFilterCreator.scss';\n\nconst log = Log.module('AdvancedFilterCreator');\n\nclass AdvancedFilterCreator extends PureComponent {\n static debounceFilterUpdate = 250;\n\n constructor(props) {\n super(props);\n\n this.handleAddAnd = this.handleAddAnd.bind(this);\n this.handleAddOr = this.handleAddOr.bind(this);\n this.handleChangeFilterOperator = this.handleChangeFilterOperator.bind(\n this\n );\n this.handleDone = this.handleDone.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleFilterDelete = this.handleFilterDelete.bind(this);\n this.handleSelectValueChange = this.handleSelectValueChange.bind(this);\n this.handleReset = this.handleReset.bind(this);\n this.handleSortDown = this.handleSortDown.bind(this);\n this.handleSortUp = this.handleSortUp.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleFocusTrapStart = this.handleFocusTrapStart.bind(this);\n this.handleFocusTrapEnd = this.handleFocusTrapEnd.bind(this);\n this.handleUpdateTimeout = this.handleUpdateTimeout.bind(this);\n\n this.focusTrapContainer = React.createRef();\n this.debounceTimeout = null;\n this.filterKey = 0;\n this.valuesTablePromise = null;\n\n const { options } = props;\n let {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n } = options;\n if (filterItems == null) {\n filterItems = [this.makeFilterItem()];\n }\n if (filterOperators == null) {\n filterOperators = [];\n }\n if (invertSelection == null) {\n invertSelection = true;\n }\n if (selectedValues == null) {\n selectedValues = [];\n }\n\n this.state = {\n // Filter items\n filterItems,\n\n // And/Or between the filter items\n filterOperators,\n\n invertSelection,\n\n selectedValues,\n\n valuesTableError: null,\n valuesTable: null,\n };\n }\n\n componentDidMount() {\n this.initValuesTable();\n }\n\n componentWillUnmount() {\n if (this.debounceTimeout != null) {\n clearTimeout(this.debounceTimeout);\n this.sendUpdate();\n }\n if (this.valuesTablePromise != null) {\n this.valuesTablePromise.cancel();\n }\n }\n\n getFilterChangeHandler(index) {\n return this.handleFilterChange.bind(this, index);\n }\n\n getFilterDeleteHandler(index) {\n return this.handleFilterDelete.bind(this, index);\n }\n\n getFilterTypes = memoize(columnType => TableUtils.getFilterTypes(columnType));\n\n initValuesTable() {\n const { model, column } = this.props;\n if (!model.isValuesTableAvailable) {\n log.debug('No values table for this model, just ignore');\n return;\n }\n\n this.valuesTablePromise = TableUtils.makeCancelableTablePromise(\n model.valuesTable(column)\n );\n this.valuesTablePromise\n .then(valuesTable => {\n const sort = valuesTable.columns[0].sort().asc();\n valuesTable.applySort([sort]);\n\n this.setState({ valuesTable });\n })\n .catch(error => {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n log.error('Unable to open values table', error);\n this.setState({ valuesTableError: error });\n });\n }\n\n handleFocusTrapEnd() {\n const inputs = this.focusTrapContainer.current.querySelectorAll(\n 'button,select,input,textarea'\n );\n inputs[0].focus();\n }\n\n handleFocusTrapStart() {\n const inputs = this.focusTrapContainer.current.querySelectorAll(\n 'button,select,input,textarea'\n );\n inputs[inputs.length - 1].focus();\n }\n\n handleAddAnd() {\n let { filterItems, filterOperators } = this.state;\n filterItems = filterItems.concat(this.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.and);\n this.setState({ filterItems, filterOperators });\n }\n\n handleAddOr() {\n let { filterItems, filterOperators } = this.state;\n filterItems = filterItems.concat(this.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.or);\n this.setState({ filterItems, filterOperators });\n }\n\n handleChangeFilterOperator(event) {\n const index = parseInt(event.target.dataset.index, 10);\n const { operator } = event.target.dataset;\n\n let { filterOperators } = this.state;\n filterOperators = [].concat(filterOperators);\n filterOperators[index] = operator;\n\n this.setState({ filterOperators });\n\n this.startUpdateTimer();\n }\n\n handleFilterChange(filterIndex, selectedType, value) {\n let { filterItems } = this.state;\n filterItems = [].concat(filterItems);\n const { key } = filterItems[filterIndex];\n filterItems[filterIndex] = { key, selectedType, value };\n\n this.setState({ filterItems });\n\n this.startUpdateTimer();\n }\n\n handleFilterDelete(filterIndex) {\n let { filterItems, filterOperators } = this.state;\n filterItems = [].concat(filterItems);\n filterOperators = [].concat(filterOperators);\n if (filterIndex < filterItems.length) {\n filterItems.splice(filterIndex, 1);\n }\n\n if (filterIndex < filterOperators.length) {\n filterOperators.splice(filterIndex, 1);\n } else if (filterIndex === filterOperators.length) {\n // When deleting the last filter item, we also need to remove the last filter operator\n filterOperators.splice(filterOperators.length - 1, 1);\n }\n\n if (filterItems.length === 0) {\n filterItems.push(this.makeFilterItem());\n }\n\n this.setState({ filterItems, filterOperators });\n\n this.startUpdateTimer();\n }\n\n handleSelectValueChange(selectedValues, invertSelection) {\n this.setState({ selectedValues, invertSelection });\n\n this.startUpdateTimer();\n }\n\n handleReset() {\n log.debug('Resetting Advanced Filter');\n\n this.setState({\n filterItems: [this.makeFilterItem()],\n filterOperators: [],\n selectedValues: [],\n invertSelection: true,\n });\n\n this.startUpdateTimer();\n }\n\n handleSortDown(event) {\n const addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.descending, addToExisting);\n }\n\n handleSortUp(event) {\n const addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.ascending, addToExisting);\n }\n\n handleSubmit(event) {\n log.debug('Submitting Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n\n event.preventDefault();\n }\n\n handleDone(event) {\n log.debug('Submitting and Closing Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n\n const { onDone } = this.props;\n onDone();\n\n event.preventDefault();\n }\n\n handleUpdateTimeout() {\n this.debounceTimeout = null;\n this.sendUpdate();\n }\n\n makeFilterItem(updateKey = true) {\n const key = this.filterKey;\n if (updateKey) {\n this.filterKey += 1;\n }\n return { selectedType: '', value: '', key };\n }\n\n /**\n * Convenience function to check if the previous filter has been inputted, and\n * we should show the add filter buttons (+ AND OR)\n * @returns true If the add filter buttons should be shown, false otherwise\n */\n shouldShowAddFilter() {\n const { filterItems } = this.state;\n if (filterItems.length === 0) {\n return false;\n }\n\n const filterItem = filterItems[filterItems.length - 1];\n const { selectedType, value } = filterItem;\n\n return (\n selectedType != null &&\n selectedType.length > 0 &&\n value != null &&\n value.length > 0\n );\n }\n\n /**\n * Sorts the table in the specified direction. If already sorted in that direction, remove it.\n * @param {String} direction The sort direction, ASC or DESC\n * @param {boolean} addToExisting Add to the existing sort, or replace the existing table sort\n */\n sortTable(direction, addToExisting = false) {\n const { column, onSortChange } = this.props;\n onSortChange(column, direction, addToExisting);\n }\n\n startUpdateTimer() {\n this.stopUpdateTimer();\n\n this.debounceTimeout = setTimeout(\n this.handleUpdateTimeout,\n AdvancedFilterCreator.debounceFilterUpdate\n );\n }\n\n stopUpdateTimer() {\n if (this.debounceTimeout) {\n clearTimeout(this.debounceTimeout);\n this.debounceTimeout = null;\n }\n }\n\n sendUpdate() {\n const {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n } = this.state;\n const { column, onFilterChange, model } = this.props;\n const { formatter } = model;\n\n const options = {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n };\n\n const filter = TableUtils.makeAdvancedFilter(\n column,\n options,\n formatter.timeZone\n );\n\n onFilterChange(column, filter, options);\n }\n\n render() {\n const { column, model, sortDirection, formatter } = this.props;\n const {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n valuesTable,\n valuesTableError,\n } = this.state;\n const { isValuesTableAvailable } = model;\n const isBoolean = TableUtils.isBooleanType(column.type);\n const isDateType = TableUtils.isDateType(column.type);\n const filterTypes = this.getFilterTypes(column.type);\n const columnType = column.type.substring(column.type.lastIndexOf('.') + 1);\n const filterItemElements = [];\n if (!isBoolean && filterTypes.length) {\n for (let i = 0; i < filterItems.length; i += 1) {\n const filterItem = filterItems[i];\n const { key, selectedType, value } = filterItem;\n\n const element = (\n <AdvancedFilterCreatorFilterItem\n key={key}\n column={column}\n filterTypes={filterTypes}\n onChange={this.getFilterChangeHandler(i)}\n onDelete={this.getFilterDeleteHandler(i)}\n selectedType={selectedType}\n value={value}\n />\n );\n filterItemElements.push(element);\n\n if (i < filterOperators.length) {\n const filterOperator = filterOperators[i];\n const isAndFilter = filterOperator === FilterOperator.and;\n const operatorElement = (\n <div\n key={`filterOperator${key}`}\n className=\"form-row justify-content-end advanced-filter-creator-filter-operator\"\n >\n <button\n type=\"button\"\n className={classNames('btn btn-link filter-operator', {\n active: isAndFilter,\n })}\n onClick={this.handleChangeFilterOperator}\n data-index={i}\n data-operator={FilterOperator.and}\n >\n AND\n </button>\n <button\n type=\"button\"\n className={classNames('btn btn-link filter-operator', {\n active: !isAndFilter,\n })}\n onClick={this.handleChangeFilterOperator}\n data-index={i}\n data-operator={FilterOperator.or}\n >\n OR\n </button>\n </div>\n );\n filterItemElements.push(operatorElement);\n }\n }\n }\n const showAddFilterItem = this.shouldShowAddFilter();\n const addFilterItem = (\n <div\n key=\"addFilterItem\"\n className={classNames('form-row justify-content-end add-filter-item', {\n hidden: !showAddFilterItem,\n })}\n >\n <span className=\"text-muted\">\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n </span>\n <button\n type=\"button\"\n className=\"btn btn-link btn-filter-item\"\n onClick={this.handleAddAnd}\n disabled={!showAddFilterItem}\n >\n AND\n <Tooltip>Add filter with AND</Tooltip>\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link btn-filter-item\"\n onClick={this.handleAddOr}\n disabled={!showAddFilterItem}\n >\n OR\n <Tooltip>Add filter with OR</Tooltip>\n </button>\n </div>\n );\n filterItemElements.push(addFilterItem);\n\n return (\n <div className=\"advanced-filter-creator\" role=\"presentation\">\n <div tabIndex=\"0\" onFocus={this.handleFocusTrapStart} />\n <form onSubmit={this.handleSubmit} ref={this.focusTrapContainer}>\n <div className=\"title-bar\">\n <h6 className=\"advanced-filter-title\">Advanced Filters</h6>\n <div className=\"advanced-filter-menu-buttons\">\n <button\n type=\"button\"\n className={classNames(\n 'btn btn-link btn-link-icon sort-operator',\n {\n active:\n sortDirection === TableUtils.sortDirection.descending,\n }\n )}\n onClick={this.handleSortDown}\n >\n <FontAwesomeIcon icon={dhSortAmountDown} />\n <Tooltip>Sort {column.name} Descending</Tooltip>\n </button>\n <button\n type=\"button\"\n className={classNames(\n 'btn btn-link btn-link-icon sort-operator',\n {\n active:\n sortDirection === TableUtils.sortDirection.ascending,\n }\n )}\n onClick={this.handleSortUp}\n >\n <FontAwesomeIcon rotation={180} icon={dhSortAmountDown} />\n <Tooltip>Sort {column.name} Ascending</Tooltip>\n </button>\n </div>\n </div>\n <hr />\n <div className=\"advanced-filter-column-name\">\n {column.name} \n <span className=\"column-type\">({columnType})</span>\n </div>\n {filterItemElements}\n {isValuesTableAvailable && !valuesTableError && (\n <>\n {!isBoolean && <hr />}\n <div className=\"form-group\">\n <AdvancedFilterCreatorSelectValue\n table={valuesTable}\n onChange={this.handleSelectValueChange}\n invertSelection={invertSelection}\n selectedValues={selectedValues}\n formatter={formatter}\n showSearch={!isDateType}\n timeZone={formatter.timeZone}\n />\n </div>\n </>\n )}\n <div className=\"form-row justify-content-end\">\n <button\n type=\"button\"\n className=\"btn btn-outline-primary mr-2\"\n onClick={this.handleReset}\n >\n Reset\n </button>\n <button\n type=\"button\"\n className=\"btn btn-primary\"\n onClick={this.handleDone}\n >\n Done\n </button>\n </div>\n </form>\n <div tabIndex=\"0\" onFocus={this.handleFocusTrapEnd} />\n </div>\n );\n }\n}\n\nAdvancedFilterCreator.propTypes = {\n model: PropTypes.instanceOf(IrisGridModel).isRequired,\n column: PropTypes.shape({ name: PropTypes.string, type: PropTypes.string })\n .isRequired,\n onFilterChange: PropTypes.func.isRequired,\n onSortChange: PropTypes.func.isRequired,\n onDone: PropTypes.func.isRequired,\n options: PropTypes.shape({\n filterItems: PropTypes.arrayOf(PropTypes.shape({})),\n filterOperators: PropTypes.arrayOf(PropTypes.shape({})),\n invertSelection: PropTypes.bool,\n selectedValues: PropTypes.arrayOf(PropTypes.any),\n }),\n sortDirection: PropTypes.string,\n formatter: PropTypes.instanceOf(Formatter).isRequired,\n};\n\nAdvancedFilterCreator.defaultProps = {\n options: {\n filterItems: null,\n filterOperators: null,\n invertSelection: true,\n selectedValues: [],\n },\n sortDirection: null,\n};\n\nexport default AdvancedFilterCreator;\n"],"file":"AdvancedFilterCreator.js"}
|
|
1
|
+
{"version":3,"sources":["../src/AdvancedFilterCreator.jsx"],"names":["React","PureComponent","classNames","PropTypes","FontAwesomeIcon","memoize","Operator","FilterOperator","dhSortAmountDown","dhNewCircleLargeFilled","Formatter","TableUtils","ContextActionUtils","Tooltip","Log","PromiseUtils","AdvancedFilterCreatorFilterItem","AdvancedFilterCreatorSelectValue","IrisGridModel","log","module","AdvancedFilterCreator","constructor","props","columnType","getFilterTypes","handleAddAnd","bind","handleAddOr","handleChangeFilterOperator","handleDone","handleFilterChange","handleFilterDelete","handleSelectValueChange","handleReset","handleSortDown","handleSortUp","handleSubmit","handleFocusTrapStart","handleFocusTrapEnd","handleUpdateTimeout","focusTrapContainer","createRef","debounceTimeout","filterKey","valuesTablePromise","options","filterItems","filterOperators","invertSelection","selectedValues","makeFilterItem","state","valuesTableError","valuesTable","componentDidMount","initValuesTable","componentWillUnmount","clearTimeout","sendUpdate","cancel","getFilterChangeHandler","index","getFilterDeleteHandler","model","column","isValuesTableAvailable","debug","makeCancelableTablePromise","then","sort","columns","asc","applySort","setState","catch","error","isCanceled","inputs","current","querySelectorAll","focus","length","concat","and","or","event","parseInt","target","dataset","operator","startUpdateTimer","filterIndex","selectedType","value","key","splice","push","addToExisting","isModifierKeyDown","sortTable","sortDirection","descending","ascending","stopUpdateTimer","preventDefault","onDone","updateKey","shouldShowAddFilter","filterItem","direction","onSortChange","setTimeout","debounceFilterUpdate","onFilterChange","formatter","filter","makeAdvancedFilter","timeZone","render","isBoolean","isBooleanType","type","isDateType","filterTypes","substring","lastIndexOf","filterItemElements","i","element","filterOperator","isAndFilter","operatorElement","active","showAddFilterItem","addFilterItem","hidden","name","propTypes","instanceOf","isRequired","shape","string","func","arrayOf","bool","any","defaultProps"],"mappings":"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","sourcesContent":["/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n// disabled for tab-index on focus traps, which are intentionally non-interactive\n\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport memoize from 'memoize-one';\nimport { Operator as FilterOperator } from '@deephaven/filters';\nimport { dhSortAmountDown, dhNewCircleLargeFilled } from '@deephaven/icons';\nimport { Formatter, TableUtils } from '@deephaven/jsapi-utils';\nimport { ContextActionUtils, Tooltip } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport AdvancedFilterCreatorFilterItem from './AdvancedFilterCreatorFilterItem';\nimport AdvancedFilterCreatorSelectValue from './AdvancedFilterCreatorSelectValue';\nimport IrisGridModel from './IrisGridModel';\nimport './AdvancedFilterCreator.scss';\n\nconst log = Log.module('AdvancedFilterCreator');\n\nclass AdvancedFilterCreator extends PureComponent {\n static debounceFilterUpdate = 250;\n\n constructor(props) {\n super(props);\n\n this.handleAddAnd = this.handleAddAnd.bind(this);\n this.handleAddOr = this.handleAddOr.bind(this);\n this.handleChangeFilterOperator = this.handleChangeFilterOperator.bind(\n this\n );\n this.handleDone = this.handleDone.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleFilterDelete = this.handleFilterDelete.bind(this);\n this.handleSelectValueChange = this.handleSelectValueChange.bind(this);\n this.handleReset = this.handleReset.bind(this);\n this.handleSortDown = this.handleSortDown.bind(this);\n this.handleSortUp = this.handleSortUp.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleFocusTrapStart = this.handleFocusTrapStart.bind(this);\n this.handleFocusTrapEnd = this.handleFocusTrapEnd.bind(this);\n this.handleUpdateTimeout = this.handleUpdateTimeout.bind(this);\n\n this.focusTrapContainer = React.createRef();\n this.debounceTimeout = null;\n this.filterKey = 0;\n this.valuesTablePromise = null;\n\n const { options } = props;\n let {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n } = options;\n if (filterItems == null) {\n filterItems = [this.makeFilterItem()];\n }\n if (filterOperators == null) {\n filterOperators = [];\n }\n if (invertSelection == null) {\n invertSelection = true;\n }\n if (selectedValues == null) {\n selectedValues = [];\n }\n\n this.state = {\n // Filter items\n filterItems,\n\n // And/Or between the filter items\n filterOperators,\n\n invertSelection,\n\n selectedValues,\n\n valuesTableError: null,\n valuesTable: null,\n };\n }\n\n componentDidMount() {\n this.initValuesTable();\n }\n\n componentWillUnmount() {\n if (this.debounceTimeout != null) {\n clearTimeout(this.debounceTimeout);\n this.sendUpdate();\n }\n if (this.valuesTablePromise != null) {\n this.valuesTablePromise.cancel();\n }\n }\n\n getFilterChangeHandler(index) {\n return this.handleFilterChange.bind(this, index);\n }\n\n getFilterDeleteHandler(index) {\n return this.handleFilterDelete.bind(this, index);\n }\n\n getFilterTypes = memoize(columnType => TableUtils.getFilterTypes(columnType));\n\n initValuesTable() {\n const { model, column } = this.props;\n if (!model.isValuesTableAvailable) {\n log.debug('No values table for this model, just ignore');\n return;\n }\n\n this.valuesTablePromise = TableUtils.makeCancelableTablePromise(\n model.valuesTable(column)\n );\n this.valuesTablePromise\n .then(valuesTable => {\n const sort = valuesTable.columns[0].sort().asc();\n valuesTable.applySort([sort]);\n\n this.setState({ valuesTable });\n })\n .catch(error => {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n log.error('Unable to open values table', error);\n this.setState({ valuesTableError: error });\n });\n }\n\n handleFocusTrapEnd() {\n const inputs = this.focusTrapContainer.current.querySelectorAll(\n 'button,select,input,textarea'\n );\n inputs[0].focus();\n }\n\n handleFocusTrapStart() {\n const inputs = this.focusTrapContainer.current.querySelectorAll(\n 'button,select,input,textarea'\n );\n inputs[inputs.length - 1].focus();\n }\n\n handleAddAnd() {\n let { filterItems, filterOperators } = this.state;\n filterItems = filterItems.concat(this.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.and);\n this.setState({ filterItems, filterOperators });\n }\n\n handleAddOr() {\n let { filterItems, filterOperators } = this.state;\n filterItems = filterItems.concat(this.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.or);\n this.setState({ filterItems, filterOperators });\n }\n\n handleChangeFilterOperator(event) {\n const index = parseInt(event.target.dataset.index, 10);\n const { operator } = event.target.dataset;\n\n let { filterOperators } = this.state;\n filterOperators = [].concat(filterOperators);\n filterOperators[index] = operator;\n\n this.setState({ filterOperators });\n\n this.startUpdateTimer();\n }\n\n handleFilterChange(filterIndex, selectedType, value) {\n let { filterItems } = this.state;\n filterItems = [].concat(filterItems);\n const { key } = filterItems[filterIndex];\n filterItems[filterIndex] = { key, selectedType, value };\n\n this.setState({ filterItems });\n\n this.startUpdateTimer();\n }\n\n handleFilterDelete(filterIndex) {\n let { filterItems, filterOperators } = this.state;\n filterItems = [].concat(filterItems);\n filterOperators = [].concat(filterOperators);\n if (filterIndex < filterItems.length) {\n filterItems.splice(filterIndex, 1);\n }\n\n if (filterIndex < filterOperators.length) {\n filterOperators.splice(filterIndex, 1);\n } else if (filterIndex === filterOperators.length) {\n // When deleting the last filter item, we also need to remove the last filter operator\n filterOperators.splice(filterOperators.length - 1, 1);\n }\n\n if (filterItems.length === 0) {\n filterItems.push(this.makeFilterItem());\n }\n\n this.setState({ filterItems, filterOperators });\n\n this.startUpdateTimer();\n }\n\n handleSelectValueChange(selectedValues, invertSelection) {\n this.setState({ selectedValues, invertSelection });\n\n this.startUpdateTimer();\n }\n\n handleReset() {\n log.debug('Resetting Advanced Filter');\n\n this.setState({\n filterItems: [this.makeFilterItem()],\n filterOperators: [],\n selectedValues: [],\n invertSelection: true,\n });\n\n this.startUpdateTimer();\n }\n\n handleSortDown(event) {\n const addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.descending, addToExisting);\n }\n\n handleSortUp(event) {\n const addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.ascending, addToExisting);\n }\n\n handleSubmit(event) {\n log.debug('Submitting Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n\n event.preventDefault();\n }\n\n handleDone(event) {\n log.debug('Submitting and Closing Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n\n const { onDone } = this.props;\n onDone();\n\n event.preventDefault();\n }\n\n handleUpdateTimeout() {\n this.debounceTimeout = null;\n this.sendUpdate();\n }\n\n makeFilterItem(updateKey = true) {\n const key = this.filterKey;\n if (updateKey) {\n this.filterKey += 1;\n }\n return { selectedType: '', value: '', key };\n }\n\n /**\n * Convenience function to check if the previous filter has been inputted, and\n * we should show the add filter buttons (+ AND OR)\n * @returns true If the add filter buttons should be shown, false otherwise\n */\n shouldShowAddFilter() {\n const { filterItems } = this.state;\n if (filterItems.length === 0) {\n return false;\n }\n\n const filterItem = filterItems[filterItems.length - 1];\n const { selectedType, value } = filterItem;\n\n return (\n selectedType != null &&\n selectedType.length > 0 &&\n value != null &&\n value.length > 0\n );\n }\n\n /**\n * Sorts the table in the specified direction. If already sorted in that direction, remove it.\n * @param {String} direction The sort direction, ASC or DESC\n * @param {boolean} addToExisting Add to the existing sort, or replace the existing table sort\n */\n sortTable(direction, addToExisting = false) {\n const { column, onSortChange } = this.props;\n onSortChange(column, direction, addToExisting);\n }\n\n startUpdateTimer() {\n this.stopUpdateTimer();\n\n this.debounceTimeout = setTimeout(\n this.handleUpdateTimeout,\n AdvancedFilterCreator.debounceFilterUpdate\n );\n }\n\n stopUpdateTimer() {\n if (this.debounceTimeout) {\n clearTimeout(this.debounceTimeout);\n this.debounceTimeout = null;\n }\n }\n\n sendUpdate() {\n const {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n } = this.state;\n const { column, onFilterChange, model } = this.props;\n const { formatter } = model;\n\n const options = {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n };\n\n const filter = TableUtils.makeAdvancedFilter(\n column,\n options,\n formatter.timeZone\n );\n\n onFilterChange(column, filter, options);\n }\n\n render() {\n const { column, model, sortDirection, formatter } = this.props;\n const {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n valuesTable,\n valuesTableError,\n } = this.state;\n const { isValuesTableAvailable } = model;\n const isBoolean = TableUtils.isBooleanType(column.type);\n const isDateType = TableUtils.isDateType(column.type);\n const filterTypes = this.getFilterTypes(column.type);\n const columnType = column.type.substring(column.type.lastIndexOf('.') + 1);\n const filterItemElements = [];\n if (!isBoolean && filterTypes.length) {\n for (let i = 0; i < filterItems.length; i += 1) {\n const filterItem = filterItems[i];\n const { key, selectedType, value } = filterItem;\n\n const element = (\n <AdvancedFilterCreatorFilterItem\n key={key}\n column={column}\n filterTypes={filterTypes}\n onChange={this.getFilterChangeHandler(i)}\n onDelete={this.getFilterDeleteHandler(i)}\n selectedType={selectedType}\n value={value}\n />\n );\n filterItemElements.push(element);\n\n if (i < filterOperators.length) {\n const filterOperator = filterOperators[i];\n const isAndFilter = filterOperator === FilterOperator.and;\n const operatorElement = (\n <div\n key={`filterOperator${key}`}\n className=\"form-row justify-content-end advanced-filter-creator-filter-operator\"\n >\n <button\n type=\"button\"\n className={classNames('btn btn-link filter-operator', {\n active: isAndFilter,\n })}\n onClick={this.handleChangeFilterOperator}\n data-index={i}\n data-operator={FilterOperator.and}\n >\n AND\n </button>\n <button\n type=\"button\"\n className={classNames('btn btn-link filter-operator', {\n active: !isAndFilter,\n })}\n onClick={this.handleChangeFilterOperator}\n data-index={i}\n data-operator={FilterOperator.or}\n >\n OR\n </button>\n </div>\n );\n filterItemElements.push(operatorElement);\n }\n }\n }\n const showAddFilterItem = this.shouldShowAddFilter();\n const addFilterItem = (\n <div\n key=\"addFilterItem\"\n className={classNames('form-row justify-content-end add-filter-item', {\n hidden: !showAddFilterItem,\n })}\n >\n <span className=\"text-muted\">\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n </span>\n <button\n type=\"button\"\n className=\"btn btn-link btn-filter-item\"\n onClick={this.handleAddAnd}\n disabled={!showAddFilterItem}\n >\n AND\n <Tooltip>Add filter with AND</Tooltip>\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link btn-filter-item\"\n onClick={this.handleAddOr}\n disabled={!showAddFilterItem}\n >\n OR\n <Tooltip>Add filter with OR</Tooltip>\n </button>\n </div>\n );\n filterItemElements.push(addFilterItem);\n\n return (\n <div className=\"advanced-filter-creator\" role=\"presentation\">\n <div tabIndex=\"0\" onFocus={this.handleFocusTrapStart} />\n <form onSubmit={this.handleSubmit} ref={this.focusTrapContainer}>\n <div className=\"title-bar\">\n <h6 className=\"advanced-filter-title\">Advanced Filters</h6>\n <div className=\"advanced-filter-menu-buttons\">\n <button\n type=\"button\"\n className={classNames(\n 'btn btn-link btn-link-icon sort-operator',\n {\n active:\n sortDirection === TableUtils.sortDirection.descending,\n }\n )}\n onClick={this.handleSortDown}\n >\n <FontAwesomeIcon icon={dhSortAmountDown} />\n <Tooltip>Sort {column.name} Descending</Tooltip>\n </button>\n <button\n type=\"button\"\n className={classNames(\n 'btn btn-link btn-link-icon sort-operator',\n {\n active:\n sortDirection === TableUtils.sortDirection.ascending,\n }\n )}\n onClick={this.handleSortUp}\n >\n <FontAwesomeIcon rotation={180} icon={dhSortAmountDown} />\n <Tooltip>Sort {column.name} Ascending</Tooltip>\n </button>\n </div>\n </div>\n <hr />\n <div className=\"advanced-filter-column-name\">\n {column.name} \n <span className=\"column-type\">({columnType})</span>\n </div>\n {filterItemElements}\n {isValuesTableAvailable && !valuesTableError && (\n <>\n {!isBoolean && <hr />}\n <div className=\"form-group\">\n <AdvancedFilterCreatorSelectValue\n table={valuesTable}\n onChange={this.handleSelectValueChange}\n invertSelection={invertSelection}\n selectedValues={selectedValues}\n formatter={formatter}\n showSearch={!isDateType}\n timeZone={formatter.timeZone}\n />\n </div>\n </>\n )}\n <div className=\"form-row justify-content-end\">\n <button\n type=\"button\"\n className=\"btn btn-outline-primary mr-2\"\n onClick={this.handleReset}\n >\n Reset\n </button>\n <button\n type=\"button\"\n className=\"btn btn-primary\"\n onClick={this.handleDone}\n >\n Done\n </button>\n </div>\n </form>\n <div tabIndex=\"0\" onFocus={this.handleFocusTrapEnd} />\n </div>\n );\n }\n}\n\nAdvancedFilterCreator.propTypes = {\n model: PropTypes.instanceOf(IrisGridModel).isRequired,\n column: PropTypes.shape({ name: PropTypes.string, type: PropTypes.string })\n .isRequired,\n onFilterChange: PropTypes.func.isRequired,\n onSortChange: PropTypes.func.isRequired,\n onDone: PropTypes.func.isRequired,\n options: PropTypes.shape({\n filterItems: PropTypes.arrayOf(PropTypes.shape({})),\n filterOperators: PropTypes.arrayOf(PropTypes.shape({})),\n invertSelection: PropTypes.bool,\n selectedValues: PropTypes.arrayOf(PropTypes.any),\n }),\n sortDirection: PropTypes.string,\n formatter: PropTypes.instanceOf(Formatter).isRequired,\n};\n\nAdvancedFilterCreator.defaultProps = {\n options: {\n filterItems: null,\n filterOperators: null,\n invertSelection: true,\n selectedValues: [],\n },\n sortDirection: null,\n};\n\nexport default AdvancedFilterCreator;\n"],"file":"AdvancedFilterCreator.js"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React, { PureComponent } from 'react';
|
|
2
|
-
import { FilterTypeValue } from '
|
|
3
|
-
|
|
2
|
+
import { TypeValue as FilterTypeValue } from '@deephaven/filters';
|
|
3
|
+
import { AdvancedFilterItemType } from '@deephaven/jsapi-utils';
|
|
4
|
+
export interface AdvancedFilterCreatorFilterItemProps {
|
|
4
5
|
column: {
|
|
5
6
|
type: string;
|
|
6
7
|
};
|
|
@@ -10,15 +11,8 @@ interface AdvancedFilterCreatorFilterItemProps {
|
|
|
10
11
|
selectedType?: FilterTypeValue;
|
|
11
12
|
value?: string;
|
|
12
13
|
}
|
|
13
|
-
export
|
|
14
|
-
|
|
15
|
-
value: string;
|
|
16
|
-
}
|
|
17
|
-
declare class AdvancedFilterCreatorFilterItem extends PureComponent<AdvancedFilterCreatorFilterItemProps, AdvancedFilterCreatorFilterItemState> {
|
|
18
|
-
static getLabelForTextFilter(filterType: FilterTypeValue): string;
|
|
19
|
-
static getLabelForNumberFilter(filterType: FilterTypeValue): string;
|
|
20
|
-
static getLabelForDateFilter(filterType: FilterTypeValue): string;
|
|
21
|
-
static getLabelForBooleanFilter(filterType: FilterTypeValue): string;
|
|
14
|
+
export declare type AdvancedFilterCreatorFilterItemState = AdvancedFilterItemType;
|
|
15
|
+
export declare class AdvancedFilterCreatorFilterItem extends PureComponent<AdvancedFilterCreatorFilterItemProps, AdvancedFilterCreatorFilterItemState> {
|
|
22
16
|
static getLabelForFilter(columnType: string, filterType: FilterTypeValue): string;
|
|
23
17
|
constructor(props: AdvancedFilterCreatorFilterItemProps);
|
|
24
18
|
componentDidMount(): void;
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"AdvancedFilterCreatorFilterItem.d.ts","sourceRoot":"","sources":["../src/AdvancedFilterCreatorFilterItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG7C,OAAO,EAKL,SAAS,IAAI,eAAe,EAC7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,sBAAsB,EAAc,MAAM,wBAAwB,CAAC;AAK5E,MAAM,WAAW,oCAAoC;IACnD,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzB,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrD,QAAQ,IAAI,IAAI,CAAC;IACjB,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,oBAAY,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;IAWzE,YAAY,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAEvC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAanE,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAanE,YAAY,IAAI,IAAI;IAOpB,MAAM,IAAI,GAAG,CAAC,OAAO;CA6DtB;AAED,eAAe,+BAA+B,CAAC"}
|
|
@@ -4,134 +4,35 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
4
4
|
import React, { PureComponent } from 'react';
|
|
5
5
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
6
6
|
import { Tooltip } from '@deephaven/components';
|
|
7
|
+
import { getLabelForBooleanFilter, getLabelForDateFilter, getLabelForNumberFilter, getLabelForTextFilter } from '@deephaven/filters';
|
|
7
8
|
import { vsTrash } from '@deephaven/icons';
|
|
9
|
+
import { TableUtils } from '@deephaven/jsapi-utils';
|
|
8
10
|
import Log from '@deephaven/log';
|
|
9
|
-
import TableUtils from "./TableUtils.js";
|
|
10
|
-
import { FilterType } from "./filters/index.js";
|
|
11
11
|
var log = Log.module('AdvancedFilterCreatorFilterItem');
|
|
12
|
-
|
|
13
|
-
class AdvancedFilterCreatorFilterItem extends PureComponent {
|
|
14
|
-
static getLabelForTextFilter(filterType) {
|
|
15
|
-
switch (filterType) {
|
|
16
|
-
case FilterType.eq:
|
|
17
|
-
return 'is exactly';
|
|
18
|
-
|
|
19
|
-
case FilterType.eqIgnoreCase:
|
|
20
|
-
return 'is exactly (ignore case)';
|
|
21
|
-
|
|
22
|
-
case FilterType.notEq:
|
|
23
|
-
return 'is not exactly';
|
|
24
|
-
|
|
25
|
-
case FilterType.notEqIgnoreCase:
|
|
26
|
-
return 'is not exactly (ignore case)';
|
|
27
|
-
|
|
28
|
-
case FilterType.contains:
|
|
29
|
-
return 'contains';
|
|
30
|
-
|
|
31
|
-
case FilterType.notContains:
|
|
32
|
-
return 'does not contain';
|
|
33
|
-
|
|
34
|
-
case FilterType.startsWith:
|
|
35
|
-
return 'starts with';
|
|
36
|
-
|
|
37
|
-
case FilterType.endsWith:
|
|
38
|
-
return 'ends with';
|
|
39
|
-
|
|
40
|
-
default:
|
|
41
|
-
log.warn('Unrecognized text filter type', filterType);
|
|
42
|
-
return '';
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
static getLabelForNumberFilter(filterType) {
|
|
47
|
-
switch (filterType) {
|
|
48
|
-
case FilterType.eq:
|
|
49
|
-
return 'is equal to';
|
|
50
|
-
|
|
51
|
-
case FilterType.notEq:
|
|
52
|
-
return 'is not equal to';
|
|
53
|
-
|
|
54
|
-
case FilterType.greaterThan:
|
|
55
|
-
return 'greater than';
|
|
56
|
-
|
|
57
|
-
case FilterType.greaterThanOrEqualTo:
|
|
58
|
-
return 'greater than or equal to';
|
|
59
|
-
|
|
60
|
-
case FilterType.lessThan:
|
|
61
|
-
return 'less than';
|
|
62
|
-
|
|
63
|
-
case FilterType.lessThanOrEqualTo:
|
|
64
|
-
return 'less than or equal to';
|
|
65
|
-
|
|
66
|
-
default:
|
|
67
|
-
log.warn('Unrecognized number filter type', filterType);
|
|
68
|
-
return '';
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
static getLabelForDateFilter(filterType) {
|
|
73
|
-
switch (filterType) {
|
|
74
|
-
case FilterType.eq:
|
|
75
|
-
return 'date is';
|
|
76
|
-
|
|
77
|
-
case FilterType.notEq:
|
|
78
|
-
return 'date is not';
|
|
79
|
-
|
|
80
|
-
case FilterType.notEqIgnoreCase:
|
|
81
|
-
case FilterType.greaterThan:
|
|
82
|
-
return 'date is after';
|
|
83
|
-
|
|
84
|
-
case FilterType.greaterThanOrEqualTo:
|
|
85
|
-
return 'date is after or equal';
|
|
86
|
-
|
|
87
|
-
case FilterType.lessThan:
|
|
88
|
-
return 'date is before';
|
|
89
|
-
|
|
90
|
-
case FilterType.lessThanOrEqualTo:
|
|
91
|
-
return 'date is before or equal';
|
|
92
|
-
|
|
93
|
-
default:
|
|
94
|
-
log.warn('Unrecognized date filter type', filterType);
|
|
95
|
-
return '';
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
static getLabelForBooleanFilter(filterType) {
|
|
100
|
-
switch (filterType) {
|
|
101
|
-
case FilterType.isTrue:
|
|
102
|
-
return 'Is True';
|
|
103
|
-
|
|
104
|
-
case FilterType.isFalse:
|
|
105
|
-
return 'Is False';
|
|
106
|
-
|
|
107
|
-
case FilterType.isNull:
|
|
108
|
-
return 'Is Null';
|
|
109
|
-
|
|
110
|
-
default:
|
|
111
|
-
log.warn('Unrecognized boolean filter type', filterType);
|
|
112
|
-
return '';
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
12
|
+
export class AdvancedFilterCreatorFilterItem extends PureComponent {
|
|
116
13
|
static getLabelForFilter(columnType, filterType) {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
14
|
+
try {
|
|
15
|
+
if (TableUtils.isNumberType(columnType) || TableUtils.isCharType(columnType)) {
|
|
16
|
+
return getLabelForNumberFilter(filterType);
|
|
17
|
+
}
|
|
120
18
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
19
|
+
if (TableUtils.isTextType(columnType)) {
|
|
20
|
+
return getLabelForTextFilter(filterType);
|
|
21
|
+
}
|
|
124
22
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
23
|
+
if (TableUtils.isDateType(columnType)) {
|
|
24
|
+
return getLabelForDateFilter(filterType);
|
|
25
|
+
}
|
|
128
26
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
27
|
+
if (TableUtils.isBooleanType(columnType)) {
|
|
28
|
+
return getLabelForBooleanFilter(filterType);
|
|
29
|
+
}
|
|
132
30
|
|
|
133
|
-
|
|
134
|
-
|
|
31
|
+
throw new Error("Unrecognized column type: ".concat(columnType));
|
|
32
|
+
} catch (e) {
|
|
33
|
+
log.warn(e);
|
|
34
|
+
return '';
|
|
35
|
+
}
|
|
135
36
|
}
|
|
136
37
|
|
|
137
38
|
constructor(props) {
|
|
@@ -280,6 +181,5 @@ class AdvancedFilterCreatorFilterItem extends PureComponent {
|
|
|
280
181
|
}
|
|
281
182
|
|
|
282
183
|
}
|
|
283
|
-
|
|
284
184
|
export default AdvancedFilterCreatorFilterItem;
|
|
285
185
|
//# sourceMappingURL=AdvancedFilterCreatorFilterItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/AdvancedFilterCreatorFilterItem.tsx"],"names":["React","PureComponent","FontAwesomeIcon","Tooltip","vsTrash","Log","TableUtils","FilterType","log","module","AdvancedFilterCreatorFilterItem","getLabelForTextFilter","filterType","eq","eqIgnoreCase","notEq","notEqIgnoreCase","contains","notContains","startsWith","endsWith","warn","getLabelForNumberFilter","greaterThan","greaterThanOrEqualTo","lessThan","lessThanOrEqualTo","getLabelForDateFilter","getLabelForBooleanFilter","isTrue","isFalse","isNull","getLabelForFilter","columnType","isNumberType","isCharType","isTextType","isDateType","isBooleanType","constructor","props","handleDelete","bind","handleTypeChange","handleValueChange","typeDropdown","value","filterTypes","selectedType","state","componentDidMount","focus","componentDidUpdate","prevProps","setState","event","debug2","target","onChange","length","debug","onDelete","render","column","showValueInput","type","typeOptionElements","i","label","element","push"],"mappings":"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","sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Tooltip } from '@deephaven/components';\nimport { vsTrash } from '@deephaven/icons';\nimport Log from '@deephaven/log';\nimport TableUtils from './TableUtils';\nimport { FilterType, FilterTypeValue } from './filters';\n\nconst log = Log.module('AdvancedFilterCreatorFilterItem');\n\ninterface AdvancedFilterCreatorFilterItemProps {\n column: { type: string };\n filterTypes: FilterTypeValue[];\n onChange(type: FilterTypeValue, value: string): void;\n onDelete(): void;\n selectedType?: FilterTypeValue;\n value?: string;\n}\n\nexport interface AdvancedFilterCreatorFilterItemState {\n selectedType: FilterTypeValue;\n value: string;\n}\n\nclass AdvancedFilterCreatorFilterItem extends PureComponent<\n AdvancedFilterCreatorFilterItemProps,\n AdvancedFilterCreatorFilterItemState\n> {\n static getLabelForTextFilter(filterType: FilterTypeValue): string {\n switch (filterType) {\n case FilterType.eq:\n return 'is exactly';\n case FilterType.eqIgnoreCase:\n return 'is exactly (ignore case)';\n case FilterType.notEq:\n return 'is not exactly';\n case FilterType.notEqIgnoreCase:\n return 'is not exactly (ignore case)';\n case FilterType.contains:\n return 'contains';\n case FilterType.notContains:\n return 'does not contain';\n case FilterType.startsWith:\n return 'starts with';\n case FilterType.endsWith:\n return 'ends with';\n default:\n log.warn('Unrecognized text filter type', filterType);\n return '';\n }\n }\n\n static getLabelForNumberFilter(filterType: FilterTypeValue): string {\n switch (filterType) {\n case FilterType.eq:\n return 'is equal to';\n case FilterType.notEq:\n return 'is not equal to';\n case FilterType.greaterThan:\n return 'greater than';\n case FilterType.greaterThanOrEqualTo:\n return 'greater than or equal to';\n case FilterType.lessThan:\n return 'less than';\n case FilterType.lessThanOrEqualTo:\n return 'less than or equal to';\n default:\n log.warn('Unrecognized number filter type', filterType);\n return '';\n }\n }\n\n static getLabelForDateFilter(filterType: FilterTypeValue): string {\n switch (filterType) {\n case FilterType.eq:\n return 'date is';\n case FilterType.notEq:\n return 'date is not';\n case FilterType.notEqIgnoreCase:\n case FilterType.greaterThan:\n return 'date is after';\n case FilterType.greaterThanOrEqualTo:\n return 'date is after or equal';\n case FilterType.lessThan:\n return 'date is before';\n case FilterType.lessThanOrEqualTo:\n return 'date is before or equal';\n default:\n log.warn('Unrecognized date filter type', filterType);\n return '';\n }\n }\n\n static getLabelForBooleanFilter(filterType: FilterTypeValue): string {\n switch (filterType) {\n case FilterType.isTrue:\n return 'Is True';\n case FilterType.isFalse:\n return 'Is False';\n case FilterType.isNull:\n return 'Is Null';\n default:\n log.warn('Unrecognized boolean filter type', filterType);\n return '';\n }\n }\n\n static getLabelForFilter(\n columnType: string,\n filterType: FilterTypeValue\n ): string {\n if (\n TableUtils.isNumberType(columnType) ||\n TableUtils.isCharType(columnType)\n ) {\n return AdvancedFilterCreatorFilterItem.getLabelForNumberFilter(\n filterType\n );\n }\n if (TableUtils.isTextType(columnType)) {\n return AdvancedFilterCreatorFilterItem.getLabelForTextFilter(filterType);\n }\n if (TableUtils.isDateType(columnType)) {\n return AdvancedFilterCreatorFilterItem.getLabelForDateFilter(filterType);\n }\n if (TableUtils.isBooleanType(columnType)) {\n return AdvancedFilterCreatorFilterItem.getLabelForBooleanFilter(\n filterType\n );\n }\n log.warn('Unrecognized column type: ', columnType);\n return '';\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 {\n value = '',\n filterTypes,\n selectedType = filterTypes[0],\n } = this.props;\n if (prevProps.selectedType !== selectedType || prevProps.value !== value) {\n this.setState({ selectedType, value });\n }\n }\n\n typeDropdown: HTMLSelectElement | null;\n\n handleTypeChange(event: React.ChangeEvent<HTMLSelectElement>): void {\n log.debug2('typeChange');\n const selectedType = event.target.value as FilterTypeValue;\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 render(): JSX.Element {\n const { column, filterTypes } = this.props;\n const { selectedType, value } = this.state;\n const showValueInput = !TableUtils.isBooleanType(column.type);\n const typeOptionElements = [];\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=\"form-control\"\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 type=\"button\"\n className=\"btn btn-link btn-link-icon w-100 h-100 p-0 m-0\"\n onClick={this.handleDelete}\n >\n <FontAwesomeIcon icon={vsTrash} />\n <Tooltip>Remove Filter</Tooltip>\n </button>\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorFilterItem;\n"],"file":"AdvancedFilterCreatorFilterItem.js"}
|
|
1
|
+
{"version":3,"sources":["../src/AdvancedFilterCreatorFilterItem.tsx"],"names":["React","PureComponent","FontAwesomeIcon","Tooltip","getLabelForBooleanFilter","getLabelForDateFilter","getLabelForNumberFilter","getLabelForTextFilter","vsTrash","TableUtils","Log","log","module","AdvancedFilterCreatorFilterItem","getLabelForFilter","columnType","filterType","isNumberType","isCharType","isTextType","isDateType","isBooleanType","Error","e","warn","constructor","props","handleDelete","bind","handleTypeChange","handleValueChange","typeDropdown","value","filterTypes","selectedType","state","componentDidMount","focus","componentDidUpdate","prevProps","setState","event","debug2","target","onChange","length","debug","onDelete","render","column","showValueInput","type","typeOptionElements","i","label","element","push"],"mappings":"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","sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Tooltip } 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 { AdvancedFilterItemType, TableUtils } from '@deephaven/jsapi-utils';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('AdvancedFilterCreatorFilterItem');\n\nexport interface AdvancedFilterCreatorFilterItemProps {\n column: { type: string };\n filterTypes: FilterTypeValue[];\n onChange(type: FilterTypeValue, value: string): void;\n onDelete(): void;\n selectedType?: FilterTypeValue;\n value?: string;\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 {\n value = '',\n filterTypes,\n selectedType = filterTypes[0],\n } = this.props;\n if (prevProps.selectedType !== selectedType || prevProps.value !== value) {\n this.setState({ selectedType, value });\n }\n }\n\n typeDropdown: HTMLSelectElement | null;\n\n handleTypeChange(event: React.ChangeEvent<HTMLSelectElement>): void {\n log.debug2('typeChange');\n const selectedType = event.target.value as FilterTypeValue;\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 render(): JSX.Element {\n const { column, filterTypes } = this.props;\n const { selectedType, value } = this.state;\n const showValueInput = !TableUtils.isBooleanType(column.type);\n const typeOptionElements = [];\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=\"form-control\"\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 type=\"button\"\n className=\"btn btn-link btn-link-icon w-100 h-100 p-0 m-0\"\n onClick={this.handleDelete}\n >\n <FontAwesomeIcon icon={vsTrash} />\n <Tooltip>Remove Filter</Tooltip>\n </button>\n </div>\n </div>\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreatorFilterItem;\n"],"file":"AdvancedFilterCreatorFilterItem.js"}
|
|
@@ -50,5 +50,5 @@ declare namespace AdvancedFilterCreatorSelectValue {
|
|
|
50
50
|
}
|
|
51
51
|
import React from "react";
|
|
52
52
|
import PropTypes from "prop-types";
|
|
53
|
-
import Formatter from "
|
|
53
|
+
import { Formatter } from "packages/jsapi-utils/src/Formatter";
|
|
54
54
|
//# sourceMappingURL=AdvancedFilterCreatorSelectValue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdvancedFilterCreatorSelectValue.d.ts","sourceRoot":"","sources":["../src/AdvancedFilterCreatorSelectValue.jsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"AdvancedFilterCreatorSelectValue.d.ts","sourceRoot":"","sources":["../src/AdvancedFilterCreatorSelectValue.jsx"],"names":[],"mappings":";AASA;IACE,kCAAgC;IAEhC,wBAsBC;IA8GD,6BAEC;IAED,4BAEC;IAlBD,kEAKC;IAED,qCAGC;IAUD,kCAGC;IAtIC,wBAA8B;IAC9B,yCAA6B;IAoD/B,qBAMC;IAED,+BAUC;IAED,uCAkBC;IAED,wBAgBC;IA2BD,2CAOC;IAED,+BAOC;IAED,8BAKC;IAED,0BAgCC;CAyEF;;;;;;;;;;;;;;;;;;;;;;;;;QAqBW,mCAAQ"}
|
|
@@ -5,8 +5,7 @@ import React, { PureComponent } from 'react';
|
|
|
5
5
|
import PropTypes from 'prop-types';
|
|
6
6
|
import { CSSTransition } from 'react-transition-group';
|
|
7
7
|
import classNames from 'classnames';
|
|
8
|
-
import Formatter from
|
|
9
|
-
import TableUtils from "./TableUtils.js";
|
|
8
|
+
import { Formatter, TableUtils } from '@deephaven/jsapi-utils';
|
|
10
9
|
import AdvancedFilterCreatorSelectValueList from "./AdvancedFilterCreatorSelectValueList.js";
|
|
11
10
|
import "./AdvancedFilterCreatorSelectValue.css";
|
|
12
11
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/AdvancedFilterCreatorSelectValue.jsx"],"names":["React","PureComponent","PropTypes","CSSTransition","classNames","Formatter","TableUtils","AdvancedFilterCreatorSelectValueList","AdvancedFilterCreatorSelectValue","constructor","props","handleSelectAllClick","bind","handleClearAllClick","handleListChange","handleSearchChange","handleUpdateFilterTimeout","searchTablePromise","updateFilterTimer","invertSelection","selectedValues","state","error","filters","searchText","table","componentDidMount","initSearchTable","componentDidUpdate","prevProps","prevState","setState","searchTable","close","startUpdateFilterTimer","componentWillUnmount","stopUpdateFilterTimer","getColumnName","columns","name","getDisplayedValuesCount","totalSize","length","getDisplayedValueText","count","formatter","formattedCount","getFormattedString","formattedTableSize","prefix","copy","then","onChange","event","target","value","resetSelection","updateTableFilter","setTimeout","searchDebounceTime","clearTimeout","timeZone","column","filter","isCharType","type","makeQuickFilter","isTextType","push","render","showSearch","columnName","displayedValuesText","placeholderText","propTypes","shape","func","arrayOf","string","number","bool","any","instanceOf","isRequired","defaultProps"],"mappings":"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","sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\nimport classNames from 'classnames';\nimport Formatter from './Formatter';\nimport TableUtils from './TableUtils';\nimport AdvancedFilterCreatorSelectValueList from './AdvancedFilterCreatorSelectValueList';\nimport './AdvancedFilterCreatorSelectValue.scss';\n\nclass AdvancedFilterCreatorSelectValue extends PureComponent {\n static searchDebounceTime = 250;\n\n constructor(props) {\n super(props);\n\n this.handleSelectAllClick = this.handleSelectAllClick.bind(this);\n this.handleClearAllClick = this.handleClearAllClick.bind(this);\n this.handleListChange = this.handleListChange.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleUpdateFilterTimeout = this.handleUpdateFilterTimeout.bind(this);\n\n this.searchTablePromise = null;\n this.updateFilterTimer = null;\n\n const { invertSelection, selectedValues } = props;\n\n this.state = {\n error: null,\n filters: [],\n invertSelection,\n selectedValues,\n searchText: '',\n table: null,\n };\n }\n\n componentDidMount() {\n this.initSearchTable();\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { invertSelection, selectedValues, table } = this.props;\n if (prevProps.table !== table) {\n this.initSearchTable();\n }\n\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({ invertSelection });\n }\n\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({ selectedValues });\n }\n\n const { table: searchTable, searchText } = this.state;\n if (searchTable !== prevState.table && prevState.table != null) {\n prevState.table.close();\n }\n\n if (searchText !== prevState.searchText) {\n this.startUpdateFilterTimer();\n }\n }\n\n componentWillUnmount() {\n const { table } = this.state;\n if (table != null) {\n table.close();\n }\n this.searchTablePromise = null;\n\n this.stopUpdateFilterTimer();\n }\n\n getColumnName() {\n const { table } = this.props;\n if (table != null) {\n return table.columns[0].name;\n }\n return '';\n }\n\n getDisplayedValuesCount() {\n const { invertSelection, selectedValues, table } = this.state;\n if (table == null) {\n return null;\n }\n\n if (invertSelection) {\n return table.totalSize - selectedValues.length;\n }\n return selectedValues.length;\n }\n\n getDisplayedValueText() {\n const count = this.getDisplayedValuesCount();\n const { table } = this.state;\n const { formatter } = this.props;\n\n if (count != null && table != null) {\n const formattedCount = formatter.getFormattedString(count, 'long');\n const formattedTableSize = formatter.getFormattedString(\n table.totalSize,\n 'long'\n );\n let prefix = '';\n if (count < 1000000) {\n prefix = 'Displaying ';\n }\n return `${prefix}${formattedCount} of ${formattedTableSize}`;\n }\n return null;\n }\n\n initSearchTable() {\n const { table } = this.props;\n if (table == null) {\n return;\n }\n\n const searchTablePromise = table.copy();\n this.searchTablePromise = searchTablePromise;\n this.searchTablePromise.then(searchTable => {\n if (this.searchTablePromise === searchTablePromise) {\n this.setState({ table: searchTable });\n this.searchTablePromise = null;\n } else {\n searchTable.close();\n }\n });\n }\n\n handleListChange(selectedValues, invertSelection) {\n this.setState({ selectedValues, invertSelection });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n handleSearchChange(event) {\n const searchText = event.target.value;\n this.setState({ searchText });\n }\n\n handleSelectAllClick() {\n this.resetSelection(true);\n }\n\n handleClearAllClick() {\n this.resetSelection(false);\n }\n\n handleUpdateFilterTimeout() {\n this.updateFilterTimer = null;\n this.updateTableFilter();\n }\n\n resetSelection(invertSelection) {\n const selectedValues = [];\n\n this.setState({ invertSelection, selectedValues });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n startUpdateFilterTimer() {\n this.stopUpdateFilterTimer();\n\n this.updateFilterTimer = setTimeout(\n this.handleUpdateFilterTimeout,\n AdvancedFilterCreatorSelectValue.searchDebounceTime\n );\n }\n\n stopUpdateFilterTimer() {\n if (this.updateFilterTimer) {\n clearTimeout(this.updateFilterTimer);\n this.updateFilterTimer = null;\n }\n }\n\n updateTableFilter() {\n const { table, searchText } = this.state;\n const { timeZone } = this.props;\n const column = table.columns[0];\n const filters = [];\n let error = null;\n if (searchText.length > 0) {\n let filter = null;\n if (TableUtils.isCharType(column.type)) {\n // Just exact match for char\n filter = TableUtils.makeQuickFilter(column, searchText);\n } else if (TableUtils.isTextType(column.type)) {\n // case insensitive & contains search text\n filter = TableUtils.makeQuickFilter(column, `~${searchText}`, timeZone);\n } else {\n // greater than or equal search for everything else\n // we may want to be smarter with some other types (like dates)\n filter = TableUtils.makeQuickFilter(\n column,\n `>=${searchText}`,\n timeZone\n );\n }\n\n if (filter != null) {\n filters.push(filter);\n } else {\n error = 'Invalid search text';\n }\n }\n\n this.setState({ filters, error });\n }\n\n render() {\n const {\n error,\n filters,\n invertSelection,\n selectedValues,\n searchText,\n table,\n } = this.state;\n const { formatter, showSearch } = this.props;\n const columnName = this.getColumnName();\n const displayedValuesText = this.getDisplayedValueText();\n const placeholderText = columnName ? `Find ${columnName}...` : '';\n\n return (\n <div className=\"advanced-filter-creator-select-value\">\n <div className={showSearch ? 'form-group' : ''}>\n <label htmlFor=\"advanced-filter-creator-select-value-input\">\n Select Values\n </label>\n {showSearch && (\n <input\n type=\"text\"\n className={classNames('form-control', {\n 'is-invalid': error != null,\n })}\n id=\"advanced-filter-creator-select-value-input\"\n placeholder={placeholderText}\n value={searchText}\n onChange={this.handleSearchChange}\n />\n )}\n </div>\n <AdvancedFilterCreatorSelectValueList\n table={table}\n filters={filters}\n invertSelection={invertSelection}\n selectedValues={selectedValues}\n formatter={formatter}\n onChange={this.handleListChange}\n />\n <div className=\"advanced-filter-creator-select-meta-row\">\n <div>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.handleSelectAllClick}\n >\n Select All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.handleClearAllClick}\n >\n Clear\n </button>\n </div>\n <CSSTransition\n in={displayedValuesText != null}\n timeout={250}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n >\n <div className=\"row-count-info\">{displayedValuesText}</div>\n </CSSTransition>\n </div>\n </div>\n );\n }\n}\n\nAdvancedFilterCreatorSelectValue.propTypes = {\n table: PropTypes.shape({\n close: PropTypes.func,\n columns: PropTypes.arrayOf(PropTypes.shape({ name: PropTypes.string })),\n copy: PropTypes.func,\n totalSize: PropTypes.number,\n }),\n invertSelection: PropTypes.bool,\n selectedValues: PropTypes.arrayOf(PropTypes.any),\n formatter: PropTypes.instanceOf(Formatter).isRequired,\n onChange: PropTypes.func,\n showSearch: PropTypes.bool,\n timeZone: PropTypes.string.isRequired,\n};\n\nAdvancedFilterCreatorSelectValue.defaultProps = {\n table: null,\n invertSelection: true,\n selectedValues: [],\n onChange: () => {},\n showSearch: true,\n};\n\nexport default AdvancedFilterCreatorSelectValue;\n"],"file":"AdvancedFilterCreatorSelectValue.js"}
|
|
1
|
+
{"version":3,"sources":["../src/AdvancedFilterCreatorSelectValue.jsx"],"names":["React","PureComponent","PropTypes","CSSTransition","classNames","Formatter","TableUtils","AdvancedFilterCreatorSelectValueList","AdvancedFilterCreatorSelectValue","constructor","props","handleSelectAllClick","bind","handleClearAllClick","handleListChange","handleSearchChange","handleUpdateFilterTimeout","searchTablePromise","updateFilterTimer","invertSelection","selectedValues","state","error","filters","searchText","table","componentDidMount","initSearchTable","componentDidUpdate","prevProps","prevState","setState","searchTable","close","startUpdateFilterTimer","componentWillUnmount","stopUpdateFilterTimer","getColumnName","columns","name","getDisplayedValuesCount","totalSize","length","getDisplayedValueText","count","formatter","formattedCount","getFormattedString","formattedTableSize","prefix","copy","then","onChange","event","target","value","resetSelection","updateTableFilter","setTimeout","searchDebounceTime","clearTimeout","timeZone","column","filter","isCharType","type","makeQuickFilter","isTextType","push","render","showSearch","columnName","displayedValuesText","placeholderText","propTypes","shape","func","arrayOf","string","number","bool","any","instanceOf","isRequired","defaultProps"],"mappings":";;AAAA;AACA,OAAOA,KAAP,IAAgBC,aAAhB,QAAqC,OAArC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,aAAT,QAA8B,wBAA9B;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,SAAT,EAAoBC,UAApB,QAAsC,wBAAtC;OACOC,oC;;;AAGP,MAAMC,gCAAN,SAA+CP,aAA/C,CAA6D;AAG3DQ,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;AAEA,SAAKC,oBAAL,GAA4B,KAAKA,oBAAL,CAA0BC,IAA1B,CAA+B,IAA/B,CAA5B;AACA,SAAKC,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBD,IAAzB,CAA8B,IAA9B,CAA3B;AACA,SAAKE,gBAAL,GAAwB,KAAKA,gBAAL,CAAsBF,IAAtB,CAA2B,IAA3B,CAAxB;AACA,SAAKG,kBAAL,GAA0B,KAAKA,kBAAL,CAAwBH,IAAxB,CAA6B,IAA7B,CAA1B;AACA,SAAKI,yBAAL,GAAiC,KAAKA,yBAAL,CAA+BJ,IAA/B,CAAoC,IAApC,CAAjC;AAEA,SAAKK,kBAAL,GAA0B,IAA1B;AACA,SAAKC,iBAAL,GAAyB,IAAzB;AAEA,QAAM;AAAEC,MAAAA,eAAF;AAAmBC,MAAAA;AAAnB,QAAsCV,KAA5C;AAEA,SAAKW,KAAL,GAAa;AACXC,MAAAA,KAAK,EAAE,IADI;AAEXC,MAAAA,OAAO,EAAE,EAFE;AAGXJ,MAAAA,eAHW;AAIXC,MAAAA,cAJW;AAKXI,MAAAA,UAAU,EAAE,EALD;AAMXC,MAAAA,KAAK,EAAE;AANI,KAAb;AAQD;;AAEDC,EAAAA,iBAAiB,GAAG;AAClB,SAAKC,eAAL;AACD;;AAEDC,EAAAA,kBAAkB,CAACC,SAAD,EAAYC,SAAZ,EAAuB;AACvC,QAAM;AAAEX,MAAAA,eAAF;AAAmBC,MAAAA,cAAnB;AAAmCK,MAAAA;AAAnC,QAA6C,KAAKf,KAAxD;;AACA,QAAImB,SAAS,CAACJ,KAAV,KAAoBA,KAAxB,EAA+B;AAC7B,WAAKE,eAAL;AACD;;AAED,QAAIE,SAAS,CAACV,eAAV,KAA8BA,eAAlC,EAAmD;AACjD,WAAKY,QAAL,CAAc;AAAEZ,QAAAA;AAAF,OAAd;AACD;;AAED,QAAIU,SAAS,CAACT,cAAV,KAA6BA,cAAjC,EAAiD;AAC/C,WAAKW,QAAL,CAAc;AAAEX,QAAAA;AAAF,OAAd;AACD;;AAED,QAAM;AAAEK,MAAAA,KAAK,EAAEO,WAAT;AAAsBR,MAAAA;AAAtB,QAAqC,KAAKH,KAAhD;;AACA,QAAIW,WAAW,KAAKF,SAAS,CAACL,KAA1B,IAAmCK,SAAS,CAACL,KAAV,IAAmB,IAA1D,EAAgE;AAC9DK,MAAAA,SAAS,CAACL,KAAV,CAAgBQ,KAAhB;AACD;;AAED,QAAIT,UAAU,KAAKM,SAAS,CAACN,UAA7B,EAAyC;AACvC,WAAKU,sBAAL;AACD;AACF;;AAEDC,EAAAA,oBAAoB,GAAG;AACrB,QAAM;AAAEV,MAAAA;AAAF,QAAY,KAAKJ,KAAvB;;AACA,QAAII,KAAK,IAAI,IAAb,EAAmB;AACjBA,MAAAA,KAAK,CAACQ,KAAN;AACD;;AACD,SAAKhB,kBAAL,GAA0B,IAA1B;AAEA,SAAKmB,qBAAL;AACD;;AAEDC,EAAAA,aAAa,GAAG;AACd,QAAM;AAAEZ,MAAAA;AAAF,QAAY,KAAKf,KAAvB;;AACA,QAAIe,KAAK,IAAI,IAAb,EAAmB;AACjB,aAAOA,KAAK,CAACa,OAAN,CAAc,CAAd,EAAiBC,IAAxB;AACD;;AACD,WAAO,EAAP;AACD;;AAEDC,EAAAA,uBAAuB,GAAG;AACxB,QAAM;AAAErB,MAAAA,eAAF;AAAmBC,MAAAA,cAAnB;AAAmCK,MAAAA;AAAnC,QAA6C,KAAKJ,KAAxD;;AACA,QAAII,KAAK,IAAI,IAAb,EAAmB;AACjB,aAAO,IAAP;AACD;;AAED,QAAIN,eAAJ,EAAqB;AACnB,aAAOM,KAAK,CAACgB,SAAN,GAAkBrB,cAAc,CAACsB,MAAxC;AACD;;AACD,WAAOtB,cAAc,CAACsB,MAAtB;AACD;;AAEDC,EAAAA,qBAAqB,GAAG;AACtB,QAAMC,KAAK,GAAG,KAAKJ,uBAAL,EAAd;AACA,QAAM;AAAEf,MAAAA;AAAF,QAAY,KAAKJ,KAAvB;AACA,QAAM;AAAEwB,MAAAA;AAAF,QAAgB,KAAKnC,KAA3B;;AAEA,QAAIkC,KAAK,IAAI,IAAT,IAAiBnB,KAAK,IAAI,IAA9B,EAAoC;AAClC,UAAMqB,cAAc,GAAGD,SAAS,CAACE,kBAAV,CAA6BH,KAA7B,EAAoC,MAApC,CAAvB;AACA,UAAMI,kBAAkB,GAAGH,SAAS,CAACE,kBAAV,CACzBtB,KAAK,CAACgB,SADmB,EAEzB,MAFyB,CAA3B;AAIA,UAAIQ,MAAM,GAAG,EAAb;;AACA,UAAIL,KAAK,GAAG,OAAZ,EAAqB;AACnBK,QAAAA,MAAM,GAAG,aAAT;AACD;;AACD,uBAAUA,MAAV,SAAmBH,cAAnB,iBAAwCE,kBAAxC;AACD;;AACD,WAAO,IAAP;AACD;;AAEDrB,EAAAA,eAAe,GAAG;AAChB,QAAM;AAAEF,MAAAA;AAAF,QAAY,KAAKf,KAAvB;;AACA,QAAIe,KAAK,IAAI,IAAb,EAAmB;AACjB;AACD;;AAED,QAAMR,kBAAkB,GAAGQ,KAAK,CAACyB,IAAN,EAA3B;AACA,SAAKjC,kBAAL,GAA0BA,kBAA1B;AACA,SAAKA,kBAAL,CAAwBkC,IAAxB,CAA6BnB,WAAW,IAAI;AAC1C,UAAI,KAAKf,kBAAL,KAA4BA,kBAAhC,EAAoD;AAClD,aAAKc,QAAL,CAAc;AAAEN,UAAAA,KAAK,EAAEO;AAAT,SAAd;AACA,aAAKf,kBAAL,GAA0B,IAA1B;AACD,OAHD,MAGO;AACLe,QAAAA,WAAW,CAACC,KAAZ;AACD;AACF,KAPD;AAQD;;AAEDnB,EAAAA,gBAAgB,CAACM,cAAD,EAAiBD,eAAjB,EAAkC;AAChD,SAAKY,QAAL,CAAc;AAAEX,MAAAA,cAAF;AAAkBD,MAAAA;AAAlB,KAAd;AAEA,QAAM;AAAEiC,MAAAA;AAAF,QAAe,KAAK1C,KAA1B;AACA0C,IAAAA,QAAQ,CAAChC,cAAD,EAAiBD,eAAjB,CAAR;AACD;;AAEDJ,EAAAA,kBAAkB,CAACsC,KAAD,EAAQ;AACxB,QAAM7B,UAAU,GAAG6B,KAAK,CAACC,MAAN,CAAaC,KAAhC;AACA,SAAKxB,QAAL,CAAc;AAAEP,MAAAA;AAAF,KAAd;AACD;;AAEDb,EAAAA,oBAAoB,GAAG;AACrB,SAAK6C,cAAL,CAAoB,IAApB;AACD;;AAED3C,EAAAA,mBAAmB,GAAG;AACpB,SAAK2C,cAAL,CAAoB,KAApB;AACD;;AAEDxC,EAAAA,yBAAyB,GAAG;AAC1B,SAAKE,iBAAL,GAAyB,IAAzB;AACA,SAAKuC,iBAAL;AACD;;AAEDD,EAAAA,cAAc,CAACrC,eAAD,EAAkB;AAC9B,QAAMC,cAAc,GAAG,EAAvB;AAEA,SAAKW,QAAL,CAAc;AAAEZ,MAAAA,eAAF;AAAmBC,MAAAA;AAAnB,KAAd;AAEA,QAAM;AAAEgC,MAAAA;AAAF,QAAe,KAAK1C,KAA1B;AACA0C,IAAAA,QAAQ,CAAChC,cAAD,EAAiBD,eAAjB,CAAR;AACD;;AAEDe,EAAAA,sBAAsB,GAAG;AACvB,SAAKE,qBAAL;AAEA,SAAKlB,iBAAL,GAAyBwC,UAAU,CACjC,KAAK1C,yBAD4B,EAEjCR,gCAAgC,CAACmD,kBAFA,CAAnC;AAID;;AAEDvB,EAAAA,qBAAqB,GAAG;AACtB,QAAI,KAAKlB,iBAAT,EAA4B;AAC1B0C,MAAAA,YAAY,CAAC,KAAK1C,iBAAN,CAAZ;AACA,WAAKA,iBAAL,GAAyB,IAAzB;AACD;AACF;;AAEDuC,EAAAA,iBAAiB,GAAG;AAClB,QAAM;AAAEhC,MAAAA,KAAF;AAASD,MAAAA;AAAT,QAAwB,KAAKH,KAAnC;AACA,QAAM;AAAEwC,MAAAA;AAAF,QAAe,KAAKnD,KAA1B;AACA,QAAMoD,MAAM,GAAGrC,KAAK,CAACa,OAAN,CAAc,CAAd,CAAf;AACA,QAAMf,OAAO,GAAG,EAAhB;AACA,QAAID,KAAK,GAAG,IAAZ;;AACA,QAAIE,UAAU,CAACkB,MAAX,GAAoB,CAAxB,EAA2B;AACzB,UAAIqB,MAAM,GAAG,IAAb;;AACA,UAAIzD,UAAU,CAAC0D,UAAX,CAAsBF,MAAM,CAACG,IAA7B,CAAJ,EAAwC;AACtC;AACAF,QAAAA,MAAM,GAAGzD,UAAU,CAAC4D,eAAX,CAA2BJ,MAA3B,EAAmCtC,UAAnC,CAAT;AACD,OAHD,MAGO,IAAIlB,UAAU,CAAC6D,UAAX,CAAsBL,MAAM,CAACG,IAA7B,CAAJ,EAAwC;AAC7C;AACAF,QAAAA,MAAM,GAAGzD,UAAU,CAAC4D,eAAX,CAA2BJ,MAA3B,aAAuCtC,UAAvC,GAAqDqC,QAArD,CAAT;AACD,OAHM,MAGA;AACL;AACA;AACAE,QAAAA,MAAM,GAAGzD,UAAU,CAAC4D,eAAX,CACPJ,MADO,cAEFtC,UAFE,GAGPqC,QAHO,CAAT;AAKD;;AAED,UAAIE,MAAM,IAAI,IAAd,EAAoB;AAClBxC,QAAAA,OAAO,CAAC6C,IAAR,CAAaL,MAAb;AACD,OAFD,MAEO;AACLzC,QAAAA,KAAK,GAAG,qBAAR;AACD;AACF;;AAED,SAAKS,QAAL,CAAc;AAAER,MAAAA,OAAF;AAAWD,MAAAA;AAAX,KAAd;AACD;;AAED+C,EAAAA,MAAM,GAAG;AACP,QAAM;AACJ/C,MAAAA,KADI;AAEJC,MAAAA,OAFI;AAGJJ,MAAAA,eAHI;AAIJC,MAAAA,cAJI;AAKJI,MAAAA,UALI;AAMJC,MAAAA;AANI,QAOF,KAAKJ,KAPT;AAQA,QAAM;AAAEwB,MAAAA,SAAF;AAAayB,MAAAA;AAAb,QAA4B,KAAK5D,KAAvC;AACA,QAAM6D,UAAU,GAAG,KAAKlC,aAAL,EAAnB;AACA,QAAMmC,mBAAmB,GAAG,KAAK7B,qBAAL,EAA5B;AACA,QAAM8B,eAAe,GAAGF,UAAU,kBAAWA,UAAX,WAA6B,EAA/D;AAEA,wBACE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AAAK,MAAA,SAAS,EAAED,UAAU,GAAG,YAAH,GAAkB;AAA5C,oBACE;AAAO,MAAA,OAAO,EAAC;AAAf,uBADF,EAIGA,UAAU,iBACT;AACE,MAAA,IAAI,EAAC,MADP;AAEE,MAAA,SAAS,EAAElE,UAAU,CAAC,cAAD,EAAiB;AACpC,sBAAckB,KAAK,IAAI;AADa,OAAjB,CAFvB;AAKE,MAAA,EAAE,EAAC,4CALL;AAME,MAAA,WAAW,EAAEmD,eANf;AAOE,MAAA,KAAK,EAAEjD,UAPT;AAQE,MAAA,QAAQ,EAAE,KAAKT;AARjB,MALJ,CADF,eAkBE,oBAAC,oCAAD;AACE,MAAA,KAAK,EAAEU,KADT;AAEE,MAAA,OAAO,EAAEF,OAFX;AAGE,MAAA,eAAe,EAAEJ,eAHnB;AAIE,MAAA,cAAc,EAAEC,cAJlB;AAKE,MAAA,SAAS,EAAEyB,SALb;AAME,MAAA,QAAQ,EAAE,KAAK/B;AANjB,MAlBF,eA0BE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE,8CACE;AACE,MAAA,IAAI,EAAC,QADP;AAEE,MAAA,SAAS,EAAC,cAFZ;AAGE,MAAA,OAAO,EAAE,KAAKH;AAHhB,oBADF,eAQE;AACE,MAAA,IAAI,EAAC,QADP;AAEE,MAAA,SAAS,EAAC,cAFZ;AAGE,MAAA,OAAO,EAAE,KAAKE;AAHhB,eARF,CADF,eAiBE,oBAAC,aAAD;AACE,MAAA,EAAE,EAAE2D,mBAAmB,IAAI,IAD7B;AAEE,MAAA,OAAO,EAAE,GAFX;AAGE,MAAA,UAAU,EAAC,MAHb;AAIE,MAAA,YAAY,MAJd;AAKE,MAAA,aAAa;AALf,oBAOE;AAAK,MAAA,SAAS,EAAC;AAAf,OAAiCA,mBAAjC,CAPF,CAjBF,CA1BF,CADF;AAwDD;;AArR0D;;gBAAvDhE,gC,wBACwB,G;;AAuR9BA,gCAAgC,CAACkE,SAAjC,GAA6C;AAC3CjD,EAAAA,KAAK,EAAEvB,SAAS,CAACyE,KAAV,CAAgB;AACrB1C,IAAAA,KAAK,EAAE/B,SAAS,CAAC0E,IADI;AAErBtC,IAAAA,OAAO,EAAEpC,SAAS,CAAC2E,OAAV,CAAkB3E,SAAS,CAACyE,KAAV,CAAgB;AAAEpC,MAAAA,IAAI,EAAErC,SAAS,CAAC4E;AAAlB,KAAhB,CAAlB,CAFY;AAGrB5B,IAAAA,IAAI,EAAEhD,SAAS,CAAC0E,IAHK;AAIrBnC,IAAAA,SAAS,EAAEvC,SAAS,CAAC6E;AAJA,GAAhB,CADoC;AAO3C5D,EAAAA,eAAe,EAAEjB,SAAS,CAAC8E,IAPgB;AAQ3C5D,EAAAA,cAAc,EAAElB,SAAS,CAAC2E,OAAV,CAAkB3E,SAAS,CAAC+E,GAA5B,CAR2B;AAS3CpC,EAAAA,SAAS,EAAE3C,SAAS,CAACgF,UAAV,CAAqB7E,SAArB,EAAgC8E,UATA;AAU3C/B,EAAAA,QAAQ,EAAElD,SAAS,CAAC0E,IAVuB;AAW3CN,EAAAA,UAAU,EAAEpE,SAAS,CAAC8E,IAXqB;AAY3CnB,EAAAA,QAAQ,EAAE3D,SAAS,CAAC4E,MAAV,CAAiBK;AAZgB,CAA7C;AAeA3E,gCAAgC,CAAC4E,YAAjC,GAAgD;AAC9C3D,EAAAA,KAAK,EAAE,IADuC;AAE9CN,EAAAA,eAAe,EAAE,IAF6B;AAG9CC,EAAAA,cAAc,EAAE,EAH8B;AAI9CgC,EAAAA,QAAQ,EAAE,MAAM,CAAE,CAJ4B;AAK9CkB,EAAAA,UAAU,EAAE;AALkC,CAAhD;AAQA,eAAe9D,gCAAf","sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\nimport classNames from 'classnames';\nimport { Formatter, TableUtils } from '@deephaven/jsapi-utils';\nimport AdvancedFilterCreatorSelectValueList from './AdvancedFilterCreatorSelectValueList';\nimport './AdvancedFilterCreatorSelectValue.scss';\n\nclass AdvancedFilterCreatorSelectValue extends PureComponent {\n static searchDebounceTime = 250;\n\n constructor(props) {\n super(props);\n\n this.handleSelectAllClick = this.handleSelectAllClick.bind(this);\n this.handleClearAllClick = this.handleClearAllClick.bind(this);\n this.handleListChange = this.handleListChange.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleUpdateFilterTimeout = this.handleUpdateFilterTimeout.bind(this);\n\n this.searchTablePromise = null;\n this.updateFilterTimer = null;\n\n const { invertSelection, selectedValues } = props;\n\n this.state = {\n error: null,\n filters: [],\n invertSelection,\n selectedValues,\n searchText: '',\n table: null,\n };\n }\n\n componentDidMount() {\n this.initSearchTable();\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { invertSelection, selectedValues, table } = this.props;\n if (prevProps.table !== table) {\n this.initSearchTable();\n }\n\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({ invertSelection });\n }\n\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({ selectedValues });\n }\n\n const { table: searchTable, searchText } = this.state;\n if (searchTable !== prevState.table && prevState.table != null) {\n prevState.table.close();\n }\n\n if (searchText !== prevState.searchText) {\n this.startUpdateFilterTimer();\n }\n }\n\n componentWillUnmount() {\n const { table } = this.state;\n if (table != null) {\n table.close();\n }\n this.searchTablePromise = null;\n\n this.stopUpdateFilterTimer();\n }\n\n getColumnName() {\n const { table } = this.props;\n if (table != null) {\n return table.columns[0].name;\n }\n return '';\n }\n\n getDisplayedValuesCount() {\n const { invertSelection, selectedValues, table } = this.state;\n if (table == null) {\n return null;\n }\n\n if (invertSelection) {\n return table.totalSize - selectedValues.length;\n }\n return selectedValues.length;\n }\n\n getDisplayedValueText() {\n const count = this.getDisplayedValuesCount();\n const { table } = this.state;\n const { formatter } = this.props;\n\n if (count != null && table != null) {\n const formattedCount = formatter.getFormattedString(count, 'long');\n const formattedTableSize = formatter.getFormattedString(\n table.totalSize,\n 'long'\n );\n let prefix = '';\n if (count < 1000000) {\n prefix = 'Displaying ';\n }\n return `${prefix}${formattedCount} of ${formattedTableSize}`;\n }\n return null;\n }\n\n initSearchTable() {\n const { table } = this.props;\n if (table == null) {\n return;\n }\n\n const searchTablePromise = table.copy();\n this.searchTablePromise = searchTablePromise;\n this.searchTablePromise.then(searchTable => {\n if (this.searchTablePromise === searchTablePromise) {\n this.setState({ table: searchTable });\n this.searchTablePromise = null;\n } else {\n searchTable.close();\n }\n });\n }\n\n handleListChange(selectedValues, invertSelection) {\n this.setState({ selectedValues, invertSelection });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n handleSearchChange(event) {\n const searchText = event.target.value;\n this.setState({ searchText });\n }\n\n handleSelectAllClick() {\n this.resetSelection(true);\n }\n\n handleClearAllClick() {\n this.resetSelection(false);\n }\n\n handleUpdateFilterTimeout() {\n this.updateFilterTimer = null;\n this.updateTableFilter();\n }\n\n resetSelection(invertSelection) {\n const selectedValues = [];\n\n this.setState({ invertSelection, selectedValues });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n startUpdateFilterTimer() {\n this.stopUpdateFilterTimer();\n\n this.updateFilterTimer = setTimeout(\n this.handleUpdateFilterTimeout,\n AdvancedFilterCreatorSelectValue.searchDebounceTime\n );\n }\n\n stopUpdateFilterTimer() {\n if (this.updateFilterTimer) {\n clearTimeout(this.updateFilterTimer);\n this.updateFilterTimer = null;\n }\n }\n\n updateTableFilter() {\n const { table, searchText } = this.state;\n const { timeZone } = this.props;\n const column = table.columns[0];\n const filters = [];\n let error = null;\n if (searchText.length > 0) {\n let filter = null;\n if (TableUtils.isCharType(column.type)) {\n // Just exact match for char\n filter = TableUtils.makeQuickFilter(column, searchText);\n } else if (TableUtils.isTextType(column.type)) {\n // case insensitive & contains search text\n filter = TableUtils.makeQuickFilter(column, `~${searchText}`, timeZone);\n } else {\n // greater than or equal search for everything else\n // we may want to be smarter with some other types (like dates)\n filter = TableUtils.makeQuickFilter(\n column,\n `>=${searchText}`,\n timeZone\n );\n }\n\n if (filter != null) {\n filters.push(filter);\n } else {\n error = 'Invalid search text';\n }\n }\n\n this.setState({ filters, error });\n }\n\n render() {\n const {\n error,\n filters,\n invertSelection,\n selectedValues,\n searchText,\n table,\n } = this.state;\n const { formatter, showSearch } = this.props;\n const columnName = this.getColumnName();\n const displayedValuesText = this.getDisplayedValueText();\n const placeholderText = columnName ? `Find ${columnName}...` : '';\n\n return (\n <div className=\"advanced-filter-creator-select-value\">\n <div className={showSearch ? 'form-group' : ''}>\n <label htmlFor=\"advanced-filter-creator-select-value-input\">\n Select Values\n </label>\n {showSearch && (\n <input\n type=\"text\"\n className={classNames('form-control', {\n 'is-invalid': error != null,\n })}\n id=\"advanced-filter-creator-select-value-input\"\n placeholder={placeholderText}\n value={searchText}\n onChange={this.handleSearchChange}\n />\n )}\n </div>\n <AdvancedFilterCreatorSelectValueList\n table={table}\n filters={filters}\n invertSelection={invertSelection}\n selectedValues={selectedValues}\n formatter={formatter}\n onChange={this.handleListChange}\n />\n <div className=\"advanced-filter-creator-select-meta-row\">\n <div>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.handleSelectAllClick}\n >\n Select All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.handleClearAllClick}\n >\n Clear\n </button>\n </div>\n <CSSTransition\n in={displayedValuesText != null}\n timeout={250}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n >\n <div className=\"row-count-info\">{displayedValuesText}</div>\n </CSSTransition>\n </div>\n </div>\n );\n }\n}\n\nAdvancedFilterCreatorSelectValue.propTypes = {\n table: PropTypes.shape({\n close: PropTypes.func,\n columns: PropTypes.arrayOf(PropTypes.shape({ name: PropTypes.string })),\n copy: PropTypes.func,\n totalSize: PropTypes.number,\n }),\n invertSelection: PropTypes.bool,\n selectedValues: PropTypes.arrayOf(PropTypes.any),\n formatter: PropTypes.instanceOf(Formatter).isRequired,\n onChange: PropTypes.func,\n showSearch: PropTypes.bool,\n timeZone: PropTypes.string.isRequired,\n};\n\nAdvancedFilterCreatorSelectValue.defaultProps = {\n table: null,\n invertSelection: true,\n selectedValues: [],\n onChange: () => {},\n showSearch: true,\n};\n\nexport default AdvancedFilterCreatorSelectValue;\n"],"file":"AdvancedFilterCreatorSelectValue.js"}
|
|
@@ -60,5 +60,5 @@ declare namespace AdvancedFilterCreatorSelectValueList {
|
|
|
60
60
|
import React from "react";
|
|
61
61
|
import { SelectValueList } from "@deephaven/components";
|
|
62
62
|
import PropTypes from "prop-types";
|
|
63
|
-
import Formatter from "
|
|
63
|
+
import { Formatter } from "packages/jsapi-utils/src/Formatter";
|
|
64
64
|
//# sourceMappingURL=AdvancedFilterCreatorSelectValueList.d.ts.map
|