@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.
- package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +4 -4
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +4 -1
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/TableUtils.d.ts +9 -0
- package/dist/TableUtils.d.ts.map +1 -1
- package/dist/TableUtils.js +112 -28
- package/dist/TableUtils.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +1 -0
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +17 -6
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +29 -61
|
@@ -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,
|
|
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.
|
|
117
|
-
return AdvancedFilterCreatorFilterItem.
|
|
116
|
+
if (TableUtils.isNumberType(columnType) || TableUtils.isCharType(columnType)) {
|
|
117
|
+
return AdvancedFilterCreatorFilterItem.getLabelForNumberFilter(filterType);
|
|
118
118
|
}
|
|
119
119
|
|
|
120
|
-
if (TableUtils.
|
|
121
|
-
return AdvancedFilterCreatorFilterItem.
|
|
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,
|
|
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.
|
|
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":";;AAAA;AACA,OAAOA,KAAP,IAAgBC,aAAhB,QAAqC,OAArC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,aAAT,QAA8B,wBAA9B;AACA,OAAOC,UAAP,MAAuB,YAAvB;OACOC,S;OACAC,U;OACAC,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 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"}
|
package/dist/TableUtils.d.ts
CHANGED
|
@@ -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.
|
package/dist/TableUtils.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/TableUtils.js
CHANGED
|
@@ -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
|
-
|
|
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 {
|