@deephaven/iris-grid 0.12.1-beta.2 → 0.12.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.
- package/dist/AdvancedFilterCreator.d.ts +2 -2
- package/dist/AdvancedFilterCreator.d.ts.map +1 -1
- package/dist/AdvancedFilterCreator.js +2 -3
- package/dist/AdvancedFilterCreator.js.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.d.ts +5 -11
- package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorFilterItem.js +21 -121
- package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.d.ts +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.d.ts.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValue.js +1 -2
- package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.d.ts +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js +1 -1
- package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
- package/dist/CrossColumnSearch.js +1 -1
- package/dist/CrossColumnSearch.js.map +1 -1
- package/dist/IrisGrid.d.ts +1 -1
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +42 -48
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridMetricCalculator.js +1 -1
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/IrisGridModel.d.ts +18 -2
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +36 -0
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelFactory.d.ts +1 -1
- package/dist/IrisGridModelFactory.js +1 -1
- package/dist/IrisGridModelFactory.js.map +1 -1
- package/dist/IrisGridModelUpdater.d.ts +1 -2
- package/dist/IrisGridModelUpdater.d.ts.map +1 -1
- package/dist/IrisGridModelUpdater.js +1 -1
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridProxyModel.d.ts +1 -1
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js +21 -2
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridRenderer.js +1 -1
- package/dist/IrisGridRenderer.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +2 -6
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +61 -49
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridTestUtils.d.ts +1 -1
- package/dist/IrisGridTestUtils.js +1 -1
- package/dist/IrisGridTestUtils.js.map +1 -1
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +1 -2
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/format-context-menus/DateTimeFormatContextMenu.d.ts +1 -2
- package/dist/format-context-menus/DateTimeFormatContextMenu.d.ts.map +1 -1
- package/dist/format-context-menus/DateTimeFormatContextMenu.js +1 -2
- package/dist/format-context-menus/DateTimeFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.d.ts +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.d.ts.map +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.js +1 -1
- package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.d.ts +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.d.ts.map +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.js +1 -1
- package/dist/format-context-menus/FormatContextMenuUtils.js.map +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.d.ts +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.d.ts.map +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.js +1 -1
- package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
- package/dist/index.d.ts +1 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -5
- package/dist/index.js.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.d.ts.map +1 -1
- package/dist/key-handlers/ReverseKeyHandler.js +1 -1
- package/dist/key-handlers/ReverseKeyHandler.js.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
- package/dist/mousehandlers/IrisGridContextMenuHandler.js +4 -4
- package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
- package/dist/sidebar/RollupRows.js +1 -1
- package/dist/sidebar/RollupRows.js.map +1 -1
- package/dist/sidebar/TableSaver.d.ts +2 -2
- package/dist/sidebar/TableSaver.d.ts.map +1 -1
- package/dist/sidebar/TableSaver.js +1 -2
- package/dist/sidebar/TableSaver.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.d.ts.map +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js +1 -1
- package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js +1 -1
- package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +1 -1
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +1 -1
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
- package/dist/sidebar/index.d.ts +2 -1
- package/dist/sidebar/index.js +2 -1
- package/dist/sidebar/index.js.map +1 -1
- package/package.json +14 -12
- package/dist/DateUtils.d.ts +0 -82
- package/dist/DateUtils.d.ts.map +0 -1
- package/dist/DateUtils.js +0 -285
- package/dist/DateUtils.js.map +0 -1
- package/dist/Formatter.d.ts +0 -65
- package/dist/Formatter.d.ts.map +0 -1
- package/dist/Formatter.js +0 -169
- package/dist/Formatter.js.map +0 -1
- package/dist/FormatterUtils.d.ts +0 -24
- package/dist/FormatterUtils.d.ts.map +0 -1
- package/dist/FormatterUtils.js +0 -42
- package/dist/FormatterUtils.js.map +0 -1
- package/dist/TableUtils.d.ts +0 -191
- package/dist/TableUtils.d.ts.map +0 -1
- package/dist/TableUtils.js +0 -1326
- package/dist/TableUtils.js.map +0 -1
- package/dist/filters/FilterOperator.d.ts +0 -3
- package/dist/filters/FilterOperator.d.ts.map +0 -1
- package/dist/filters/FilterOperator.js +0 -2
- package/dist/filters/FilterOperator.js.map +0 -1
- package/dist/filters/FilterType.d.ts +0 -3
- package/dist/filters/FilterType.d.ts.map +0 -1
- package/dist/filters/FilterType.js +0 -2
- package/dist/filters/FilterType.js.map +0 -1
- package/dist/filters/index.d.ts +0 -3
- package/dist/filters/index.d.ts.map +0 -1
- package/dist/filters/index.js +0 -3
- package/dist/filters/index.js.map +0 -1
- package/dist/formatters/BooleanColumnFormatter.d.ts +0 -7
- package/dist/formatters/BooleanColumnFormatter.d.ts.map +0 -1
- package/dist/formatters/BooleanColumnFormatter.js +0 -26
- package/dist/formatters/BooleanColumnFormatter.js.map +0 -1
- package/dist/formatters/CharColumnFormatter.d.ts +0 -7
- package/dist/formatters/CharColumnFormatter.d.ts.map +0 -1
- package/dist/formatters/CharColumnFormatter.js +0 -15
- package/dist/formatters/CharColumnFormatter.js.map +0 -1
- package/dist/formatters/DateTimeColumnFormatter.d.ts +0 -40
- package/dist/formatters/DateTimeColumnFormatter.d.ts.map +0 -1
- package/dist/formatters/DateTimeColumnFormatter.js +0 -123
- package/dist/formatters/DateTimeColumnFormatter.js.map +0 -1
- package/dist/formatters/DecimalColumnFormatter.d.ts +0 -64
- package/dist/formatters/DecimalColumnFormatter.d.ts.map +0 -1
- package/dist/formatters/DecimalColumnFormatter.js +0 -128
- package/dist/formatters/DecimalColumnFormatter.js.map +0 -1
- package/dist/formatters/DefaultColumnFormatter.d.ts +0 -6
- package/dist/formatters/DefaultColumnFormatter.d.ts.map +0 -1
- package/dist/formatters/DefaultColumnFormatter.js +0 -14
- package/dist/formatters/DefaultColumnFormatter.js.map +0 -1
- package/dist/formatters/IntegerColumnFormatter.d.ts +0 -60
- package/dist/formatters/IntegerColumnFormatter.d.ts.map +0 -1
- package/dist/formatters/IntegerColumnFormatter.js +0 -121
- package/dist/formatters/IntegerColumnFormatter.js.map +0 -1
- package/dist/formatters/StringColumnFormatter.d.ts +0 -7
- package/dist/formatters/StringColumnFormatter.d.ts.map +0 -1
- package/dist/formatters/StringColumnFormatter.js +0 -13
- package/dist/formatters/StringColumnFormatter.js.map +0 -1
- package/dist/formatters/TableColumnFormatter.d.ts +0 -44
- package/dist/formatters/TableColumnFormatter.d.ts.map +0 -1
- package/dist/formatters/TableColumnFormatter.js +0 -65
- package/dist/formatters/TableColumnFormatter.js.map +0 -1
- package/dist/formatters/index.d.ts +0 -9
- package/dist/formatters/index.d.ts.map +0 -1
- package/dist/formatters/index.js +0 -9
- package/dist/formatters/index.js.map +0 -1
|
@@ -3,9 +3,9 @@ import React, { PureComponent } from 'react';
|
|
|
3
3
|
import PropTypes from 'prop-types';
|
|
4
4
|
import { CSSTransition } from 'react-transition-group';
|
|
5
5
|
import dh, { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';
|
|
6
|
+
import { Formatter } from '@deephaven/jsapi-utils';
|
|
6
7
|
import { LoadingSpinner, SelectValueList } from '@deephaven/components';
|
|
7
8
|
import Log from '@deephaven/log';
|
|
8
|
-
import Formatter from "./Formatter.js";
|
|
9
9
|
var log = Log.module('AdvancedFilterCreatorSelectValueList');
|
|
10
10
|
/**
|
|
11
11
|
* Select values from a long scrollable list.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/AdvancedFilterCreatorSelectValueList.jsx"],"names":["React","PureComponent","PropTypes","CSSTransition","dh","APIPropTypes","LoadingSpinner","SelectValueList","Log","Formatter","log","module","AdvancedFilterCreatorSelectValueList","indexOf","value","values","i","length","v","valueOf","constructor","props","handleSelect","bind","handleViewportChange","handleSelectionUpdate","handleTableUpdate","list","selectedValues","state","itemCount","items","offset","isLoading","componentDidMount","table","startListening","componentDidUpdate","prevProps","filters","invertSelection","stopListening","resetViewport","setState","applyFilter","componentWillUnmount","itemIndex","concat","selectedIndex","splice","push","isSelected","visibleItemIndex","onChange","top","bottom","updateViewport","updateItemSelection","event","data","detail","formatter","column","columns","r","rows","row","get","displayValue","getFormattedString","type","name","isValueSelected","debug2","size","addEventListener","Table","EVENT_UPDATED","removeEventListener","topRow","bottomRow","item","viewportSize","Math","max","setViewport","render","propTypes","shape","func","arrayOf","string","number","bool","any","FilterCondition","isRequired","instanceOf","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 dh, { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';\nimport { LoadingSpinner, SelectValueList } from '@deephaven/components';\nimport Log from '@deephaven/log';\nimport Formatter from './Formatter';\n\nconst log = Log.module('AdvancedFilterCreatorSelectValueList');\n\n/**\n * Select values from a long scrollable list.\n * Swaps items in and out for infinite scrolling\n */\nclass AdvancedFilterCreatorSelectValueList extends PureComponent {\n /**\n * Get the index of a value in an array. Has some special handling for some types, like DateTimes and Longs.\n * @param {Any} value The value to search for\n * @param {Array} values The array of values to search within\n */\n static indexOf(value, values) {\n for (let i = 0; i < values.length; i += 1) {\n const v = values[i];\n if (\n v === value ||\n (v != null &&\n v.valueOf &&\n value != null &&\n value.valueOf &&\n v.valueOf() === value.valueOf())\n ) {\n return i;\n }\n }\n\n return -1;\n }\n\n constructor(props) {\n super(props);\n\n this.handleSelect = this.handleSelect.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n this.handleSelectionUpdate = this.handleSelectionUpdate.bind(this);\n this.handleTableUpdate = this.handleTableUpdate.bind(this);\n\n this.list = null;\n\n const { selectedValues } = this.props;\n\n this.state = {\n itemCount: 0,\n items: [],\n offset: 0,\n selectedValues,\n isLoading: true,\n };\n }\n\n componentDidMount() {\n const { table } = this.props;\n this.startListening(table);\n }\n\n componentDidUpdate(prevProps) {\n const { filters, invertSelection, selectedValues, table } = this.props;\n if (prevProps.table !== table) {\n this.stopListening(prevProps.table);\n this.startListening(table);\n this.resetViewport();\n }\n\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({ selectedValues: [] }, this.handleSelectionUpdate);\n }\n\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({ selectedValues }, this.handleSelectionUpdate);\n }\n\n if (prevProps.filters !== filters) {\n table.applyFilter(filters);\n this.resetViewport();\n }\n }\n\n componentWillUnmount() {\n this.stopListening();\n }\n\n handleSelect(itemIndex, value) {\n const { invertSelection } = this.props;\n let { selectedValues } = this.state;\n selectedValues = [].concat(selectedValues);\n const selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(\n value,\n selectedValues\n );\n if (selectedIndex >= 0) {\n selectedValues.splice(selectedIndex, 1);\n } else {\n selectedValues.push(value);\n }\n\n let isSelected = selectedIndex < 0;\n if (invertSelection) {\n isSelected = !isSelected;\n }\n\n const { offset } = this.state;\n let { items } = this.state;\n items = [].concat(items);\n const visibleItemIndex = itemIndex - offset;\n if (visibleItemIndex >= 0 && visibleItemIndex < items.length) {\n items[visibleItemIndex].isSelected = isSelected;\n }\n\n this.setState({ items, selectedValues });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n handleViewportChange(top, bottom) {\n this.updateViewport(top, bottom);\n }\n\n handleSelectionUpdate() {\n this.updateItemSelection();\n }\n\n handleTableUpdate(event) {\n const data = event.detail;\n const { offset } = data;\n\n const items = [];\n const { table, formatter } = this.props;\n const column = table.columns[0];\n for (let r = 0; r < data.rows.length; r += 1) {\n const row = data.rows[r];\n const value = row.get(column);\n const displayValue = formatter.getFormattedString(\n value,\n column.type,\n column.name\n );\n const isSelected = this.isValueSelected(value);\n items.push({\n displayValue,\n value,\n isSelected,\n });\n }\n\n log.debug2('Received table update:', offset, items.length);\n\n const itemCount = table.size;\n this.setState({ itemCount, items, offset, isLoading: false });\n }\n\n isValueSelected(value) {\n const { invertSelection } = this.props;\n const { selectedValues } = this.state;\n\n // Need to check if any of the valueOf matches, timestamp value that is equal\n const selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(\n value,\n selectedValues\n );\n\n return invertSelection ? selectedIndex < 0 : selectedIndex >= 0;\n }\n\n startListening(table) {\n if (table != null) {\n table.addEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n }\n }\n\n stopListening(table) {\n if (table != null) {\n table.removeEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n }\n }\n\n resetViewport() {\n if (this.list) {\n this.updateViewport(this.list.topRow, this.list.bottomRow, true);\n }\n }\n\n updateItemSelection() {\n let { items } = this.state;\n\n items = [].concat(items);\n\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const { value } = item;\n item.isSelected = this.isValueSelected(value);\n }\n\n this.setState({ items });\n }\n\n updateViewport(top, bottom, isLoading = false) {\n const { table } = this.props;\n if (table == null) {\n return;\n }\n\n if (isLoading) {\n this.setState({ isLoading: true });\n }\n\n const viewportSize = bottom - top + 1;\n const topRow = Math.max(0, top - viewportSize * 3);\n const bottomRow = Math.max(topRow, bottom + viewportSize * 3);\n\n log.debug2('Setting viewport', topRow, ',', bottomRow);\n table.setViewport(topRow, bottomRow, null);\n }\n\n render() {\n const { offset, isLoading, items, itemCount } = this.state;\n\n return (\n <div className=\"select-value-list-wrapper\">\n <SelectValueList\n itemCount={itemCount}\n items={items}\n offset={offset}\n onSelect={this.handleSelect}\n onViewportChange={this.handleViewportChange}\n ref={list => {\n this.list = list;\n }}\n />\n <CSSTransition\n in={isLoading}\n timeout={250}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n >\n <div className=\"loading-list\">\n <LoadingSpinner className=\"loading-spinner-large\" />\n </div>\n </CSSTransition>\n </div>\n );\n }\n}\n\nAdvancedFilterCreatorSelectValueList.propTypes = {\n table: PropTypes.shape({\n addEventListener: PropTypes.func,\n removeEventListener: PropTypes.func,\n\n applyFilter: PropTypes.func,\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string,\n type: PropTypes.string,\n })\n ),\n setViewport: PropTypes.func,\n size: PropTypes.number,\n }),\n invertSelection: PropTypes.bool,\n selectedValues: PropTypes.arrayOf(PropTypes.any),\n onChange: PropTypes.func,\n filters: PropTypes.arrayOf(APIPropTypes.FilterCondition).isRequired,\n formatter: PropTypes.instanceOf(Formatter).isRequired,\n};\n\nAdvancedFilterCreatorSelectValueList.defaultProps = {\n table: null,\n invertSelection: true,\n selectedValues: [],\n onChange: () => {},\n};\n\nexport default AdvancedFilterCreatorSelectValueList;\n"],"file":"AdvancedFilterCreatorSelectValueList.js"}
|
|
1
|
+
{"version":3,"sources":["../src/AdvancedFilterCreatorSelectValueList.jsx"],"names":["React","PureComponent","PropTypes","CSSTransition","dh","APIPropTypes","Formatter","LoadingSpinner","SelectValueList","Log","log","module","AdvancedFilterCreatorSelectValueList","indexOf","value","values","i","length","v","valueOf","constructor","props","handleSelect","bind","handleViewportChange","handleSelectionUpdate","handleTableUpdate","list","selectedValues","state","itemCount","items","offset","isLoading","componentDidMount","table","startListening","componentDidUpdate","prevProps","filters","invertSelection","stopListening","resetViewport","setState","applyFilter","componentWillUnmount","itemIndex","concat","selectedIndex","splice","push","isSelected","visibleItemIndex","onChange","top","bottom","updateViewport","updateItemSelection","event","data","detail","formatter","column","columns","r","rows","row","get","displayValue","getFormattedString","type","name","isValueSelected","debug2","size","addEventListener","Table","EVENT_UPDATED","removeEventListener","topRow","bottomRow","item","viewportSize","Math","max","setViewport","render","propTypes","shape","func","arrayOf","string","number","bool","any","FilterCondition","isRequired","instanceOf","defaultProps"],"mappings":"AAAA;AACA,OAAOA,KAAP,IAAgBC,aAAhB,QAAqC,OAArC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,aAAT,QAA8B,wBAA9B;AACA,OAAOC,EAAP,IAAaF,SAAS,IAAIG,YAA1B,QAA8C,uBAA9C;AACA,SAASC,SAAT,QAA0B,wBAA1B;AACA,SAASC,cAAT,EAAyBC,eAAzB,QAAgD,uBAAhD;AACA,OAAOC,GAAP,MAAgB,gBAAhB;AAEA,IAAMC,GAAG,GAAGD,GAAG,CAACE,MAAJ,CAAW,sCAAX,CAAZ;AAEA;AACA;AACA;AACA;;AACA,MAAMC,oCAAN,SAAmDX,aAAnD,CAAiE;AAC/D;AACF;AACA;AACA;AACA;AACgB,SAAPY,OAAO,CAACC,KAAD,EAAQC,MAAR,EAAgB;AAC5B,SAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGD,MAAM,CAACE,MAA3B,EAAmCD,CAAC,IAAI,CAAxC,EAA2C;AACzC,UAAME,CAAC,GAAGH,MAAM,CAACC,CAAD,CAAhB;;AACA,UACEE,CAAC,KAAKJ,KAAN,IACCI,CAAC,IAAI,IAAL,IACCA,CAAC,CAACC,OADH,IAECL,KAAK,IAAI,IAFV,IAGCA,KAAK,CAACK,OAHP,IAICD,CAAC,CAACC,OAAF,OAAgBL,KAAK,CAACK,OAAN,EANpB,EAOE;AACA,eAAOH,CAAP;AACD;AACF;;AAED,WAAO,CAAC,CAAR;AACD;;AAEDI,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;AAEA,SAAKC,YAAL,GAAoB,KAAKA,YAAL,CAAkBC,IAAlB,CAAuB,IAAvB,CAApB;AACA,SAAKC,oBAAL,GAA4B,KAAKA,oBAAL,CAA0BD,IAA1B,CAA+B,IAA/B,CAA5B;AACA,SAAKE,qBAAL,GAA6B,KAAKA,qBAAL,CAA2BF,IAA3B,CAAgC,IAAhC,CAA7B;AACA,SAAKG,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBH,IAAvB,CAA4B,IAA5B,CAAzB;AAEA,SAAKI,IAAL,GAAY,IAAZ;AAEA,QAAM;AAAEC,MAAAA;AAAF,QAAqB,KAAKP,KAAhC;AAEA,SAAKQ,KAAL,GAAa;AACXC,MAAAA,SAAS,EAAE,CADA;AAEXC,MAAAA,KAAK,EAAE,EAFI;AAGXC,MAAAA,MAAM,EAAE,CAHG;AAIXJ,MAAAA,cAJW;AAKXK,MAAAA,SAAS,EAAE;AALA,KAAb;AAOD;;AAEDC,EAAAA,iBAAiB,GAAG;AAClB,QAAM;AAAEC,MAAAA;AAAF,QAAY,KAAKd,KAAvB;AACA,SAAKe,cAAL,CAAoBD,KAApB;AACD;;AAEDE,EAAAA,kBAAkB,CAACC,SAAD,EAAY;AAC5B,QAAM;AAAEC,MAAAA,OAAF;AAAWC,MAAAA,eAAX;AAA4BZ,MAAAA,cAA5B;AAA4CO,MAAAA;AAA5C,QAAsD,KAAKd,KAAjE;;AACA,QAAIiB,SAAS,CAACH,KAAV,KAAoBA,KAAxB,EAA+B;AAC7B,WAAKM,aAAL,CAAmBH,SAAS,CAACH,KAA7B;AACA,WAAKC,cAAL,CAAoBD,KAApB;AACA,WAAKO,aAAL;AACD;;AAED,QAAIJ,SAAS,CAACE,eAAV,KAA8BA,eAAlC,EAAmD;AACjD,WAAKG,QAAL,CAAc;AAAEf,QAAAA,cAAc,EAAE;AAAlB,OAAd,EAAsC,KAAKH,qBAA3C;AACD;;AAED,QAAIa,SAAS,CAACV,cAAV,KAA6BA,cAAjC,EAAiD;AAC/C,WAAKe,QAAL,CAAc;AAAEf,QAAAA;AAAF,OAAd,EAAkC,KAAKH,qBAAvC;AACD;;AAED,QAAIa,SAAS,CAACC,OAAV,KAAsBA,OAA1B,EAAmC;AACjCJ,MAAAA,KAAK,CAACS,WAAN,CAAkBL,OAAlB;AACA,WAAKG,aAAL;AACD;AACF;;AAEDG,EAAAA,oBAAoB,GAAG;AACrB,SAAKJ,aAAL;AACD;;AAEDnB,EAAAA,YAAY,CAACwB,SAAD,EAAYhC,KAAZ,EAAmB;AAC7B,QAAM;AAAE0B,MAAAA;AAAF,QAAsB,KAAKnB,KAAjC;AACA,QAAI;AAAEO,MAAAA;AAAF,QAAqB,KAAKC,KAA9B;AACAD,IAAAA,cAAc,GAAG,GAAGmB,MAAH,CAAUnB,cAAV,CAAjB;AACA,QAAMoB,aAAa,GAAGpC,oCAAoC,CAACC,OAArC,CACpBC,KADoB,EAEpBc,cAFoB,CAAtB;;AAIA,QAAIoB,aAAa,IAAI,CAArB,EAAwB;AACtBpB,MAAAA,cAAc,CAACqB,MAAf,CAAsBD,aAAtB,EAAqC,CAArC;AACD,KAFD,MAEO;AACLpB,MAAAA,cAAc,CAACsB,IAAf,CAAoBpC,KAApB;AACD;;AAED,QAAIqC,UAAU,GAAGH,aAAa,GAAG,CAAjC;;AACA,QAAIR,eAAJ,EAAqB;AACnBW,MAAAA,UAAU,GAAG,CAACA,UAAd;AACD;;AAED,QAAM;AAAEnB,MAAAA;AAAF,QAAa,KAAKH,KAAxB;AACA,QAAI;AAAEE,MAAAA;AAAF,QAAY,KAAKF,KAArB;AACAE,IAAAA,KAAK,GAAG,GAAGgB,MAAH,CAAUhB,KAAV,CAAR;AACA,QAAMqB,gBAAgB,GAAGN,SAAS,GAAGd,MAArC;;AACA,QAAIoB,gBAAgB,IAAI,CAApB,IAAyBA,gBAAgB,GAAGrB,KAAK,CAACd,MAAtD,EAA8D;AAC5Dc,MAAAA,KAAK,CAACqB,gBAAD,CAAL,CAAwBD,UAAxB,GAAqCA,UAArC;AACD;;AAED,SAAKR,QAAL,CAAc;AAAEZ,MAAAA,KAAF;AAASH,MAAAA;AAAT,KAAd;AAEA,QAAM;AAAEyB,MAAAA;AAAF,QAAe,KAAKhC,KAA1B;AACAgC,IAAAA,QAAQ,CAACzB,cAAD,EAAiBY,eAAjB,CAAR;AACD;;AAEDhB,EAAAA,oBAAoB,CAAC8B,GAAD,EAAMC,MAAN,EAAc;AAChC,SAAKC,cAAL,CAAoBF,GAApB,EAAyBC,MAAzB;AACD;;AAED9B,EAAAA,qBAAqB,GAAG;AACtB,SAAKgC,mBAAL;AACD;;AAED/B,EAAAA,iBAAiB,CAACgC,KAAD,EAAQ;AACvB,QAAMC,IAAI,GAAGD,KAAK,CAACE,MAAnB;AACA,QAAM;AAAE5B,MAAAA;AAAF,QAAa2B,IAAnB;AAEA,QAAM5B,KAAK,GAAG,EAAd;AACA,QAAM;AAAEI,MAAAA,KAAF;AAAS0B,MAAAA;AAAT,QAAuB,KAAKxC,KAAlC;AACA,QAAMyC,MAAM,GAAG3B,KAAK,CAAC4B,OAAN,CAAc,CAAd,CAAf;;AACA,SAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGL,IAAI,CAACM,IAAL,CAAUhD,MAA9B,EAAsC+C,CAAC,IAAI,CAA3C,EAA8C;AAC5C,UAAME,GAAG,GAAGP,IAAI,CAACM,IAAL,CAAUD,CAAV,CAAZ;AACA,UAAMlD,KAAK,GAAGoD,GAAG,CAACC,GAAJ,CAAQL,MAAR,CAAd;AACA,UAAMM,YAAY,GAAGP,SAAS,CAACQ,kBAAV,CACnBvD,KADmB,EAEnBgD,MAAM,CAACQ,IAFY,EAGnBR,MAAM,CAACS,IAHY,CAArB;AAKA,UAAMpB,UAAU,GAAG,KAAKqB,eAAL,CAAqB1D,KAArB,CAAnB;AACAiB,MAAAA,KAAK,CAACmB,IAAN,CAAW;AACTkB,QAAAA,YADS;AAETtD,QAAAA,KAFS;AAGTqC,QAAAA;AAHS,OAAX;AAKD;;AAEDzC,IAAAA,GAAG,CAAC+D,MAAJ,CAAW,wBAAX,EAAqCzC,MAArC,EAA6CD,KAAK,CAACd,MAAnD;AAEA,QAAMa,SAAS,GAAGK,KAAK,CAACuC,IAAxB;AACA,SAAK/B,QAAL,CAAc;AAAEb,MAAAA,SAAF;AAAaC,MAAAA,KAAb;AAAoBC,MAAAA,MAApB;AAA4BC,MAAAA,SAAS,EAAE;AAAvC,KAAd;AACD;;AAEDuC,EAAAA,eAAe,CAAC1D,KAAD,EAAQ;AACrB,QAAM;AAAE0B,MAAAA;AAAF,QAAsB,KAAKnB,KAAjC;AACA,QAAM;AAAEO,MAAAA;AAAF,QAAqB,KAAKC,KAAhC,CAFqB,CAIrB;;AACA,QAAMmB,aAAa,GAAGpC,oCAAoC,CAACC,OAArC,CACpBC,KADoB,EAEpBc,cAFoB,CAAtB;AAKA,WAAOY,eAAe,GAAGQ,aAAa,GAAG,CAAnB,GAAuBA,aAAa,IAAI,CAA9D;AACD;;AAEDZ,EAAAA,cAAc,CAACD,KAAD,EAAQ;AACpB,QAAIA,KAAK,IAAI,IAAb,EAAmB;AACjBA,MAAAA,KAAK,CAACwC,gBAAN,CAAuBvE,EAAE,CAACwE,KAAH,CAASC,aAAhC,EAA+C,KAAKnD,iBAApD;AACD;AACF;;AAEDe,EAAAA,aAAa,CAACN,KAAD,EAAQ;AACnB,QAAIA,KAAK,IAAI,IAAb,EAAmB;AACjBA,MAAAA,KAAK,CAAC2C,mBAAN,CAA0B1E,EAAE,CAACwE,KAAH,CAASC,aAAnC,EAAkD,KAAKnD,iBAAvD;AACD;AACF;;AAEDgB,EAAAA,aAAa,GAAG;AACd,QAAI,KAAKf,IAAT,EAAe;AACb,WAAK6B,cAAL,CAAoB,KAAK7B,IAAL,CAAUoD,MAA9B,EAAsC,KAAKpD,IAAL,CAAUqD,SAAhD,EAA2D,IAA3D;AACD;AACF;;AAEDvB,EAAAA,mBAAmB,GAAG;AACpB,QAAI;AAAE1B,MAAAA;AAAF,QAAY,KAAKF,KAArB;AAEAE,IAAAA,KAAK,GAAG,GAAGgB,MAAH,CAAUhB,KAAV,CAAR;;AAEA,SAAK,IAAIf,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGe,KAAK,CAACd,MAA1B,EAAkCD,CAAC,IAAI,CAAvC,EAA0C;AACxC,UAAMiE,IAAI,GAAGlD,KAAK,CAACf,CAAD,CAAlB;AACA,UAAM;AAAEF,QAAAA;AAAF,UAAYmE,IAAlB;AACAA,MAAAA,IAAI,CAAC9B,UAAL,GAAkB,KAAKqB,eAAL,CAAqB1D,KAArB,CAAlB;AACD;;AAED,SAAK6B,QAAL,CAAc;AAAEZ,MAAAA;AAAF,KAAd;AACD;;AAEDyB,EAAAA,cAAc,CAACF,GAAD,EAAMC,MAAN,EAAiC;AAAA,QAAnBtB,SAAmB,uEAAP,KAAO;AAC7C,QAAM;AAAEE,MAAAA;AAAF,QAAY,KAAKd,KAAvB;;AACA,QAAIc,KAAK,IAAI,IAAb,EAAmB;AACjB;AACD;;AAED,QAAIF,SAAJ,EAAe;AACb,WAAKU,QAAL,CAAc;AAAEV,QAAAA,SAAS,EAAE;AAAb,OAAd;AACD;;AAED,QAAMiD,YAAY,GAAG3B,MAAM,GAAGD,GAAT,GAAe,CAApC;AACA,QAAMyB,MAAM,GAAGI,IAAI,CAACC,GAAL,CAAS,CAAT,EAAY9B,GAAG,GAAG4B,YAAY,GAAG,CAAjC,CAAf;AACA,QAAMF,SAAS,GAAGG,IAAI,CAACC,GAAL,CAASL,MAAT,EAAiBxB,MAAM,GAAG2B,YAAY,GAAG,CAAzC,CAAlB;AAEAxE,IAAAA,GAAG,CAAC+D,MAAJ,CAAW,kBAAX,EAA+BM,MAA/B,EAAuC,GAAvC,EAA4CC,SAA5C;AACA7C,IAAAA,KAAK,CAACkD,WAAN,CAAkBN,MAAlB,EAA0BC,SAA1B,EAAqC,IAArC;AACD;;AAEDM,EAAAA,MAAM,GAAG;AACP,QAAM;AAAEtD,MAAAA,MAAF;AAAUC,MAAAA,SAAV;AAAqBF,MAAAA,KAArB;AAA4BD,MAAAA;AAA5B,QAA0C,KAAKD,KAArD;AAEA,wBACE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE,oBAAC,eAAD;AACE,MAAA,SAAS,EAAEC,SADb;AAEE,MAAA,KAAK,EAAEC,KAFT;AAGE,MAAA,MAAM,EAAEC,MAHV;AAIE,MAAA,QAAQ,EAAE,KAAKV,YAJjB;AAKE,MAAA,gBAAgB,EAAE,KAAKE,oBALzB;AAME,MAAA,GAAG,EAAEG,IAAI,IAAI;AACX,aAAKA,IAAL,GAAYA,IAAZ;AACD;AARH,MADF,eAWE,oBAAC,aAAD;AACE,MAAA,EAAE,EAAEM,SADN;AAEE,MAAA,OAAO,EAAE,GAFX;AAGE,MAAA,UAAU,EAAC,MAHb;AAIE,MAAA,YAAY,MAJd;AAKE,MAAA,aAAa;AALf,oBAOE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE,oBAAC,cAAD;AAAgB,MAAA,SAAS,EAAC;AAA1B,MADF,CAPF,CAXF,CADF;AAyBD;;AA7O8D;;AAgPjErB,oCAAoC,CAAC2E,SAArC,GAAiD;AAC/CpD,EAAAA,KAAK,EAAEjC,SAAS,CAACsF,KAAV,CAAgB;AACrBb,IAAAA,gBAAgB,EAAEzE,SAAS,CAACuF,IADP;AAErBX,IAAAA,mBAAmB,EAAE5E,SAAS,CAACuF,IAFV;AAIrB7C,IAAAA,WAAW,EAAE1C,SAAS,CAACuF,IAJF;AAKrB1B,IAAAA,OAAO,EAAE7D,SAAS,CAACwF,OAAV,CACPxF,SAAS,CAACsF,KAAV,CAAgB;AACdjB,MAAAA,IAAI,EAAErE,SAAS,CAACyF,MADF;AAEdrB,MAAAA,IAAI,EAAEpE,SAAS,CAACyF;AAFF,KAAhB,CADO,CALY;AAWrBN,IAAAA,WAAW,EAAEnF,SAAS,CAACuF,IAXF;AAYrBf,IAAAA,IAAI,EAAExE,SAAS,CAAC0F;AAZK,GAAhB,CADwC;AAe/CpD,EAAAA,eAAe,EAAEtC,SAAS,CAAC2F,IAfoB;AAgB/CjE,EAAAA,cAAc,EAAE1B,SAAS,CAACwF,OAAV,CAAkBxF,SAAS,CAAC4F,GAA5B,CAhB+B;AAiB/CzC,EAAAA,QAAQ,EAAEnD,SAAS,CAACuF,IAjB2B;AAkB/ClD,EAAAA,OAAO,EAAErC,SAAS,CAACwF,OAAV,CAAkBrF,YAAY,CAAC0F,eAA/B,EAAgDC,UAlBV;AAmB/CnC,EAAAA,SAAS,EAAE3D,SAAS,CAAC+F,UAAV,CAAqB3F,SAArB,EAAgC0F;AAnBI,CAAjD;AAsBApF,oCAAoC,CAACsF,YAArC,GAAoD;AAClD/D,EAAAA,KAAK,EAAE,IAD2C;AAElDK,EAAAA,eAAe,EAAE,IAFiC;AAGlDZ,EAAAA,cAAc,EAAE,EAHkC;AAIlDyB,EAAAA,QAAQ,EAAE,MAAM,CAAE;AAJgC,CAApD;AAOA,eAAezC,oCAAf","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 dh, { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';\nimport { Formatter } from '@deephaven/jsapi-utils';\nimport { LoadingSpinner, SelectValueList } from '@deephaven/components';\nimport Log from '@deephaven/log';\n\nconst log = Log.module('AdvancedFilterCreatorSelectValueList');\n\n/**\n * Select values from a long scrollable list.\n * Swaps items in and out for infinite scrolling\n */\nclass AdvancedFilterCreatorSelectValueList extends PureComponent {\n /**\n * Get the index of a value in an array. Has some special handling for some types, like DateTimes and Longs.\n * @param {Any} value The value to search for\n * @param {Array} values The array of values to search within\n */\n static indexOf(value, values) {\n for (let i = 0; i < values.length; i += 1) {\n const v = values[i];\n if (\n v === value ||\n (v != null &&\n v.valueOf &&\n value != null &&\n value.valueOf &&\n v.valueOf() === value.valueOf())\n ) {\n return i;\n }\n }\n\n return -1;\n }\n\n constructor(props) {\n super(props);\n\n this.handleSelect = this.handleSelect.bind(this);\n this.handleViewportChange = this.handleViewportChange.bind(this);\n this.handleSelectionUpdate = this.handleSelectionUpdate.bind(this);\n this.handleTableUpdate = this.handleTableUpdate.bind(this);\n\n this.list = null;\n\n const { selectedValues } = this.props;\n\n this.state = {\n itemCount: 0,\n items: [],\n offset: 0,\n selectedValues,\n isLoading: true,\n };\n }\n\n componentDidMount() {\n const { table } = this.props;\n this.startListening(table);\n }\n\n componentDidUpdate(prevProps) {\n const { filters, invertSelection, selectedValues, table } = this.props;\n if (prevProps.table !== table) {\n this.stopListening(prevProps.table);\n this.startListening(table);\n this.resetViewport();\n }\n\n if (prevProps.invertSelection !== invertSelection) {\n this.setState({ selectedValues: [] }, this.handleSelectionUpdate);\n }\n\n if (prevProps.selectedValues !== selectedValues) {\n this.setState({ selectedValues }, this.handleSelectionUpdate);\n }\n\n if (prevProps.filters !== filters) {\n table.applyFilter(filters);\n this.resetViewport();\n }\n }\n\n componentWillUnmount() {\n this.stopListening();\n }\n\n handleSelect(itemIndex, value) {\n const { invertSelection } = this.props;\n let { selectedValues } = this.state;\n selectedValues = [].concat(selectedValues);\n const selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(\n value,\n selectedValues\n );\n if (selectedIndex >= 0) {\n selectedValues.splice(selectedIndex, 1);\n } else {\n selectedValues.push(value);\n }\n\n let isSelected = selectedIndex < 0;\n if (invertSelection) {\n isSelected = !isSelected;\n }\n\n const { offset } = this.state;\n let { items } = this.state;\n items = [].concat(items);\n const visibleItemIndex = itemIndex - offset;\n if (visibleItemIndex >= 0 && visibleItemIndex < items.length) {\n items[visibleItemIndex].isSelected = isSelected;\n }\n\n this.setState({ items, selectedValues });\n\n const { onChange } = this.props;\n onChange(selectedValues, invertSelection);\n }\n\n handleViewportChange(top, bottom) {\n this.updateViewport(top, bottom);\n }\n\n handleSelectionUpdate() {\n this.updateItemSelection();\n }\n\n handleTableUpdate(event) {\n const data = event.detail;\n const { offset } = data;\n\n const items = [];\n const { table, formatter } = this.props;\n const column = table.columns[0];\n for (let r = 0; r < data.rows.length; r += 1) {\n const row = data.rows[r];\n const value = row.get(column);\n const displayValue = formatter.getFormattedString(\n value,\n column.type,\n column.name\n );\n const isSelected = this.isValueSelected(value);\n items.push({\n displayValue,\n value,\n isSelected,\n });\n }\n\n log.debug2('Received table update:', offset, items.length);\n\n const itemCount = table.size;\n this.setState({ itemCount, items, offset, isLoading: false });\n }\n\n isValueSelected(value) {\n const { invertSelection } = this.props;\n const { selectedValues } = this.state;\n\n // Need to check if any of the valueOf matches, timestamp value that is equal\n const selectedIndex = AdvancedFilterCreatorSelectValueList.indexOf(\n value,\n selectedValues\n );\n\n return invertSelection ? selectedIndex < 0 : selectedIndex >= 0;\n }\n\n startListening(table) {\n if (table != null) {\n table.addEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n }\n }\n\n stopListening(table) {\n if (table != null) {\n table.removeEventListener(dh.Table.EVENT_UPDATED, this.handleTableUpdate);\n }\n }\n\n resetViewport() {\n if (this.list) {\n this.updateViewport(this.list.topRow, this.list.bottomRow, true);\n }\n }\n\n updateItemSelection() {\n let { items } = this.state;\n\n items = [].concat(items);\n\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n const { value } = item;\n item.isSelected = this.isValueSelected(value);\n }\n\n this.setState({ items });\n }\n\n updateViewport(top, bottom, isLoading = false) {\n const { table } = this.props;\n if (table == null) {\n return;\n }\n\n if (isLoading) {\n this.setState({ isLoading: true });\n }\n\n const viewportSize = bottom - top + 1;\n const topRow = Math.max(0, top - viewportSize * 3);\n const bottomRow = Math.max(topRow, bottom + viewportSize * 3);\n\n log.debug2('Setting viewport', topRow, ',', bottomRow);\n table.setViewport(topRow, bottomRow, null);\n }\n\n render() {\n const { offset, isLoading, items, itemCount } = this.state;\n\n return (\n <div className=\"select-value-list-wrapper\">\n <SelectValueList\n itemCount={itemCount}\n items={items}\n offset={offset}\n onSelect={this.handleSelect}\n onViewportChange={this.handleViewportChange}\n ref={list => {\n this.list = list;\n }}\n />\n <CSSTransition\n in={isLoading}\n timeout={250}\n classNames=\"fade\"\n mountOnEnter\n unmountOnExit\n >\n <div className=\"loading-list\">\n <LoadingSpinner className=\"loading-spinner-large\" />\n </div>\n </CSSTransition>\n </div>\n );\n }\n}\n\nAdvancedFilterCreatorSelectValueList.propTypes = {\n table: PropTypes.shape({\n addEventListener: PropTypes.func,\n removeEventListener: PropTypes.func,\n\n applyFilter: PropTypes.func,\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string,\n type: PropTypes.string,\n })\n ),\n setViewport: PropTypes.func,\n size: PropTypes.number,\n }),\n invertSelection: PropTypes.bool,\n selectedValues: PropTypes.arrayOf(PropTypes.any),\n onChange: PropTypes.func,\n filters: PropTypes.arrayOf(APIPropTypes.FilterCondition).isRequired,\n formatter: PropTypes.instanceOf(Formatter).isRequired,\n};\n\nAdvancedFilterCreatorSelectValueList.defaultProps = {\n table: null,\n invertSelection: true,\n selectedValues: [],\n onChange: () => {},\n};\n\nexport default AdvancedFilterCreatorSelectValueList;\n"],"file":"AdvancedFilterCreatorSelectValueList.js"}
|
|
@@ -4,7 +4,7 @@ import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
|
4
4
|
import { Checkbox, Popper, SearchInput, Tooltip } from '@deephaven/components';
|
|
5
5
|
import { dhGearFilled, dhCheckSquare, dhSquareFilled, dhRemoveSquareFilled, dhWarningCircleFilled, vsCircleLargeFilled } from '@deephaven/icons';
|
|
6
6
|
import dh from '@deephaven/jsapi-shim';
|
|
7
|
-
import TableUtils from
|
|
7
|
+
import { TableUtils } from '@deephaven/jsapi-utils';
|
|
8
8
|
import "./CrossColumnSearch.css";
|
|
9
9
|
|
|
10
10
|
class CrossColumnSearch extends PureComponent {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/CrossColumnSearch.jsx"],"names":["React","PureComponent","PropTypes","FontAwesomeIcon","Checkbox","Popper","SearchInput","Tooltip","dhGearFilled","dhCheckSquare","dhSquareFilled","dhRemoveSquareFilled","dhWarningCircleFilled","vsCircleLargeFilled","dh","TableUtils","CrossColumnSearch","createSearchFilter","searchValue","selectedColumns","columns","invertSelection","filterColumns","filter","column","includes","name","map","length","filterValue","FilterValue","ofString","searchFilter","FilterCondition","search","constructor","props","handleSearchValueChange","bind","toggleColumn","selectAll","clear","selectNumbers","searchField","createRef","state","isConfigureColumnsShown","focus","current","event","onChange","target","value","sendColumnChange","setInvertSelection","c","update","slice","push","isNumberType","type","render","hasAllColumnsSelected","hasNoColumnsSelected","icon","setState","substring","lastIndexOf","propTypes","string","isRequired","arrayOf","bool","func","shape"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,aAAhB,QAAqC,OAArC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,QAAT,EAAmBC,MAAnB,EAA2BC,WAA3B,EAAwCC,OAAxC,QAAuD,uBAAvD;AACA,SACEC,YADF,EAEEC,aAFF,EAGEC,cAHF,EAIEC,oBAJF,EAKEC,qBALF,EAMEC,mBANF,QAOO,kBAPP;AAQA,OAAOC,EAAP,MAAe,uBAAf;OACOC,U;;;AAGP,MAAMC,iBAAN,SAAgCf,aAAhC,CAA8C;AACnB,SAAlBgB,kBAAkB,CACvBC,WADuB,EAEvBC,eAFuB,EAGvBC,OAHuB,EAIvBC,eAJuB,EAKvB;AACA,QAAMC,aAAa,GAAGD,eAAe,GACjCD,OAAO,CACJG,MADH,CACUC,MAAM,IAAI,CAACL,eAAe,CAACM,QAAhB,CAAyBD,MAAM,CAACE,IAAhC,CADrB,EAEGC,GAFH,CAEOH,MAAM,IAAIA,MAAM,CAACE,IAFxB,CADiC,GAIjCP,eAJJ;;AAKA,QAAID,WAAW,IAAII,aAAa,CAACM,MAAd,GAAuB,CAA1C,EAA6C;AAC3C,UAAMC,WAAW,GAAGf,EAAE,CAACgB,WAAH,CAAeC,QAAf,CAAwBb,WAAxB,CAApB;AACA,UAAMc,YAAY,GAChBV,aAAa,CAACM,MAAd,KAAyBR,OAAO,CAACQ,MAAjC,GACId,EAAE,CAACmB,eAAH,CAAmBC,MAAnB,CAA0BL,WAA1B,CADJ,GAEIf,EAAE,CAACmB,eAAH,CAAmBC,MAAnB,CACEL,WADF,EAEET,OAAO,CACJG,MADH,CACUC,MAAM,IAAIF,aAAa,CAACG,QAAd,CAAuBD,MAAM,CAACE,IAA9B,CADpB,EAEGC,GAFH,CAEOH,MAAM,IAAIA,MAAM,CAACD,MAAP,EAFjB,CAFF,CAHN;AASA,aAAOS,YAAP;AACD;;AACD,WAAO,IAAP;AACD;;AAEDG,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;AACA,SAAKC,uBAAL,GAA+B,KAAKA,uBAAL,CAA6BC,IAA7B,CAAkC,IAAlC,CAA/B;AACA,SAAKC,YAAL,GAAoB,KAAKA,YAAL,CAAkBD,IAAlB,CAAuB,IAAvB,CAApB;AACA,SAAKE,SAAL,GAAiB,KAAKA,SAAL,CAAeF,IAAf,CAAoB,IAApB,CAAjB;AACA,SAAKG,KAAL,GAAa,KAAKA,KAAL,CAAWH,IAAX,CAAgB,IAAhB,CAAb;AACA,SAAKI,aAAL,GAAqB,KAAKA,aAAL,CAAmBJ,IAAnB,CAAwB,IAAxB,CAArB;AAEA,SAAKK,WAAL,gBAAmB3C,KAAK,CAAC4C,SAAN,EAAnB;AAEA,SAAKC,KAAL,GAAa;AACXC,MAAAA,uBAAuB,EAAE;AADd,KAAb;AAGD;;AAEDC,EAAAA,KAAK,GAAG;AACN,SAAKJ,WAAL,CAAiBK,OAAjB,CAAyBD,KAAzB;AACD;;AAEDV,EAAAA,uBAAuB,CAACY,KAAD,EAAQ;AAC7B,QAAM;AAAEC,MAAAA,QAAF;AAAY/B,MAAAA,eAAZ;AAA6BE,MAAAA;AAA7B,QAAiD,KAAKe,KAA5D;AACAc,IAAAA,QAAQ,CAACD,KAAK,CAACE,MAAN,CAAaC,KAAd,EAAqBjC,eAArB,EAAsCE,eAAtC,CAAR;AACD;;AAEDgC,EAAAA,gBAAgB,CAAClC,eAAD,EAAkBE,eAAlB,EAAmC;AACjD,QAAM;AAAE6B,MAAAA,QAAF;AAAYE,MAAAA;AAAZ,QAAsB,KAAKhB,KAAjC;AACAc,IAAAA,QAAQ,CAACE,KAAD,EAAQjC,eAAR,EAAyBE,eAAzB,CAAR;AACD;;AAEDiC,EAAAA,kBAAkB,CAACjC,eAAD,EAAkB;AAClC,QAAM;AAAE6B,MAAAA,QAAF;AAAYE,MAAAA;AAAZ,QAAsB,KAAKhB,KAAjC;AACAc,IAAAA,QAAQ,CAACE,KAAD,EAAQ,EAAR,EAAY/B,eAAZ,CAAR;AACD;;AAEDkB,EAAAA,YAAY,CAACb,IAAD,EAAO;AACjB,QAAM;AAAEP,MAAAA,eAAF;AAAmBE,MAAAA;AAAnB,QAAuC,KAAKe,KAAlD;;AACA,QAAIjB,eAAe,CAACM,QAAhB,CAAyBC,IAAzB,CAAJ,EAAoC;AAClC,WAAK2B,gBAAL,CACElC,eAAe,CAACI,MAAhB,CAAuBgC,CAAC,IAAIA,CAAC,KAAK7B,IAAlC,CADF,EAEEL,eAFF;AAID,KALD,MAKO;AACL,UAAMmC,MAAM,GAAGrC,eAAe,CAACsC,KAAhB,EAAf;AACAD,MAAAA,MAAM,CAACE,IAAP,CAAYhC,IAAZ;AACA,WAAK2B,gBAAL,CAAsBG,MAAtB,EAA8BnC,eAA9B;AACD;AACF;;AAEDmB,EAAAA,SAAS,GAAG;AACV,SAAKc,kBAAL,CAAwB,IAAxB;AACD;;AAEDb,EAAAA,KAAK,GAAG;AACN,SAAKa,kBAAL,CAAwB,KAAxB;AACD;;AAEDZ,EAAAA,aAAa,GAAG;AACd,QAAM;AAAEtB,MAAAA;AAAF,QAAc,KAAKgB,KAAzB;AACA,SAAKiB,gBAAL,CACEjC,OAAO,CACJG,MADH,CACUgC,CAAC,IAAIxC,UAAU,CAAC4C,YAAX,CAAwBJ,CAAC,CAACK,IAA1B,CADf,EAEGjC,GAFH,CAEOH,MAAM,IAAIA,MAAM,CAACE,IAFxB,CADF,EAIE,KAJF;AAMD;;AAEDmC,EAAAA,MAAM,GAAG;AACP,QAAM;AAAET,MAAAA,KAAF;AAASjC,MAAAA,eAAT;AAA0BE,MAAAA,eAA1B;AAA2CD,MAAAA;AAA3C,QAAuD,KAAKgB,KAAlE;AACA,QAAM;AAAEU,MAAAA;AAAF,QAA8B,KAAKD,KAAzC;AACA,QAAMiB,qBAAqB,GACxB3C,eAAe,CAACS,MAAhB,KAA2B,CAA3B,IAAgCP,eAAe,KAAK,IAArD,IACCF,eAAe,CAACS,MAAhB,KAA2BR,OAAO,CAACQ,MAAnC,IAA6CP,eAAe,KAAK,KAFpE;AAGA,QAAM0C,oBAAoB,GACvB5C,eAAe,CAACS,MAAhB,KAA2B,CAA3B,IAAgCP,eAAe,KAAK,KAArD,IACCF,eAAe,CAACS,MAAhB,KAA2BR,OAAO,CAACQ,MAAnC,IAA6CP,eAAe,KAAK,IAFpE,CANO,CAUP;;AACA,QAAI2C,IAAJ;;AACA,QAAIF,qBAAJ,EAA2B;AACzB;AACAE,MAAAA,IAAI,gBACF,uDACE,oBAAC,eAAD;AACE,QAAA,IAAI,EAAEtD,cADR;AAEE,QAAA,IAAI,EAAEF,YAFR;AAGE,QAAA,SAAS,EAAC;AAHZ,QADF,eAME,oBAAC,eAAD;AACE,QAAA,IAAI,EAAEC,aADR;AAEE,QAAA,SAAS,EAAC,cAFZ;AAGE,QAAA,SAAS,EAAC;AAHZ,QANF,CADF;AAcD,KAhBD,MAgBO,IAAIsD,oBAAJ,EAA0B;AAC/B;AACAC,MAAAA,IAAI,gBACF,uDACE,oBAAC,eAAD;AACE,QAAA,IAAI,EAAEnD,mBADR;AAEE,QAAA,IAAI,EAAEL,YAFR;AAGE,QAAA,SAAS,EAAC;AAHZ,QADF,eAME,oBAAC,eAAD;AACE,QAAA,IAAI,EAAEI,qBADR;AAEE,QAAA,SAAS,EAAC,aAFZ;AAGE,QAAA,SAAS,EAAC;AAHZ,QANF,CADF;AAcD,KAhBM,MAgBA;AACL;AACAoD,MAAAA,IAAI,gBACF,uDACE,oBAAC,eAAD;AACE,QAAA,IAAI,EAAEtD,cADR;AAEE,QAAA,IAAI,EAAEF,YAFR;AAGE,QAAA,SAAS,EAAC;AAHZ,QADF,eAME,oBAAC,eAAD;AACE,QAAA,IAAI,EAAEG,oBADR;AAEE,QAAA,SAAS,EAAC,cAFZ;AAGE,QAAA,SAAS,EAAC;AAHZ,QANF,CADF;AAcD;;AAED,wBACE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE,oBAAC,WAAD;AACE,MAAA,SAAS,EAAC,qBADZ;AAEE,MAAA,WAAW,EAAC,gBAFd;AAGE,MAAA,KAAK,EAAEyC,KAHT;AAIE,MAAA,QAAQ,EAAE,KAAKf,uBAJjB;AAKE,MAAA,GAAG,EAAE,KAAKM;AALZ,MADF,eAQE;AACE,MAAA,IAAI,EAAC,QADP;AAEE,MAAA,SAAS,EAAC,iCAFZ;AAGE,MAAA,OAAO,EAAE,MAAM;AACb,YAAIG,uBAAJ,EAA6B;AAC3B,eAAKmB,QAAL,CAAc;AAAEnB,YAAAA,uBAAuB,EAAE;AAA3B,WAAd;AACD,SAFD,MAEO;AACL,eAAKmB,QAAL,CAAc;AAAEnB,YAAAA,uBAAuB,EAAE;AAA3B,WAAd;AACD;AACF;AATH,oBAWE;AAAK,MAAA,SAAS,EAAC;AAAf,OAA4BkB,IAA5B,CAXF,eAYE,oBAAC,OAAD,4BAZF,eAaE,oBAAC,MAAD;AACE,MAAA,OAAO,EAAElB,uBADX;AAEE,MAAA,SAAS,EAAC,qBAFZ;AAGE,MAAA,QAAQ,EAAE,MAAM;AACd,aAAKmB,QAAL,CAAc;AAAEnB,UAAAA,uBAAuB,EAAE;AAA3B,SAAd;AACD,OALH;AAME,MAAA,WAAW,MANb;AAOE,MAAA,WAAW;AAPb,oBASE;AAAK,MAAA,SAAS,EAAC;AAAf,wCAEE;AAAK,MAAA,SAAS,EAAC;AAAf,OACG1B,OAAO,CAACO,GAAR,CAAYH,MAAM,iBACjB,oBAAC,KAAD,CAAO,QAAP;AAAgB,MAAA,GAAG,EAAEA,MAAM,CAACE;AAA5B,oBACE,oBAAC,QAAD;AACE,MAAA,SAAS,EAAC,uBADZ;AAEE,MAAA,OAAO,EACLL,eAAe,GACX,CAACF,eAAe,CAACM,QAAhB,CAAyBD,MAAM,CAACE,IAAhC,CADU,GAEXP,eAAe,CAACM,QAAhB,CAAyBD,MAAM,CAACE,IAAhC,CALR;AAOE,MAAA,QAAQ,EAAE,MAAM,KAAKa,YAAL,CAAkBf,MAAM,CAACE,IAAzB;AAPlB,OASGF,MAAM,CAACE,IATV,CADF,EAaGF,MAAM,CAACoC,IAAP,CAAYM,SAAZ,CAAsB1C,MAAM,CAACoC,IAAP,CAAYO,WAAZ,CAAwB,GAAxB,IAA+B,CAArD,CAbH,CADD,CADH,CAFF,eAqBE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AACE,MAAA,IAAI,EAAC,QADP;AAEE,MAAA,SAAS,EAAC,cAFZ;AAGE,MAAA,OAAO,EAAE,KAAK3B;AAHhB,oBADF,eAQE;AACE,MAAA,IAAI,EAAC,QADP;AAEE,MAAA,SAAS,EAAC,cAFZ;AAGE,MAAA,OAAO,EAAE,KAAKC;AAHhB,eARF,eAeE;AACE,MAAA,IAAI,EAAC,QADP;AAEE,MAAA,SAAS,EAAC,cAFZ;AAGE,MAAA,OAAO,EAAE,KAAKC;AAHhB,sBAfF,CArBF,EA4CGqB,oBAAoB,iBACnB;AAAG,MAAA,SAAS,EAAC;AAAb,oBACE,oBAAC,eAAD;AAAiB,MAAA,IAAI,EAAEnD;AAAvB,MADF,2CA7CJ,CATF,CAbF,CARF,CADF;AAsFD;;AAlP2C;;AAqP9CI,iBAAiB,CAACoD,SAAlB,GAA8B;AAC5BhB,EAAAA,KAAK,EAAElD,SAAS,CAACmE,MAAV,CAAiBC,UADI;AAE5BnD,EAAAA,eAAe,EAAEjB,SAAS,CAACqE,OAAV,CAAkBrE,SAAS,CAACmE,MAA5B,EAAoCC,UAFzB;AAG5BjD,EAAAA,eAAe,EAAEnB,SAAS,CAACsE,IAAV,CAAeF,UAHJ;AAI5BpB,EAAAA,QAAQ,EAAEhD,SAAS,CAACuE,IAAV,CAAeH,UAJG;AAK5BlD,EAAAA,OAAO,EAAElB,SAAS,CAACqE,OAAV,CACPrE,SAAS,CAACwE,KAAV,CAAgB;AACdhD,IAAAA,IAAI,EAAExB,SAAS,CAACmE,MAAV,CAAiBC,UADT;AAEdV,IAAAA,IAAI,EAAE1D,SAAS,CAACmE,MAAV,CAAiBC;AAFT,GAAhB,CADO,EAKPA;AAV0B,CAA9B;AAaA,eAAetD,iBAAf","sourcesContent":["import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Checkbox, Popper, SearchInput, Tooltip } from '@deephaven/components';\nimport {\n dhGearFilled,\n dhCheckSquare,\n dhSquareFilled,\n dhRemoveSquareFilled,\n dhWarningCircleFilled,\n vsCircleLargeFilled,\n} from '@deephaven/icons';\nimport dh from '@deephaven/jsapi-shim';\nimport TableUtils from './TableUtils';\nimport './CrossColumnSearch.scss';\n\nclass CrossColumnSearch extends PureComponent {\n static createSearchFilter(\n searchValue,\n selectedColumns,\n columns,\n invertSelection\n ) {\n const filterColumns = invertSelection\n ? columns\n .filter(column => !selectedColumns.includes(column.name))\n .map(column => column.name)\n : selectedColumns;\n if (searchValue && filterColumns.length > 0) {\n const filterValue = dh.FilterValue.ofString(searchValue);\n const searchFilter =\n filterColumns.length === columns.length\n ? dh.FilterCondition.search(filterValue)\n : dh.FilterCondition.search(\n filterValue,\n columns\n .filter(column => filterColumns.includes(column.name))\n .map(column => column.filter())\n );\n return searchFilter;\n }\n return null;\n }\n\n constructor(props) {\n super(props);\n this.handleSearchValueChange = this.handleSearchValueChange.bind(this);\n this.toggleColumn = this.toggleColumn.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n this.selectNumbers = this.selectNumbers.bind(this);\n\n this.searchField = React.createRef();\n\n this.state = {\n isConfigureColumnsShown: false,\n };\n }\n\n focus() {\n this.searchField.current.focus();\n }\n\n handleSearchValueChange(event) {\n const { onChange, selectedColumns, invertSelection } = this.props;\n onChange(event.target.value, selectedColumns, invertSelection);\n }\n\n sendColumnChange(selectedColumns, invertSelection) {\n const { onChange, value } = this.props;\n onChange(value, selectedColumns, invertSelection);\n }\n\n setInvertSelection(invertSelection) {\n const { onChange, value } = this.props;\n onChange(value, [], invertSelection);\n }\n\n toggleColumn(name) {\n const { selectedColumns, invertSelection } = this.props;\n if (selectedColumns.includes(name)) {\n this.sendColumnChange(\n selectedColumns.filter(c => c !== name),\n invertSelection\n );\n } else {\n const update = selectedColumns.slice();\n update.push(name);\n this.sendColumnChange(update, invertSelection);\n }\n }\n\n selectAll() {\n this.setInvertSelection(true);\n }\n\n clear() {\n this.setInvertSelection(false);\n }\n\n selectNumbers() {\n const { columns } = this.props;\n this.sendColumnChange(\n columns\n .filter(c => TableUtils.isNumberType(c.type))\n .map(column => column.name),\n false\n );\n }\n\n render() {\n const { value, selectedColumns, invertSelection, columns } = this.props;\n const { isConfigureColumnsShown } = this.state;\n const hasAllColumnsSelected =\n (selectedColumns.length === 0 && invertSelection === true) ||\n (selectedColumns.length === columns.length && invertSelection === false);\n const hasNoColumnsSelected =\n (selectedColumns.length === 0 && invertSelection === false) ||\n (selectedColumns.length === columns.length && invertSelection === true);\n\n // set icon layers\n let icon;\n if (hasAllColumnsSelected) {\n // icon if all columns selected for search\n icon = (\n <>\n <FontAwesomeIcon\n icon={dhSquareFilled}\n mask={dhGearFilled}\n transform=\"shrink-2 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhCheckSquare}\n className=\"text-primary\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n } else if (hasNoColumnsSelected) {\n // icon error, no columns selected for searching\n icon = (\n <>\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={dhGearFilled}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhWarningCircleFilled}\n className=\"text-danger\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n } else {\n // icon if some columns selected, but not all\n icon = (\n <>\n <FontAwesomeIcon\n icon={dhSquareFilled}\n mask={dhGearFilled}\n transform=\"shrink-2 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhRemoveSquareFilled}\n className=\"text-primary\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n }\n\n return (\n <div className=\"cross-column-container\">\n <SearchInput\n className=\"cross-column-search\"\n placeholder=\"Search Data...\"\n value={value}\n onChange={this.handleSearchValueChange}\n ref={this.searchField}\n />\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon px-2\"\n onClick={() => {\n if (isConfigureColumnsShown) {\n this.setState({ isConfigureColumnsShown: false });\n } else {\n this.setState({ isConfigureColumnsShown: true });\n }\n }}\n >\n <div className=\"fa-layers\">{icon}</div>\n <Tooltip>Configure Columns</Tooltip>\n <Popper\n isShown={isConfigureColumnsShown}\n className=\"cross-column-popper\"\n onExited={() => {\n this.setState({ isConfigureColumnsShown: false });\n }}\n closeOnBlur\n interactive\n >\n <div className=\"cross-column-popup\">\n Searched Columns\n <div className=\"cross-column-scroll\">\n {columns.map(column => (\n <React.Fragment key={column.name}>\n <Checkbox\n className=\"cross-column-checkbox\"\n checked={\n invertSelection\n ? !selectedColumns.includes(column.name)\n : selectedColumns.includes(column.name)\n }\n onChange={() => this.toggleColumn(column.name)}\n >\n {column.name}\n </Checkbox>\n\n {column.type.substring(column.type.lastIndexOf('.') + 1)}\n </React.Fragment>\n ))}\n </div>\n <div className=\"cross-column-button-bar\">\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectAll}\n >\n Select All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.clear}\n >\n Clear\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectNumbers}\n >\n Numbers Only\n </button>\n </div>\n {hasNoColumnsSelected && (\n <p className=\"text-danger\">\n <FontAwesomeIcon icon={dhWarningCircleFilled} /> Select at\n least one column to search.\n </p>\n )}\n </div>\n </Popper>\n </button>\n </div>\n );\n }\n}\n\nCrossColumnSearch.propTypes = {\n value: PropTypes.string.isRequired,\n selectedColumns: PropTypes.arrayOf(PropTypes.string).isRequired,\n invertSelection: PropTypes.bool.isRequired,\n onChange: PropTypes.func.isRequired,\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n })\n ).isRequired,\n};\n\nexport default CrossColumnSearch;\n"],"file":"CrossColumnSearch.js"}
|
|
1
|
+
{"version":3,"sources":["../src/CrossColumnSearch.jsx"],"names":["React","PureComponent","PropTypes","FontAwesomeIcon","Checkbox","Popper","SearchInput","Tooltip","dhGearFilled","dhCheckSquare","dhSquareFilled","dhRemoveSquareFilled","dhWarningCircleFilled","vsCircleLargeFilled","dh","TableUtils","CrossColumnSearch","createSearchFilter","searchValue","selectedColumns","columns","invertSelection","filterColumns","filter","column","includes","name","map","length","filterValue","FilterValue","ofString","searchFilter","FilterCondition","search","constructor","props","handleSearchValueChange","bind","toggleColumn","selectAll","clear","selectNumbers","searchField","createRef","state","isConfigureColumnsShown","focus","current","event","onChange","target","value","sendColumnChange","setInvertSelection","c","update","slice","push","isNumberType","type","render","hasAllColumnsSelected","hasNoColumnsSelected","icon","setState","substring","lastIndexOf","propTypes","string","isRequired","arrayOf","bool","func","shape"],"mappings":"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","sourcesContent":["import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Checkbox, Popper, SearchInput, Tooltip } from '@deephaven/components';\nimport {\n dhGearFilled,\n dhCheckSquare,\n dhSquareFilled,\n dhRemoveSquareFilled,\n dhWarningCircleFilled,\n vsCircleLargeFilled,\n} from '@deephaven/icons';\nimport dh from '@deephaven/jsapi-shim';\nimport { TableUtils } from '@deephaven/jsapi-utils';\nimport './CrossColumnSearch.scss';\n\nclass CrossColumnSearch extends PureComponent {\n static createSearchFilter(\n searchValue,\n selectedColumns,\n columns,\n invertSelection\n ) {\n const filterColumns = invertSelection\n ? columns\n .filter(column => !selectedColumns.includes(column.name))\n .map(column => column.name)\n : selectedColumns;\n if (searchValue && filterColumns.length > 0) {\n const filterValue = dh.FilterValue.ofString(searchValue);\n const searchFilter =\n filterColumns.length === columns.length\n ? dh.FilterCondition.search(filterValue)\n : dh.FilterCondition.search(\n filterValue,\n columns\n .filter(column => filterColumns.includes(column.name))\n .map(column => column.filter())\n );\n return searchFilter;\n }\n return null;\n }\n\n constructor(props) {\n super(props);\n this.handleSearchValueChange = this.handleSearchValueChange.bind(this);\n this.toggleColumn = this.toggleColumn.bind(this);\n this.selectAll = this.selectAll.bind(this);\n this.clear = this.clear.bind(this);\n this.selectNumbers = this.selectNumbers.bind(this);\n\n this.searchField = React.createRef();\n\n this.state = {\n isConfigureColumnsShown: false,\n };\n }\n\n focus() {\n this.searchField.current.focus();\n }\n\n handleSearchValueChange(event) {\n const { onChange, selectedColumns, invertSelection } = this.props;\n onChange(event.target.value, selectedColumns, invertSelection);\n }\n\n sendColumnChange(selectedColumns, invertSelection) {\n const { onChange, value } = this.props;\n onChange(value, selectedColumns, invertSelection);\n }\n\n setInvertSelection(invertSelection) {\n const { onChange, value } = this.props;\n onChange(value, [], invertSelection);\n }\n\n toggleColumn(name) {\n const { selectedColumns, invertSelection } = this.props;\n if (selectedColumns.includes(name)) {\n this.sendColumnChange(\n selectedColumns.filter(c => c !== name),\n invertSelection\n );\n } else {\n const update = selectedColumns.slice();\n update.push(name);\n this.sendColumnChange(update, invertSelection);\n }\n }\n\n selectAll() {\n this.setInvertSelection(true);\n }\n\n clear() {\n this.setInvertSelection(false);\n }\n\n selectNumbers() {\n const { columns } = this.props;\n this.sendColumnChange(\n columns\n .filter(c => TableUtils.isNumberType(c.type))\n .map(column => column.name),\n false\n );\n }\n\n render() {\n const { value, selectedColumns, invertSelection, columns } = this.props;\n const { isConfigureColumnsShown } = this.state;\n const hasAllColumnsSelected =\n (selectedColumns.length === 0 && invertSelection === true) ||\n (selectedColumns.length === columns.length && invertSelection === false);\n const hasNoColumnsSelected =\n (selectedColumns.length === 0 && invertSelection === false) ||\n (selectedColumns.length === columns.length && invertSelection === true);\n\n // set icon layers\n let icon;\n if (hasAllColumnsSelected) {\n // icon if all columns selected for search\n icon = (\n <>\n <FontAwesomeIcon\n icon={dhSquareFilled}\n mask={dhGearFilled}\n transform=\"shrink-2 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhCheckSquare}\n className=\"text-primary\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n } else if (hasNoColumnsSelected) {\n // icon error, no columns selected for searching\n icon = (\n <>\n <FontAwesomeIcon\n icon={vsCircleLargeFilled}\n mask={dhGearFilled}\n transform=\"shrink-1 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhWarningCircleFilled}\n className=\"text-danger\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n } else {\n // icon if some columns selected, but not all\n icon = (\n <>\n <FontAwesomeIcon\n icon={dhSquareFilled}\n mask={dhGearFilled}\n transform=\"shrink-2 down-5 right-7\"\n />\n <FontAwesomeIcon\n icon={dhRemoveSquareFilled}\n className=\"text-primary\"\n transform=\"shrink-4 down-5 right-7\"\n />\n </>\n );\n }\n\n return (\n <div className=\"cross-column-container\">\n <SearchInput\n className=\"cross-column-search\"\n placeholder=\"Search Data...\"\n value={value}\n onChange={this.handleSearchValueChange}\n ref={this.searchField}\n />\n <button\n type=\"button\"\n className=\"btn btn-link btn-link-icon px-2\"\n onClick={() => {\n if (isConfigureColumnsShown) {\n this.setState({ isConfigureColumnsShown: false });\n } else {\n this.setState({ isConfigureColumnsShown: true });\n }\n }}\n >\n <div className=\"fa-layers\">{icon}</div>\n <Tooltip>Configure Columns</Tooltip>\n <Popper\n isShown={isConfigureColumnsShown}\n className=\"cross-column-popper\"\n onExited={() => {\n this.setState({ isConfigureColumnsShown: false });\n }}\n closeOnBlur\n interactive\n >\n <div className=\"cross-column-popup\">\n Searched Columns\n <div className=\"cross-column-scroll\">\n {columns.map(column => (\n <React.Fragment key={column.name}>\n <Checkbox\n className=\"cross-column-checkbox\"\n checked={\n invertSelection\n ? !selectedColumns.includes(column.name)\n : selectedColumns.includes(column.name)\n }\n onChange={() => this.toggleColumn(column.name)}\n >\n {column.name}\n </Checkbox>\n\n {column.type.substring(column.type.lastIndexOf('.') + 1)}\n </React.Fragment>\n ))}\n </div>\n <div className=\"cross-column-button-bar\">\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectAll}\n >\n Select All\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.clear}\n >\n Clear\n </button>\n <button\n type=\"button\"\n className=\"btn btn-link\"\n onClick={this.selectNumbers}\n >\n Numbers Only\n </button>\n </div>\n {hasNoColumnsSelected && (\n <p className=\"text-danger\">\n <FontAwesomeIcon icon={dhWarningCircleFilled} /> Select at\n least one column to search.\n </p>\n )}\n </div>\n </Popper>\n </button>\n </div>\n );\n }\n}\n\nCrossColumnSearch.propTypes = {\n value: PropTypes.string.isRequired,\n selectedColumns: PropTypes.arrayOf(PropTypes.string).isRequired,\n invertSelection: PropTypes.bool.isRequired,\n onChange: PropTypes.func.isRequired,\n columns: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n type: PropTypes.string.isRequired,\n })\n ).isRequired,\n};\n\nexport default CrossColumnSearch;\n"],"file":"CrossColumnSearch.js"}
|
package/dist/IrisGrid.d.ts
CHANGED
|
@@ -255,7 +255,7 @@ export class IrisGrid extends React.Component<any, any, any> {
|
|
|
255
255
|
advancedFilters: any;
|
|
256
256
|
}): void;
|
|
257
257
|
updateFormatterSettings(settings: any, forceUpdate?: boolean): void;
|
|
258
|
-
getAlwaysFetchColumns: ((alwaysFetchColumns: any, columns: any, floatingLeftColumnCount: any, floatingRightColumnCount: any) => any[]) & memoize.Memoized<(alwaysFetchColumns: any, columns: any, floatingLeftColumnCount: any, floatingRightColumnCount: any) => any[]>;
|
|
258
|
+
getAlwaysFetchColumns: ((alwaysFetchColumns: any, columns: any, movedColumns: any, floatingLeftColumnCount: any, floatingRightColumnCount: any) => any[]) & memoize.Memoized<(alwaysFetchColumns: any, columns: any, movedColumns: any, floatingLeftColumnCount: any, floatingRightColumnCount: any) => any[]>;
|
|
259
259
|
updateFormatter(updatedFormats: any, forceUpdate?: boolean): void;
|
|
260
260
|
initFormatter(): void;
|
|
261
261
|
initState(): void;
|
package/dist/IrisGrid.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGrid.d.ts","sourceRoot":"","sources":["../src/IrisGrid.jsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IrisGrid.d.ts","sourceRoot":"","sources":["../src/IrisGrid.jsx"],"names":[],"mappings":"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"}
|
package/dist/IrisGrid.js
CHANGED
|
@@ -20,6 +20,7 @@ import { ContextActionUtils, ContextActions, DeephavenSpinner, Stack, Menu, Page
|
|
|
20
20
|
import { Grid, GridRange, GridUtils } from '@deephaven/grid';
|
|
21
21
|
import { dhEye, dhFilterFilled, dhGraphLineUp, dhTriangleDownSquare, vsCloudDownload, vsEdit, vsFilter, vsMenu, vsRuby, vsSearch, vsSplitHorizontal, vsSymbolOperator, vsTools } from '@deephaven/icons';
|
|
22
22
|
import dh, { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';
|
|
23
|
+
import { DateUtils, Formatter, FormatterUtils, TableUtils } from '@deephaven/jsapi-utils';
|
|
23
24
|
import { Pending, PromiseUtils, ValidationError } from '@deephaven/utils';
|
|
24
25
|
import throttle from 'lodash.throttle';
|
|
25
26
|
import debounce from 'lodash.debounce';
|
|
@@ -36,9 +37,6 @@ import IrisGridRenderer from "./IrisGridRenderer.js";
|
|
|
36
37
|
import IrisGridTheme from "./IrisGridTheme.js";
|
|
37
38
|
import ColumnStatistics from "./ColumnStatistics.js";
|
|
38
39
|
import "./IrisGrid.css";
|
|
39
|
-
import Formatter from "./Formatter.js";
|
|
40
|
-
import FormatterUtils from "./FormatterUtils.js";
|
|
41
|
-
import TableUtils from "./TableUtils.js";
|
|
42
40
|
import AdvancedFilterCreator from "./AdvancedFilterCreator.js";
|
|
43
41
|
import { Aggregations, AggregationEdit, AggregationUtils, ChartBuilder, CustomColumnBuilder, OptionType, RollupRows, TableCsvExporter, TableSaver, VisibilityOrderingBuilder } from "./sidebar/index.js";
|
|
44
42
|
import IrisGridUtils from "./IrisGridUtils.js";
|
|
@@ -49,7 +47,6 @@ import SelectDistinctBuilder from "./sidebar/SelectDistinctBuilder.js";
|
|
|
49
47
|
import AdvancedSettingsType from "./sidebar/AdvancedSettingsType.js";
|
|
50
48
|
import AdvancedSettingsMenu from "./sidebar/AdvancedSettingsMenu.js";
|
|
51
49
|
import SHORTCUTS from "./IrisGridShortcuts.js";
|
|
52
|
-
import DateUtils from "./DateUtils.js";
|
|
53
50
|
import ConditionalFormattingMenu from "./sidebar/conditional-formatting/ConditionalFormattingMenu.js";
|
|
54
51
|
import { getFormatColumns } from "./sidebar/conditional-formatting/ConditionalFormattingUtils.js";
|
|
55
52
|
import ConditionalFormatEditor from "./sidebar/conditional-formatting/ConditionalFormatEditor.js";
|
|
@@ -309,19 +306,18 @@ export class IrisGrid extends Component {
|
|
|
309
306
|
max: 1
|
|
310
307
|
}));
|
|
311
308
|
|
|
312
|
-
_defineProperty(this, "getAlwaysFetchColumns", memoize((alwaysFetchColumns, columns, floatingLeftColumnCount, floatingRightColumnCount) => {
|
|
313
|
-
var
|
|
314
|
-
var floatingRightColumns = [];
|
|
309
|
+
_defineProperty(this, "getAlwaysFetchColumns", memoize((alwaysFetchColumns, columns, movedColumns, floatingLeftColumnCount, floatingRightColumnCount) => {
|
|
310
|
+
var floatingColumns = [];
|
|
315
311
|
|
|
316
|
-
|
|
317
|
-
|
|
312
|
+
for (var i = 0; i < floatingLeftColumnCount; i += 1) {
|
|
313
|
+
floatingColumns.push(columns[GridUtils.getModelIndex(i, movedColumns)].name);
|
|
318
314
|
}
|
|
319
315
|
|
|
320
|
-
|
|
321
|
-
|
|
316
|
+
for (var _i = 0; _i < floatingRightColumnCount; _i += 1) {
|
|
317
|
+
floatingColumns.push(columns[GridUtils.getModelIndex(columns.length - 1 - _i, movedColumns)].name);
|
|
322
318
|
}
|
|
323
319
|
|
|
324
|
-
var columnSet = new Set([...alwaysFetchColumns, ...
|
|
320
|
+
var columnSet = new Set([...alwaysFetchColumns, ...floatingColumns]);
|
|
325
321
|
return [...columnSet];
|
|
326
322
|
}));
|
|
327
323
|
|
|
@@ -471,8 +467,8 @@ export class IrisGrid extends Component {
|
|
|
471
467
|
isFilterBarShown: _isFilterBarShown,
|
|
472
468
|
isSelectingPartition,
|
|
473
469
|
model: _model,
|
|
474
|
-
movedColumns,
|
|
475
|
-
movedRows,
|
|
470
|
+
movedColumns: movedColumnsProp,
|
|
471
|
+
movedRows: movedRowsProp,
|
|
476
472
|
partition,
|
|
477
473
|
partitionColumn,
|
|
478
474
|
rollupConfig: _rollupConfig,
|
|
@@ -496,9 +492,14 @@ export class IrisGrid extends Component {
|
|
|
496
492
|
}
|
|
497
493
|
|
|
498
494
|
var mouseHandlers = [new IrisGridCellOverflowMouseHandler(this), new IrisGridColumnSelectMouseHandler(this), new IrisGridColumnTooltipMouseHandler(this), new IrisGridSortMouseHandler(this), new IrisGridFilterMouseHandler(this), new IrisGridContextMenuHandler(this), new IrisGridDataSelectMouseHandler(this), new PendingMouseHandler(this)];
|
|
495
|
+
|
|
496
|
+
var _movedColumns = movedColumnsProp.length > 0 ? movedColumnsProp : _model.movedColumns;
|
|
497
|
+
|
|
498
|
+
var movedRows = movedRowsProp.length > 0 ? movedRowsProp : _model.movedRows;
|
|
499
499
|
var metricCalculator = new IrisGridMetricCalculator({
|
|
500
500
|
userColumnWidths: new Map(userColumnWidths),
|
|
501
|
-
userRowHeights: new Map(userRowHeights)
|
|
501
|
+
userRowHeights: new Map(userRowHeights),
|
|
502
|
+
movedColumns: _movedColumns
|
|
502
503
|
});
|
|
503
504
|
var searchColumns = selectedSearchColumns !== null && selectedSearchColumns !== void 0 ? selectedSearchColumns : [];
|
|
504
505
|
|
|
@@ -535,7 +536,7 @@ export class IrisGrid extends Component {
|
|
|
535
536
|
loadingText: null,
|
|
536
537
|
loadingScrimProgress: null,
|
|
537
538
|
loadingSpinnerShown: false,
|
|
538
|
-
movedColumns,
|
|
539
|
+
movedColumns: _movedColumns,
|
|
539
540
|
movedRows,
|
|
540
541
|
shownColumnTooltip: null,
|
|
541
542
|
formatter: new Formatter(),
|
|
@@ -1435,49 +1436,42 @@ export class IrisGrid extends Component {
|
|
|
1435
1436
|
|
|
1436
1437
|
freezeColumnByColumnName(columnName) {
|
|
1437
1438
|
var {
|
|
1438
|
-
frozenColumns
|
|
1439
|
+
frozenColumns,
|
|
1440
|
+
movedColumns
|
|
1439
1441
|
} = this.state;
|
|
1440
1442
|
var {
|
|
1441
1443
|
model
|
|
1442
1444
|
} = this.props;
|
|
1443
1445
|
log.debug2('freezing column', columnName);
|
|
1444
|
-
var allFrozenColumns;
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
allFrozenColumns = new Set((_model$layoutHints$fr = (_model$layoutHints = model.layoutHints) === null || _model$layoutHints === void 0 ? void 0 : _model$layoutHints.frozenColumns) !== null && _model$layoutHints$fr !== void 0 ? _model$layoutHints$fr : []);
|
|
1450
|
-
allFrozenColumns.add(columnName);
|
|
1451
|
-
} else {
|
|
1452
|
-
allFrozenColumns = new Set([...frozenColumns, columnName]);
|
|
1453
|
-
}
|
|
1454
|
-
|
|
1446
|
+
var allFrozenColumns = frozenColumns == null ? new Set(model.frozenColumns) : new Set(frozenColumns);
|
|
1447
|
+
allFrozenColumns.add(columnName);
|
|
1448
|
+
var modelIndex = model.getColumnIndexByName(columnName);
|
|
1449
|
+
var visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns);
|
|
1450
|
+
var newMovedColumns = GridUtils.moveItem(visibleIndex, allFrozenColumns.size - 1, movedColumns);
|
|
1455
1451
|
this.setState({
|
|
1456
|
-
frozenColumns: [...allFrozenColumns]
|
|
1452
|
+
frozenColumns: [...allFrozenColumns],
|
|
1453
|
+
movedColumns: newMovedColumns
|
|
1457
1454
|
});
|
|
1458
1455
|
}
|
|
1459
1456
|
|
|
1460
1457
|
unFreezeColumnByColumnName(columnName) {
|
|
1461
1458
|
var {
|
|
1462
|
-
frozenColumns
|
|
1459
|
+
frozenColumns,
|
|
1460
|
+
movedColumns
|
|
1463
1461
|
} = this.state;
|
|
1464
1462
|
var {
|
|
1465
1463
|
model
|
|
1466
1464
|
} = this.props;
|
|
1467
1465
|
log.debug2('unfreezing column', columnName);
|
|
1468
|
-
var allFrozenColumns;
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
allFrozenColumns = new Set((_model$layoutHints$fr2 = (_model$layoutHints2 = model.layoutHints) === null || _model$layoutHints2 === void 0 ? void 0 : _model$layoutHints2.frozenColumns) !== null && _model$layoutHints$fr2 !== void 0 ? _model$layoutHints$fr2 : []);
|
|
1474
|
-
allFrozenColumns.delete(columnName);
|
|
1475
|
-
} else {
|
|
1476
|
-
allFrozenColumns = new Set(frozenColumns.filter(col => col !== columnName));
|
|
1477
|
-
}
|
|
1466
|
+
var allFrozenColumns = frozenColumns == null ? new Set(model.frozenColumns) : new Set(frozenColumns);
|
|
1467
|
+
allFrozenColumns.delete(columnName);
|
|
1468
|
+
var modelIndex = model.getColumnIndexByName(columnName);
|
|
1469
|
+
var visibleIndex = GridUtils.getVisibleIndex(modelIndex, movedColumns); // Move to after remaining frozen columns and front columns
|
|
1478
1470
|
|
|
1471
|
+
var newMovedColumns = GridUtils.moveItem(visibleIndex, allFrozenColumns.size + model.frontColumns.length, movedColumns);
|
|
1479
1472
|
this.setState({
|
|
1480
|
-
frozenColumns: [...allFrozenColumns]
|
|
1473
|
+
frozenColumns: [...allFrozenColumns],
|
|
1474
|
+
movedColumns: newMovedColumns
|
|
1481
1475
|
});
|
|
1482
1476
|
}
|
|
1483
1477
|
|
|
@@ -1693,13 +1687,13 @@ export class IrisGrid extends Component {
|
|
|
1693
1687
|
}
|
|
1694
1688
|
|
|
1695
1689
|
isTableSearchAvailable() {
|
|
1696
|
-
var _model$
|
|
1690
|
+
var _model$layoutHints, _dh$SearchDisplayMode, _dh$SearchDisplayMode2;
|
|
1697
1691
|
|
|
1698
1692
|
var {
|
|
1699
1693
|
model,
|
|
1700
1694
|
canToggleSearch
|
|
1701
1695
|
} = this.props;
|
|
1702
|
-
var searchDisplayMode = model === null || model === void 0 ? void 0 : (_model$
|
|
1696
|
+
var searchDisplayMode = model === null || model === void 0 ? void 0 : (_model$layoutHints = model.layoutHints) === null || _model$layoutHints === void 0 ? void 0 : _model$layoutHints.searchDisplayMode;
|
|
1703
1697
|
|
|
1704
1698
|
if (searchDisplayMode === ((_dh$SearchDisplayMode = dh.SearchDisplayMode) === null || _dh$SearchDisplayMode === void 0 ? void 0 : _dh$SearchDisplayMode.SEARCH_DISPLAY_HIDE)) {
|
|
1705
1699
|
return false;
|
|
@@ -3002,8 +2996,8 @@ export class IrisGrid extends Component {
|
|
|
3002
2996
|
columnHeaderHeight: _columnHeaderHeight
|
|
3003
2997
|
} = metrics;
|
|
3004
2998
|
|
|
3005
|
-
var _loop2 = function _loop2(
|
|
3006
|
-
var columnIndex = _visibleColumns[
|
|
2999
|
+
var _loop2 = function _loop2(_i2) {
|
|
3000
|
+
var columnIndex = _visibleColumns[_i2];
|
|
3007
3001
|
|
|
3008
3002
|
var columnX = _visibleColumnXs3.get(columnIndex);
|
|
3009
3003
|
|
|
@@ -3056,8 +3050,8 @@ export class IrisGrid extends Component {
|
|
|
3056
3050
|
}
|
|
3057
3051
|
};
|
|
3058
3052
|
|
|
3059
|
-
for (var
|
|
3060
|
-
_loop2(
|
|
3053
|
+
for (var _i2 = 0; _i2 < _visibleColumns.length; _i2 += 1) {
|
|
3054
|
+
_loop2(_i2);
|
|
3061
3055
|
}
|
|
3062
3056
|
}
|
|
3063
3057
|
|
|
@@ -3258,7 +3252,7 @@ export class IrisGrid extends Component {
|
|
|
3258
3252
|
movedColumns: movedColumns,
|
|
3259
3253
|
customColumns: customColumns,
|
|
3260
3254
|
hiddenColumns: hiddenColumns,
|
|
3261
|
-
alwaysFetchColumns: this.getAlwaysFetchColumns(alwaysFetchColumns, model.columns, model.floatingLeftColumnCount, model.floatingRightColumnCount),
|
|
3255
|
+
alwaysFetchColumns: this.getAlwaysFetchColumns(alwaysFetchColumns, model.columns, movedColumns, model.floatingLeftColumnCount, model.floatingRightColumnCount),
|
|
3262
3256
|
formatColumns: this.getCachedPreviewFormatColumns(this.getCachedModelColumns(model, customColumns), conditionalFormats, conditionalFormatPreview, // Disable the preview format when we press Back on the format edit page
|
|
3263
3257
|
((_openOptions = openOptions[openOptions.length - 1]) === null || _openOptions === void 0 ? void 0 : _openOptions.type) === OptionType.CONDITIONAL_FORMATTING_EDIT ? conditionalFormatEditIndex : null),
|
|
3264
3258
|
rollupConfig: this.getModelRollupConfig(model.originalColumns, rollupConfig, aggregationSettings),
|