@deephaven/iris-grid 0.13.3-treemap.2 → 0.14.1-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/dist/AdvancedFilterCreator.d.ts +69 -63
  2. package/dist/AdvancedFilterCreator.d.ts.map +1 -1
  3. package/dist/AdvancedFilterCreator.js +79 -73
  4. package/dist/AdvancedFilterCreator.js.map +1 -1
  5. package/dist/AdvancedFilterCreatorSelectValue.d.ts +45 -45
  6. package/dist/AdvancedFilterCreatorSelectValue.d.ts.map +1 -1
  7. package/dist/AdvancedFilterCreatorSelectValue.js +32 -36
  8. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  9. package/dist/AdvancedFilterCreatorSelectValueList.d.ts +47 -52
  10. package/dist/AdvancedFilterCreatorSelectValueList.d.ts.map +1 -1
  11. package/dist/AdvancedFilterCreatorSelectValueList.js +24 -39
  12. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  13. package/dist/ColumnStatistics.d.ts +34 -22
  14. package/dist/ColumnStatistics.d.ts.map +1 -1
  15. package/dist/ColumnStatistics.js +8 -12
  16. package/dist/ColumnStatistics.js.map +1 -1
  17. package/dist/CommonTypes.d.ts +58 -0
  18. package/dist/CommonTypes.d.ts.map +1 -0
  19. package/dist/CommonTypes.js +2 -0
  20. package/dist/CommonTypes.js.map +1 -0
  21. package/dist/CrossColumnSearch.d.ts +26 -24
  22. package/dist/CrossColumnSearch.d.ts.map +1 -1
  23. package/dist/CrossColumnSearch.js +9 -13
  24. package/dist/CrossColumnSearch.js.map +1 -1
  25. package/dist/FilterInputField.d.ts +48 -51
  26. package/dist/FilterInputField.d.ts.map +1 -1
  27. package/dist/FilterInputField.js +30 -27
  28. package/dist/FilterInputField.js.map +1 -1
  29. package/dist/IrisGrid.d.ts +410 -453
  30. package/dist/IrisGrid.d.ts.map +1 -1
  31. package/dist/IrisGrid.js +590 -526
  32. package/dist/IrisGrid.js.map +1 -1
  33. package/dist/IrisGridCellOverflowModal.d.ts +1 -1
  34. package/dist/IrisGridCellOverflowModal.d.ts.map +1 -1
  35. package/dist/IrisGridCellOverflowModal.js +1 -4
  36. package/dist/IrisGridCellOverflowModal.js.map +1 -1
  37. package/dist/IrisGridCopyHandler.d.ts +52 -46
  38. package/dist/IrisGridCopyHandler.d.ts.map +1 -1
  39. package/dist/IrisGridCopyHandler.js +22 -38
  40. package/dist/IrisGridCopyHandler.js.map +1 -1
  41. package/dist/IrisGridMetricCalculator.d.ts +5 -4
  42. package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
  43. package/dist/IrisGridMetricCalculator.js +5 -1
  44. package/dist/IrisGridMetricCalculator.js.map +1 -1
  45. package/dist/IrisGridModel.d.ts +37 -35
  46. package/dist/IrisGridModel.d.ts.map +1 -1
  47. package/dist/IrisGridModel.js +19 -3
  48. package/dist/IrisGridModel.js.map +1 -1
  49. package/dist/IrisGridModelFactory.d.ts +7 -5
  50. package/dist/IrisGridModelFactory.d.ts.map +1 -1
  51. package/dist/IrisGridModelFactory.js +5 -5
  52. package/dist/IrisGridModelFactory.js.map +1 -1
  53. package/dist/IrisGridModelUpdater.d.ts +13 -11
  54. package/dist/IrisGridModelUpdater.d.ts.map +1 -1
  55. package/dist/IrisGridModelUpdater.js.map +1 -1
  56. package/dist/IrisGridPartitionSelector.d.ts +38 -39
  57. package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
  58. package/dist/IrisGridPartitionSelector.js +18 -24
  59. package/dist/IrisGridPartitionSelector.js.map +1 -1
  60. package/dist/IrisGridProxyModel.d.ts +111 -32
  61. package/dist/IrisGridProxyModel.d.ts.map +1 -1
  62. package/dist/IrisGridProxyModel.js +212 -170
  63. package/dist/IrisGridProxyModel.js.map +1 -1
  64. package/dist/IrisGridRenderer.d.ts +59 -31
  65. package/dist/IrisGridRenderer.d.ts.map +1 -1
  66. package/dist/IrisGridRenderer.js +92 -46
  67. package/dist/IrisGridRenderer.js.map +1 -1
  68. package/dist/IrisGridTableModel.d.ts +48 -149
  69. package/dist/IrisGridTableModel.d.ts.map +1 -1
  70. package/dist/IrisGridTableModel.js +58 -1385
  71. package/dist/IrisGridTableModel.js.map +1 -1
  72. package/dist/IrisGridTableModelTemplate.d.ts +218 -0
  73. package/dist/IrisGridTableModelTemplate.d.ts.map +1 -0
  74. package/dist/IrisGridTableModelTemplate.js +1624 -0
  75. package/dist/IrisGridTableModelTemplate.js.map +1 -0
  76. package/dist/IrisGridTestUtils.d.ts +18 -14
  77. package/dist/IrisGridTestUtils.d.ts.map +1 -1
  78. package/dist/IrisGridTestUtils.js +29 -1
  79. package/dist/IrisGridTestUtils.js.map +1 -1
  80. package/dist/IrisGridTheme.d.ts +35 -3
  81. package/dist/IrisGridTheme.d.ts.map +1 -1
  82. package/dist/IrisGridTheme.js.map +1 -1
  83. package/dist/IrisGridTreeTableModel.d.ts +26 -7
  84. package/dist/IrisGridTreeTableModel.d.ts.map +1 -1
  85. package/dist/IrisGridTreeTableModel.js +24 -14
  86. package/dist/IrisGridTreeTableModel.js.map +1 -1
  87. package/dist/IrisGridUtils.d.ts +257 -162
  88. package/dist/IrisGridUtils.d.ts.map +1 -1
  89. package/dist/IrisGridUtils.js +132 -95
  90. package/dist/IrisGridUtils.js.map +1 -1
  91. package/dist/MissingKeyError.d.ts +5 -3
  92. package/dist/MissingKeyError.d.ts.map +1 -1
  93. package/dist/MissingKeyError.js.map +1 -1
  94. package/dist/PartitionSelectorSearch.d.ts +61 -40
  95. package/dist/PartitionSelectorSearch.d.ts.map +1 -1
  96. package/dist/PartitionSelectorSearch.js +25 -15
  97. package/dist/PartitionSelectorSearch.js.map +1 -1
  98. package/dist/PendingDataBottomBar.d.ts +3 -6
  99. package/dist/PendingDataBottomBar.d.ts.map +1 -1
  100. package/dist/PendingDataBottomBar.js.map +1 -1
  101. package/dist/TableViewportUpdater.d.ts +39 -55
  102. package/dist/TableViewportUpdater.d.ts.map +1 -1
  103. package/dist/TableViewportUpdater.js +42 -64
  104. package/dist/TableViewportUpdater.js.map +1 -1
  105. package/dist/TreeTableViewportUpdater.d.ts +29 -37
  106. package/dist/TreeTableViewportUpdater.d.ts.map +1 -1
  107. package/dist/TreeTableViewportUpdater.js +39 -50
  108. package/dist/TreeTableViewportUpdater.js.map +1 -1
  109. package/dist/index.d.ts +9 -0
  110. package/dist/index.d.ts.map +1 -1
  111. package/dist/index.js +9 -0
  112. package/dist/index.js.map +1 -1
  113. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.d.ts.map +1 -1
  114. package/dist/mousehandlers/IrisGridCellOverflowMouseHandler.js.map +1 -1
  115. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.d.ts +1 -1
  116. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.d.ts.map +1 -1
  117. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js +2 -0
  118. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  119. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.d.ts +2 -2
  120. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.d.ts.map +1 -1
  121. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +32 -14
  122. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  123. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +41 -130
  124. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
  125. package/dist/mousehandlers/IrisGridContextMenuHandler.js +426 -317
  126. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  127. package/dist/mousehandlers/IrisGridFilterMouseHandler.d.ts.map +1 -1
  128. package/dist/mousehandlers/IrisGridFilterMouseHandler.js +2 -2
  129. package/dist/mousehandlers/IrisGridFilterMouseHandler.js.map +1 -1
  130. package/dist/mousehandlers/IrisGridSortMouseHandler.js +1 -1
  131. package/dist/mousehandlers/IrisGridSortMouseHandler.js.map +1 -1
  132. package/dist/mousehandlers/PendingMouseHandler.d.ts +8 -4
  133. package/dist/mousehandlers/PendingMouseHandler.d.ts.map +1 -1
  134. package/dist/mousehandlers/PendingMouseHandler.js +4 -5
  135. package/dist/mousehandlers/PendingMouseHandler.js.map +1 -1
  136. package/dist/sidebar/ChartBuilder.d.ts +48 -33
  137. package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
  138. package/dist/sidebar/ChartBuilder.js +28 -27
  139. package/dist/sidebar/ChartBuilder.js.map +1 -1
  140. package/dist/sidebar/CustomColumnBuilder.d.ts +51 -41
  141. package/dist/sidebar/CustomColumnBuilder.d.ts.map +1 -1
  142. package/dist/sidebar/CustomColumnBuilder.js +22 -18
  143. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  144. package/dist/sidebar/CustomColumnInput.d.ts +26 -36
  145. package/dist/sidebar/CustomColumnInput.d.ts.map +1 -1
  146. package/dist/sidebar/CustomColumnInput.js +11 -20
  147. package/dist/sidebar/CustomColumnInput.js.map +1 -1
  148. package/dist/sidebar/InputEditor.d.ts +34 -35
  149. package/dist/sidebar/InputEditor.d.ts.map +1 -1
  150. package/dist/sidebar/InputEditor.js +43 -24
  151. package/dist/sidebar/InputEditor.js.map +1 -1
  152. package/dist/sidebar/RollupRows.d.ts +67 -52
  153. package/dist/sidebar/RollupRows.d.ts.map +1 -1
  154. package/dist/sidebar/RollupRows.js +51 -53
  155. package/dist/sidebar/RollupRows.js.map +1 -1
  156. package/dist/sidebar/SelectDistinctBuilder.d.ts +27 -21
  157. package/dist/sidebar/SelectDistinctBuilder.d.ts.map +1 -1
  158. package/dist/sidebar/SelectDistinctBuilder.js +6 -10
  159. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  160. package/dist/sidebar/TableCsvExporter.d.ts +42 -39
  161. package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
  162. package/dist/sidebar/TableCsvExporter.js +12 -20
  163. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  164. package/dist/sidebar/TableSaver.d.ts +59 -60
  165. package/dist/sidebar/TableSaver.d.ts.map +1 -1
  166. package/dist/sidebar/TableSaver.js +154 -68
  167. package/dist/sidebar/TableSaver.js.map +1 -1
  168. package/dist/sidebar/VisibilityOrderingBuilder.d.ts +56 -45
  169. package/dist/sidebar/VisibilityOrderingBuilder.d.ts.map +1 -1
  170. package/dist/sidebar/VisibilityOrderingBuilder.js +34 -29
  171. package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
  172. package/dist/sidebar/aggregations/Aggregations.d.ts.map +1 -1
  173. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  174. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +2 -1
  175. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
  176. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
  177. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +6 -5
  178. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -1
  179. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +5 -0
  180. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  181. package/dist/sidebar/icons/index.d.ts +7 -7
  182. package/dist/sidebar/icons/index.d.ts.map +1 -1
  183. package/dist/sidebar/icons/index.js.map +1 -1
  184. package/dist/sidebar/index.d.ts +12 -12
  185. package/dist/sidebar/index.d.ts.map +1 -1
  186. package/dist/sidebar/index.js.map +1 -1
  187. package/package.json +18 -17
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/AdvancedFilterCreator.jsx"],"names":["React","PureComponent","classNames","PropTypes","FontAwesomeIcon","memoize","Operator","FilterOperator","dhSortAmountDown","dhNewCircleLargeFilled","Formatter","TableUtils","ContextActionUtils","Tooltip","Log","PromiseUtils","AdvancedFilterCreatorFilterItem","AdvancedFilterCreatorSelectValue","IrisGridModel","log","module","AdvancedFilterCreator","constructor","props","columnType","getFilterTypes","handleAddAnd","bind","handleAddOr","handleChangeFilterOperator","handleDone","handleFilterChange","handleFilterDelete","handleSelectValueChange","handleReset","handleSortDown","handleSortUp","handleSubmit","handleFocusTrapStart","handleFocusTrapEnd","handleUpdateTimeout","focusTrapContainer","createRef","debounceTimeout","filterKey","valuesTablePromise","options","filterItems","filterOperators","invertSelection","selectedValues","makeFilterItem","state","valuesTableError","valuesTable","componentDidMount","initValuesTable","componentWillUnmount","clearTimeout","sendUpdate","cancel","getFilterChangeHandler","index","getFilterDeleteHandler","model","column","isValuesTableAvailable","debug","makeCancelableTablePromise","then","sort","columns","asc","applySort","setState","catch","error","isCanceled","inputs","current","querySelectorAll","focus","length","concat","and","or","event","parseInt","target","dataset","operator","startUpdateTimer","filterIndex","selectedType","value","key","splice","push","addToExisting","isModifierKeyDown","sortTable","sortDirection","descending","ascending","stopUpdateTimer","preventDefault","onDone","updateKey","shouldShowAddFilter","filterItem","direction","onSortChange","setTimeout","debounceFilterUpdate","onFilterChange","formatter","filter","makeAdvancedFilter","timeZone","render","isBoolean","isBooleanType","type","isDateType","filterTypes","substring","lastIndexOf","filterItemElements","i","element","filterOperator","isAndFilter","operatorElement","active","showAddFilterItem","addFilterItem","hidden","name","propTypes","instanceOf","isRequired","shape","string","func","arrayOf","bool","any","defaultProps"],"mappings":"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","sourcesContent":["/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n// disabled for tab-index on focus traps, which are intentionally non-interactive\n\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport memoize from 'memoize-one';\nimport { Operator as FilterOperator } from '@deephaven/filters';\nimport { dhSortAmountDown, dhNewCircleLargeFilled } from '@deephaven/icons';\nimport { Formatter, TableUtils } from '@deephaven/jsapi-utils';\nimport { ContextActionUtils, Tooltip } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport AdvancedFilterCreatorFilterItem from './AdvancedFilterCreatorFilterItem';\nimport AdvancedFilterCreatorSelectValue from './AdvancedFilterCreatorSelectValue';\nimport IrisGridModel from './IrisGridModel';\nimport './AdvancedFilterCreator.scss';\n\nconst log = Log.module('AdvancedFilterCreator');\n\nclass AdvancedFilterCreator extends PureComponent {\n static debounceFilterUpdate = 250;\n\n constructor(props) {\n super(props);\n\n this.handleAddAnd = this.handleAddAnd.bind(this);\n this.handleAddOr = this.handleAddOr.bind(this);\n this.handleChangeFilterOperator = this.handleChangeFilterOperator.bind(\n this\n );\n this.handleDone = this.handleDone.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleFilterDelete = this.handleFilterDelete.bind(this);\n this.handleSelectValueChange = this.handleSelectValueChange.bind(this);\n this.handleReset = this.handleReset.bind(this);\n this.handleSortDown = this.handleSortDown.bind(this);\n this.handleSortUp = this.handleSortUp.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleFocusTrapStart = this.handleFocusTrapStart.bind(this);\n this.handleFocusTrapEnd = this.handleFocusTrapEnd.bind(this);\n this.handleUpdateTimeout = this.handleUpdateTimeout.bind(this);\n\n this.focusTrapContainer = React.createRef();\n this.debounceTimeout = null;\n this.filterKey = 0;\n this.valuesTablePromise = null;\n\n const { options } = props;\n let {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n } = options;\n if (filterItems == null) {\n filterItems = [this.makeFilterItem()];\n }\n if (filterOperators == null) {\n filterOperators = [];\n }\n if (invertSelection == null) {\n invertSelection = true;\n }\n if (selectedValues == null) {\n selectedValues = [];\n }\n\n this.state = {\n // Filter items\n filterItems,\n\n // And/Or between the filter items\n filterOperators,\n\n invertSelection,\n\n selectedValues,\n\n valuesTableError: null,\n valuesTable: null,\n };\n }\n\n componentDidMount() {\n this.initValuesTable();\n }\n\n componentWillUnmount() {\n if (this.debounceTimeout != null) {\n clearTimeout(this.debounceTimeout);\n this.sendUpdate();\n }\n if (this.valuesTablePromise != null) {\n this.valuesTablePromise.cancel();\n }\n }\n\n getFilterChangeHandler(index) {\n return this.handleFilterChange.bind(this, index);\n }\n\n getFilterDeleteHandler(index) {\n return this.handleFilterDelete.bind(this, index);\n }\n\n getFilterTypes = memoize(columnType => TableUtils.getFilterTypes(columnType));\n\n initValuesTable() {\n const { model, column } = this.props;\n if (!model.isValuesTableAvailable) {\n log.debug('No values table for this model, just ignore');\n return;\n }\n\n this.valuesTablePromise = TableUtils.makeCancelableTablePromise(\n model.valuesTable(column)\n );\n this.valuesTablePromise\n .then(valuesTable => {\n const sort = valuesTable.columns[0].sort().asc();\n valuesTable.applySort([sort]);\n\n this.setState({ valuesTable });\n })\n .catch(error => {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n log.error('Unable to open values table', error);\n this.setState({ valuesTableError: error });\n });\n }\n\n handleFocusTrapEnd() {\n const inputs = this.focusTrapContainer.current.querySelectorAll(\n 'button,select,input,textarea'\n );\n inputs[0].focus();\n }\n\n handleFocusTrapStart() {\n const inputs = this.focusTrapContainer.current.querySelectorAll(\n 'button,select,input,textarea'\n );\n inputs[inputs.length - 1].focus();\n }\n\n handleAddAnd() {\n let { filterItems, filterOperators } = this.state;\n filterItems = filterItems.concat(this.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.and);\n this.setState({ filterItems, filterOperators });\n }\n\n handleAddOr() {\n let { filterItems, filterOperators } = this.state;\n filterItems = filterItems.concat(this.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.or);\n this.setState({ filterItems, filterOperators });\n }\n\n handleChangeFilterOperator(event) {\n const index = parseInt(event.target.dataset.index, 10);\n const { operator } = event.target.dataset;\n\n let { filterOperators } = this.state;\n filterOperators = [].concat(filterOperators);\n filterOperators[index] = operator;\n\n this.setState({ filterOperators });\n\n this.startUpdateTimer();\n }\n\n handleFilterChange(filterIndex, selectedType, value) {\n let { filterItems } = this.state;\n filterItems = [].concat(filterItems);\n const { key } = filterItems[filterIndex];\n filterItems[filterIndex] = { key, selectedType, value };\n\n this.setState({ filterItems });\n\n this.startUpdateTimer();\n }\n\n handleFilterDelete(filterIndex) {\n let { filterItems, filterOperators } = this.state;\n filterItems = [].concat(filterItems);\n filterOperators = [].concat(filterOperators);\n if (filterIndex < filterItems.length) {\n filterItems.splice(filterIndex, 1);\n }\n\n if (filterIndex < filterOperators.length) {\n filterOperators.splice(filterIndex, 1);\n } else if (filterIndex === filterOperators.length) {\n // When deleting the last filter item, we also need to remove the last filter operator\n filterOperators.splice(filterOperators.length - 1, 1);\n }\n\n if (filterItems.length === 0) {\n filterItems.push(this.makeFilterItem());\n }\n\n this.setState({ filterItems, filterOperators });\n\n this.startUpdateTimer();\n }\n\n handleSelectValueChange(selectedValues, invertSelection) {\n this.setState({ selectedValues, invertSelection });\n\n this.startUpdateTimer();\n }\n\n handleReset() {\n log.debug('Resetting Advanced Filter');\n\n this.setState({\n filterItems: [this.makeFilterItem()],\n filterOperators: [],\n selectedValues: [],\n invertSelection: true,\n });\n\n this.startUpdateTimer();\n }\n\n handleSortDown(event) {\n const addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.descending, addToExisting);\n }\n\n handleSortUp(event) {\n const addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.ascending, addToExisting);\n }\n\n handleSubmit(event) {\n log.debug('Submitting Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n\n event.preventDefault();\n }\n\n handleDone(event) {\n log.debug('Submitting and Closing Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n\n const { onDone } = this.props;\n onDone();\n\n event.preventDefault();\n }\n\n handleUpdateTimeout() {\n this.debounceTimeout = null;\n this.sendUpdate();\n }\n\n makeFilterItem(updateKey = true) {\n const key = this.filterKey;\n if (updateKey) {\n this.filterKey += 1;\n }\n return { selectedType: '', value: '', key };\n }\n\n /**\n * Convenience function to check if the previous filter has been inputted, and\n * we should show the add filter buttons (+ AND OR)\n * @returns true If the add filter buttons should be shown, false otherwise\n */\n shouldShowAddFilter() {\n const { filterItems } = this.state;\n if (filterItems.length === 0) {\n return false;\n }\n\n const filterItem = filterItems[filterItems.length - 1];\n const { selectedType, value } = filterItem;\n\n return (\n selectedType != null &&\n selectedType.length > 0 &&\n value != null &&\n value.length > 0\n );\n }\n\n /**\n * Sorts the table in the specified direction. If already sorted in that direction, remove it.\n * @param {String} direction The sort direction, ASC or DESC\n * @param {boolean} addToExisting Add to the existing sort, or replace the existing table sort\n */\n sortTable(direction, addToExisting = false) {\n const { column, onSortChange } = this.props;\n onSortChange(column, direction, addToExisting);\n }\n\n startUpdateTimer() {\n this.stopUpdateTimer();\n\n this.debounceTimeout = setTimeout(\n this.handleUpdateTimeout,\n AdvancedFilterCreator.debounceFilterUpdate\n );\n }\n\n stopUpdateTimer() {\n if (this.debounceTimeout) {\n clearTimeout(this.debounceTimeout);\n this.debounceTimeout = null;\n }\n }\n\n sendUpdate() {\n const {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n } = this.state;\n const { column, onFilterChange, model } = this.props;\n const { formatter } = model;\n\n const options = {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n };\n\n const filter = TableUtils.makeAdvancedFilter(\n column,\n options,\n formatter.timeZone\n );\n\n onFilterChange(column, filter, options);\n }\n\n render() {\n const { column, model, sortDirection, formatter } = this.props;\n const {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n valuesTable,\n valuesTableError,\n } = this.state;\n const { isValuesTableAvailable } = model;\n const isBoolean = TableUtils.isBooleanType(column.type);\n const isDateType = TableUtils.isDateType(column.type);\n const filterTypes = this.getFilterTypes(column.type);\n const columnType = column.type.substring(column.type.lastIndexOf('.') + 1);\n const filterItemElements = [];\n if (!isBoolean && filterTypes.length) {\n for (let i = 0; i < filterItems.length; i += 1) {\n const filterItem = filterItems[i];\n const { key, selectedType, value } = filterItem;\n\n const element = (\n <AdvancedFilterCreatorFilterItem\n key={key}\n column={column}\n filterTypes={filterTypes}\n onChange={this.getFilterChangeHandler(i)}\n onDelete={this.getFilterDeleteHandler(i)}\n selectedType={selectedType}\n value={value}\n />\n );\n filterItemElements.push(element);\n\n if (i < filterOperators.length) {\n const filterOperator = filterOperators[i];\n const isAndFilter = filterOperator === FilterOperator.and;\n const operatorElement = (\n <div\n key={`filterOperator${key}`}\n className=\"form-row justify-content-end advanced-filter-creator-filter-operator\"\n >\n <button\n type=\"button\"\n className={classNames('btn btn-link filter-operator', {\n active: isAndFilter,\n })}\n onClick={this.handleChangeFilterOperator}\n data-index={i}\n data-operator={FilterOperator.and}\n >\n AND\n </button>\n <button\n type=\"button\"\n className={classNames('btn btn-link filter-operator', {\n active: !isAndFilter,\n })}\n onClick={this.handleChangeFilterOperator}\n data-index={i}\n data-operator={FilterOperator.or}\n >\n OR\n </button>\n </div>\n );\n filterItemElements.push(operatorElement);\n }\n }\n }\n const showAddFilterItem = this.shouldShowAddFilter();\n const addFilterItem = (\n <div\n key=\"addFilterItem\"\n className={classNames('form-row justify-content-end add-filter-item', {\n hidden: !showAddFilterItem,\n })}\n >\n <span className=\"text-muted\">\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n </span>\n <button\n type=\"button\"\n className=\"btn btn-link btn-filter-item\"\n onClick={this.handleAddAnd}\n disabled={!showAddFilterItem}\n >\n AND\n <Tooltip>Add filter with AND</Tooltip>\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link btn-filter-item\"\n onClick={this.handleAddOr}\n disabled={!showAddFilterItem}\n >\n OR\n <Tooltip>Add filter with OR</Tooltip>\n </button>\n </div>\n );\n filterItemElements.push(addFilterItem);\n\n return (\n <div className=\"advanced-filter-creator\" role=\"presentation\">\n <div tabIndex=\"0\" onFocus={this.handleFocusTrapStart} />\n <form onSubmit={this.handleSubmit} ref={this.focusTrapContainer}>\n <div className=\"title-bar\">\n <h6 className=\"advanced-filter-title\">Advanced Filters</h6>\n <div className=\"advanced-filter-menu-buttons\">\n <button\n type=\"button\"\n className={classNames(\n 'btn btn-link btn-link-icon sort-operator',\n {\n active:\n sortDirection === TableUtils.sortDirection.descending,\n }\n )}\n onClick={this.handleSortDown}\n >\n <FontAwesomeIcon icon={dhSortAmountDown} />\n <Tooltip>Sort {column.name} Descending</Tooltip>\n </button>\n <button\n type=\"button\"\n className={classNames(\n 'btn btn-link btn-link-icon sort-operator',\n {\n active:\n sortDirection === TableUtils.sortDirection.ascending,\n }\n )}\n onClick={this.handleSortUp}\n >\n <FontAwesomeIcon rotation={180} icon={dhSortAmountDown} />\n <Tooltip>Sort {column.name} Ascending</Tooltip>\n </button>\n </div>\n </div>\n <hr />\n <div className=\"advanced-filter-column-name\">\n {column.name}&nbsp;\n <span className=\"column-type\">({columnType})</span>\n </div>\n {filterItemElements}\n {isValuesTableAvailable && !valuesTableError && (\n <>\n {!isBoolean && <hr />}\n <div className=\"form-group\">\n <AdvancedFilterCreatorSelectValue\n table={valuesTable}\n onChange={this.handleSelectValueChange}\n invertSelection={invertSelection}\n selectedValues={selectedValues}\n formatter={formatter}\n showSearch={!isDateType}\n timeZone={formatter.timeZone}\n />\n </div>\n </>\n )}\n <div className=\"form-row justify-content-end\">\n <button\n type=\"button\"\n className=\"btn btn-outline-primary mr-2\"\n onClick={this.handleReset}\n >\n Reset\n </button>\n <button\n type=\"button\"\n className=\"btn btn-primary\"\n onClick={this.handleDone}\n >\n Done\n </button>\n </div>\n </form>\n <div tabIndex=\"0\" onFocus={this.handleFocusTrapEnd} />\n </div>\n );\n }\n}\n\nAdvancedFilterCreator.propTypes = {\n model: PropTypes.instanceOf(IrisGridModel).isRequired,\n column: PropTypes.shape({ name: PropTypes.string, type: PropTypes.string })\n .isRequired,\n onFilterChange: PropTypes.func.isRequired,\n onSortChange: PropTypes.func.isRequired,\n onDone: PropTypes.func.isRequired,\n options: PropTypes.shape({\n filterItems: PropTypes.arrayOf(PropTypes.shape({})),\n filterOperators: PropTypes.arrayOf(PropTypes.shape({})),\n invertSelection: PropTypes.bool,\n selectedValues: PropTypes.arrayOf(PropTypes.any),\n }),\n sortDirection: PropTypes.string,\n formatter: PropTypes.instanceOf(Formatter).isRequired,\n};\n\nAdvancedFilterCreator.defaultProps = {\n options: {\n filterItems: null,\n filterOperators: null,\n invertSelection: true,\n selectedValues: [],\n },\n sortDirection: null,\n};\n\nexport default AdvancedFilterCreator;\n"],"file":"AdvancedFilterCreator.js"}
1
+ {"version":3,"sources":["../src/AdvancedFilterCreator.tsx"],"names":["React","PureComponent","classNames","FontAwesomeIcon","memoize","Operator","FilterOperator","assertOperatorValue","assertFilterOperatorValue","dhSortAmountDown","dhNewCircleLargeFilled","TableUtils","ContextActionUtils","Tooltip","Log","PromiseUtils","assertNotNull","shortid","AdvancedFilterCreatorFilterItem","AdvancedFilterCreatorSelectValue","log","module","AdvancedFilterCreator","makeFilterItem","key","constructor","props","columnType","getFilterTypes","handleAddAnd","bind","handleAddOr","handleChangeFilterOperator","handleDone","handleFilterChange","handleFilterDelete","handleSelectValueChange","handleReset","handleSortDown","handleSortUp","handleSubmit","handleFocusTrapStart","handleFocusTrapEnd","handleUpdateTimeout","focusTrapContainer","createRef","filterKey","options","filterOperators","invertSelection","selectedValues","filterItems","map","selectedType","value","state","valuesTableError","valuesTable","undefined","componentDidMount","initValuesTable","componentWillUnmount","debounceTimeout","clearTimeout","sendUpdate","valuesTablePromise","cancel","getFilterChangeHandler","index","getFilterDeleteHandler","model","column","isValuesTableAvailable","debug","makeCancelableTablePromise","then","sort","columns","asc","applySort","setState","catch","error","isCanceled","current","querySelector","focus","inputs","querySelectorAll","length","element","concat","and","or","event","target","currentTarget","operator","strIndex","dataset","parseInt","startUpdateTimer","filterIndex","splice","push","addToExisting","isModifierKeyDown","sortTable","sortDirection","descending","ascending","stopUpdateTimer","preventDefault","onDone","shouldShowAddFilter","filterItem","direction","onSortChange","setTimeout","debounceFilterUpdate","onFilterChange","formatter","filter","makeAdvancedFilter","timeZone","render","isBoolean","isBooleanType","type","isDateType","filterTypes","substring","lastIndexOf","filterItemElements","i","filterOperator","isAndFilter","operatorElement","active","showAddFilterItem","addFilterItem","hidden","name"],"mappings":"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","sourcesContent":["/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n// disabled for tab-index on focus traps, which are intentionally non-interactive\n\nimport React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport memoize from 'memoize-one';\nimport {\n Operator as FilterOperator,\n OperatorValue as FilterOperatorValue,\n TypeValue as FilterTypeValue,\n assertOperatorValue as assertFilterOperatorValue,\n} from '@deephaven/filters';\nimport { dhSortAmountDown, dhNewCircleLargeFilled } from '@deephaven/icons';\nimport {\n Formatter,\n TableUtils,\n SortDirection,\n FilterItem,\n} from '@deephaven/jsapi-utils';\nimport { ContextActionUtils, Tooltip } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport {\n CancelablePromise,\n PromiseUtils,\n assertNotNull,\n} from '@deephaven/utils';\nimport { Column, FilterCondition, Table } from '@deephaven/jsapi-shim';\nimport shortid from 'shortid';\nimport AdvancedFilterCreatorFilterItem from './AdvancedFilterCreatorFilterItem';\nimport AdvancedFilterCreatorSelectValue from './AdvancedFilterCreatorSelectValue';\nimport './AdvancedFilterCreator.scss';\nimport IrisGridModel from './IrisGridModel';\nimport { AdvancedFilterOptions } from './CommonTypes';\n\nconst log = Log.module('AdvancedFilterCreator');\n\ntype FilterChangeHandler = (\n selectedType: FilterTypeValue,\n value: string\n) => void;\n\ninterface AdvancedFilterCreatorProps {\n model: IrisGridModel;\n column: Column;\n onFilterChange: (\n column: Column,\n filter: FilterCondition,\n options: AdvancedFilterOptions\n ) => void;\n onSortChange: (\n column: Column,\n direction: SortDirection,\n addToExisting?: boolean\n ) => void;\n onDone: () => void;\n options: AdvancedFilterOptions;\n sortDirection: SortDirection;\n formatter: Formatter;\n}\n\ninterface AdvancedFilterItem {\n selectedType?: FilterTypeValue;\n value?: string;\n key: string;\n}\n\ninterface AdvancedFilterCreatorState {\n // Filter items\n filterItems: AdvancedFilterItem[];\n\n // And/Or between the filter items\n filterOperators: FilterOperatorValue[];\n\n invertSelection: boolean;\n\n selectedValues: unknown[];\n\n valuesTableError: null;\n valuesTable?: Table;\n}\n\nclass AdvancedFilterCreator extends PureComponent<\n AdvancedFilterCreatorProps,\n AdvancedFilterCreatorState\n> {\n static debounceFilterUpdate = 250;\n\n static defaultProps = {\n options: {\n filterItems: null,\n filterOperators: null,\n invertSelection: true,\n selectedValues: [],\n },\n sortDirection: null,\n };\n\n static makeFilterItem(): AdvancedFilterItem {\n return { key: shortid() };\n }\n\n constructor(props: AdvancedFilterCreatorProps) {\n super(props);\n\n this.handleAddAnd = this.handleAddAnd.bind(this);\n this.handleAddOr = this.handleAddOr.bind(this);\n this.handleChangeFilterOperator = this.handleChangeFilterOperator.bind(\n this\n );\n this.handleDone = this.handleDone.bind(this);\n this.handleFilterChange = this.handleFilterChange.bind(this);\n this.handleFilterDelete = this.handleFilterDelete.bind(this);\n this.handleSelectValueChange = this.handleSelectValueChange.bind(this);\n this.handleReset = this.handleReset.bind(this);\n this.handleSortDown = this.handleSortDown.bind(this);\n this.handleSortUp = this.handleSortUp.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleFocusTrapStart = this.handleFocusTrapStart.bind(this);\n this.handleFocusTrapEnd = this.handleFocusTrapEnd.bind(this);\n this.handleUpdateTimeout = this.handleUpdateTimeout.bind(this);\n\n this.focusTrapContainer = React.createRef();\n this.filterKey = 0;\n\n const { options } = props;\n let { filterOperators, invertSelection, selectedValues } = options;\n\n let filterItems: AdvancedFilterItem[] = options.filterItems.map(\n ({ selectedType, value }) => ({\n selectedType,\n value,\n key: shortid(),\n })\n );\n if (filterItems == null) {\n filterItems = [AdvancedFilterCreator.makeFilterItem()];\n }\n if (filterOperators == null) {\n filterOperators = [];\n }\n if (invertSelection == null) {\n invertSelection = true;\n }\n if (selectedValues == null) {\n selectedValues = [];\n }\n\n this.state = {\n // Filter items\n filterItems,\n\n // And/Or between the filter items\n filterOperators,\n\n invertSelection,\n\n selectedValues,\n\n valuesTableError: null,\n valuesTable: undefined,\n };\n }\n\n componentDidMount(): void {\n this.initValuesTable();\n }\n\n componentWillUnmount(): void {\n if (this.debounceTimeout != null) {\n clearTimeout(this.debounceTimeout);\n this.sendUpdate();\n }\n if (this.valuesTablePromise != null) {\n this.valuesTablePromise.cancel();\n }\n }\n\n focusTrapContainer: React.RefObject<HTMLFormElement>;\n\n debounceTimeout?: ReturnType<typeof setTimeout>;\n\n filterKey: number;\n\n valuesTablePromise?: CancelablePromise<Table>;\n\n getFilterChangeHandler(index: number): FilterChangeHandler {\n return this.handleFilterChange.bind(this, index);\n }\n\n getFilterDeleteHandler(index: number): () => void {\n return this.handleFilterDelete.bind(this, index);\n }\n\n getFilterTypes = memoize((columnType: string): FilterTypeValue[] =>\n TableUtils.getFilterTypes(columnType)\n );\n\n initValuesTable(): void {\n const { model, column } = this.props;\n if (!model.isValuesTableAvailable) {\n log.debug('No values table for this model, just ignore');\n return;\n }\n\n this.valuesTablePromise = TableUtils.makeCancelableTablePromise(\n model.valuesTable(column)\n );\n this.valuesTablePromise\n .then(valuesTable => {\n const sort = valuesTable.columns[0].sort().asc();\n valuesTable.applySort([sort]);\n\n this.setState({ valuesTable });\n })\n .catch(error => {\n if (PromiseUtils.isCanceled(error)) {\n return;\n }\n\n log.error('Unable to open values table', error);\n this.setState({ valuesTableError: error });\n });\n }\n\n handleFocusTrapEnd(): void {\n (this.focusTrapContainer?.current?.querySelector(\n 'button,select,input,textarea'\n ) as HTMLElement).focus();\n }\n\n handleFocusTrapStart(): void {\n const inputs = this.focusTrapContainer?.current?.querySelectorAll(\n 'button,select,input,textarea'\n );\n if (inputs && inputs.length > 0) {\n const element = inputs[inputs.length - 1] as HTMLElement;\n element.focus();\n }\n }\n\n handleAddAnd(): void {\n let { filterItems, filterOperators } = this.state;\n filterItems = filterItems.concat(AdvancedFilterCreator.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.and);\n this.setState({ filterItems, filterOperators });\n }\n\n handleAddOr(): void {\n let { filterItems, filterOperators } = this.state;\n filterItems = filterItems.concat(AdvancedFilterCreator.makeFilterItem());\n filterOperators = filterOperators.concat(FilterOperator.or);\n this.setState({ filterItems, filterOperators });\n }\n\n handleChangeFilterOperator(event: React.MouseEvent<HTMLButtonElement>): void {\n const target = event.currentTarget;\n\n const { operator, index: strIndex } = target.dataset;\n assertNotNull(strIndex);\n const index = parseInt(strIndex, 10);\n\n let { filterOperators } = this.state;\n filterOperators = [...filterOperators];\n\n assertFilterOperatorValue(operator);\n\n filterOperators[index] = operator;\n\n this.setState({ filterOperators });\n\n this.startUpdateTimer();\n }\n\n handleFilterChange(\n filterIndex: number,\n selectedType: FilterTypeValue,\n value: string\n ): void {\n let { filterItems } = this.state;\n filterItems = [...filterItems];\n const { key } = filterItems[filterIndex];\n filterItems[filterIndex] = { key, selectedType, value };\n\n this.setState({ filterItems });\n\n this.startUpdateTimer();\n }\n\n handleFilterDelete(filterIndex: number): void {\n let { filterItems, filterOperators } = this.state;\n filterItems = [...filterItems];\n filterOperators = [...filterOperators];\n if (filterIndex < filterItems.length) {\n filterItems.splice(filterIndex, 1);\n }\n\n if (filterIndex < filterOperators.length) {\n filterOperators.splice(filterIndex, 1);\n } else if (filterIndex === filterOperators.length) {\n // When deleting the last filter item, we also need to remove the last filter operator\n filterOperators.splice(filterOperators.length - 1, 1);\n }\n\n if (filterItems.length === 0) {\n filterItems.push(AdvancedFilterCreator.makeFilterItem());\n }\n\n this.setState({ filterItems, filterOperators });\n\n this.startUpdateTimer();\n }\n\n handleSelectValueChange(\n selectedValues: unknown[],\n invertSelection: boolean\n ): void {\n this.setState({ selectedValues, invertSelection });\n\n this.startUpdateTimer();\n }\n\n handleReset(): void {\n log.debug('Resetting Advanced Filter');\n\n this.setState({\n filterItems: [AdvancedFilterCreator.makeFilterItem()],\n filterOperators: [],\n selectedValues: [],\n invertSelection: true,\n });\n\n this.startUpdateTimer();\n }\n\n handleSortDown(event: React.MouseEvent<HTMLButtonElement>): void {\n const addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.descending, addToExisting);\n }\n\n handleSortUp(event: React.MouseEvent<HTMLButtonElement>): void {\n const addToExisting = ContextActionUtils.isModifierKeyDown(event);\n this.sortTable(TableUtils.sortDirection.ascending, addToExisting);\n }\n\n handleSubmit(event: React.FormEvent<HTMLFormElement>): void {\n log.debug('Submitting Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n\n event.preventDefault();\n }\n\n handleDone(event: React.MouseEvent<HTMLButtonElement>): void {\n log.debug('Submitting and Closing Advanced Filter');\n this.stopUpdateTimer();\n this.sendUpdate();\n\n const { onDone } = this.props;\n onDone();\n\n event.preventDefault();\n }\n\n handleUpdateTimeout(): void {\n this.debounceTimeout = undefined;\n this.sendUpdate();\n }\n\n /**\n * Convenience function to check if the previous filter has been inputted, and\n * we should show the add filter buttons (+ AND OR)\n * @returns true If the add filter buttons should be shown, false otherwise\n */\n shouldShowAddFilter(): boolean {\n const { filterItems } = this.state;\n if (filterItems.length === 0) {\n return false;\n }\n\n const filterItem = filterItems[filterItems.length - 1];\n const { selectedType, value } = filterItem;\n\n return (\n selectedType != null &&\n selectedType.length > 0 &&\n value != null &&\n value.length > 0\n );\n }\n\n /**\n * Sorts the table in the specified direction. If already sorted in that direction, remove it.\n * @param direction The sort direction, ASC or DESC\n * @param addToExisting Add to the existing sort, or replace the existing table sort\n */\n sortTable(direction: SortDirection, addToExisting = false): void {\n const { column, onSortChange } = this.props;\n onSortChange(column, direction, addToExisting);\n }\n\n startUpdateTimer(): void {\n this.stopUpdateTimer();\n\n this.debounceTimeout = setTimeout(\n this.handleUpdateTimeout,\n AdvancedFilterCreator.debounceFilterUpdate\n );\n }\n\n stopUpdateTimer(): void {\n if (this.debounceTimeout !== undefined) {\n clearTimeout(this.debounceTimeout);\n this.debounceTimeout = undefined;\n }\n }\n\n sendUpdate(): void {\n const {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n } = this.state;\n const { column, onFilterChange, model } = this.props;\n const { formatter } = model;\n\n const options = {\n filterItems: filterItems.filter(\n ({ selectedType, value }) => selectedType != null && value != null\n ) as FilterItem[],\n filterOperators,\n invertSelection,\n selectedValues,\n };\n\n const filter = TableUtils.makeAdvancedFilter(\n column,\n options,\n formatter.timeZone\n );\n\n onFilterChange(column, filter, options);\n }\n\n render(): JSX.Element {\n const { column, model, sortDirection, formatter } = this.props;\n const {\n filterItems,\n filterOperators,\n invertSelection,\n selectedValues,\n valuesTable,\n valuesTableError,\n } = this.state;\n const { isValuesTableAvailable } = model;\n const isBoolean = TableUtils.isBooleanType(column.type);\n const isDateType = TableUtils.isDateType(column.type);\n const filterTypes = this.getFilterTypes(column.type);\n const columnType = column.type.substring(column.type.lastIndexOf('.') + 1);\n const filterItemElements = [];\n if (!isBoolean && filterTypes.length) {\n for (let i = 0; i < filterItems.length; i += 1) {\n const filterItem = filterItems[i];\n const { key, selectedType, value } = filterItem;\n\n const element = (\n <AdvancedFilterCreatorFilterItem\n key={key}\n column={column}\n filterTypes={filterTypes}\n onChange={this.getFilterChangeHandler(i)}\n onDelete={this.getFilterDeleteHandler(i)}\n selectedType={selectedType}\n value={value}\n />\n );\n filterItemElements.push(element);\n\n if (i < filterOperators.length) {\n const filterOperator = filterOperators[i];\n const isAndFilter = filterOperator === FilterOperator.and;\n const operatorElement = (\n <div\n key={`filterOperator${key}`}\n className=\"form-row justify-content-end advanced-filter-creator-filter-operator\"\n >\n <button\n type=\"button\"\n className={classNames('btn btn-link filter-operator', {\n active: isAndFilter,\n })}\n onClick={this.handleChangeFilterOperator}\n data-index={i}\n data-operator={FilterOperator.and}\n >\n AND\n </button>\n <button\n type=\"button\"\n className={classNames('btn btn-link filter-operator', {\n active: !isAndFilter,\n })}\n onClick={this.handleChangeFilterOperator}\n data-index={i}\n data-operator={FilterOperator.or}\n >\n OR\n </button>\n </div>\n );\n filterItemElements.push(operatorElement);\n }\n }\n }\n const showAddFilterItem = this.shouldShowAddFilter();\n const addFilterItem = (\n <div\n key=\"addFilterItem\"\n className={classNames('form-row justify-content-end add-filter-item', {\n hidden: !showAddFilterItem,\n })}\n >\n <span className=\"text-muted\">\n <FontAwesomeIcon icon={dhNewCircleLargeFilled} />\n </span>\n <button\n type=\"button\"\n className=\"btn btn-link btn-filter-item\"\n onClick={this.handleAddAnd}\n disabled={!showAddFilterItem}\n >\n AND\n <Tooltip>Add filter with AND</Tooltip>\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link btn-filter-item\"\n onClick={this.handleAddOr}\n disabled={!showAddFilterItem}\n >\n OR\n <Tooltip>Add filter with OR</Tooltip>\n </button>\n </div>\n );\n filterItemElements.push(addFilterItem);\n\n return (\n <div className=\"advanced-filter-creator\" role=\"presentation\">\n <div tabIndex={0} onFocus={this.handleFocusTrapStart} />\n <form onSubmit={this.handleSubmit} ref={this.focusTrapContainer}>\n <div className=\"title-bar\">\n <h6 className=\"advanced-filter-title\">Advanced Filters</h6>\n <div className=\"advanced-filter-menu-buttons\">\n <button\n type=\"button\"\n className={classNames(\n 'btn btn-link btn-link-icon sort-operator',\n {\n active:\n sortDirection === TableUtils.sortDirection.descending,\n }\n )}\n onClick={this.handleSortDown}\n >\n <FontAwesomeIcon icon={dhSortAmountDown} />\n <Tooltip>Sort {column.name} Descending</Tooltip>\n </button>\n <button\n type=\"button\"\n className={classNames(\n 'btn btn-link btn-link-icon sort-operator',\n {\n active:\n sortDirection === TableUtils.sortDirection.ascending,\n }\n )}\n onClick={this.handleSortUp}\n >\n <FontAwesomeIcon rotation={180} icon={dhSortAmountDown} />\n <Tooltip>Sort {column.name} Ascending</Tooltip>\n </button>\n </div>\n </div>\n <hr />\n <div className=\"advanced-filter-column-name\">\n {column.name}&nbsp;\n <span className=\"column-type\">({columnType})</span>\n </div>\n {filterItemElements}\n {isValuesTableAvailable && !valuesTableError && (\n <>\n {!isBoolean && <hr />}\n {valuesTable && (\n <div className=\"form-group\">\n <AdvancedFilterCreatorSelectValue<unknown>\n table={valuesTable}\n onChange={this.handleSelectValueChange}\n invertSelection={invertSelection}\n selectedValues={selectedValues}\n formatter={formatter}\n showSearch={!isDateType}\n timeZone={formatter.timeZone}\n />\n </div>\n )}\n </>\n )}\n <div className=\"form-row justify-content-end\">\n <button\n type=\"button\"\n className=\"btn btn-outline-primary mr-2\"\n onClick={this.handleReset}\n >\n Reset\n </button>\n <button\n type=\"button\"\n className=\"btn btn-primary\"\n onClick={this.handleDone}\n >\n Done\n </button>\n </div>\n </form>\n <div tabIndex={0} onFocus={this.handleFocusTrapEnd} />\n </div>\n );\n }\n}\n\nexport default AdvancedFilterCreator;\n"],"file":"AdvancedFilterCreator.js"}
@@ -1,54 +1,54 @@
1
- export default AdvancedFilterCreatorSelectValue;
2
- declare class AdvancedFilterCreatorSelectValue extends React.PureComponent<any, any, any> {
1
+ import React, { PureComponent } from 'react';
2
+ import { Formatter } from '@deephaven/jsapi-utils';
3
+ import { FilterCondition, Table } from '@deephaven/jsapi-shim';
4
+ import './AdvancedFilterCreatorSelectValue.scss';
5
+ import { ColumnName } from './CommonTypes';
6
+ interface AdvancedFilterCreatorSelectValueProps<T> {
7
+ invertSelection: boolean;
8
+ selectedValues: T[];
9
+ table: Table;
10
+ formatter: Formatter;
11
+ onChange: (selectedValues: T[], invertSelection: boolean) => void;
12
+ showSearch: boolean;
13
+ timeZone: string;
14
+ }
15
+ interface AdvancedFilterCreatorSelectValueState<T> {
16
+ error?: string;
17
+ filters: FilterCondition[];
18
+ invertSelection: boolean;
19
+ selectedValues: T[];
20
+ searchText: string;
21
+ table?: Table;
22
+ }
23
+ declare class AdvancedFilterCreatorSelectValue<T = unknown> extends PureComponent<AdvancedFilterCreatorSelectValueProps<T>, AdvancedFilterCreatorSelectValueState<T>> {
3
24
  static searchDebounceTime: number;
4
- constructor(props: any);
25
+ static defaultProps: {
26
+ table: null;
27
+ invertSelection: boolean;
28
+ selectedValues: never[];
29
+ onChange: () => void;
30
+ showSearch: boolean;
31
+ };
32
+ constructor(props: AdvancedFilterCreatorSelectValueProps<T>);
33
+ componentDidMount(): void;
34
+ componentDidUpdate(prevProps: AdvancedFilterCreatorSelectValueProps<T>, prevState: AdvancedFilterCreatorSelectValueState<T>): void;
35
+ componentWillUnmount(): void;
36
+ searchTablePromise?: Promise<Table>;
37
+ updateFilterTimer?: ReturnType<typeof setTimeout>;
38
+ getColumnName(): ColumnName;
39
+ getDisplayedValuesCount(): number | null;
40
+ getDisplayedValueText(): string | null;
41
+ initSearchTable(): void;
42
+ handleListChange(selectedValues: T[], invertSelection: boolean): void;
43
+ handleSearchChange(event: React.ChangeEvent<HTMLInputElement>): void;
5
44
  handleSelectAllClick(): void;
6
45
  handleClearAllClick(): void;
7
- handleListChange(selectedValues: any, invertSelection: any): void;
8
- handleSearchChange(event: any): void;
9
46
  handleUpdateFilterTimeout(): void;
10
- searchTablePromise: any;
11
- updateFilterTimer: NodeJS.Timeout | null;
12
- getColumnName(): any;
13
- getDisplayedValuesCount(): any;
14
- getDisplayedValueText(): string | null;
15
- initSearchTable(): void;
16
- resetSelection(invertSelection: any): void;
47
+ resetSelection(invertSelection: boolean): void;
17
48
  startUpdateFilterTimer(): void;
18
49
  stopUpdateFilterTimer(): void;
19
50
  updateTableFilter(): void;
51
+ render(): React.ReactElement;
20
52
  }
21
- declare namespace AdvancedFilterCreatorSelectValue {
22
- namespace propTypes {
23
- const table: PropTypes.Requireable<PropTypes.InferProps<{
24
- close: PropTypes.Requireable<(...args: any[]) => any>;
25
- columns: PropTypes.Requireable<(PropTypes.InferProps<{
26
- name: PropTypes.Requireable<string>;
27
- }> | null | undefined)[]>;
28
- copy: PropTypes.Requireable<(...args: any[]) => any>;
29
- totalSize: PropTypes.Requireable<number>;
30
- }>>;
31
- const invertSelection: PropTypes.Requireable<boolean>;
32
- const selectedValues: PropTypes.Requireable<any[]>;
33
- const formatter: PropTypes.Validator<Formatter>;
34
- const onChange: PropTypes.Requireable<(...args: any[]) => any>;
35
- const showSearch: PropTypes.Requireable<boolean>;
36
- const timeZone: PropTypes.Validator<string>;
37
- }
38
- namespace defaultProps {
39
- const table_1: null;
40
- export { table_1 as table };
41
- const invertSelection_1: boolean;
42
- export { invertSelection_1 as invertSelection };
43
- const selectedValues_1: never[];
44
- export { selectedValues_1 as selectedValues };
45
- export function onChange_1(): void;
46
- export { onChange_1 as onChange };
47
- const showSearch_1: boolean;
48
- export { showSearch_1 as showSearch };
49
- }
50
- }
51
- import React from "react";
52
- import PropTypes from "prop-types";
53
- import { Formatter } from "packages/jsapi-utils/src/Formatter";
53
+ export default AdvancedFilterCreatorSelectValue;
54
54
  //# sourceMappingURL=AdvancedFilterCreatorSelectValue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AdvancedFilterCreatorSelectValue.d.ts","sourceRoot":"","sources":["../src/AdvancedFilterCreatorSelectValue.jsx"],"names":[],"mappings":";AASA;IACE,kCAAgC;IAEhC,wBAsBC;IA8GD,6BAEC;IAED,4BAEC;IAlBD,kEAKC;IAED,qCAGC;IAUD,kCAGC;IAtIC,wBAA8B;IAC9B,yCAA6B;IAoD/B,qBAMC;IAED,+BAUC;IAED,uCAkBC;IAED,wBAgBC;IA2BD,2CAOC;IAED,+BAOC;IAED,8BAKC;IAED,0BAgCC;CAyEF;;;;;;;;;;;;;;;;;;;;;;;;;QAqBW,mCAAQ"}
1
+ {"version":3,"file":"AdvancedFilterCreatorSelectValue.d.ts","sourceRoot":"","sources":["../src/AdvancedFilterCreatorSelectValue.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG7C,OAAO,EAAE,SAAS,EAAc,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,yCAAyC,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,UAAU,qCAAqC,CAAC,CAAC;IAC/C,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,CAAC,EAAE,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,eAAe,EAAE,OAAO,KAAK,IAAI,CAAC;IAClE,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,qCAAqC,CAAC,CAAC;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,CAAC,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,cAAM,gCAAgC,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,aAAa,CACvE,qCAAqC,CAAC,CAAC,CAAC,EACxC,qCAAqC,CAAC,CAAC,CAAC,CACzC;IACC,MAAM,CAAC,kBAAkB,SAAO;IAEhC,MAAM,CAAC,YAAY;;;;wBAIH,IAAI;;MAElB;gBAEU,KAAK,EAAE,qCAAqC,CAAC,CAAC,CAAC;IAmB3D,iBAAiB,IAAI,IAAI;IAIzB,kBAAkB,CAChB,SAAS,EAAE,qCAAqC,CAAC,CAAC,CAAC,EACnD,SAAS,EAAE,qCAAqC,CAAC,CAAC,CAAC,GAClD,IAAI;IA8BP,oBAAoB,IAAI,IAAI;IAU5B,kBAAkB,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAEpC,iBAAiB,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAElD,aAAa,IAAI,UAAU;IAQ3B,uBAAuB,IAAI,MAAM,GAAG,IAAI;IAYxC,qBAAqB,IAAI,MAAM,GAAG,IAAI;IAqBtC,eAAe,IAAI,IAAI;IAkBvB,gBAAgB,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI;IAOrE,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAKpE,oBAAoB,IAAI,IAAI;IAI5B,mBAAmB,IAAI,IAAI;IAI3B,yBAAyB,IAAI,IAAI;IAKjC,cAAc,CAAC,eAAe,EAAE,OAAO,GAAG,IAAI;IAS9C,sBAAsB,IAAI,IAAI;IAS9B,qBAAqB,IAAI,IAAI;IAO7B,iBAAiB,IAAI,IAAI;IAqCzB,MAAM,IAAI,KAAK,CAAC,YAAY;CAyE7B;AAED,eAAe,gCAAgC,CAAC"}
@@ -2,34 +2,34 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
2
2
 
3
3
  /* eslint react/no-did-update-set-state: "off" */
4
4
  import React, { PureComponent } from 'react';
5
- import PropTypes from 'prop-types';
6
5
  import { CSSTransition } from 'react-transition-group';
7
6
  import classNames from 'classnames';
8
- import { Formatter, TableUtils } from '@deephaven/jsapi-utils';
7
+ import { TableUtils } from '@deephaven/jsapi-utils';
9
8
  import AdvancedFilterCreatorSelectValueList from "./AdvancedFilterCreatorSelectValueList.js";
10
9
  import "./AdvancedFilterCreatorSelectValue.css";
11
10
 
12
11
  class AdvancedFilterCreatorSelectValue extends PureComponent {
13
12
  constructor(props) {
14
13
  super(props);
14
+
15
+ _defineProperty(this, "searchTablePromise", void 0);
16
+
17
+ _defineProperty(this, "updateFilterTimer", void 0);
18
+
15
19
  this.handleSelectAllClick = this.handleSelectAllClick.bind(this);
16
20
  this.handleClearAllClick = this.handleClearAllClick.bind(this);
17
21
  this.handleListChange = this.handleListChange.bind(this);
18
22
  this.handleSearchChange = this.handleSearchChange.bind(this);
19
23
  this.handleUpdateFilterTimeout = this.handleUpdateFilterTimeout.bind(this);
20
- this.searchTablePromise = null;
21
- this.updateFilterTimer = null;
22
24
  var {
23
25
  invertSelection,
24
26
  selectedValues
25
27
  } = props;
26
28
  this.state = {
27
- error: null,
28
29
  filters: [],
29
30
  invertSelection,
30
31
  selectedValues,
31
- searchText: '',
32
- table: null
32
+ searchText: ''
33
33
  };
34
34
  }
35
35
 
@@ -65,8 +65,14 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
65
65
  searchText
66
66
  } = this.state;
67
67
 
68
- if (searchTable !== prevState.table && prevState.table != null) {
69
- prevState.table.close();
68
+ if (searchTable !== prevState.table) {
69
+ if (prevState.table != null) {
70
+ prevState.table.close();
71
+ }
72
+
73
+ if (searchTable != null) {
74
+ this.startUpdateFilterTimer();
75
+ }
70
76
  }
71
77
 
72
78
  if (searchText !== prevState.searchText) {
@@ -83,7 +89,7 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
83
89
  table.close();
84
90
  }
85
91
 
86
- this.searchTablePromise = null;
92
+ this.searchTablePromise = undefined;
87
93
  this.stopUpdateFilterTimer();
88
94
  }
89
95
 
@@ -157,7 +163,7 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
157
163
  this.setState({
158
164
  table: searchTable
159
165
  });
160
- this.searchTablePromise = null;
166
+ this.searchTablePromise = undefined;
161
167
  } else {
162
168
  searchTable.close();
163
169
  }
@@ -191,7 +197,7 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
191
197
  }
192
198
 
193
199
  handleUpdateFilterTimeout() {
194
- this.updateFilterTimer = null;
200
+ this.updateFilterTimer = undefined;
195
201
  this.updateTableFilter();
196
202
  }
197
203
 
@@ -213,9 +219,9 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
213
219
  }
214
220
 
215
221
  stopUpdateFilterTimer() {
216
- if (this.updateFilterTimer) {
222
+ if (this.updateFilterTimer != null) {
217
223
  clearTimeout(this.updateFilterTimer);
218
- this.updateFilterTimer = null;
224
+ this.updateFilterTimer = undefined;
219
225
  }
220
226
  }
221
227
 
@@ -227,9 +233,14 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
227
233
  var {
228
234
  timeZone
229
235
  } = this.props;
230
- var column = table.columns[0];
236
+ var column = table === null || table === void 0 ? void 0 : table.columns[0];
231
237
  var filters = [];
232
- var error = null;
238
+
239
+ if (column == null) {
240
+ return;
241
+ }
242
+
243
+ var error;
233
244
 
234
245
  if (searchText.length > 0) {
235
246
  var filter = null;
@@ -290,7 +301,7 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
290
301
  placeholder: placeholderText,
291
302
  value: searchText,
292
303
  onChange: this.handleSearchChange
293
- })), /*#__PURE__*/React.createElement(AdvancedFilterCreatorSelectValueList, {
304
+ })), table && /*#__PURE__*/React.createElement(AdvancedFilterCreatorSelectValueList, {
294
305
  table: table,
295
306
  filters: filters,
296
307
  invertSelection: invertSelection,
@@ -322,28 +333,13 @@ class AdvancedFilterCreatorSelectValue extends PureComponent {
322
333
 
323
334
  _defineProperty(AdvancedFilterCreatorSelectValue, "searchDebounceTime", 250);
324
335
 
325
- AdvancedFilterCreatorSelectValue.propTypes = {
326
- table: PropTypes.shape({
327
- close: PropTypes.func,
328
- columns: PropTypes.arrayOf(PropTypes.shape({
329
- name: PropTypes.string
330
- })),
331
- copy: PropTypes.func,
332
- totalSize: PropTypes.number
333
- }),
334
- invertSelection: PropTypes.bool,
335
- selectedValues: PropTypes.arrayOf(PropTypes.any),
336
- formatter: PropTypes.instanceOf(Formatter).isRequired,
337
- onChange: PropTypes.func,
338
- showSearch: PropTypes.bool,
339
- timeZone: PropTypes.string.isRequired
340
- };
341
- AdvancedFilterCreatorSelectValue.defaultProps = {
336
+ _defineProperty(AdvancedFilterCreatorSelectValue, "defaultProps", {
342
337
  table: null,
343
338
  invertSelection: true,
344
339
  selectedValues: [],
345
- onChange: () => {},
340
+ onChange: () => undefined,
346
341
  showSearch: true
347
- };
342
+ });
343
+
348
344
  export default AdvancedFilterCreatorSelectValue;
349
345
  //# sourceMappingURL=AdvancedFilterCreatorSelectValue.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/AdvancedFilterCreatorSelectValue.jsx"],"names":["React","PureComponent","PropTypes","CSSTransition","classNames","Formatter","TableUtils","AdvancedFilterCreatorSelectValueList","AdvancedFilterCreatorSelectValue","constructor","props","handleSelectAllClick","bind","handleClearAllClick","handleListChange","handleSearchChange","handleUpdateFilterTimeout","searchTablePromise","updateFilterTimer","invertSelection","selectedValues","state","error","filters","searchText","table","componentDidMount","initSearchTable","componentDidUpdate","prevProps","prevState","setState","searchTable","close","startUpdateFilterTimer","componentWillUnmount","stopUpdateFilterTimer","getColumnName","columns","name","getDisplayedValuesCount","totalSize","length","getDisplayedValueText","count","formatter","formattedCount","getFormattedString","formattedTableSize","prefix","copy","then","onChange","event","target","value","resetSelection","updateTableFilter","setTimeout","searchDebounceTime","clearTimeout","timeZone","column","filter","isCharType","type","makeQuickFilter","isTextType","push","render","showSearch","columnName","displayedValuesText","placeholderText","propTypes","shape","func","arrayOf","string","number","bool","any","instanceOf","isRequired","defaultProps"],"mappings":"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","sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { CSSTransition } from 'react-transition-group';\nimport classNames from 'classnames';\nimport { Formatter, TableUtils } from '@deephaven/jsapi-utils';\nimport AdvancedFilterCreatorSelectValueList from './AdvancedFilterCreatorSelectValueList';\nimport './AdvancedFilterCreatorSelectValue.scss';\n\nclass AdvancedFilterCreatorSelectValue extends PureComponent {\n static searchDebounceTime = 250;\n\n constructor(props) {\n super(props);\n\n this.handleSelectAllClick = this.handleSelectAllClick.bind(this);\n this.handleClearAllClick = this.handleClearAllClick.bind(this);\n this.handleListChange = this.handleListChange.bind(this);\n this.handleSearchChange = this.handleSearchChange.bind(this);\n this.handleUpdateFilterTimeout = this.handleUpdateFilterTimeout.bind(this);\n\n this.searchTablePromise = null;\n this.updateFilterTimer = null;\n\n const { invertSelection, selectedValues } = props;\n\n this.state = {\n error: null,\n filters: [],\n invertSelection,\n selectedValues,\n searchText: '',\n table: null,\n };\n }\n\n componentDidMount() {\n this.initSearchTable();\n }\n\n componentDidUpdate(prevProps, prevState) {\n const { invertSelection, selectedValues, table } = this.props;\n if (prevProps.table !== table) {\n this.initSearchTable();\n }\n\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({ invertSelection });\n }\n\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({ selectedValues });\n }\n\n const { table: searchTable, searchText } = this.state;\n if (searchTable !== prevState.table && prevState.table != null) {\n prevState.table.close();\n }\n\n if (searchText !== prevState.searchText) {\n this.startUpdateFilterTimer();\n }\n }\n\n componentWillUnmount() {\n const { table } = this.state;\n if (table != null) {\n table.close();\n }\n this.searchTablePromise = null;\n\n this.stopUpdateFilterTimer();\n }\n\n getColumnName() {\n const { table } = this.props;\n if (table != null) {\n return table.columns[0].name;\n }\n return '';\n }\n\n getDisplayedValuesCount() {\n const { invertSelection, selectedValues, table } = this.state;\n if (table == null) {\n return null;\n }\n\n if (invertSelection) {\n return table.totalSize - selectedValues.length;\n }\n return selectedValues.length;\n }\n\n getDisplayedValueText() {\n const count = this.getDisplayedValuesCount();\n const { table } = this.state;\n const { formatter } = this.props;\n\n if (count != null && table != null) {\n const formattedCount = formatter.getFormattedString(count, 'long');\n const formattedTableSize = formatter.getFormattedString(\n table.totalSize,\n 'long'\n );\n let prefix = '';\n if (count < 1000000) {\n prefix = 'Displaying ';\n }\n return `${prefix}${formattedCount} of ${formattedTableSize}`;\n }\n return null;\n }\n\n initSearchTable() {\n const { table } = this.props;\n if (table == null) {\n return;\n }\n\n const searchTablePromise = table.copy();\n this.searchTablePromise = searchTablePromise;\n this.searchTablePromise.then(searchTable => {\n if (this.searchTablePromise === searchTablePromise) {\n this.setState({ table: searchTable });\n this.searchTablePromise = null;\n } else {\n searchTable.close();\n }\n });\n }\n\n handleListChange(selectedValues, invertSelection) {\n this.setState({ selectedValues, invertSelection });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n handleSearchChange(event) {\n const searchText = event.target.value;\n this.setState({ searchText });\n }\n\n handleSelectAllClick() {\n this.resetSelection(true);\n }\n\n handleClearAllClick() {\n this.resetSelection(false);\n }\n\n handleUpdateFilterTimeout() {\n this.updateFilterTimer = null;\n this.updateTableFilter();\n }\n\n resetSelection(invertSelection) {\n const selectedValues = [];\n\n this.setState({ invertSelection, selectedValues });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n startUpdateFilterTimer() {\n this.stopUpdateFilterTimer();\n\n this.updateFilterTimer = setTimeout(\n this.handleUpdateFilterTimeout,\n AdvancedFilterCreatorSelectValue.searchDebounceTime\n );\n }\n\n stopUpdateFilterTimer() {\n if (this.updateFilterTimer) {\n clearTimeout(this.updateFilterTimer);\n this.updateFilterTimer = null;\n }\n }\n\n updateTableFilter() {\n const { table, searchText } = this.state;\n const { timeZone } = this.props;\n const column = table.columns[0];\n const filters = [];\n let error = null;\n if (searchText.length > 0) {\n let filter = null;\n if (TableUtils.isCharType(column.type)) {\n // Just exact match for char\n filter = TableUtils.makeQuickFilter(column, searchText);\n } else if (TableUtils.isTextType(column.type)) {\n // case insensitive & contains search text\n filter = TableUtils.makeQuickFilter(column, `~${searchText}`, timeZone);\n } else {\n // greater than or equal search for everything else\n // we may want to be smarter with some other types (like dates)\n filter = TableUtils.makeQuickFilter(\n column,\n `>=${searchText}`,\n timeZone\n );\n }\n\n if (filter != null) {\n filters.push(filter);\n } else {\n error = 'Invalid search text';\n }\n }\n\n this.setState({ filters, error });\n }\n\n render() {\n const {\n error,\n filters,\n invertSelection,\n selectedValues,\n searchText,\n table,\n } = this.state;\n const { formatter, showSearch } = this.props;\n const columnName = this.getColumnName();\n const displayedValuesText = this.getDisplayedValueText();\n const placeholderText = columnName ? `Find ${columnName}...` : '';\n\n return (\n <div className=\"advanced-filter-creator-select-value\">\n <div className={showSearch ? 'form-group' : ''}>\n <label htmlFor=\"advanced-filter-creator-select-value-input\">\n Select Values\n </label>\n {showSearch && (\n <input\n type=\"text\"\n className={classNames('form-control', {\n 'is-invalid': error != null,\n })}\n id=\"advanced-filter-creator-select-value-input\"\n placeholder={placeholderText}\n value={searchText}\n onChange={this.handleSearchChange}\n />\n )}\n </div>\n <AdvancedFilterCreatorSelectValueList\n table={table}\n filters={filters}\n invertSelection={invertSelection}\n selectedValues={selectedValues}\n formatter={formatter}\n onChange={this.handleListChange}\n />\n <div className=\"advanced-filter-creator-select-meta-row\">\n <div>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.handleSelectAllClick}\n >\n Select All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.handleClearAllClick}\n >\n Clear\n </button>\n </div>\n <CSSTransition\n in={displayedValuesText != null}\n timeout={250}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n >\n <div className=\"row-count-info\">{displayedValuesText}</div>\n </CSSTransition>\n </div>\n </div>\n );\n }\n}\n\nAdvancedFilterCreatorSelectValue.propTypes = {\n table: PropTypes.shape({\n close: PropTypes.func,\n columns: PropTypes.arrayOf(PropTypes.shape({ name: PropTypes.string })),\n copy: PropTypes.func,\n totalSize: PropTypes.number,\n }),\n invertSelection: PropTypes.bool,\n selectedValues: PropTypes.arrayOf(PropTypes.any),\n formatter: PropTypes.instanceOf(Formatter).isRequired,\n onChange: PropTypes.func,\n showSearch: PropTypes.bool,\n timeZone: PropTypes.string.isRequired,\n};\n\nAdvancedFilterCreatorSelectValue.defaultProps = {\n table: null,\n invertSelection: true,\n selectedValues: [],\n onChange: () => {},\n showSearch: true,\n};\n\nexport default AdvancedFilterCreatorSelectValue;\n"],"file":"AdvancedFilterCreatorSelectValue.js"}
1
+ {"version":3,"sources":["../src/AdvancedFilterCreatorSelectValue.tsx"],"names":["React","PureComponent","CSSTransition","classNames","TableUtils","AdvancedFilterCreatorSelectValueList","AdvancedFilterCreatorSelectValue","constructor","props","handleSelectAllClick","bind","handleClearAllClick","handleListChange","handleSearchChange","handleUpdateFilterTimeout","invertSelection","selectedValues","state","filters","searchText","componentDidMount","initSearchTable","componentDidUpdate","prevProps","prevState","table","setState","searchTable","close","startUpdateFilterTimer","componentWillUnmount","searchTablePromise","undefined","stopUpdateFilterTimer","getColumnName","columns","name","getDisplayedValuesCount","totalSize","length","getDisplayedValueText","count","formatter","formattedCount","getFormattedString","formattedTableSize","prefix","copy","then","onChange","event","target","value","resetSelection","updateFilterTimer","updateTableFilter","setTimeout","searchDebounceTime","clearTimeout","timeZone","column","error","filter","isCharType","type","makeQuickFilter","isTextType","push","render","showSearch","columnName","displayedValuesText","placeholderText"],"mappings":"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","sourcesContent":["/* eslint react/no-did-update-set-state: \"off\" */\nimport React, { PureComponent } from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport classNames from 'classnames';\nimport { Formatter, TableUtils } from '@deephaven/jsapi-utils';\nimport { FilterCondition, Table } from '@deephaven/jsapi-shim';\nimport AdvancedFilterCreatorSelectValueList from './AdvancedFilterCreatorSelectValueList';\nimport './AdvancedFilterCreatorSelectValue.scss';\nimport { ColumnName } from './CommonTypes';\n\ninterface AdvancedFilterCreatorSelectValueProps<T> {\n invertSelection: boolean;\n selectedValues: T[];\n table: Table;\n formatter: Formatter;\n onChange: (selectedValues: T[], invertSelection: boolean) => void;\n showSearch: boolean;\n timeZone: string;\n}\n\ninterface AdvancedFilterCreatorSelectValueState<T> {\n error?: string;\n filters: FilterCondition[];\n invertSelection: boolean;\n selectedValues: T[];\n searchText: string;\n table?: Table;\n}\n\nclass AdvancedFilterCreatorSelectValue<T = unknown> extends PureComponent<\n AdvancedFilterCreatorSelectValueProps<T>,\n AdvancedFilterCreatorSelectValueState<T>\n> {\n static searchDebounceTime = 250;\n\n static defaultProps = {\n table: null,\n invertSelection: true,\n selectedValues: [],\n onChange: (): void => undefined,\n showSearch: true,\n };\n\n constructor(props: AdvancedFilterCreatorSelectValueProps<T>) {\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 const { invertSelection, selectedValues } = props;\n\n this.state = {\n filters: [],\n invertSelection,\n selectedValues,\n searchText: '',\n };\n }\n\n componentDidMount(): void {\n this.initSearchTable();\n }\n\n componentDidUpdate(\n prevProps: AdvancedFilterCreatorSelectValueProps<T>,\n prevState: AdvancedFilterCreatorSelectValueState<T>\n ): void {\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\n if (searchTable !== prevState.table) {\n if (prevState.table != null) {\n prevState.table.close();\n }\n if (searchTable != null) {\n this.startUpdateFilterTimer();\n }\n }\n\n if (searchText !== prevState.searchText) {\n this.startUpdateFilterTimer();\n }\n }\n\n componentWillUnmount(): void {\n const { table } = this.state;\n if (table != null) {\n table.close();\n }\n this.searchTablePromise = undefined;\n\n this.stopUpdateFilterTimer();\n }\n\n searchTablePromise?: Promise<Table>;\n\n updateFilterTimer?: ReturnType<typeof setTimeout>;\n\n getColumnName(): ColumnName {\n const { table } = this.props;\n if (table != null) {\n return table.columns[0].name;\n }\n return '';\n }\n\n getDisplayedValuesCount(): number | null {\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(): string | null {\n const count = this.getDisplayedValuesCount();\n const { table } = this.state;\n\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(): void {\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 = undefined;\n } else {\n searchTable.close();\n }\n });\n }\n\n handleListChange(selectedValues: T[], invertSelection: boolean): void {\n this.setState({ selectedValues, invertSelection });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n handleSearchChange(event: React.ChangeEvent<HTMLInputElement>): void {\n const searchText = event.target.value;\n this.setState({ searchText });\n }\n\n handleSelectAllClick(): void {\n this.resetSelection(true);\n }\n\n handleClearAllClick(): void {\n this.resetSelection(false);\n }\n\n handleUpdateFilterTimeout(): void {\n this.updateFilterTimer = undefined;\n this.updateTableFilter();\n }\n\n resetSelection(invertSelection: boolean): void {\n const selectedValues: T[] = [];\n\n this.setState({ invertSelection, selectedValues });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n startUpdateFilterTimer(): void {\n this.stopUpdateFilterTimer();\n\n this.updateFilterTimer = setTimeout(\n this.handleUpdateFilterTimeout,\n AdvancedFilterCreatorSelectValue.searchDebounceTime\n );\n }\n\n stopUpdateFilterTimer(): void {\n if (this.updateFilterTimer != null) {\n clearTimeout(this.updateFilterTimer);\n this.updateFilterTimer = undefined;\n }\n }\n\n updateTableFilter(): void {\n const { table, searchText } = this.state;\n const { timeZone } = this.props;\n const column = table?.columns[0];\n const filters = [];\n if (column == null) {\n return;\n }\n let error;\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(): React.ReactElement {\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 {table && (\n <AdvancedFilterCreatorSelectValueList\n table={table}\n filters={filters}\n invertSelection={invertSelection}\n selectedValues={selectedValues}\n formatter={formatter}\n onChange={this.handleListChange}\n />\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\nexport default AdvancedFilterCreatorSelectValue;\n"],"file":"AdvancedFilterCreatorSelectValue.js"}