@deephaven/iris-grid 0.11.6-beta.0 → 0.11.6-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../src/sidebar/ChartBuilder.scss","../../../components/scss/bootstrap_overrides.scss","../../../../node_modules/bootstrap/scss/_variables.scss"],"names":[],"mappings":"AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AACA;EACE,OCLK;;ADML;EACE;;AAKN;EACE,OCbO;EDcP,WEkS0B;EFjS1B;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA,YCpBO;;ADuBT;EACE;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE","file":"ChartBuilder.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../src/sidebar/ChartBuilder.scss","../../../components/scss/bootstrap_overrides.scss","../../../../node_modules/bootstrap/scss/_variables.scss"],"names":[],"mappings":"AAEA;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AACA;EACE,OCLK;;ADML;EACE;;AAKN;EACE,OCbO;EDcP,WE8R0B;EF7R1B;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA,YCpBO;;ADuBT;EACE;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE","file":"ChartBuilder.css"}
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../src/sidebar/CustomColumnBuilder.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../components/scss/new_variables.scss","../../../components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAKE;EACE,SCkIK;;AD/HP;EACE;;AACA;EEOF;EAIA;EAEA;EACA;EACA;EACA;EACA;;AFZA;EACE,YGOO;;AHLP;EACE;;AAGF;EACE,YGgCS;EH/BT,YGiGO;;AH7FX;EACE,SC0GK;;ADvGP;EACE,OG/BE;EHgCF;EACA,eE/BO;EFgCP;;AACA;EACE,eErCK;;AFuCP;EACE,SExCK;EFyCL,eG8EU;EH7EV;;AAIJ;EACE,QCuFK;EDtFL;EACA;;AAEA;EACE;;AAIJ;EACE,YGlCO;EHmCP;EACA","file":"CustomColumnBuilder.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../src/sidebar/CustomColumnBuilder.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../components/scss/new_variables.scss","../../../components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAKE;EACE,SCiIK;;AD9HP;EACE;;AACA;EEOF;EAIA;EAEA;EACA;EACA;EACA;EACA;;AFZA;EACE,YGOO;;AHLP;EACE;;AAGF;EACE,YGgCS;EH/BT,YGiGO;;AH7FX;EACE,SCyGK;;ADtGP;EACE,OG/BE;EHgCF;EACA,eE/BO;EFgCP;;AACA;EACE,eErCK;;AFuCP;EACE,SExCK;EFyCL,eG8EU;EH7EV;;AAIJ;EACE,QCsFK;EDrFL;EACA;;AAEA;EACE;;AAIJ;EACE,YGlCO;EHmCP;EACA","file":"CustomColumnBuilder.css"}
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../src/sidebar/InputEditor.scss","../../../components/scss/bootstrap_overrides.scss","../../../../node_modules/bootstrap/scss/_variables.scss"],"names":[],"mappings":"AAKA;EACE;EACA;EACA,YCeS;EDdT,eCgHc;;AD9Gd;EACE,cC8HuB;ED7HvB,YCiIyB;;AD9H3B;EACE,cEmoBgC;;AFhoBlC;EACE;;AAEA;EACE,kBCDK;;ADIP;AAAA;AAAA;EAGE,kBCPK;;ADWT;EACE;EACA;EACA;EACA;EACA,OC1Ba;ED2Bb","file":"InputEditor.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../src/sidebar/InputEditor.scss","../../../components/scss/bootstrap_overrides.scss","../../../../node_modules/bootstrap/scss/_variables.scss"],"names":[],"mappings":"AAKA;EACE;EACA;EACA,YCeS;EDdT,eCgHc;;AD9Gd;EACE,cC8HuB;ED7HvB,YCiIyB;;AD9H3B;EACE,cEgoBgC;;AF7nBlC;EACE;;AAEA;EACE,kBCDK;;ADIP;AAAA;AAAA;EAGE,kBCPK;;ADWT;EACE;EACA;EACA;EACA;EACA,OC1Ba;ED2Bb","file":"InputEditor.css"}
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../src/sidebar/SelectDistinctBuilder.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE,SC4HK;ED3HL;EACA;;AAGF;EACE,SCsHK;;ADnHP;EACE,QCkHK;EDjHL;EACA;EACA;EACA,gBC8GK;;AD3GP;EACE,OETO;EFUP;;AACA;EACE;EACA,OE7BG;EF8BH,aEgEkB;;AF5DtB;EACE,YEfO;EFgBP;EACA","file":"SelectDistinctBuilder.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../src/sidebar/SelectDistinctBuilder.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../components/scss/bootstrap_overrides.scss"],"names":[],"mappings":"AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE,SC2HK;ED1HL;EACA;;AAGF;EACE,SCqHK;;ADlHP;EACE,QCiHK;EDhHL;EACA;EACA;EACA,gBC6GK;;AD1GP;EACE,OETO;EFUP;;AACA;EACE;EACA,OE7BG;EF8BH,aEgEkB;;AF5DtB;EACE,YEfO;EFgBP;EACA","file":"SelectDistinctBuilder.css"}
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../src/sidebar/TableCsvExporter.scss","../../../components/scss/new_variables.scss","../../../components/scss/bootstrap_overrides.scss","../../../../node_modules/bootstrap/scss/_variables.scss"],"names":[],"mappings":"AAEA;EACE;;AAEA;EACE,eCHO;;ADMT;EACE;EACA;;AAEA;EACE;;AAGF;EACE,cChBK;;ADqBP;EACE,OErBA;;AFwBF;EACE,eG4GG;;AHzGL;EACE;EACA","file":"TableCsvExporter.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../src/sidebar/TableCsvExporter.scss","../../../components/scss/new_variables.scss","../../../components/scss/bootstrap_overrides.scss","../../../../node_modules/bootstrap/scss/_variables.scss"],"names":[],"mappings":"AAEA;EACE;;AAEA;EACE,eCHO;;ADMT;EACE;EACA;;AAEA;EACE;;AAGF;EACE,cChBK;;ADqBP;EACE,OErBA;;AFwBF;EACE,eG2GG;;AHxGL;EACE;EACA","file":"TableCsvExporter.css"}
@@ -1 +1 @@
1
- {"version":3,"file":"TableCsvExporter.d.ts","sourceRoot":"","sources":["../../src/sidebar/TableCsvExporter.jsx"],"names":[],"mappings":";AAaA;IACE,oCAAkD;IAElD;;;;;MAKE;IAEF;;;;MAIE;IAEF;;;MAGE;IAEF,qCAAmC;IAEnC,+BAKC;IAED,wBAyBC;IAwDD,4BA2BC;IAED,8CAEC;IAED,wDAEC;IAED,sDAEC;IA7FD,2BAgDC;IAED,2BAEC;IA2CD,+BAkCC;CAmLF;;;;;;;;;;;;;;;QAgBkB,0CAAQ"}
1
+ {"version":3,"file":"TableCsvExporter.d.ts","sourceRoot":"","sources":["../../src/sidebar/TableCsvExporter.jsx"],"names":[],"mappings":";AAaA;IACE,oCAAkD;IAElD;;;;;MAKE;IAEF;;;;MAIE;IAEF;;;MAGE;IAEF,qCAAmC;IAEnC,+BAKC;IAED,wBAyBC;IAwDD,4BA2BC;IAED,8CAEC;IAED,wDAEC;IAED,sDAEC;IA7FD,2BAgDC;IAED,2BAEC;IA2CD,+BAkCC;CA8LF;;;;;;;;;;;;;;;QAgBkB,0CAAQ"}
@@ -200,15 +200,18 @@ class TableCsvExporter extends Component {
200
200
  value: downloadOption,
201
201
  disabled: isDownloading
202
202
  }, /*#__PURE__*/React.createElement(RadioItem, {
203
- value: TableCsvExporter.DOWNLOAD_OPTIONS.ALL_ROWS
203
+ value: TableCsvExporter.DOWNLOAD_OPTIONS.ALL_ROWS,
204
+ "data-testid": "radio-csv-exporter-download-all"
204
205
  }, "All Rows", /*#__PURE__*/React.createElement("span", {
205
206
  className: "text-muted ml-2"
206
207
  }, "(".concat(rowCount.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,'), " rows)"))), /*#__PURE__*/React.createElement(RadioItem, {
207
- value: TableCsvExporter.DOWNLOAD_OPTIONS.SELECTED_ROWS
208
+ value: TableCsvExporter.DOWNLOAD_OPTIONS.SELECTED_ROWS,
209
+ "data-testid": "radio-csv-exporter-only-selected"
208
210
  }, "Only Selected Rows", /*#__PURE__*/React.createElement("span", {
209
211
  className: "text-muted ml-2"
210
212
  }, selectedRanges.length > 0 ? "(".concat(GridRange.rowCount(selectedRanges).toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,'), " rows)") : null)), /*#__PURE__*/React.createElement(RadioItem, {
211
- value: TableCsvExporter.DOWNLOAD_OPTIONS.CUSTOMIZED_ROWS
213
+ value: TableCsvExporter.DOWNLOAD_OPTIONS.CUSTOMIZED_ROWS,
214
+ "data-testid": "radio-csv-exporter-customized-rows"
212
215
  }, /*#__PURE__*/React.createElement("div", {
213
216
  className: "radio-input-row",
214
217
  role: "presentation",
@@ -220,6 +223,7 @@ class TableCsvExporter extends Component {
220
223
  }, /*#__PURE__*/React.createElement("select", {
221
224
  defaultValue: TableCsvExporter.DOWNLOAD_OPTIONS.FIRST,
222
225
  value: customizedDownloadOption,
226
+ "data-testid": "select-csv-exporter-customized-rows",
223
227
  className: "custom-select",
224
228
  disabled: isDownloading,
225
229
  onChange: this.handleCustomizedDownloadOptionChanged
@@ -231,6 +235,7 @@ class TableCsvExporter extends Component {
231
235
  type: "number",
232
236
  className: "form-control",
233
237
  id: "customizedRows-".concat(id),
238
+ "data-testid": "input-csv-exporter-customized-rows",
234
239
  name: "customizedRows-".concat(id),
235
240
  placeholder: "100",
236
241
  value: customizedDownloadRows,
@@ -244,6 +249,7 @@ class TableCsvExporter extends Component {
244
249
  type: "text",
245
250
  className: "form-control",
246
251
  id: "filename-".concat(id),
252
+ "data-testid": "input-csv-exporter-file-name",
247
253
  name: "filename-".concat(id),
248
254
  value: fileName,
249
255
  onChange: event => {
@@ -282,6 +288,7 @@ class TableCsvExporter extends Component {
282
288
  }
283
289
  }))), /*#__PURE__*/React.createElement("button", {
284
290
  type: "button",
291
+ "data-testid": "btn-csv-exporter-download",
285
292
  className: ClassNames('btn btn-primary btn-downloading', {
286
293
  'btn-spinner btn-cancelable': isDownloading
287
294
  }),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/sidebar/TableCsvExporter.jsx"],"names":["React","Component","PropTypes","ClassNames","FontAwesomeIcon","LoadingSpinner","RadioGroup","RadioItem","GridRange","vsIssues","dh","TimeUtils","shortid","IrisGridModel","TableCsvExporter","getDateString","i18n","DateTimeFormat","format","FILENAME_DATE_FORMAT","Date","constructor","props","handleDownloadClick","bind","handleDownloadOptionChanged","handleCustomizedDownloadOptionChanged","handleCustomizedDownloadRowsChanged","name","state","fileName","downloadOption","DOWNLOAD_OPTIONS","ALL_ROWS","customizedDownloadOption","CUSTOMIZED_ROWS_OPTIONS","FIRST","customizedDownloadRows","DEFAULT_DOWNLOAD_ROWS","errorMessage","id","generate","getSnapshotRanges","model","selectedRanges","rowCount","snapshotRanges","push","SELECTED_ROWS","sort","rangeA","rangeB","startRow","CUSTOMIZED_ROWS","Math","min","LAST","max","resetDownloadState","setState","isDownloading","onDownloadStart","onDownload","onCancel","validateOptionInput","export","then","frozenTable","tableSubscription","setViewport","getViewportData","event","target","value","length","render","tableDownloadProgress","tableDownloadEstimatedTime","tableDownloadStatus","toString","replace","DOWNLOAD_STATUS","DOWNLOADING","INITIATING","formatElapsedTime","FINISHED","CANCELED","width","propTypes","instanceOf","isRequired","string","bool","number","func","arrayOf","defaultProps"],"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, RadioGroup, RadioItem } from '@deephaven/components';\nimport { GridRange } from '@deephaven/grid';\nimport { vsIssues } from '@deephaven/icons';\nimport dh from '@deephaven/jsapi-shim';\nimport { TimeUtils } from '@deephaven/utils';\nimport shortid from 'shortid';\nimport IrisGridModel from '../IrisGridModel';\nimport './TableCsvExporter.scss';\n\nclass TableCsvExporter extends Component {\n static FILENAME_DATE_FORMAT = 'yyyy-MM-dd-HHmmss';\n\n static DOWNLOAD_STATUS = {\n INITIATING: 'INITIATING',\n DOWNLOADING: 'DOWNLOADING',\n FINISHED: 'FINISHED',\n CANCELED: 'CANCELED',\n };\n\n static DOWNLOAD_OPTIONS = {\n ALL_ROWS: 'ALL_ROWS',\n SELECTED_ROWS: 'SELECTED_ROWS',\n CUSTOMIZED_ROWS: 'CUSTOMIZED_ROWS',\n };\n\n static CUSTOMIZED_ROWS_OPTIONS = {\n FIRST: 'FIRST',\n LAST: 'LAST',\n };\n\n static DEFAULT_DOWNLOAD_ROWS = 100;\n\n static getDateString() {\n return dh.i18n.DateTimeFormat.format(\n TableCsvExporter.FILENAME_DATE_FORMAT,\n new Date()\n );\n }\n\n constructor(props) {\n super(props);\n\n this.handleDownloadClick = this.handleDownloadClick.bind(this);\n this.handleDownloadOptionChanged = this.handleDownloadOptionChanged.bind(\n this\n );\n this.handleCustomizedDownloadOptionChanged = this.handleCustomizedDownloadOptionChanged.bind(\n this\n );\n this.handleCustomizedDownloadRowsChanged = this.handleCustomizedDownloadRowsChanged.bind(\n this\n );\n\n const { name } = props;\n this.state = {\n fileName: `${name}-${TableCsvExporter.getDateString()}.csv`,\n\n downloadOption: TableCsvExporter.DOWNLOAD_OPTIONS.ALL_ROWS,\n customizedDownloadOption: TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.FIRST,\n customizedDownloadRows: TableCsvExporter.DEFAULT_DOWNLOAD_ROWS,\n\n errorMessage: null,\n id: shortid.generate(),\n };\n }\n\n getSnapshotRanges() {\n const { model, selectedRanges } = this.props;\n const {\n downloadOption,\n customizedDownloadOption,\n customizedDownloadRows,\n } = this.state;\n const { rowCount } = model;\n let snapshotRanges = [];\n switch (downloadOption) {\n case TableCsvExporter.DOWNLOAD_OPTIONS.ALL_ROWS:\n snapshotRanges.push(new GridRange(null, 0, null, rowCount - 1));\n break;\n case TableCsvExporter.DOWNLOAD_OPTIONS.SELECTED_ROWS:\n snapshotRanges = [...selectedRanges].sort(\n (rangeA, rangeB) => rangeA.startRow - rangeB.startRow\n );\n break;\n case TableCsvExporter.DOWNLOAD_OPTIONS.CUSTOMIZED_ROWS:\n switch (customizedDownloadOption) {\n case TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.FIRST:\n snapshotRanges.push(\n new GridRange(\n null,\n 0,\n null,\n Math.min(customizedDownloadRows - 1, rowCount - 1)\n )\n );\n break;\n case TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.LAST:\n snapshotRanges.push(\n new GridRange(\n null,\n Math.max(0, rowCount - customizedDownloadRows),\n null,\n rowCount - 1\n )\n );\n break;\n default:\n break;\n }\n break;\n default:\n break;\n }\n return snapshotRanges;\n }\n\n resetDownloadState() {\n this.setState({ errorMessage: null });\n }\n\n handleDownloadClick() {\n const {\n model,\n isDownloading,\n onDownloadStart,\n onDownload,\n onCancel,\n } = this.props;\n const { fileName } = this.state;\n\n if (isDownloading) {\n onCancel();\n return;\n }\n\n this.resetDownloadState();\n\n const snapshotRanges = this.getSnapshotRanges();\n if (this.validateOptionInput()) {\n onDownloadStart();\n model.export().then(frozenTable => {\n const tableSubscription = frozenTable.setViewport(0, 0);\n tableSubscription.getViewportData().then(() => {\n onDownload(fileName, frozenTable, tableSubscription, snapshotRanges);\n });\n });\n }\n }\n\n handleDownloadOptionChanged(event) {\n this.setState({ downloadOption: event.target.value });\n }\n\n handleCustomizedDownloadOptionChanged(event) {\n this.setState({ customizedDownloadOption: event.target.value });\n }\n\n handleCustomizedDownloadRowsChanged(event) {\n this.setState({ customizedDownloadRows: event.target.value });\n }\n\n validateOptionInput() {\n const { selectedRanges } = this.props;\n const { downloadOption, customizedDownloadRows } = this.state;\n\n if (\n downloadOption === TableCsvExporter.DOWNLOAD_OPTIONS.SELECTED_ROWS &&\n selectedRanges.length === 0\n ) {\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsIssues} /> No rows selected. Please select\n some rows in the table.\n </p>\n ),\n });\n return false;\n }\n\n if (\n downloadOption === TableCsvExporter.DOWNLOAD_OPTIONS.CUSTOMIZED_ROWS &&\n customizedDownloadRows <= 0\n ) {\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsIssues} /> Number of rows to output must be\n greater than 0\n </p>\n ),\n });\n return false;\n }\n return true;\n }\n\n render() {\n const {\n model,\n isDownloading,\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n selectedRanges,\n tableDownloadStatus,\n } = this.props;\n const {\n fileName,\n downloadOption,\n customizedDownloadOption,\n customizedDownloadRows,\n errorMessage,\n id,\n } = this.state;\n const { rowCount } = model;\n return (\n <div className=\"table-csv-exporter\">\n <div className=\"section-title\">Download Rows</div>\n <div className=\"form-group\">\n <RadioGroup\n onChange={this.handleDownloadOptionChanged}\n value={downloadOption}\n disabled={isDownloading}\n >\n <RadioItem value={TableCsvExporter.DOWNLOAD_OPTIONS.ALL_ROWS}>\n All Rows\n <span className=\"text-muted ml-2\">\n {`(${rowCount\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')} rows)`}\n </span>\n </RadioItem>\n <RadioItem value={TableCsvExporter.DOWNLOAD_OPTIONS.SELECTED_ROWS}>\n Only Selected Rows\n <span className=\"text-muted ml-2\">\n {selectedRanges.length > 0\n ? `(${GridRange.rowCount(selectedRanges)\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')} rows)`\n : null}\n </span>\n </RadioItem>\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_OPTIONS.CUSTOMIZED_ROWS}\n >\n <div\n className=\"radio-input-row\"\n role=\"presentation\"\n onClick={() => {\n this.setState({\n downloadOption:\n TableCsvExporter.DOWNLOAD_OPTIONS.CUSTOMIZED_ROWS,\n });\n }}\n >\n <select\n defaultValue={TableCsvExporter.DOWNLOAD_OPTIONS.FIRST}\n value={customizedDownloadOption}\n className=\"custom-select\"\n disabled={isDownloading}\n onChange={this.handleCustomizedDownloadOptionChanged}\n >\n <option value=\"FIRST\">First</option>\n <option value=\"LAST\">Last</option>\n </select>\n <input\n type=\"number\"\n className=\"form-control\"\n id={`customizedRows-${id}`}\n name={`customizedRows-${id}`}\n placeholder=\"100\"\n value={customizedDownloadRows}\n disabled={isDownloading}\n onChange={this.handleCustomizedDownloadRowsChanged}\n />\n <div>Rows</div>\n </div>\n </RadioItem>\n </RadioGroup>\n </div>\n <div className=\"form-group\">\n <label htmlFor={`customizedRows-${id}`}>File Name</label>\n <input\n type=\"text\"\n className=\"form-control\"\n id={`filename-${id}`}\n name={`filename-${id}`}\n value={fileName}\n onChange={event => {\n this.setState({ fileName: event.target.value });\n }}\n disabled={isDownloading}\n />\n </div>\n <div className=\"section-footer flex-column\">\n {errorMessage && <div className=\"error-message\">{errorMessage}</div>}\n {tableDownloadStatus && (\n <div className=\"download-status\">\n {(tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING ||\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING) && (\n <>\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING && (\n <div className=\"text-muted\">Starting Download...</div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING && (\n <div className=\"text-muted d-flex justify-content-between\">\n <span>\n {tableDownloadEstimatedTime ||\n tableDownloadEstimatedTime === 0\n ? `Estimated time: ${TimeUtils.formatElapsedTime(\n tableDownloadEstimatedTime\n )}`\n : null}\n </span>\n <span>{`${tableDownloadProgress}%`}</span>\n </div>\n )}\n </>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.FINISHED && (\n <div className=\"text-muted text-right\">Download Completed</div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.CANCELED && (\n <div className=\"text-muted\">Download Canceled</div>\n )}\n\n {(tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING ||\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING) && (\n <div className=\"progress\">\n <div\n className=\"progress-bar progress-bar-striped progress-bar-animated\"\n style={{ width: `${tableDownloadProgress}%` }}\n />\n </div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.FINISHED && (\n <div className=\"progress\">\n <div\n className=\"progress-bar bg-success\"\n style={{ width: `${tableDownloadProgress}%` }}\n />\n </div>\n )}\n </div>\n )}\n <button\n type=\"button\"\n className={ClassNames('btn btn-primary btn-downloading', {\n 'btn-spinner btn-cancelable': isDownloading,\n })}\n onClick={this.handleDownloadClick}\n >\n {isDownloading && (\n <span>\n <LoadingSpinner />\n <span className=\"btn-normal-content\">Downloading</span>\n <span className=\"btn-hover-content\">Cancel</span>\n </span>\n )}\n {!isDownloading && 'Download'}\n </button>\n </div>\n </div>\n );\n }\n}\n\nTableCsvExporter.propTypes = {\n model: PropTypes.instanceOf(IrisGridModel).isRequired,\n name: PropTypes.string.isRequired,\n isDownloading: PropTypes.bool,\n tableDownloadStatus: PropTypes.string,\n tableDownloadProgress: PropTypes.number,\n tableDownloadEstimatedTime: PropTypes.number,\n onDownloadStart: PropTypes.func,\n onDownload: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n selectedRanges: PropTypes.arrayOf(PropTypes.instanceOf(GridRange)),\n};\n\nTableCsvExporter.defaultProps = {\n onDownloadStart: () => {},\n isDownloading: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n selectedRanges: [],\n};\nexport default TableCsvExporter;\n"],"file":"TableCsvExporter.js"}
1
+ {"version":3,"sources":["../../src/sidebar/TableCsvExporter.jsx"],"names":["React","Component","PropTypes","ClassNames","FontAwesomeIcon","LoadingSpinner","RadioGroup","RadioItem","GridRange","vsIssues","dh","TimeUtils","shortid","IrisGridModel","TableCsvExporter","getDateString","i18n","DateTimeFormat","format","FILENAME_DATE_FORMAT","Date","constructor","props","handleDownloadClick","bind","handleDownloadOptionChanged","handleCustomizedDownloadOptionChanged","handleCustomizedDownloadRowsChanged","name","state","fileName","downloadOption","DOWNLOAD_OPTIONS","ALL_ROWS","customizedDownloadOption","CUSTOMIZED_ROWS_OPTIONS","FIRST","customizedDownloadRows","DEFAULT_DOWNLOAD_ROWS","errorMessage","id","generate","getSnapshotRanges","model","selectedRanges","rowCount","snapshotRanges","push","SELECTED_ROWS","sort","rangeA","rangeB","startRow","CUSTOMIZED_ROWS","Math","min","LAST","max","resetDownloadState","setState","isDownloading","onDownloadStart","onDownload","onCancel","validateOptionInput","export","then","frozenTable","tableSubscription","setViewport","getViewportData","event","target","value","length","render","tableDownloadProgress","tableDownloadEstimatedTime","tableDownloadStatus","toString","replace","DOWNLOAD_STATUS","DOWNLOADING","INITIATING","formatElapsedTime","FINISHED","CANCELED","width","propTypes","instanceOf","isRequired","string","bool","number","func","arrayOf","defaultProps"],"mappings":";;AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,SAASC,eAAT,QAAgC,gCAAhC;AACA,SAASC,cAAT,EAAyBC,UAAzB,EAAqCC,SAArC,QAAsD,uBAAtD;AACA,SAASC,SAAT,QAA0B,iBAA1B;AACA,SAASC,QAAT,QAAyB,kBAAzB;AACA,OAAOC,EAAP,MAAe,uBAAf;AACA,SAASC,SAAT,QAA0B,kBAA1B;AACA,OAAOC,OAAP,MAAoB,SAApB;OACOC,a;;;AAGP,MAAMC,gBAAN,SAA+Bb,SAA/B,CAAyC;AAuBnB,SAAbc,aAAa,GAAG;AACrB,WAAOL,EAAE,CAACM,IAAH,CAAQC,cAAR,CAAuBC,MAAvB,CACLJ,gBAAgB,CAACK,oBADZ,EAEL,IAAIC,IAAJ,EAFK,CAAP;AAID;;AAEDC,EAAAA,WAAW,CAACC,KAAD,EAAQ;AACjB,UAAMA,KAAN;AAEA,SAAKC,mBAAL,GAA2B,KAAKA,mBAAL,CAAyBC,IAAzB,CAA8B,IAA9B,CAA3B;AACA,SAAKC,2BAAL,GAAmC,KAAKA,2BAAL,CAAiCD,IAAjC,CACjC,IADiC,CAAnC;AAGA,SAAKE,qCAAL,GAA6C,KAAKA,qCAAL,CAA2CF,IAA3C,CAC3C,IAD2C,CAA7C;AAGA,SAAKG,mCAAL,GAA2C,KAAKA,mCAAL,CAAyCH,IAAzC,CACzC,IADyC,CAA3C;AAIA,QAAM;AAAEI,MAAAA;AAAF,QAAWN,KAAjB;AACA,SAAKO,KAAL,GAAa;AACXC,MAAAA,QAAQ,YAAKF,IAAL,cAAad,gBAAgB,CAACC,aAAjB,EAAb,SADG;AAGXgB,MAAAA,cAAc,EAAEjB,gBAAgB,CAACkB,gBAAjB,CAAkCC,QAHvC;AAIXC,MAAAA,wBAAwB,EAAEpB,gBAAgB,CAACqB,uBAAjB,CAAyCC,KAJxD;AAKXC,MAAAA,sBAAsB,EAAEvB,gBAAgB,CAACwB,qBAL9B;AAOXC,MAAAA,YAAY,EAAE,IAPH;AAQXC,MAAAA,EAAE,EAAE5B,OAAO,CAAC6B,QAAR;AARO,KAAb;AAUD;;AAEDC,EAAAA,iBAAiB,GAAG;AAClB,QAAM;AAAEC,MAAAA,KAAF;AAASC,MAAAA;AAAT,QAA4B,KAAKtB,KAAvC;AACA,QAAM;AACJS,MAAAA,cADI;AAEJG,MAAAA,wBAFI;AAGJG,MAAAA;AAHI,QAIF,KAAKR,KAJT;AAKA,QAAM;AAAEgB,MAAAA;AAAF,QAAeF,KAArB;AACA,QAAIG,cAAc,GAAG,EAArB;;AACA,YAAQf,cAAR;AACE,WAAKjB,gBAAgB,CAACkB,gBAAjB,CAAkCC,QAAvC;AACEa,QAAAA,cAAc,CAACC,IAAf,CAAoB,IAAIvC,SAAJ,CAAc,IAAd,EAAoB,CAApB,EAAuB,IAAvB,EAA6BqC,QAAQ,GAAG,CAAxC,CAApB;AACA;;AACF,WAAK/B,gBAAgB,CAACkB,gBAAjB,CAAkCgB,aAAvC;AACEF,QAAAA,cAAc,GAAG,CAAC,GAAGF,cAAJ,EAAoBK,IAApB,CACf,CAACC,MAAD,EAASC,MAAT,KAAoBD,MAAM,CAACE,QAAP,GAAkBD,MAAM,CAACC,QAD9B,CAAjB;AAGA;;AACF,WAAKtC,gBAAgB,CAACkB,gBAAjB,CAAkCqB,eAAvC;AACE,gBAAQnB,wBAAR;AACE,eAAKpB,gBAAgB,CAACqB,uBAAjB,CAAyCC,KAA9C;AACEU,YAAAA,cAAc,CAACC,IAAf,CACE,IAAIvC,SAAJ,CACE,IADF,EAEE,CAFF,EAGE,IAHF,EAIE8C,IAAI,CAACC,GAAL,CAASlB,sBAAsB,GAAG,CAAlC,EAAqCQ,QAAQ,GAAG,CAAhD,CAJF,CADF;AAQA;;AACF,eAAK/B,gBAAgB,CAACqB,uBAAjB,CAAyCqB,IAA9C;AACEV,YAAAA,cAAc,CAACC,IAAf,CACE,IAAIvC,SAAJ,CACE,IADF,EAEE8C,IAAI,CAACG,GAAL,CAAS,CAAT,EAAYZ,QAAQ,GAAGR,sBAAvB,CAFF,EAGE,IAHF,EAIEQ,QAAQ,GAAG,CAJb,CADF;AAQA;;AACF;AACE;AAtBJ;;AAwBA;;AACF;AACE;AApCJ;;AAsCA,WAAOC,cAAP;AACD;;AAEDY,EAAAA,kBAAkB,GAAG;AACnB,SAAKC,QAAL,CAAc;AAAEpB,MAAAA,YAAY,EAAE;AAAhB,KAAd;AACD;;AAEDhB,EAAAA,mBAAmB,GAAG;AACpB,QAAM;AACJoB,MAAAA,KADI;AAEJiB,MAAAA,aAFI;AAGJC,MAAAA,eAHI;AAIJC,MAAAA,UAJI;AAKJC,MAAAA;AALI,QAMF,KAAKzC,KANT;AAOA,QAAM;AAAEQ,MAAAA;AAAF,QAAe,KAAKD,KAA1B;;AAEA,QAAI+B,aAAJ,EAAmB;AACjBG,MAAAA,QAAQ;AACR;AACD;;AAED,SAAKL,kBAAL;AAEA,QAAMZ,cAAc,GAAG,KAAKJ,iBAAL,EAAvB;;AACA,QAAI,KAAKsB,mBAAL,EAAJ,EAAgC;AAC9BH,MAAAA,eAAe;AACflB,MAAAA,KAAK,CAACsB,MAAN,GAAeC,IAAf,CAAoBC,WAAW,IAAI;AACjC,YAAMC,iBAAiB,GAAGD,WAAW,CAACE,WAAZ,CAAwB,CAAxB,EAA2B,CAA3B,CAA1B;AACAD,QAAAA,iBAAiB,CAACE,eAAlB,GAAoCJ,IAApC,CAAyC,MAAM;AAC7CJ,UAAAA,UAAU,CAAChC,QAAD,EAAWqC,WAAX,EAAwBC,iBAAxB,EAA2CtB,cAA3C,CAAV;AACD,SAFD;AAGD,OALD;AAMD;AACF;;AAEDrB,EAAAA,2BAA2B,CAAC8C,KAAD,EAAQ;AACjC,SAAKZ,QAAL,CAAc;AAAE5B,MAAAA,cAAc,EAAEwC,KAAK,CAACC,MAAN,CAAaC;AAA/B,KAAd;AACD;;AAED/C,EAAAA,qCAAqC,CAAC6C,KAAD,EAAQ;AAC3C,SAAKZ,QAAL,CAAc;AAAEzB,MAAAA,wBAAwB,EAAEqC,KAAK,CAACC,MAAN,CAAaC;AAAzC,KAAd;AACD;;AAED9C,EAAAA,mCAAmC,CAAC4C,KAAD,EAAQ;AACzC,SAAKZ,QAAL,CAAc;AAAEtB,MAAAA,sBAAsB,EAAEkC,KAAK,CAACC,MAAN,CAAaC;AAAvC,KAAd;AACD;;AAEDT,EAAAA,mBAAmB,GAAG;AACpB,QAAM;AAAEpB,MAAAA;AAAF,QAAqB,KAAKtB,KAAhC;AACA,QAAM;AAAES,MAAAA,cAAF;AAAkBM,MAAAA;AAAlB,QAA6C,KAAKR,KAAxD;;AAEA,QACEE,cAAc,KAAKjB,gBAAgB,CAACkB,gBAAjB,CAAkCgB,aAArD,IACAJ,cAAc,CAAC8B,MAAf,KAA0B,CAF5B,EAGE;AACA,WAAKf,QAAL,CAAc;AACZpB,QAAAA,YAAY,eACV,4CACE,oBAAC,eAAD;AAAiB,UAAA,IAAI,EAAE9B;AAAvB,UADF;AAFU,OAAd;AAQA,aAAO,KAAP;AACD;;AAED,QACEsB,cAAc,KAAKjB,gBAAgB,CAACkB,gBAAjB,CAAkCqB,eAArD,IACAhB,sBAAsB,IAAI,CAF5B,EAGE;AACA,WAAKsB,QAAL,CAAc;AACZpB,QAAAA,YAAY,eACV,4CACE,oBAAC,eAAD;AAAiB,UAAA,IAAI,EAAE9B;AAAvB,UADF;AAFU,OAAd;AAQA,aAAO,KAAP;AACD;;AACD,WAAO,IAAP;AACD;;AAEDkE,EAAAA,MAAM,GAAG;AACP,QAAM;AACJhC,MAAAA,KADI;AAEJiB,MAAAA,aAFI;AAGJgB,MAAAA,qBAHI;AAIJC,MAAAA,0BAJI;AAKJjC,MAAAA,cALI;AAMJkC,MAAAA;AANI,QAOF,KAAKxD,KAPT;AAQA,QAAM;AACJQ,MAAAA,QADI;AAEJC,MAAAA,cAFI;AAGJG,MAAAA,wBAHI;AAIJG,MAAAA,sBAJI;AAKJE,MAAAA,YALI;AAMJC,MAAAA;AANI,QAOF,KAAKX,KAPT;AAQA,QAAM;AAAEgB,MAAAA;AAAF,QAAeF,KAArB;AACA,wBACE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AAAK,MAAA,SAAS,EAAC;AAAf,uBADF,eAEE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE,oBAAC,UAAD;AACE,MAAA,QAAQ,EAAE,KAAKlB,2BADjB;AAEE,MAAA,KAAK,EAAEM,cAFT;AAGE,MAAA,QAAQ,EAAE6B;AAHZ,oBAKE,oBAAC,SAAD;AACE,MAAA,KAAK,EAAE9C,gBAAgB,CAACkB,gBAAjB,CAAkCC,QAD3C;AAEE,qBAAY;AAFd,gCAKE;AAAM,MAAA,SAAS,EAAC;AAAhB,kBACOY,QAAQ,CACVkC,QADE,GAEFC,OAFE,CAEM,yBAFN,EAEiC,KAFjC,CADP,YALF,CALF,eAgBE,oBAAC,SAAD;AACE,MAAA,KAAK,EAAElE,gBAAgB,CAACkB,gBAAjB,CAAkCgB,aAD3C;AAEE,qBAAY;AAFd,0CAKE;AAAM,MAAA,SAAS,EAAC;AAAhB,OACGJ,cAAc,CAAC8B,MAAf,GAAwB,CAAxB,cACOlE,SAAS,CAACqC,QAAV,CAAmBD,cAAnB,EACDmC,QADC,GAEDC,OAFC,CAEO,yBAFP,EAEkC,KAFlC,CADP,cAIG,IALN,CALF,CAhBF,eA6BE,oBAAC,SAAD;AACE,MAAA,KAAK,EAAElE,gBAAgB,CAACkB,gBAAjB,CAAkCqB,eAD3C;AAEE,qBAAY;AAFd,oBAIE;AACE,MAAA,SAAS,EAAC,iBADZ;AAEE,MAAA,IAAI,EAAC,cAFP;AAGE,MAAA,OAAO,EAAE,MAAM;AACb,aAAKM,QAAL,CAAc;AACZ5B,UAAAA,cAAc,EACZjB,gBAAgB,CAACkB,gBAAjB,CAAkCqB;AAFxB,SAAd;AAID;AARH,oBAUE;AACE,MAAA,YAAY,EAAEvC,gBAAgB,CAACkB,gBAAjB,CAAkCI,KADlD;AAEE,MAAA,KAAK,EAAEF,wBAFT;AAGE,qBAAY,qCAHd;AAIE,MAAA,SAAS,EAAC,eAJZ;AAKE,MAAA,QAAQ,EAAE0B,aALZ;AAME,MAAA,QAAQ,EAAE,KAAKlC;AANjB,oBAQE;AAAQ,MAAA,KAAK,EAAC;AAAd,eARF,eASE;AAAQ,MAAA,KAAK,EAAC;AAAd,cATF,CAVF,eAqBE;AACE,MAAA,IAAI,EAAC,QADP;AAEE,MAAA,SAAS,EAAC,cAFZ;AAGE,MAAA,EAAE,2BAAoBc,EAApB,CAHJ;AAIE,qBAAY,oCAJd;AAKE,MAAA,IAAI,2BAAoBA,EAApB,CALN;AAME,MAAA,WAAW,EAAC,KANd;AAOE,MAAA,KAAK,EAAEH,sBAPT;AAQE,MAAA,QAAQ,EAAEuB,aARZ;AASE,MAAA,QAAQ,EAAE,KAAKjC;AATjB,MArBF,eAgCE,wCAhCF,CAJF,CA7BF,CADF,CAFF,eAyEE;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AAAO,MAAA,OAAO,2BAAoBa,EAApB;AAAd,mBADF,eAEE;AACE,MAAA,IAAI,EAAC,MADP;AAEE,MAAA,SAAS,EAAC,cAFZ;AAGE,MAAA,EAAE,qBAAcA,EAAd,CAHJ;AAIE,qBAAY,8BAJd;AAKE,MAAA,IAAI,qBAAcA,EAAd,CALN;AAME,MAAA,KAAK,EAAEV,QANT;AAOE,MAAA,QAAQ,EAAEyC,KAAK,IAAI;AACjB,aAAKZ,QAAL,CAAc;AAAE7B,UAAAA,QAAQ,EAAEyC,KAAK,CAACC,MAAN,CAAaC;AAAzB,SAAd;AACD,OATH;AAUE,MAAA,QAAQ,EAAEb;AAVZ,MAFF,CAzEF,eAwFE;AAAK,MAAA,SAAS,EAAC;AAAf,OACGrB,YAAY,iBAAI;AAAK,MAAA,SAAS,EAAC;AAAf,OAAgCA,YAAhC,CADnB,EAEGuC,mBAAmB,iBAClB;AAAK,MAAA,SAAS,EAAC;AAAf,OACG,CAACA,mBAAmB,KACnBhE,gBAAgB,CAACmE,eAAjB,CAAiCC,WADjC,IAEAJ,mBAAmB,KACjBhE,gBAAgB,CAACmE,eAAjB,CAAiCE,UAHpC,kBAIC,0CACGL,mBAAmB,KAClBhE,gBAAgB,CAACmE,eAAjB,CAAiCE,UADlC,iBAEC;AAAK,MAAA,SAAS,EAAC;AAAf,8BAHJ,EAKGL,mBAAmB,KAClBhE,gBAAgB,CAACmE,eAAjB,CAAiCC,WADlC,iBAEC;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE,kCACGL,0BAA0B,IAC3BA,0BAA0B,KAAK,CAD9B,6BAEsBlE,SAAS,CAACyE,iBAAV,CACjBP,0BADiB,CAFtB,IAKG,IANN,CADF,eASE,4CAAUD,qBAAV,OATF,CAPJ,CALJ,EA0BGE,mBAAmB,KAClBhE,gBAAgB,CAACmE,eAAjB,CAAiCI,QADlC,iBAEC;AAAK,MAAA,SAAS,EAAC;AAAf,4BA5BJ,EA8BGP,mBAAmB,KAClBhE,gBAAgB,CAACmE,eAAjB,CAAiCK,QADlC,iBAEC;AAAK,MAAA,SAAS,EAAC;AAAf,2BAhCJ,EAmCG,CAACR,mBAAmB,KACnBhE,gBAAgB,CAACmE,eAAjB,CAAiCC,WADjC,IAEAJ,mBAAmB,KACjBhE,gBAAgB,CAACmE,eAAjB,CAAiCE,UAHpC,kBAIC;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AACE,MAAA,SAAS,EAAC,yDADZ;AAEE,MAAA,KAAK,EAAE;AAAEI,QAAAA,KAAK,YAAKX,qBAAL;AAAP;AAFT,MADF,CAvCJ,EA8CGE,mBAAmB,KAClBhE,gBAAgB,CAACmE,eAAjB,CAAiCI,QADlC,iBAEC;AAAK,MAAA,SAAS,EAAC;AAAf,oBACE;AACE,MAAA,SAAS,EAAC,yBADZ;AAEE,MAAA,KAAK,EAAE;AAAEE,QAAAA,KAAK,YAAKX,qBAAL;AAAP;AAFT,MADF,CAhDJ,CAHJ,eA4DE;AACE,MAAA,IAAI,EAAC,QADP;AAEE,qBAAY,2BAFd;AAGE,MAAA,SAAS,EAAEzE,UAAU,CAAC,iCAAD,EAAoC;AACvD,sCAA8ByD;AADyB,OAApC,CAHvB;AAME,MAAA,OAAO,EAAE,KAAKrC;AANhB,OAQGqC,aAAa,iBACZ,+CACE,oBAAC,cAAD,OADF,eAEE;AAAM,MAAA,SAAS,EAAC;AAAhB,qBAFF,eAGE;AAAM,MAAA,SAAS,EAAC;AAAhB,gBAHF,CATJ,EAeG,CAACA,aAAD,IAAkB,UAfrB,CA5DF,CAxFF,CADF;AAyKD;;AAvXsC;;gBAAnC9C,gB,0BAC0B,mB;;gBAD1BA,gB,qBAGqB;AACvBqE,EAAAA,UAAU,EAAE,YADW;AAEvBD,EAAAA,WAAW,EAAE,aAFU;AAGvBG,EAAAA,QAAQ,EAAE,UAHa;AAIvBC,EAAAA,QAAQ,EAAE;AAJa,C;;gBAHrBxE,gB,sBAUsB;AACxBmB,EAAAA,QAAQ,EAAE,UADc;AAExBe,EAAAA,aAAa,EAAE,eAFS;AAGxBK,EAAAA,eAAe,EAAE;AAHO,C;;gBAVtBvC,gB,6BAgB6B;AAC/BsB,EAAAA,KAAK,EAAE,OADwB;AAE/BoB,EAAAA,IAAI,EAAE;AAFyB,C;;gBAhB7B1C,gB,2BAqB2B,G;;AAqWjCA,gBAAgB,CAAC0E,SAAjB,GAA6B;AAC3B7C,EAAAA,KAAK,EAAEzC,SAAS,CAACuF,UAAV,CAAqB5E,aAArB,EAAoC6E,UADhB;AAE3B9D,EAAAA,IAAI,EAAE1B,SAAS,CAACyF,MAAV,CAAiBD,UAFI;AAG3B9B,EAAAA,aAAa,EAAE1D,SAAS,CAAC0F,IAHE;AAI3Bd,EAAAA,mBAAmB,EAAE5E,SAAS,CAACyF,MAJJ;AAK3Bf,EAAAA,qBAAqB,EAAE1E,SAAS,CAAC2F,MALN;AAM3BhB,EAAAA,0BAA0B,EAAE3E,SAAS,CAAC2F,MANX;AAO3BhC,EAAAA,eAAe,EAAE3D,SAAS,CAAC4F,IAPA;AAQ3BhC,EAAAA,UAAU,EAAE5D,SAAS,CAAC4F,IAAV,CAAeJ,UARA;AAS3B3B,EAAAA,QAAQ,EAAE7D,SAAS,CAAC4F,IAAV,CAAeJ,UATE;AAU3B9C,EAAAA,cAAc,EAAE1C,SAAS,CAAC6F,OAAV,CAAkB7F,SAAS,CAACuF,UAAV,CAAqBjF,SAArB,CAAlB;AAVW,CAA7B;AAaAM,gBAAgB,CAACkF,YAAjB,GAAgC;AAC9BnC,EAAAA,eAAe,EAAE,MAAM,CAAE,CADK;AAE9BD,EAAAA,aAAa,EAAE,KAFe;AAG9BkB,EAAAA,mBAAmB,EAAE,EAHS;AAI9BF,EAAAA,qBAAqB,EAAE,CAJO;AAK9BC,EAAAA,0BAA0B,EAAE,IALE;AAM9BjC,EAAAA,cAAc,EAAE;AANc,CAAhC;AAQA,eAAe9B,gBAAf","sourcesContent":["import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport ClassNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { LoadingSpinner, RadioGroup, RadioItem } from '@deephaven/components';\nimport { GridRange } from '@deephaven/grid';\nimport { vsIssues } from '@deephaven/icons';\nimport dh from '@deephaven/jsapi-shim';\nimport { TimeUtils } from '@deephaven/utils';\nimport shortid from 'shortid';\nimport IrisGridModel from '../IrisGridModel';\nimport './TableCsvExporter.scss';\n\nclass TableCsvExporter extends Component {\n static FILENAME_DATE_FORMAT = 'yyyy-MM-dd-HHmmss';\n\n static DOWNLOAD_STATUS = {\n INITIATING: 'INITIATING',\n DOWNLOADING: 'DOWNLOADING',\n FINISHED: 'FINISHED',\n CANCELED: 'CANCELED',\n };\n\n static DOWNLOAD_OPTIONS = {\n ALL_ROWS: 'ALL_ROWS',\n SELECTED_ROWS: 'SELECTED_ROWS',\n CUSTOMIZED_ROWS: 'CUSTOMIZED_ROWS',\n };\n\n static CUSTOMIZED_ROWS_OPTIONS = {\n FIRST: 'FIRST',\n LAST: 'LAST',\n };\n\n static DEFAULT_DOWNLOAD_ROWS = 100;\n\n static getDateString() {\n return dh.i18n.DateTimeFormat.format(\n TableCsvExporter.FILENAME_DATE_FORMAT,\n new Date()\n );\n }\n\n constructor(props) {\n super(props);\n\n this.handleDownloadClick = this.handleDownloadClick.bind(this);\n this.handleDownloadOptionChanged = this.handleDownloadOptionChanged.bind(\n this\n );\n this.handleCustomizedDownloadOptionChanged = this.handleCustomizedDownloadOptionChanged.bind(\n this\n );\n this.handleCustomizedDownloadRowsChanged = this.handleCustomizedDownloadRowsChanged.bind(\n this\n );\n\n const { name } = props;\n this.state = {\n fileName: `${name}-${TableCsvExporter.getDateString()}.csv`,\n\n downloadOption: TableCsvExporter.DOWNLOAD_OPTIONS.ALL_ROWS,\n customizedDownloadOption: TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.FIRST,\n customizedDownloadRows: TableCsvExporter.DEFAULT_DOWNLOAD_ROWS,\n\n errorMessage: null,\n id: shortid.generate(),\n };\n }\n\n getSnapshotRanges() {\n const { model, selectedRanges } = this.props;\n const {\n downloadOption,\n customizedDownloadOption,\n customizedDownloadRows,\n } = this.state;\n const { rowCount } = model;\n let snapshotRanges = [];\n switch (downloadOption) {\n case TableCsvExporter.DOWNLOAD_OPTIONS.ALL_ROWS:\n snapshotRanges.push(new GridRange(null, 0, null, rowCount - 1));\n break;\n case TableCsvExporter.DOWNLOAD_OPTIONS.SELECTED_ROWS:\n snapshotRanges = [...selectedRanges].sort(\n (rangeA, rangeB) => rangeA.startRow - rangeB.startRow\n );\n break;\n case TableCsvExporter.DOWNLOAD_OPTIONS.CUSTOMIZED_ROWS:\n switch (customizedDownloadOption) {\n case TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.FIRST:\n snapshotRanges.push(\n new GridRange(\n null,\n 0,\n null,\n Math.min(customizedDownloadRows - 1, rowCount - 1)\n )\n );\n break;\n case TableCsvExporter.CUSTOMIZED_ROWS_OPTIONS.LAST:\n snapshotRanges.push(\n new GridRange(\n null,\n Math.max(0, rowCount - customizedDownloadRows),\n null,\n rowCount - 1\n )\n );\n break;\n default:\n break;\n }\n break;\n default:\n break;\n }\n return snapshotRanges;\n }\n\n resetDownloadState() {\n this.setState({ errorMessage: null });\n }\n\n handleDownloadClick() {\n const {\n model,\n isDownloading,\n onDownloadStart,\n onDownload,\n onCancel,\n } = this.props;\n const { fileName } = this.state;\n\n if (isDownloading) {\n onCancel();\n return;\n }\n\n this.resetDownloadState();\n\n const snapshotRanges = this.getSnapshotRanges();\n if (this.validateOptionInput()) {\n onDownloadStart();\n model.export().then(frozenTable => {\n const tableSubscription = frozenTable.setViewport(0, 0);\n tableSubscription.getViewportData().then(() => {\n onDownload(fileName, frozenTable, tableSubscription, snapshotRanges);\n });\n });\n }\n }\n\n handleDownloadOptionChanged(event) {\n this.setState({ downloadOption: event.target.value });\n }\n\n handleCustomizedDownloadOptionChanged(event) {\n this.setState({ customizedDownloadOption: event.target.value });\n }\n\n handleCustomizedDownloadRowsChanged(event) {\n this.setState({ customizedDownloadRows: event.target.value });\n }\n\n validateOptionInput() {\n const { selectedRanges } = this.props;\n const { downloadOption, customizedDownloadRows } = this.state;\n\n if (\n downloadOption === TableCsvExporter.DOWNLOAD_OPTIONS.SELECTED_ROWS &&\n selectedRanges.length === 0\n ) {\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsIssues} /> No rows selected. Please select\n some rows in the table.\n </p>\n ),\n });\n return false;\n }\n\n if (\n downloadOption === TableCsvExporter.DOWNLOAD_OPTIONS.CUSTOMIZED_ROWS &&\n customizedDownloadRows <= 0\n ) {\n this.setState({\n errorMessage: (\n <p>\n <FontAwesomeIcon icon={vsIssues} /> Number of rows to output must be\n greater than 0\n </p>\n ),\n });\n return false;\n }\n return true;\n }\n\n render() {\n const {\n model,\n isDownloading,\n tableDownloadProgress,\n tableDownloadEstimatedTime,\n selectedRanges,\n tableDownloadStatus,\n } = this.props;\n const {\n fileName,\n downloadOption,\n customizedDownloadOption,\n customizedDownloadRows,\n errorMessage,\n id,\n } = this.state;\n const { rowCount } = model;\n return (\n <div className=\"table-csv-exporter\">\n <div className=\"section-title\">Download Rows</div>\n <div className=\"form-group\">\n <RadioGroup\n onChange={this.handleDownloadOptionChanged}\n value={downloadOption}\n disabled={isDownloading}\n >\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_OPTIONS.ALL_ROWS}\n data-testid=\"radio-csv-exporter-download-all\"\n >\n All Rows\n <span className=\"text-muted ml-2\">\n {`(${rowCount\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')} rows)`}\n </span>\n </RadioItem>\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_OPTIONS.SELECTED_ROWS}\n data-testid=\"radio-csv-exporter-only-selected\"\n >\n Only Selected Rows\n <span className=\"text-muted ml-2\">\n {selectedRanges.length > 0\n ? `(${GridRange.rowCount(selectedRanges)\n .toString()\n .replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,')} rows)`\n : null}\n </span>\n </RadioItem>\n <RadioItem\n value={TableCsvExporter.DOWNLOAD_OPTIONS.CUSTOMIZED_ROWS}\n data-testid=\"radio-csv-exporter-customized-rows\"\n >\n <div\n className=\"radio-input-row\"\n role=\"presentation\"\n onClick={() => {\n this.setState({\n downloadOption:\n TableCsvExporter.DOWNLOAD_OPTIONS.CUSTOMIZED_ROWS,\n });\n }}\n >\n <select\n defaultValue={TableCsvExporter.DOWNLOAD_OPTIONS.FIRST}\n value={customizedDownloadOption}\n data-testid=\"select-csv-exporter-customized-rows\"\n className=\"custom-select\"\n disabled={isDownloading}\n onChange={this.handleCustomizedDownloadOptionChanged}\n >\n <option value=\"FIRST\">First</option>\n <option value=\"LAST\">Last</option>\n </select>\n <input\n type=\"number\"\n className=\"form-control\"\n id={`customizedRows-${id}`}\n data-testid=\"input-csv-exporter-customized-rows\"\n name={`customizedRows-${id}`}\n placeholder=\"100\"\n value={customizedDownloadRows}\n disabled={isDownloading}\n onChange={this.handleCustomizedDownloadRowsChanged}\n />\n <div>Rows</div>\n </div>\n </RadioItem>\n </RadioGroup>\n </div>\n <div className=\"form-group\">\n <label htmlFor={`customizedRows-${id}`}>File Name</label>\n <input\n type=\"text\"\n className=\"form-control\"\n id={`filename-${id}`}\n data-testid=\"input-csv-exporter-file-name\"\n name={`filename-${id}`}\n value={fileName}\n onChange={event => {\n this.setState({ fileName: event.target.value });\n }}\n disabled={isDownloading}\n />\n </div>\n <div className=\"section-footer flex-column\">\n {errorMessage && <div className=\"error-message\">{errorMessage}</div>}\n {tableDownloadStatus && (\n <div className=\"download-status\">\n {(tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING ||\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING) && (\n <>\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING && (\n <div className=\"text-muted\">Starting Download...</div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING && (\n <div className=\"text-muted d-flex justify-content-between\">\n <span>\n {tableDownloadEstimatedTime ||\n tableDownloadEstimatedTime === 0\n ? `Estimated time: ${TimeUtils.formatElapsedTime(\n tableDownloadEstimatedTime\n )}`\n : null}\n </span>\n <span>{`${tableDownloadProgress}%`}</span>\n </div>\n )}\n </>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.FINISHED && (\n <div className=\"text-muted text-right\">Download Completed</div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.CANCELED && (\n <div className=\"text-muted\">Download Canceled</div>\n )}\n\n {(tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.DOWNLOADING ||\n tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.INITIATING) && (\n <div className=\"progress\">\n <div\n className=\"progress-bar progress-bar-striped progress-bar-animated\"\n style={{ width: `${tableDownloadProgress}%` }}\n />\n </div>\n )}\n {tableDownloadStatus ===\n TableCsvExporter.DOWNLOAD_STATUS.FINISHED && (\n <div className=\"progress\">\n <div\n className=\"progress-bar bg-success\"\n style={{ width: `${tableDownloadProgress}%` }}\n />\n </div>\n )}\n </div>\n )}\n <button\n type=\"button\"\n data-testid=\"btn-csv-exporter-download\"\n className={ClassNames('btn btn-primary btn-downloading', {\n 'btn-spinner btn-cancelable': isDownloading,\n })}\n onClick={this.handleDownloadClick}\n >\n {isDownloading && (\n <span>\n <LoadingSpinner />\n <span className=\"btn-normal-content\">Downloading</span>\n <span className=\"btn-hover-content\">Cancel</span>\n </span>\n )}\n {!isDownloading && 'Download'}\n </button>\n </div>\n </div>\n );\n }\n}\n\nTableCsvExporter.propTypes = {\n model: PropTypes.instanceOf(IrisGridModel).isRequired,\n name: PropTypes.string.isRequired,\n isDownloading: PropTypes.bool,\n tableDownloadStatus: PropTypes.string,\n tableDownloadProgress: PropTypes.number,\n tableDownloadEstimatedTime: PropTypes.number,\n onDownloadStart: PropTypes.func,\n onDownload: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n selectedRanges: PropTypes.arrayOf(PropTypes.instanceOf(GridRange)),\n};\n\nTableCsvExporter.defaultProps = {\n onDownloadStart: () => {},\n isDownloading: false,\n tableDownloadStatus: '',\n tableDownloadProgress: 0,\n tableDownloadEstimatedTime: null,\n selectedRanges: [],\n};\nexport default TableCsvExporter;\n"],"file":"TableCsvExporter.js"}
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../src/sidebar/VisibilityOrderingBuilder.scss","../../../components/scss/bootstrap_overrides.scss","../../../components/scss/new_variables.scss","../../../../node_modules/bootstrap/scss/_variables.scss"],"names":[],"mappings":"AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA,kBCFY;EDGZ,SEZO;EFaP;;AAGF;EACE;EACA;;AAEA;EEJF;EAIA;EAEA;EACA;EACA;EACA;EACA;;AFFE;EACE;EACA,kBCjBU;;ADqBd;EACE;EACA;EACA;EACA,cElCO;;AFoCP;EACE,aErCK;;AFwCP;EACE,eC8EU;ED7EV;EACA;EACA;EACA;EACA;EACA;EACA,YC8EW;ED7EX;EACA,aGoPwB;EHnPxB;;AACA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA,YC+EqB;;AD5EvB;EACE,OC9CG;;ADiDL;EACE,YCjDG;;ADkDH;EACE,OC5DO;;ADkEX;EACE,OC3DG;ED4DH;;AACA;EACE;;AAKN;EACE;;AAEA;EACE,kBChFQ;;ADkFV;EACE;;AAEA;EACE;EACA,OCtFO;EDuFP,kBCxFM;EDyFN;EACA,YCoBG;;ADlBH;EACE,OC5FK;;ACmBf;EACE;EACA,YDtBY;ECuBZ,YDuFS;ECtFT,eDqFY;ECpFZ;EACA;EACA;EFuEU;EACA;EACA;EACA;;AEjFZ;EACE;EACA,YDtBY;ECuBZ,YDuFS;ECtFT,eDqFY;ECpFZ;EACA;EACA;EF+EU;EACA;EACA;EACA;;AEzFZ;EACE;EACA,YDtBY;ECuBZ,YDuFS;ECtFT,eDqFY;ECpFZ;EACA;EACA;EFqFU;EACA;EACA;EACA;;AAMV;EACE;EACA;EACA;EACA,cEvIK;;AF2IT;EACE;EACA,eE7IO;EF8IP,aE9IO;EF+IP;;AAGF;EACE","file":"VisibilityOrderingBuilder.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../src/sidebar/VisibilityOrderingBuilder.scss","../../../components/scss/bootstrap_overrides.scss","../../../components/scss/new_variables.scss","../../../../node_modules/bootstrap/scss/_variables.scss"],"names":[],"mappings":"AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA,kBCFY;EDGZ,SEZO;EFaP;;AAGF;EACE;EACA;;AAEA;EEJF;EAIA;EAEA;EACA;EACA;EACA;EACA;;AFFE;EACE;EACA,kBCjBU;;ADqBd;EACE;EACA;EACA;EACA,cElCO;;AFoCP;EACE,aErCK;;AFwCP;EACE,eC8EU;ED7EV;EACA;EACA;EACA;EACA;EACA;EACA,YC8EW;ED7EX;EACA,aGgPwB;EH/OxB;;AACA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA,YC+EqB;;AD5EvB;EACE,OC9CG;;ADiDL;EACE,YCjDG;;ADkDH;EACE,OC5DO;;ADkEX;EACE,OC3DG;ED4DH;;AACA;EACE;;AAKN;EACE;;AAEA;EACE,kBChFQ;;ADkFV;EACE;;AAEA;EACE;EACA,OCtFO;EDuFP,kBCxFM;EDyFN;EACA,YCoBG;;ADlBH;EACE,OC5FK;;ACmBf;EACE;EACA,YDtBY;ECuBZ,YDuFS;ECtFT,eDqFY;ECpFZ;EACA;EACA;EFuEU;EACA;EACA;EACA;;AEjFZ;EACE;EACA,YDtBY;ECuBZ,YDuFS;ECtFT,eDqFY;ECpFZ;EACA;EACA;EF+EU;EACA;EACA;EACA;;AEzFZ;EACE;EACA,YDtBY;ECuBZ,YDuFS;ECtFT,eDqFY;ECpFZ;EACA;EACA;EFqFU;EACA;EACA;EACA;;AAMV;EACE;EACA;EACA;EACA,cEvIK;;AF2IT;EACE;EACA,eE7IO;EF8IP,aE9IO;EF+IP;;AAGF;EACE","file":"VisibilityOrderingBuilder.css"}
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../../src/sidebar/conditional-formatting/ConditionalFormattingMenu.scss","../../../../components/scss/new_variables.scss","../../../../components/scss/bootstrap_overrides.scss","../../../../../node_modules/bootstrap/scss/_variables.scss"],"names":[],"mappings":"AAEA;EACE,SCDS;;;ADIX;EACE;EACA;EACA;EACA;;AAEA;EACE,aCXO;;ADcT;EACE,eEwGY;EFvGZ;EACA,SCjBO;EDkBP;EACA;EACA;EACA,YEyGa;EFxGb;EACA,aG+Q0B;EH9Q1B;;AAEA;EACE;;AAGF;EACE,eC9BK;;ADiCP;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA,YEsFuB;;AFnFzB;EACE,YEtCK","file":"ConditionalFormattingMenu.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../../src/sidebar/conditional-formatting/ConditionalFormattingMenu.scss","../../../../components/scss/new_variables.scss","../../../../components/scss/bootstrap_overrides.scss","../../../../../node_modules/bootstrap/scss/_variables.scss"],"names":[],"mappings":"AAEA;EACE,SCDS;;;ADIX;EACE;EACA;EACA;EACA;;AAEA;EACE,aCXO;;ADcT;EACE,eEwGY;EFvGZ;EACA,SCjBO;EDkBP;EACA;EACA;EACA,YEyGa;EFxGb;EACA,aG2Q0B;EH1Q1B;;AAEA;EACE;;AAGF;EACE,eC9BK;;ADiCP;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA,YEsFuB;;AFnFzB;EACE,YEtCK","file":"ConditionalFormattingMenu.css"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/iris-grid",
3
- "version": "0.11.6-beta.0+6acf425",
3
+ "version": "0.11.6-beta.2+6411a9e",
4
4
  "description": "Deephaven Iris Grid",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -30,13 +30,13 @@
30
30
  "start": "cross-env NODE_ENV=development npm run watch"
31
31
  },
32
32
  "dependencies": {
33
- "@deephaven/console": "^0.11.6-beta.0+6acf425",
34
- "@deephaven/grid": "^0.11.6-beta.0+6acf425",
35
- "@deephaven/icons": "^0.11.6-beta.0+6acf425",
36
- "@deephaven/jsapi-shim": "^0.11.6-beta.0+6acf425",
37
- "@deephaven/react-hooks": "^0.11.6-beta.0+6acf425",
38
- "@deephaven/storage": "^0.11.6-beta.0+6acf425",
39
- "@deephaven/utils": "^0.11.6-beta.0+6acf425",
33
+ "@deephaven/console": "^0.11.6-beta.2+6411a9e",
34
+ "@deephaven/grid": "^0.11.6-beta.2+6411a9e",
35
+ "@deephaven/icons": "^0.11.6-beta.2+6411a9e",
36
+ "@deephaven/jsapi-shim": "^0.11.6-beta.2+6411a9e",
37
+ "@deephaven/react-hooks": "^0.11.6-beta.2+6411a9e",
38
+ "@deephaven/storage": "^0.11.6-beta.2+6411a9e",
39
+ "@deephaven/utils": "^0.11.6-beta.2+6411a9e",
40
40
  "@fortawesome/react-fontawesome": "^0.1.15",
41
41
  "classnames": "^2.3.1",
42
42
  "deep-equal": "^2.0.5",
@@ -59,9 +59,9 @@
59
59
  "react": "^17.x"
60
60
  },
61
61
  "devDependencies": {
62
- "@deephaven/log": "^0.11.6-beta.0+6acf425",
63
- "@deephaven/mocks": "^0.11.6-beta.0+6acf425",
64
- "@deephaven/tsconfig": "^0.11.6-beta.0+6acf425"
62
+ "@deephaven/log": "^0.11.6-beta.2+6411a9e",
63
+ "@deephaven/mocks": "^0.11.6-beta.2+6411a9e",
64
+ "@deephaven/tsconfig": "^0.11.6-beta.2+6411a9e"
65
65
  },
66
66
  "files": [
67
67
  "dist"
@@ -72,5 +72,5 @@
72
72
  "publishConfig": {
73
73
  "access": "public"
74
74
  },
75
- "gitHead": "6acf425e275304943a71c4b3602fe6fad1c97d1c"
75
+ "gitHead": "6411a9e53ff4926f435d20c8b44a00c8fa7f232c"
76
76
  }