@deephaven/iris-grid 0.5.2-lessredux.14 → 0.6.1-demo.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"AdvancedFilterCreatorFilterItem.d.ts","sourceRoot":"","sources":["../src/AdvancedFilterCreatorFilterItem.jsx"],"names":[],"mappings":";AAYA;IACE,kNAsBC;IAED,8KAkBC;IAED,0KAmBC;IAED,0FAYC;IAED,sfAmBC;IAED,wBAcC;IAuCD,qBAKC;IA/BD,mCAWC;IAED,oCAWC;IA7CC,uCAAwB;CAmH3B"}
1
+ {"version":3,"file":"AdvancedFilterCreatorFilterItem.d.ts","sourceRoot":"","sources":["../src/AdvancedFilterCreatorFilterItem.jsx"],"names":[],"mappings":";AAYA;IACE,kNAsBC;IAED,8KAkBC;IAED,0KAmBC;IAED,0FAYC;IAED,sfAsBC;IAED,wBAcC;IAuCD,qBAKC;IA/BD,mCAWC;IAED,oCAWC;IA7CC,uCAAwB;CAmH3B"}
@@ -113,12 +113,12 @@ class AdvancedFilterCreatorFilterItem extends PureComponent {
113
113
  }
114
114
 
115
115
  static getLabelForFilter(columnType, filterType) {
116
- if (TableUtils.isTextType(columnType)) {
117
- return AdvancedFilterCreatorFilterItem.getLabelForTextFilter(filterType);
116
+ if (TableUtils.isNumberType(columnType) || TableUtils.isCharType(columnType)) {
117
+ return AdvancedFilterCreatorFilterItem.getLabelForNumberFilter(filterType);
118
118
  }
119
119
 
120
- if (TableUtils.isNumberType(columnType)) {
121
- return AdvancedFilterCreatorFilterItem.getLabelForNumberFilter(filterType);
120
+ if (TableUtils.isTextType(columnType)) {
121
+ return AdvancedFilterCreatorFilterItem.getLabelForTextFilter(filterType);
122
122
  }
123
123
 
124
124
  if (TableUtils.isDateType(columnType)) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/AdvancedFilterCreatorFilterItem.jsx"],"names":["React","PureComponent","PropTypes","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","isTextType","isNumberType","isDateType","isBooleanType","constructor","props","handleDelete","bind","handleTypeChange","handleValueChange","typeDropdown","selectedType","value","filterTypes","state","componentDidMount","focus","componentDidUpdate","prevProps","setState","event","debug2","target","onChange","length","debug","onDelete","render","column","showValueInput","type","typeOptionElements","i","label","element","push","propTypes","shape","string","isRequired","arrayOf","func","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 { 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 from './filters/FilterType';\n\nconst log = Log.module('AdvancedFilterCreatorFilterItem');\n\nclass AdvancedFilterCreatorFilterItem extends PureComponent {\n static getLabelForTextFilter(filterType) {\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) {\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) {\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) {\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(columnType, filterType) {\n if (TableUtils.isTextType(columnType)) {\n return AdvancedFilterCreatorFilterItem.getLabelForTextFilter(filterType);\n }\n if (TableUtils.isNumberType(columnType)) {\n return AdvancedFilterCreatorFilterItem.getLabelForNumberFilter(\n filterType\n );\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) {\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 { selectedType, value, filterTypes } = props;\n\n this.state = {\n selectedType: selectedType || filterTypes[0],\n value,\n };\n }\n\n componentDidMount() {\n this.typeDropdown.focus();\n }\n\n componentDidUpdate(prevProps) {\n const { selectedType, value } = this.props;\n if (prevProps.selectedType !== selectedType || prevProps.value !== value) {\n this.setState({ selectedType, value });\n }\n }\n\n handleTypeChange(event) {\n log.debug2('typeChange');\n const selectedType = event.target.value;\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) {\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 && selectedType.length > 0) {\n // Don't send an update unless they've already selected a type\n onChange(selectedType, value);\n }\n }\n\n handleDelete() {\n log.debug('delete');\n\n const { onDelete } = this.props;\n onDelete();\n }\n\n render() {\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\nAdvancedFilterCreatorFilterItem.propTypes = {\n column: PropTypes.shape({ type: PropTypes.string }).isRequired,\n filterTypes: PropTypes.arrayOf(PropTypes.string).isRequired,\n onChange: PropTypes.func.isRequired,\n onDelete: PropTypes.func.isRequired,\n selectedType: PropTypes.string,\n value: PropTypes.string,\n};\n\nAdvancedFilterCreatorFilterItem.defaultProps = {\n selectedType: '',\n value: '',\n};\n\nexport default AdvancedFilterCreatorFilterItem;\n"],"file":"AdvancedFilterCreatorFilterItem.js"}
1
+ {"version":3,"sources":["../src/AdvancedFilterCreatorFilterItem.jsx"],"names":["React","PureComponent","PropTypes","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","selectedType","value","filterTypes","state","componentDidMount","focus","componentDidUpdate","prevProps","setState","event","debug2","target","onChange","length","debug","onDelete","render","column","showValueInput","type","typeOptionElements","i","label","element","push","propTypes","shape","string","isRequired","arrayOf","func","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 { 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 from './filters/FilterType';\n\nconst log = Log.module('AdvancedFilterCreatorFilterItem');\n\nclass AdvancedFilterCreatorFilterItem extends PureComponent {\n static getLabelForTextFilter(filterType) {\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) {\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) {\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) {\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(columnType, filterType) {\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) {\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 { selectedType, value, filterTypes } = props;\n\n this.state = {\n selectedType: selectedType || filterTypes[0],\n value,\n };\n }\n\n componentDidMount() {\n this.typeDropdown.focus();\n }\n\n componentDidUpdate(prevProps) {\n const { selectedType, value } = this.props;\n if (prevProps.selectedType !== selectedType || prevProps.value !== value) {\n this.setState({ selectedType, value });\n }\n }\n\n handleTypeChange(event) {\n log.debug2('typeChange');\n const selectedType = event.target.value;\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) {\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 && selectedType.length > 0) {\n // Don't send an update unless they've already selected a type\n onChange(selectedType, value);\n }\n }\n\n handleDelete() {\n log.debug('delete');\n\n const { onDelete } = this.props;\n onDelete();\n }\n\n render() {\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\nAdvancedFilterCreatorFilterItem.propTypes = {\n column: PropTypes.shape({ type: PropTypes.string }).isRequired,\n filterTypes: PropTypes.arrayOf(PropTypes.string).isRequired,\n onChange: PropTypes.func.isRequired,\n onDelete: PropTypes.func.isRequired,\n selectedType: PropTypes.string,\n value: PropTypes.string,\n};\n\nAdvancedFilterCreatorFilterItem.defaultProps = {\n selectedType: '',\n value: '',\n};\n\nexport default AdvancedFilterCreatorFilterItem;\n"],"file":"AdvancedFilterCreatorFilterItem.js"}
@@ -1 +1 @@
1
- {"version":3,"file":"AdvancedFilterCreatorSelectValue.d.ts","sourceRoot":"","sources":["../src/AdvancedFilterCreatorSelectValue.jsx"],"names":[],"mappings":";AAUA;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,0BA6BC;CAyEF;;;;;;;;;;;;;;;;;;;;;;;;;QAqBW,mCAAQ"}
1
+ {"version":3,"file":"AdvancedFilterCreatorSelectValue.d.ts","sourceRoot":"","sources":["../src/AdvancedFilterCreatorSelectValue.jsx"],"names":[],"mappings":";AAUA;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"}
@@ -235,7 +235,10 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
235
235
  if (searchText.length > 0) {
236
236
  var filter = null;
237
237
 
238
- if (TableUtils.isTextType(column.type)) {
238
+ if (TableUtils.isCharType(column.type)) {
239
+ // Just exact match for char
240
+ filter = TableUtils.makeQuickFilter(column, searchText);
241
+ } else if (TableUtils.isTextType(column.type)) {
239
242
  // case insensitive & contains search text
240
243
  filter = TableUtils.makeQuickFilter(column, "~".concat(searchText), timeZone);
241
244
  } else {
@@ -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","isTextType","type","makeQuickFilter","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.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":"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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"}
@@ -58,6 +58,7 @@ declare class TableUtils {
58
58
  static isIntegerType(columnType: any): boolean;
59
59
  static isDecimalType(columnType: any): boolean;
60
60
  static isBooleanType(columnType: any): boolean;
61
+ static isCharType(columnType: any): boolean;
61
62
  static isTextType(columnType: any): boolean;
62
63
  /**
63
64
  * Get base column type
@@ -105,6 +106,14 @@ declare class TableUtils {
105
106
  * @param {string} timeZone The time zone to make this filter with. E.g. America/New_York
106
107
  */
107
108
  static makeQuickDateFilterWithOperation(column: any, text: string, operation: FilterType | undefined, timeZone: string): any;
109
+ static makeQuickCharFilter(column: any, text: any): any;
110
+ /**
111
+ * @param {dh.FilterValue} filter The column filter to apply the range operation to
112
+ * @param {string} operation The range operation to run
113
+ * @param {dh.FilterValue} value The value to use for the operation
114
+ * @returns {dh.FilterCondition} The condition with the specified operation
115
+ */
116
+ static makeRangeFilterWithOperation(filter: any, operation: string, value: any): any;
108
117
  /**
109
118
  * Wraps a table promise in a cancelable promise that will close the table if the promise is cancelled.
110
119
  * Use in a component that loads a table, and call cancel when unmounting.
@@ -1 +1 @@
1
- {"version":3,"file":"TableUtils.d.ts","sourceRoot":"","sources":["../src/TableUtils.js"],"names":[],"mappings":";AAQA,sEAAsE;AACtE;IACE;;;;;;;MAOE;IAEF;;;;;MAKE;IAEF;;;;OAIG;IAGH,4BAAwC;IAExC,gEASC;IAED;;;;OAIG;IACH,mCAJW,KAAS,eACT,MAAM,OAShB;IAED,uCAKC;IAED,mDAAmD;IACnD,iDA8BC;IAED,sDAkBC;IAED,qFA8BC;IAED;;;;;;OAMG;IACH,gEAHW,MAAM,kBACN,OAAO,OAejB;IAED,qGAkBC;IAED;;;;;;;OAOG;IACH,mCANW,KAAS,eACT,MAAM,6BAEN,OAAO,OAsBjB;IAED,yDAoCC;IAED,4CAQC;IAED,4CAQC;IAED,8CAKC;IAED,+CAeC;IAED,+CAWC;IAED,+CAQC;IAED,4CASC;IAED;;;;OAIG;IACH,+BAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;OAKG;IACH,+BAJW,MAAM,SACN,MAAM,GACJ,OAAO,CAOnB;IAED;;;;;;OAMG;IACH,0CAJW,MAAM,YACN,MAAM,OAsChB;IAED;;;;;;OAMG;IACH,uDAJW,MAAM,YACN,MAAM,OAehB;IAED,0DA6GC;IAED,wDA4IC;IAED,2DA2BC;IAED;;;;OAIG;IACH,8CAFW,MAAM,sBAgDhB;IAED;;;;;;OAMG;IACH,2DAJW,MAAM,+CAEN,MAAM,OA+DhB;IAED;;;;OAIG;IACH,yCAFW,YAAiB,MAAW,qDAMtC;IAED;;;;;;;OAOG;IACH,8CANW,SAAqB,aACrB,MAAM,YACN,MAAM,oCA0ChB;IAED,yEAmEC;IAED,qCAEC;IAED;;;;OAIG;IACH,+DAYC;IAED;;;;;;OAMG;IACH,kEAUC;IAED;;;;;OAKG;IACH,6BAJW,MAAM,QACN,MAAM,YACN,MAAM,OA0BhB;IAED,yEA6BC;IAED,iDAuBC;IAED,4FAoFC;IAED;;;;;;;OAOG;IACH,0DAJW,QAAQ,mBACR,OAAO,OAoEjB;IAED,oCAEC;IAED;;;;OAIG;IACH,+CAFW,OAAO,SAQjB;CACF"}
1
+ {"version":3,"file":"TableUtils.d.ts","sourceRoot":"","sources":["../src/TableUtils.js"],"names":[],"mappings":";AAQA,sEAAsE;AACtE;IACE;;;;;;;MAOE;IAEF;;;;;MAKE;IAEF;;;;OAIG;IAGH,4BAAwC;IAExC,gEASC;IAED;;;;OAIG;IACH,mCAJW,KAAS,eACT,MAAM,OAShB;IAED,uCAKC;IAED,mDAAmD;IACnD,iDAoCC;IAED,sDAkBC;IAED,qFA8BC;IAED;;;;;;OAMG;IACH,gEAHW,MAAM,kBACN,OAAO,OAejB;IAED,qGAkBC;IAED;;;;;;;OAOG;IACH,mCANW,KAAS,eACT,MAAM,6BAEN,OAAO,OAsBjB;IAED,yDAqCC;IAED,4CAQC;IAED,4CASC;IAED,8CAKC;IAED,+CAeC;IAED,+CAWC;IAED,+CAQC;IAED,4CAQC;IAED,4CASC;IAED;;;;OAIG;IACH,+BAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;OAKG;IACH,+BAJW,MAAM,SACN,MAAM,GACJ,OAAO,CAOnB;IAED;;;;;;OAMG;IACH,0CAJW,MAAM,YACN,MAAM,OAsChB;IAED;;;;;;OAMG;IACH,uDAJW,MAAM,YACN,MAAM,OAkBhB;IAED,0DA2FC;IAED,wDA4IC;IAED,2DA2BC;IAED;;;;OAIG;IACH,8CAFW,MAAM,sBAgDhB;IAED;;;;;;OAMG;IACH,2DAJW,MAAM,+CAEN,MAAM,OA+DhB;IAED,wDA+CC;IAED;;;;;OAKG;IACH,4DAJW,MAAM,mBAwBhB;IAED;;;;OAIG;IACH,yCAFW,YAAiB,MAAW,qDAMtC;IAED;;;;;;;OAOG;IACH,8CANW,SAAqB,aACrB,MAAM,YACN,MAAM,oCA0ChB;IAED,yEAmEC;IAED,qCAEC;IAED;;;;OAIG;IACH,+DAYC;IAED;;;;;;OAMG;IACH,kEAUC;IAED;;;;;OAKG;IACH,6BAJW,MAAM,QACN,MAAM,YACN,MAAM,OA0BhB;IAED,yEA6BC;IAED,iDAuBC;IAED,4FAoFC;IAED;;;;;;;OAOG;IACH,0DAJW,QAAQ,mBACR,OAAO,OAyEjB;IAED,oCAEC;IAED;;;;OAIG;IACH,+CAFW,OAAO,SAQjB;CACF"}
@@ -53,6 +53,13 @@ class TableUtils {
53
53
  static getFilterTypes(columnType) {
54
54
  if (TableUtils.isBooleanType(columnType)) {
55
55
  return [FilterType.isTrue, FilterType.isFalse, FilterType.isNull];
56
+ } // TODO (DH-11799): In Bard (and beyond), we should use the same types as numbers
57
+ // It should just work after the merge for DH-11040: https://gitlab.eng.illumon.com/illumon/iris/merge_requests/5801
58
+ // In Powell though, just support equals/not equals
59
+
60
+
61
+ if (TableUtils.isCharType(columnType)) {
62
+ return [FilterType.eq, FilterType.notEq];
56
63
  }
57
64
 
58
65
  if (TableUtils.isNumberType(columnType) || TableUtils.isDateType(columnType)) {
@@ -194,6 +201,7 @@ class TableUtils {
194
201
  return TableUtils.dataType.STRING;
195
202
 
196
203
  case 'io.deephaven.db.tables.utils.DBDateTime':
204
+ case 'io.deephaven.time.DateTime':
197
205
  case 'com.illumon.iris.db.tables.utils.DBDateTime':
198
206
  case TableUtils.dataType.DATETIME:
199
207
  return TableUtils.dataType.DATETIME;
@@ -235,6 +243,7 @@ class TableUtils {
235
243
  static isDateType(columnType) {
236
244
  switch (columnType) {
237
245
  case 'io.deephaven.db.tables.utils.DBDateTime':
246
+ case 'io.deephaven.time.DateTime':
238
247
  case 'com.illumon.iris.db.tables.utils.DBDateTime':
239
248
  return true;
240
249
 
@@ -290,6 +299,17 @@ class TableUtils {
290
299
  }
291
300
  }
292
301
 
302
+ static isCharType(columnType) {
303
+ switch (columnType) {
304
+ case 'char':
305
+ case 'java.lang.Character':
306
+ return true;
307
+
308
+ default:
309
+ return false;
310
+ }
311
+ }
312
+
293
313
  static isTextType(columnType) {
294
314
  switch (columnType) {
295
315
  case 'char':
@@ -393,6 +413,10 @@ class TableUtils {
393
413
  return this.makeQuickDateFilter(column, text, timeZone);
394
414
  }
395
415
 
416
+ if (TableUtils.isCharType(type)) {
417
+ return this.makeQuickCharFilter(column, text);
418
+ }
419
+
396
420
  return this.makeQuickTextFilter(column, text);
397
421
  }
398
422
 
@@ -488,32 +512,7 @@ class TableUtils {
488
512
  }
489
513
 
490
514
  filter = column.filter();
491
-
492
- switch (operation) {
493
- case '=':
494
- return filter.eq(value);
495
-
496
- case '<':
497
- return filter.lessThan(value);
498
-
499
- case '<=':
500
- case '=<':
501
- return filter.lessThanOrEqualTo(value);
502
-
503
- case '>':
504
- return filter.greaterThan(value);
505
-
506
- case '>=':
507
- case '=>':
508
- return filter.greaterThanOrEqualTo(value);
509
-
510
- case '!=':
511
- case '!':
512
- return filter.notEq(value);
513
-
514
- default:
515
- return null;
516
- }
515
+ return TableUtils.makeRangeFilterWithOperation(filter, operation, value);
517
516
  }
518
517
 
519
518
  static makeQuickTextFilter(column, text) {
@@ -778,6 +777,90 @@ class TableUtils {
778
777
  throw new Error("Invalid operator: ".concat(operation));
779
778
  }
780
779
  }
780
+
781
+ static makeQuickCharFilter(column, text) {
782
+ if (text == null) {
783
+ return null;
784
+ }
785
+
786
+ var cleanText = "".concat(text).trim();
787
+ var regex = /^(!=|=|!)?(null|.)?(.*)/;
788
+ var result = regex.exec(cleanText);
789
+ var operation = null;
790
+ var value = null;
791
+ var overflow = null;
792
+
793
+ if (result.length > 3) {
794
+ [, operation, value, overflow] = result;
795
+ }
796
+
797
+ if (overflow != null && overflow.trim().length > 0) {
798
+ // Some bad characters after the number, bail out!
799
+ return null;
800
+ }
801
+
802
+ if (value == null || value.length === 0) {
803
+ return null;
804
+ }
805
+
806
+ if (operation == null) {
807
+ operation = '=';
808
+ }
809
+
810
+ var filter = column.filter();
811
+
812
+ if (value.toLowerCase() === 'null') {
813
+ // Null is a special case!
814
+ switch (operation) {
815
+ case '=':
816
+ return filter.isNull();
817
+
818
+ case '!=':
819
+ case '!':
820
+ return filter.isNull().not();
821
+
822
+ default:
823
+ return null;
824
+ }
825
+ }
826
+
827
+ return TableUtils.makeRangeFilterWithOperation(filter, operation, dh.FilterValue.ofString(value));
828
+ }
829
+ /**
830
+ * @param {dh.FilterValue} filter The column filter to apply the range operation to
831
+ * @param {string} operation The range operation to run
832
+ * @param {dh.FilterValue} value The value to use for the operation
833
+ * @returns {dh.FilterCondition} The condition with the specified operation
834
+ */
835
+
836
+
837
+ static makeRangeFilterWithOperation(filter, operation, value) {
838
+ switch (operation) {
839
+ case '=':
840
+ return filter.eq(value);
841
+
842
+ case '<':
843
+ return filter.lessThan(value);
844
+
845
+ case '<=':
846
+ case '=<':
847
+ return filter.lessThanOrEqualTo(value);
848
+
849
+ case '>':
850
+ return filter.greaterThan(value);
851
+
852
+ case '>=':
853
+ case '=>':
854
+ return filter.greaterThanOrEqualTo(value);
855
+
856
+ case '!=':
857
+ case '!':
858
+ return filter.notEq(value);
859
+
860
+ default:
861
+ return null;
862
+ }
863
+ }
781
864
  /**
782
865
  * Wraps a table promise in a cancelable promise that will close the table if the promise is cancelled.
783
866
  * Use in a component that loads a table, and call cancel when unmounting.
@@ -1128,7 +1211,8 @@ class TableUtils {
1128
1211
  var value = null;
1129
1212
 
1130
1213
  if (TableUtils.isTextType(column.type)) {
1131
- value = dh.FilterValue.ofString('');
1214
+ // Use 'a' so that it can work for String or Character types
1215
+ value = dh.FilterValue.ofString('a');
1132
1216
  } else if (TableUtils.isBooleanType(column.type)) {
1133
1217
  value = dh.FilterValue.ofBoolean(true);
1134
1218
  } else if (TableUtils.isDateType(column.type)) {
@@ -1151,7 +1235,7 @@ class TableUtils {
1151
1235
  if (_value == null) {
1152
1236
  isNullSelected = true;
1153
1237
  } else if (TableUtils.isTextType(column.type)) {
1154
- values.push(dh.FilterValue.ofString(_value));
1238
+ values.push(dh.FilterValue.ofString(typeof _value === 'number' ? String.fromCharCode(_value) : _value));
1155
1239
  } else if (TableUtils.isBooleanType(column.type)) {
1156
1240
  values.push(dh.FilterValue.ofBoolean(!!_value));
1157
1241
  } else {