@deephaven/iris-grid 0.6.1-fixed-deps.2 → 0.6.3-alpha.5

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 (63) hide show
  1. package/dist/ColumnStatistics.css +5 -0
  2. package/dist/ColumnStatistics.css.map +1 -1
  3. package/dist/ColumnStatistics.d.ts +1 -0
  4. package/dist/ColumnStatistics.d.ts.map +1 -1
  5. package/dist/ColumnStatistics.js +26 -9
  6. package/dist/ColumnStatistics.js.map +1 -1
  7. package/dist/IrisGrid.css +2 -0
  8. package/dist/IrisGrid.css.map +1 -1
  9. package/dist/IrisGrid.d.ts +1 -0
  10. package/dist/IrisGrid.d.ts.map +1 -1
  11. package/dist/IrisGrid.js +30 -14
  12. package/dist/IrisGrid.js.map +1 -1
  13. package/dist/IrisGridBottomBar.js +1 -1
  14. package/dist/IrisGridModel.d.ts +5 -0
  15. package/dist/IrisGridModel.d.ts.map +1 -1
  16. package/dist/IrisGridModel.js +9 -0
  17. package/dist/IrisGridModel.js.map +1 -1
  18. package/dist/IrisGridModelUpdater.js +1 -1
  19. package/dist/IrisGridModelUpdater.js.map +1 -1
  20. package/dist/IrisGridProxyModel.d.ts.map +1 -1
  21. package/dist/IrisGridProxyModel.js +4 -0
  22. package/dist/IrisGridProxyModel.js.map +1 -1
  23. package/dist/IrisGridTableModel.d.ts.map +1 -1
  24. package/dist/IrisGridTableModel.js +26 -7
  25. package/dist/IrisGridTableModel.js.map +1 -1
  26. package/dist/IrisGridTheme.module.css +2 -0
  27. package/dist/IrisGridTheme.module.css.map +1 -1
  28. package/dist/IrisGridTreeTableModel.js +1 -1
  29. package/dist/IrisGridUtils.js +32 -32
  30. package/dist/IrisGridUtils.js.map +1 -1
  31. package/dist/PendingDataBottomBar.js +1 -1
  32. package/dist/PendingDataBottomBar.js.map +1 -1
  33. package/dist/TableUtils.js +1 -1
  34. package/dist/ToastBottomBar.js +1 -1
  35. package/dist/ToastBottomBar.js.map +1 -1
  36. package/dist/memoizeClear.js +1 -1
  37. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.d.ts.map +1 -1
  38. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js +6 -2
  39. package/dist/mousehandlers/IrisGridColumnTooltipMouseHandler.js.map +1 -1
  40. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
  41. package/dist/mousehandlers/IrisGridContextMenuHandler.js +8 -1
  42. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  43. package/dist/sidebar/AdvancedSettingsMenu.js +2 -2
  44. package/dist/sidebar/CustomColumnBuilder.js +2 -2
  45. package/dist/sidebar/CustomColumnBuilder.js.map +1 -1
  46. package/dist/sidebar/InputEditor.d.ts +1 -1
  47. package/dist/sidebar/InputEditor.js +2 -2
  48. package/dist/sidebar/InputEditor.js.map +1 -1
  49. package/dist/sidebar/RollupRows.js +10 -10
  50. package/dist/sidebar/RollupRows.js.map +1 -1
  51. package/dist/sidebar/SelectDistinctBuilder.js +5 -5
  52. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  53. package/dist/sidebar/TableSaver.js +1 -1
  54. package/dist/sidebar/TableSaver.js.map +1 -1
  55. package/dist/sidebar/VisibilityOrderingBuilder.js +10 -10
  56. package/dist/sidebar/VisibilityOrderingBuilder.js.map +1 -1
  57. package/dist/sidebar/aggregations/AggregationEdit.js +3 -3
  58. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  59. package/dist/sidebar/aggregations/AggregationUtils.js +1 -1
  60. package/dist/sidebar/aggregations/Aggregations.js +4 -4
  61. package/dist/sidebar/aggregations/Aggregations.js.map +1 -1
  62. package/dist/tsconfig.tsbuildinfo +1 -1
  63. package/package.json +12 -12
@@ -8,8 +8,13 @@
8
8
  }
9
9
 
10
10
  .column-statistics-title {
11
+ padding-top: 0.25rem;
11
12
  font-weight: 500;
12
13
  }
14
+ .column-statistics-title .column-statistics-copy {
15
+ margin-left: 2px;
16
+ margin-top: -2px;
17
+ }
13
18
 
14
19
  .column-statistics-type {
15
20
  font-style: italic;
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../src/ColumnStatistics.scss","../../components/scss/bootstrap_overrides.scss","../../components/scss/new_variables.scss","../../../node_modules/bootstrap/scss/_variables.scss"],"names":[],"mappings":"AAEA;EACE;EACA;EACA,OCQe;EDPf;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA,OCIS;EDHT;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA,SE9BS;EF+BT,aE/BS;;AFgCT;EACE;;AACA;EAEE;;AAIJ;EACE,aG6FK;;AH1FP;EACE;EACA,eGwFK;EHvFL;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAIJ;EACE;EACA;EACA;;;AAGF;AAAA;EAEE;EACA;EACA,OCpDS","file":"ColumnStatistics.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../src/ColumnStatistics.scss","../../components/scss/bootstrap_overrides.scss","../../components/scss/new_variables.scss","../../../node_modules/bootstrap/scss/_variables.scss"],"names":[],"mappings":"AAEA;EACE;EACA;EACA,OCQe;EDPf;EACA;EACA;;;AAGF;EACE,aEVS;EFWT;;AACA;EACE;EACA;;;AAIJ;EACE;EACA,OCDS;EDET;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA,SEnCS;EFoCT,aEpCS;;AFqCT;EACE;;AACA;EAEE;;AAIJ;EACE,aGwFK;;AHrFP;EACE;EACA,eGmFK;EHlFL;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;;AAIJ;EACE;EACA;EACA;;;AAGF;AAAA;EAEE;EACA;EACA,OCzDS","file":"ColumnStatistics.css"}
@@ -7,6 +7,7 @@ declare class ColumnStatistics extends React.Component<any, any, any> {
7
7
  handleError(error: any): void;
8
8
  handleGenerateStatistics(): void;
9
9
  handleStatistics(stats: any): void;
10
+ handleCopyHeader(): void;
10
11
  cancelablePromise: import("@deephaven/utils").CancelablePromise<any> | null;
11
12
  maybeGenerateStatistics(): void;
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnStatistics.d.ts","sourceRoot":"","sources":["../src/ColumnStatistics.jsx"],"names":[],"mappings":";AAiBA;IACE,uFAAuF;IACvF,mCAAoC;IAEpC,0CAQC;IAED,wBAeC;IAoED,8BAYC;IAxDD,iCAUC;IAED,mCA8BC;IA1EC,4EAA6B;IAoB/B,gCAUC;CAuJF"}
1
+ {"version":3,"file":"ColumnStatistics.d.ts","sourceRoot":"","sources":["../src/ColumnStatistics.jsx"],"names":[],"mappings":";AA2BA;IACE,uFAAuF;IACvF,mCAAoC;IAEpC,0CAQC;IAED,wBAiBC;IAwED,8BAYC;IAxDD,iCAUC;IAED,mCA8BC;IA1DD,yBAEC;IAvBC,4EAA6B;IAyB/B,gCAUC;CAmKF"}
@@ -4,8 +4,8 @@ import React, { Component } from 'react';
4
4
  import PropTypes from 'prop-types';
5
5
  import classNames from 'classnames';
6
6
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
7
- import { LoadingSpinner } from '@deephaven/components';
8
- import { dhRefresh, vsLock } from '@deephaven/icons';
7
+ import { Button, ContextActionUtils, LoadingSpinner } from '@deephaven/components';
8
+ import { dhFreeze, dhRefresh, vsCopy, vsLock, vsPassFilled } from '@deephaven/icons';
9
9
  import { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';
10
10
  import Log from '@deephaven/log';
11
11
  import { PromiseUtils } from '@deephaven/utils';
@@ -29,12 +29,14 @@ class ColumnStatistics extends Component {
29
29
  this.handleError = this.handleError.bind(this);
30
30
  this.handleGenerateStatistics = this.handleGenerateStatistics.bind(this);
31
31
  this.handleStatistics = this.handleStatistics.bind(this);
32
+ this.handleCopyHeader = this.handleCopyHeader.bind(this);
32
33
  this.cancelablePromise = null;
33
34
  this.state = {
34
35
  error: null,
35
36
  loading: false,
36
37
  statistics: null,
37
- numRows: 0
38
+ numRows: 0,
39
+ copied: false
38
40
  };
39
41
  }
40
42
 
@@ -48,6 +50,12 @@ class ColumnStatistics extends Component {
48
50
  }
49
51
  }
50
52
 
53
+ handleCopyHeader() {
54
+ this.setState({
55
+ copied: true
56
+ });
57
+ }
58
+
51
59
  maybeGenerateStatistics() {
52
60
  var {
53
61
  model
@@ -131,7 +139,8 @@ class ColumnStatistics extends Component {
131
139
  error,
132
140
  loading,
133
141
  statistics,
134
- numRows
142
+ numRows,
143
+ copied
135
144
  } = this.state;
136
145
  var showGenerateStatistics = !loading && error == null && statistics == null && model.isColumnStatisticsAvailable;
137
146
  var statisticElements = [];
@@ -160,21 +169,29 @@ class ColumnStatistics extends Component {
160
169
 
161
170
  var rowCountLabel = model.hasExpandableRows ? 'Expanded Rows' : 'Number of Rows';
162
171
  var formattedRowCount = model.displayString(numRows, 'long');
163
- var columnIndex = model.columns.findIndex(col => col.name === column.name);
172
+ var columnIndex = model.getColumnIndexByName(column.name);
164
173
  return /*#__PURE__*/React.createElement("div", {
165
174
  className: "column-statistics"
166
175
  }, /*#__PURE__*/React.createElement("div", {
167
176
  className: "column-statistics-title"
168
- }, column.name, "\xA0", /*#__PURE__*/React.createElement("span", {
177
+ }, column.name, /*#__PURE__*/React.createElement("span", {
169
178
  className: "column-statistics-type"
170
- }, "(", columnType, ")")), description && /*#__PURE__*/React.createElement("div", {
179
+ }, "\xA0(", columnType, ")"), /*#__PURE__*/React.createElement(Button, {
180
+ kind: "ghost",
181
+ className: "column-statistics-copy",
182
+ icon: copied ? vsPassFilled : vsCopy,
183
+ onClick: () => {
184
+ ContextActionUtils.copyToClipboard(column.name).then(this.handleCopyHeader).catch(e => log.error('Unable to column name', e));
185
+ },
186
+ tooltip: copied ? 'Copied text' : 'Copy column name'
187
+ })), description && /*#__PURE__*/React.createElement("div", {
171
188
  className: "column-statistics-description"
172
189
  }, description), !model.isColumnMovable(columnIndex) && /*#__PURE__*/React.createElement("div", {
173
190
  className: "column-statistics-status"
174
191
  }, /*#__PURE__*/React.createElement(FontAwesomeIcon, {
175
- icon: vsLock,
192
+ icon: model.isColumnFrozen(columnIndex) ? dhFreeze : vsLock,
176
193
  className: "mr-1"
177
- }), "Not movable"), /*#__PURE__*/React.createElement("div", {
194
+ }), model.isColumnFrozen(columnIndex) ? 'Frozen' : 'Not movable'), /*#__PURE__*/React.createElement("div", {
178
195
  className: "column-statistics-grid"
179
196
  }, statistics == null && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
180
197
  className: "column-statistic-operation"
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ColumnStatistics.jsx"],"names":["React","Component","PropTypes","classNames","FontAwesomeIcon","LoadingSpinner","dhRefresh","vsLock","APIPropTypes","Log","PromiseUtils","IrisGridModel","log","module","STATS_LABEL_OVERRIDES","SIZE","ColumnStatistics","getStatsLabel","operation","split","map","w","toUpperCase","substr","toLowerCase","join","constructor","props","handleError","bind","handleGenerateStatistics","handleStatistics","cancelablePromise","state","error","loading","statistics","numRows","componentDidMount","maybeGenerateStatistics","componentWillUnmount","cancel","model","rowCount","setState","isColumnStatisticsAvailable","AUTO_GENERATE_LIMIT","column","makeCancelable","columnStatistics","then","catch","stats","debug","onStatistics","statisticsMap","forEach","value","push","type","getType","uniqueValues","className","isCanceled","render","showGenerateStatistics","statisticElements","columnType","substring","lastIndexOf","description","i","length","formattedValue","displayString","name","statisticElement","rowCountLabel","hasExpandableRows","formattedRowCount","columnIndex","columns","findIndex","col","isColumnMovable","propTypes","instanceOf","isRequired","Column","func"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { LoadingSpinner } from '@deephaven/components';\nimport { dhRefresh, vsLock } from '@deephaven/icons';\nimport { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport IrisGridModel from './IrisGridModel';\nimport './ColumnStatistics.scss';\n\nconst log = Log.module('ColumnStatistics');\nconst STATS_LABEL_OVERRIDES = {\n SIZE: 'Number of Rows',\n};\n\nclass ColumnStatistics extends Component {\n /** Automatically generate the statistics when the row count is below this threshold */\n static AUTO_GENERATE_LIMIT = 100000;\n\n static getStatsLabel(operation) {\n return (\n STATS_LABEL_OVERRIDES[operation] ??\n operation\n .split(' ')\n .map(w => w[0].toUpperCase() + w.substr(1).toLowerCase())\n .join(' ')\n );\n }\n\n constructor(props) {\n super(props);\n\n this.handleError = this.handleError.bind(this);\n this.handleGenerateStatistics = this.handleGenerateStatistics.bind(this);\n this.handleStatistics = this.handleStatistics.bind(this);\n\n this.cancelablePromise = null;\n\n this.state = {\n error: null,\n loading: false,\n statistics: null,\n numRows: 0,\n };\n }\n\n componentDidMount() {\n this.maybeGenerateStatistics();\n }\n\n componentWillUnmount() {\n if (this.cancelablePromise) {\n this.cancelablePromise.cancel();\n }\n }\n\n maybeGenerateStatistics() {\n const { model } = this.props;\n\n const numRows = model.rowCount;\n this.setState({ numRows });\n if (!model.isColumnStatisticsAvailable) {\n this.setState({ loading: false });\n } else if (numRows < ColumnStatistics.AUTO_GENERATE_LIMIT) {\n this.handleGenerateStatistics();\n }\n }\n\n handleGenerateStatistics() {\n this.setState({ loading: true });\n\n const { column, model } = this.props;\n\n this.cancelablePromise = PromiseUtils.makeCancelable(\n model.columnStatistics(column)\n );\n\n this.cancelablePromise.then(this.handleStatistics).catch(this.handleError);\n }\n\n handleStatistics(stats) {\n log.debug('Received statistics', stats);\n\n const { model, onStatistics } = this.props;\n const statistics = [];\n\n stats.statisticsMap.forEach((value, operation) => {\n statistics.push({\n operation: ColumnStatistics.getStatsLabel(operation),\n value,\n type: stats.getType(operation),\n });\n });\n\n stats.uniqueValues.forEach((value, operation) => {\n statistics.push({\n operation,\n className: 'column-statistics-unique-value',\n value,\n type: 'long',\n });\n });\n\n this.setState({\n loading: false,\n statistics,\n numRows: model.rowCount,\n });\n\n onStatistics();\n }\n\n handleError(error) {\n if (error && error.isCanceled) {\n log.debug('Called handleError on a cancelled promise result');\n return;\n }\n\n log.error('Error generating statistics', error);\n this.setState({\n error,\n loading: false,\n statistics: null,\n });\n }\n\n render() {\n const { column, model } = this.props;\n const { error, loading, statistics, numRows } = this.state;\n const showGenerateStatistics =\n !loading &&\n error == null &&\n statistics == null &&\n model.isColumnStatisticsAvailable;\n const statisticElements = [];\n const columnType = column.type.substring(column.type.lastIndexOf('.') + 1);\n const description = column.description === null ? null : column.description;\n if (statistics != null) {\n for (let i = 0; i < statistics.length; i += 1) {\n const { operation, className, value, type } = statistics[i];\n const formattedValue = !type\n ? model.displayString(value, column.type, column.name)\n : model.displayString(value, type);\n const statisticElement = (\n <React.Fragment key={operation}>\n <div\n className={classNames('column-statistic-operation', className)}\n >\n {operation}\n </div>\n <div className=\"column-statistic-value\">{formattedValue}</div>\n </React.Fragment>\n );\n statisticElements.push(statisticElement);\n }\n }\n const rowCountLabel = model.hasExpandableRows\n ? 'Expanded Rows'\n : 'Number of Rows';\n const formattedRowCount = model.displayString(numRows, 'long');\n const columnIndex = model.columns.findIndex(\n col => col.name === column.name\n );\n return (\n <div className=\"column-statistics\">\n <div className=\"column-statistics-title\">\n {column.name}&nbsp;\n <span className=\"column-statistics-type\">({columnType})</span>\n </div>\n {description && (\n <div className=\"column-statistics-description\">{description}</div>\n )}\n {!model.isColumnMovable(columnIndex) && (\n <div className=\"column-statistics-status\">\n <FontAwesomeIcon icon={vsLock} className=\"mr-1\" />\n Not movable\n </div>\n )}\n <div className=\"column-statistics-grid\">\n {statistics == null && (\n <>\n <div className=\"column-statistic-operation\">{rowCountLabel}</div>\n <div className=\"column-statistic-value\">{formattedRowCount}</div>\n </>\n )}\n\n {statisticElements}\n </div>\n {showGenerateStatistics && (\n <button\n type=\"button\"\n className=\"btn btn-link px-0\"\n onClick={this.handleGenerateStatistics}\n >\n Generate Stats\n </button>\n )}\n {error && <div className=\"error-message\">{`${error}`}</div>}\n {statistics && !loading && (\n <button\n type=\"button\"\n className=\"btn btn-link px-0\"\n onClick={this.handleGenerateStatistics}\n >\n <FontAwesomeIcon icon={dhRefresh} className=\"mr-1\" />\n Refresh\n </button>\n )}\n {loading && (\n <div className=\"column-statistics-loading\">\n <LoadingSpinner className=\"mr-2\" />\n Calculating Stats...\n </div>\n )}\n </div>\n );\n }\n}\n\nColumnStatistics.propTypes = {\n model: PropTypes.instanceOf(IrisGridModel).isRequired,\n column: APIPropTypes.Column.isRequired,\n onStatistics: PropTypes.func.isRequired,\n};\n\nexport default ColumnStatistics;\n"],"file":"ColumnStatistics.js"}
1
+ {"version":3,"sources":["../src/ColumnStatistics.jsx"],"names":["React","Component","PropTypes","classNames","FontAwesomeIcon","Button","ContextActionUtils","LoadingSpinner","dhFreeze","dhRefresh","vsCopy","vsLock","vsPassFilled","APIPropTypes","Log","PromiseUtils","IrisGridModel","log","module","STATS_LABEL_OVERRIDES","SIZE","ColumnStatistics","getStatsLabel","operation","split","map","w","toUpperCase","substr","toLowerCase","join","constructor","props","handleError","bind","handleGenerateStatistics","handleStatistics","handleCopyHeader","cancelablePromise","state","error","loading","statistics","numRows","copied","componentDidMount","maybeGenerateStatistics","componentWillUnmount","cancel","setState","model","rowCount","isColumnStatisticsAvailable","AUTO_GENERATE_LIMIT","column","makeCancelable","columnStatistics","then","catch","stats","debug","onStatistics","statisticsMap","forEach","value","push","type","getType","uniqueValues","className","isCanceled","render","showGenerateStatistics","statisticElements","columnType","substring","lastIndexOf","description","i","length","formattedValue","displayString","name","statisticElement","rowCountLabel","hasExpandableRows","formattedRowCount","columnIndex","getColumnIndexByName","copyToClipboard","e","isColumnMovable","isColumnFrozen","propTypes","instanceOf","isRequired","Column","func"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Button,\n ContextActionUtils,\n LoadingSpinner,\n} from '@deephaven/components';\nimport {\n dhFreeze,\n dhRefresh,\n vsCopy,\n vsLock,\n vsPassFilled,\n} from '@deephaven/icons';\nimport { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport { PromiseUtils } from '@deephaven/utils';\nimport IrisGridModel from './IrisGridModel';\nimport './ColumnStatistics.scss';\n\nconst log = Log.module('ColumnStatistics');\nconst STATS_LABEL_OVERRIDES = {\n SIZE: 'Number of Rows',\n};\n\nclass ColumnStatistics extends Component {\n /** Automatically generate the statistics when the row count is below this threshold */\n static AUTO_GENERATE_LIMIT = 100000;\n\n static getStatsLabel(operation) {\n return (\n STATS_LABEL_OVERRIDES[operation] ??\n operation\n .split(' ')\n .map(w => w[0].toUpperCase() + w.substr(1).toLowerCase())\n .join(' ')\n );\n }\n\n constructor(props) {\n super(props);\n\n this.handleError = this.handleError.bind(this);\n this.handleGenerateStatistics = this.handleGenerateStatistics.bind(this);\n this.handleStatistics = this.handleStatistics.bind(this);\n this.handleCopyHeader = this.handleCopyHeader.bind(this);\n\n this.cancelablePromise = null;\n\n this.state = {\n error: null,\n loading: false,\n statistics: null,\n numRows: 0,\n copied: false,\n };\n }\n\n componentDidMount() {\n this.maybeGenerateStatistics();\n }\n\n componentWillUnmount() {\n if (this.cancelablePromise) {\n this.cancelablePromise.cancel();\n }\n }\n\n handleCopyHeader() {\n this.setState({ copied: true });\n }\n\n maybeGenerateStatistics() {\n const { model } = this.props;\n\n const numRows = model.rowCount;\n this.setState({ numRows });\n if (!model.isColumnStatisticsAvailable) {\n this.setState({ loading: false });\n } else if (numRows < ColumnStatistics.AUTO_GENERATE_LIMIT) {\n this.handleGenerateStatistics();\n }\n }\n\n handleGenerateStatistics() {\n this.setState({ loading: true });\n\n const { column, model } = this.props;\n\n this.cancelablePromise = PromiseUtils.makeCancelable(\n model.columnStatistics(column)\n );\n\n this.cancelablePromise.then(this.handleStatistics).catch(this.handleError);\n }\n\n handleStatistics(stats) {\n log.debug('Received statistics', stats);\n\n const { model, onStatistics } = this.props;\n const statistics = [];\n\n stats.statisticsMap.forEach((value, operation) => {\n statistics.push({\n operation: ColumnStatistics.getStatsLabel(operation),\n value,\n type: stats.getType(operation),\n });\n });\n\n stats.uniqueValues.forEach((value, operation) => {\n statistics.push({\n operation,\n className: 'column-statistics-unique-value',\n value,\n type: 'long',\n });\n });\n\n this.setState({\n loading: false,\n statistics,\n numRows: model.rowCount,\n });\n\n onStatistics();\n }\n\n handleError(error) {\n if (error && error.isCanceled) {\n log.debug('Called handleError on a cancelled promise result');\n return;\n }\n\n log.error('Error generating statistics', error);\n this.setState({\n error,\n loading: false,\n statistics: null,\n });\n }\n\n render() {\n const { column, model } = this.props;\n const { error, loading, statistics, numRows, copied } = this.state;\n const showGenerateStatistics =\n !loading &&\n error == null &&\n statistics == null &&\n model.isColumnStatisticsAvailable;\n const statisticElements = [];\n const columnType = column.type.substring(column.type.lastIndexOf('.') + 1);\n const description = column.description === null ? null : column.description;\n if (statistics != null) {\n for (let i = 0; i < statistics.length; i += 1) {\n const { operation, className, value, type } = statistics[i];\n const formattedValue = !type\n ? model.displayString(value, column.type, column.name)\n : model.displayString(value, type);\n const statisticElement = (\n <React.Fragment key={operation}>\n <div\n className={classNames('column-statistic-operation', className)}\n >\n {operation}\n </div>\n <div className=\"column-statistic-value\">{formattedValue}</div>\n </React.Fragment>\n );\n statisticElements.push(statisticElement);\n }\n }\n const rowCountLabel = model.hasExpandableRows\n ? 'Expanded Rows'\n : 'Number of Rows';\n const formattedRowCount = model.displayString(numRows, 'long');\n const columnIndex = model.getColumnIndexByName(column.name);\n return (\n <div className=\"column-statistics\">\n <div className=\"column-statistics-title\">\n {column.name}\n <span className=\"column-statistics-type\">&nbsp;({columnType})</span>\n <Button\n kind=\"ghost\"\n className=\"column-statistics-copy\"\n icon={copied ? vsPassFilled : vsCopy}\n onClick={() => {\n ContextActionUtils.copyToClipboard(column.name)\n .then(this.handleCopyHeader)\n .catch(e => log.error('Unable to column name', e));\n }}\n tooltip={copied ? 'Copied text' : 'Copy column name'}\n />\n </div>\n {description && (\n <div className=\"column-statistics-description\">{description}</div>\n )}\n {!model.isColumnMovable(columnIndex) && (\n <div className=\"column-statistics-status\">\n <FontAwesomeIcon\n icon={model.isColumnFrozen(columnIndex) ? dhFreeze : vsLock}\n className=\"mr-1\"\n />\n {model.isColumnFrozen(columnIndex) ? 'Frozen' : 'Not movable'}\n </div>\n )}\n <div className=\"column-statistics-grid\">\n {statistics == null && (\n <>\n <div className=\"column-statistic-operation\">{rowCountLabel}</div>\n <div className=\"column-statistic-value\">{formattedRowCount}</div>\n </>\n )}\n\n {statisticElements}\n </div>\n {showGenerateStatistics && (\n <button\n type=\"button\"\n className=\"btn btn-link px-0\"\n onClick={this.handleGenerateStatistics}\n >\n Generate Stats\n </button>\n )}\n {error && <div className=\"error-message\">{`${error}`}</div>}\n {statistics && !loading && (\n <button\n type=\"button\"\n className=\"btn btn-link px-0\"\n onClick={this.handleGenerateStatistics}\n >\n <FontAwesomeIcon icon={dhRefresh} className=\"mr-1\" />\n Refresh\n </button>\n )}\n {loading && (\n <div className=\"column-statistics-loading\">\n <LoadingSpinner className=\"mr-2\" />\n Calculating Stats...\n </div>\n )}\n </div>\n );\n }\n}\n\nColumnStatistics.propTypes = {\n model: PropTypes.instanceOf(IrisGridModel).isRequired,\n column: APIPropTypes.Column.isRequired,\n onStatistics: PropTypes.func.isRequired,\n};\n\nexport default ColumnStatistics;\n"],"file":"ColumnStatistics.js"}
package/dist/IrisGrid.css CHANGED
@@ -29,6 +29,8 @@
29
29
  negative-number-color: #f95d84;
30
30
  zero-number-color: #fcd65b;
31
31
  date-color: #fcd65b;
32
+ pending-text-color: #fde38d;
33
+ error-text-color: #f95d84;
32
34
  filter-bar-active-bg: #425175;
33
35
  filter-bar-active-color: #4878ea;
34
36
  filter-bar-expanded-bg: #373438;
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../src/IrisGridTheme.module.scss","../../components/scss/bootstrap_overrides.scss","../src/IrisGrid.scss","../../../node_modules/bootstrap/scss/_variables.scss"],"names":[],"mappings":"AAAA;AAOA;EACE,SCmBS;EDlBT;EACA,WCCc;EDAd,cCEe;EDDf,wBCeS;EDdT,8BCQS;EDPT,qCCFc;EDGd,uBCPO;EDQP,0BCoDW;EDnDX,yBCUS;EDTT;EACA;EACA,iBAjBgB;EAkBhB,yBCdK;EDeL,gCCKS;EDJT;EACA;EAEA;EACA,qBCFS;EDGT,yBCLS;EDMT,yBCHS;EDIT,kBCRS;EDST,wBCVS;EDWT,yBCZS;EDcT,YCrBe;EDsBf,uBC7BM;ED8BN,uBCjCI;EDkCJ,mBChCO;EDiCP,YCjCO;EDoCP;EAKA,yBClCc;EDmCd,wBCtBS;EDuBT;EAKA;EAKA,4BCrCS;EDsCT,wBCxDI;EDyDJ,mBChDc;EDkDd,aCxCS;EDyCT,8BCvDO;EDwDP,iCCIW;EDHX;EACA,iBC5CS;ED6CT,mBC/CS;EDgDT,yBClDS;EDmDT,8BCvDe;EDyDf,yBChDS;EDiDT,gCChDS;EDiDT,8BCjDS;EDkDT,8BC/CS;;;ACXX;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA,OA/BsB;EAgCtB,WAhCsB;EAiCtB,YDdO;ECeP;EACA;EAGA;EACA;;AAEA;AAAA;AAAA;EAGE,YDzBK;;AC4BP;EACE;;AAGF;EACE;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA,eCiEK;;AD9DP;EACE;EACA;EACA;EAEA;EACA;EACA;EACA,MA9Ea;EA+Eb;EACA;;AAEA;EACE;EACA;EACA;EACA;EAKA;EACA;EACA;EACA;;AAGA;EACE;;AAIF;EACE;;AAIJ;EACE,ODnGW;ECoGX,YDxFK;;AC0FL;EACE,YAxGU;;AA2GZ;EACE,ODrHF;;ACsHE;EACE,YA5GgB;;;AAmH1B;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,ODlIS;ECmIT;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA,YDxCW;ECyCX;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;AACA;EACE;EACA;;AAEA;EACE;EACA;;AAEF;EACE;EACA;;AAKA;EACE;;AAEF;EACE;;AAGJ;EACE,OD9KK;;AC+KL;EACE,OD5LQ;;;ACkMhB;EACE,YDvLS;;ACyLP;EACE;EACA;EACA,YD5LK;EC6LL;EACA;;AAEF;EACE,cDjMK;;;ACsMX;EACE;EACA;;;AAGF;EACE;EACA;;AAEA;EACE;;AAEF;EACE;EAEA,YApOuB;;AAsOzB;EACE,YAvOuB;;AAyOzB;EACE,YA1OuB;EA2OvB;;AAEF;EAEE;;AAGF;EACE;;AAEF;EACE;EAEA,WA5PsB;;AA8PxB;EACE,WA/PsB;;AAiQxB;EACE,WAlQsB;EAmQtB;;AAEF;EAEE;;;AAIJ;EACE,kBDzNa;;AC2Nb;EAEE,kBDzQY","file":"IrisGrid.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../src/IrisGridTheme.module.scss","../../components/scss/bootstrap_overrides.scss","../src/IrisGrid.scss","../../../node_modules/bootstrap/scss/_variables.scss"],"names":[],"mappings":"AAAA;AAOA;EACE,SCmBS;EDlBT;EACA,WCCc;EDAd,cCEe;EDDf,wBCeS;EDdT,8BCQS;EDPT,qCCFc;EDGd,uBCPO;EDQP,0BCoDW;EDnDX,yBCUS;EDTT;EACA;EACA,iBAjBgB;EAkBhB,yBCdK;EDeL,gCCKS;EDJT;EACA;EAEA;EACA,qBCFS;EDGT,yBCLS;EDMT,yBCHS;EDIT,kBCRS;EDST,wBCVS;EDWT,yBCZS;EDcT,YCrBe;EDsBf,uBC7BM;ED8BN,uBCjCI;EDkCJ,mBChCO;EDiCP,YCjCO;EDkCP;EACA,kBCrCI;EDwCJ;EAKA,yBCpCc;EDqCd,wBCxBS;EDyBT;EAKA;EAKA,4BCvCS;EDwCT,wBC1DI;ED2DJ,mBClDc;EDoDd,aC1CS;ED2CT,8BCzDO;ED0DP,iCCEW;EDDX;EACA,iBC9CS;ED+CT,mBCjDS;EDkDT,yBCpDS;EDqDT,8BCzDe;ED2Df,yBClDS;EDmDT,gCClDS;EDmDT,8BCnDS;EDoDT,8BCjDS;;;ACXX;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA,OA/BsB;EAgCtB,WAhCsB;EAiCtB,YDdO;ECeP;EACA;EAGA;EACA;;AAEA;AAAA;AAAA;EAGE,YDzBK;;AC4BP;EACE;;AAGF;EACE;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA,eCiEK;;AD9DP;EACE;EACA;EACA;EAEA;EACA;EACA;EACA,MA9Ea;EA+Eb;EACA;;AAEA;EACE;EACA;EACA;EACA;EAKA;EACA;EACA;EACA;;AAGA;EACE;;AAIF;EACE;;AAIJ;EACE,ODnGW;ECoGX,YDxFK;;AC0FL;EACE,YAxGU;;AA2GZ;EACE,ODrHF;;ACsHE;EACE,YA5GgB;;;AAmH1B;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,ODlIS;ECmIT;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA,YDxCW;ECyCX;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;AACA;EACE;EACA;;AAEA;EACE;EACA;;AAEF;EACE;EACA;;AAKA;EACE;;AAEF;EACE;;AAGJ;EACE,OD9KK;;AC+KL;EACE,OD5LQ;;;ACkMhB;EACE,YDvLS;;ACyLP;EACE;EACA;EACA,YD5LK;EC6LL;EACA;;AAEF;EACE,cDjMK;;;ACsMX;EACE;EACA;;;AAGF;EACE;EACA;;AAEA;EACE;;AAEF;EACE;EAEA,YApOuB;;AAsOzB;EACE,YAvOuB;;AAyOzB;EACE,YA1OuB;EA2OvB;;AAEF;EAEE;;AAGF;EACE;;AAEF;EACE;EAEA,WA5PsB;;AA8PxB;EACE,WA/PsB;;AAiQxB;EACE,WAlQsB;EAmQtB;;AAEF;EAEE;;;AAIJ;EACE,kBDzNa;;AC2Nb;EAEE,kBDzQY","file":"IrisGrid.css"}
@@ -450,6 +450,7 @@ export class IrisGrid extends React.Component<any, any, any> {
450
450
  advancedFilters: any;
451
451
  }): void;
452
452
  updateFormatterSettings(settings: any, forceUpdate?: boolean): void;
453
+ getAlwaysFetchColumns: ((alwaysFetchColumns: any, columns: any, floatingLeftColumnCount: any, floatingRightColumnCount: any) => any[]) & memoize.Memoized<(alwaysFetchColumns: any, columns: any, floatingLeftColumnCount: any, floatingRightColumnCount: any) => any[]>;
453
454
  updateFormatter(updatedFormats: any, forceUpdate?: boolean): void;
454
455
  initFormatter(): void;
455
456
  initState(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGrid.d.ts","sourceRoot":"","sources":["../src/IrisGrid.jsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IrisGrid.d.ts","sourceRoot":"","sources":["../src/IrisGrid.jsx"],"names":[],"mappings":"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"}
package/dist/IrisGrid.js CHANGED
@@ -2,7 +2,7 @@ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try
2
2
 
3
3
  function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
4
4
 
5
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
5
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
6
6
 
7
7
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
8
8
 
@@ -171,7 +171,7 @@ export class IrisGrid extends Component {
171
171
 
172
172
  _defineProperty(this, "getCachedHiddenColumns", memoize(hiddenColumns => hiddenColumns, {
173
173
  max: 1,
174
- normalizer: (_ref2) => {
174
+ normalizer: _ref2 => {
175
175
  var [hiddenColumns] = _ref2;
176
176
  return hiddenColumns.join();
177
177
  }
@@ -179,7 +179,7 @@ export class IrisGrid extends Component {
179
179
 
180
180
  _defineProperty(this, "getAggregationMap", memoize((columns, aggregations) => {
181
181
  var aggregationMap = {};
182
- aggregations.forEach((_ref3) => {
182
+ aggregations.forEach(_ref3 => {
183
183
  var {
184
184
  operation,
185
185
  selected,
@@ -192,7 +192,7 @@ export class IrisGrid extends Component {
192
192
 
193
193
  _defineProperty(this, "getOperationMap", memoize((columns, aggregations) => {
194
194
  var operationMap = {};
195
- aggregations.filter(a => !AggregationUtils.isRollupOperation(a.operation)).forEach((_ref4) => {
195
+ aggregations.filter(a => !AggregationUtils.isRollupOperation(a.operation)).forEach(_ref4 => {
196
196
  var {
197
197
  operation,
198
198
  selected,
@@ -258,6 +258,22 @@ export class IrisGrid extends Component {
258
258
  max: 1
259
259
  }));
260
260
 
261
+ _defineProperty(this, "getAlwaysFetchColumns", memoize((alwaysFetchColumns, columns, floatingLeftColumnCount, floatingRightColumnCount) => {
262
+ var floatingLeftColumns = [];
263
+ var floatingRightColumns = [];
264
+
265
+ if (floatingLeftColumnCount) {
266
+ floatingLeftColumns = columns.slice(0, floatingLeftColumnCount).map(col => col.name);
267
+ }
268
+
269
+ if (floatingRightColumnCount) {
270
+ floatingRightColumns = columns.slice(-floatingRightColumnCount).map(col => col.name);
271
+ }
272
+
273
+ var columnSet = new Set([...alwaysFetchColumns, ...floatingLeftColumns, ...floatingRightColumns]);
274
+ return [...columnSet];
275
+ }));
276
+
261
277
  this.handleAdvancedFilterChange = this.handleAdvancedFilterChange.bind(this);
262
278
  this.handleAdvancedFilterSortChange = this.handleAdvancedFilterSortChange.bind(this);
263
279
  this.handleAdvancedFilterDone = this.handleAdvancedFilterDone.bind(this);
@@ -640,13 +656,13 @@ export class IrisGrid extends Component {
640
656
  var newAdvancedFilters = replaceExisting ? new Map() : new Map(advancedFilters);
641
657
  var newQuickFilters = replaceExisting ? new Map() : new Map(quickFilters);
642
658
  var isChanged = replaceExisting && advancedFilters.size > 0;
643
- inputFilters.forEach((_ref5) => {
659
+ inputFilters.forEach(_ref5 => {
644
660
  var {
645
661
  name,
646
662
  type,
647
663
  value
648
664
  } = _ref5;
649
- var modelIndex = model.columns.findIndex((_ref6) => {
665
+ var modelIndex = model.columns.findIndex(_ref6 => {
650
666
  var {
651
667
  name: columnName,
652
668
  type: columnType
@@ -727,7 +743,7 @@ export class IrisGrid extends Component {
727
743
 
728
744
  log.debug('Setting advanced filter', modelIndex, filter);
729
745
  this.startLoading('Filtering...', true);
730
- this.setState((_ref7) => {
746
+ this.setState(_ref7 => {
731
747
  var {
732
748
  advancedFilters
733
749
  } = _ref7;
@@ -758,7 +774,7 @@ export class IrisGrid extends Component {
758
774
  setQuickFilter(modelIndex, filter, text) {
759
775
  log.debug('Setting quick filter', modelIndex, filter, text);
760
776
  this.startLoading('Filtering...', true);
761
- this.setState((_ref8) => {
777
+ this.setState(_ref8 => {
762
778
  var {
763
779
  quickFilters
764
780
  } = _ref8;
@@ -819,7 +835,7 @@ export class IrisGrid extends Component {
819
835
 
820
836
  removeColumnFilter(modelColumn) {
821
837
  this.startLoading('Filtering...', true);
822
- this.setState((_ref10) => {
838
+ this.setState(_ref10 => {
823
839
  var {
824
840
  advancedFilters,
825
841
  quickFilters
@@ -1706,7 +1722,7 @@ export class IrisGrid extends Component {
1706
1722
 
1707
1723
  handleFilterBarChange(value) {
1708
1724
  this.startLoading('Filtering...', true);
1709
- this.setState((_ref12) => {
1725
+ this.setState(_ref12 => {
1710
1726
  var {
1711
1727
  focusedFilterBarColumn,
1712
1728
  quickFilters
@@ -1784,7 +1800,7 @@ export class IrisGrid extends Component {
1784
1800
  }
1785
1801
 
1786
1802
  handleMenuBack() {
1787
- this.setState((_ref13) => {
1803
+ this.setState(_ref13 => {
1788
1804
  var {
1789
1805
  openOptions
1790
1806
  } = _ref13;
@@ -1797,7 +1813,7 @@ export class IrisGrid extends Component {
1797
1813
  }
1798
1814
 
1799
1815
  handleMenuSelect(option) {
1800
- this.setState((_ref14) => {
1816
+ this.setState(_ref14 => {
1801
1817
  var {
1802
1818
  openOptions
1803
1819
  } = _ref14;
@@ -2047,7 +2063,7 @@ export class IrisGrid extends Component {
2047
2063
  handleAggregationChange(aggregation) {
2048
2064
  log.debug('handleAggregationChange', aggregation);
2049
2065
  this.startLoading("Aggregating ".concat(aggregation.operation, "..."));
2050
- this.setState((_ref15) => {
2066
+ this.setState(_ref15 => {
2051
2067
  var {
2052
2068
  aggregationSettings
2053
2069
  } = _ref15;
@@ -2816,7 +2832,7 @@ export class IrisGrid extends Component {
2816
2832
  movedColumns: movedColumns,
2817
2833
  customColumns: customColumns,
2818
2834
  hiddenColumns: hiddenColumns,
2819
- alwaysFetchColumns: alwaysFetchColumns,
2835
+ alwaysFetchColumns: this.getAlwaysFetchColumns(alwaysFetchColumns, model.columns, model.floatingLeftColumnCount, model.floatingRightColumnCount),
2820
2836
  rollupConfig: this.getModelRollupConfig(model.originalColumns, rollupConfig, aggregationSettings),
2821
2837
  totalsConfig: this.getModelTotalsConfig(model.columns, rollupConfig, aggregationSettings),
2822
2838
  selectDistinctColumns: selectDistinctColumns,