@deephaven/iris-grid 0.38.1 → 0.39.0

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 (160) hide show
  1. package/README.md +4 -2
  2. package/dist/AdvancedFilterCreator.d.ts +3 -2
  3. package/dist/AdvancedFilterCreator.d.ts.map +1 -1
  4. package/dist/AdvancedFilterCreator.js +9 -4
  5. package/dist/AdvancedFilterCreator.js.map +1 -1
  6. package/dist/AdvancedFilterCreatorFilterItem.d.ts +4 -3
  7. package/dist/AdvancedFilterCreatorFilterItem.d.ts.map +1 -1
  8. package/dist/AdvancedFilterCreatorFilterItem.js +5 -4
  9. package/dist/AdvancedFilterCreatorFilterItem.js.map +1 -1
  10. package/dist/AdvancedFilterCreatorSelectValue.d.ts +4 -2
  11. package/dist/AdvancedFilterCreatorSelectValue.d.ts.map +1 -1
  12. package/dist/AdvancedFilterCreatorSelectValue.js +11 -3
  13. package/dist/AdvancedFilterCreatorSelectValue.js.map +1 -1
  14. package/dist/AdvancedFilterCreatorSelectValueList.d.ts +3 -1
  15. package/dist/AdvancedFilterCreatorSelectValueList.d.ts.map +1 -1
  16. package/dist/AdvancedFilterCreatorSelectValueList.js +7 -5
  17. package/dist/AdvancedFilterCreatorSelectValueList.js.map +1 -1
  18. package/dist/ColumnStatistics.css +1 -2
  19. package/dist/ColumnStatistics.css.map +1 -1
  20. package/dist/ColumnStatistics.d.ts +1 -1
  21. package/dist/ColumnStatistics.d.ts.map +1 -1
  22. package/dist/ColumnStatistics.js.map +1 -1
  23. package/dist/CommonTypes.d.ts +1 -1
  24. package/dist/CommonTypes.d.ts.map +1 -1
  25. package/dist/CommonTypes.js.map +1 -1
  26. package/dist/CrossColumnSearch.d.ts +2 -2
  27. package/dist/CrossColumnSearch.d.ts.map +1 -1
  28. package/dist/CrossColumnSearch.js +1 -2
  29. package/dist/CrossColumnSearch.js.map +1 -1
  30. package/dist/GotoRow.js +1 -0
  31. package/dist/GotoRow.js.map +1 -1
  32. package/dist/IrisGrid.d.ts +7 -6
  33. package/dist/IrisGrid.d.ts.map +1 -1
  34. package/dist/IrisGrid.js +54 -28
  35. package/dist/IrisGrid.js.map +1 -1
  36. package/dist/IrisGridCopyHandler.js.map +1 -1
  37. package/dist/IrisGridMetricCalculator.d.ts +1 -1
  38. package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
  39. package/dist/IrisGridMetricCalculator.js.map +1 -1
  40. package/dist/IrisGridModel.d.ts +3 -2
  41. package/dist/IrisGridModel.d.ts.map +1 -1
  42. package/dist/IrisGridModel.js +3 -1
  43. package/dist/IrisGridModel.js.map +1 -1
  44. package/dist/IrisGridModelFactory.d.ts +2 -2
  45. package/dist/IrisGridModelFactory.d.ts.map +1 -1
  46. package/dist/IrisGridModelFactory.js +3 -3
  47. package/dist/IrisGridModelFactory.js.map +1 -1
  48. package/dist/IrisGridModelUpdater.d.ts +1 -1
  49. package/dist/IrisGridModelUpdater.d.ts.map +1 -1
  50. package/dist/IrisGridModelUpdater.js +1 -2
  51. package/dist/IrisGridModelUpdater.js.map +1 -1
  52. package/dist/IrisGridPartitionSelector.d.ts +2 -1
  53. package/dist/IrisGridPartitionSelector.d.ts.map +1 -1
  54. package/dist/IrisGridPartitionSelector.js +2 -0
  55. package/dist/IrisGridPartitionSelector.js.map +1 -1
  56. package/dist/IrisGridProxyModel.d.ts +4 -2
  57. package/dist/IrisGridProxyModel.d.ts.map +1 -1
  58. package/dist/IrisGridProxyModel.js +13 -10
  59. package/dist/IrisGridProxyModel.js.map +1 -1
  60. package/dist/IrisGridRenderer.d.ts +1 -1
  61. package/dist/IrisGridRenderer.d.ts.map +1 -1
  62. package/dist/IrisGridRenderer.js.map +1 -1
  63. package/dist/IrisGridTableModel.d.ts +3 -2
  64. package/dist/IrisGridTableModel.d.ts.map +1 -1
  65. package/dist/IrisGridTableModel.js +7 -6
  66. package/dist/IrisGridTableModel.js.map +1 -1
  67. package/dist/IrisGridTableModelTemplate.d.ts +8 -3
  68. package/dist/IrisGridTableModelTemplate.d.ts.map +1 -1
  69. package/dist/IrisGridTableModelTemplate.js +32 -14
  70. package/dist/IrisGridTableModelTemplate.js.map +1 -1
  71. package/dist/IrisGridTestUtils.d.ts +14 -13
  72. package/dist/IrisGridTestUtils.d.ts.map +1 -1
  73. package/dist/IrisGridTestUtils.js +33 -27
  74. package/dist/IrisGridTestUtils.js.map +1 -1
  75. package/dist/IrisGridTreeTableModel.d.ts +1 -1
  76. package/dist/IrisGridTreeTableModel.d.ts.map +1 -1
  77. package/dist/IrisGridTreeTableModel.js.map +1 -1
  78. package/dist/IrisGridUtils.d.ts +88 -85
  79. package/dist/IrisGridUtils.d.ts.map +1 -1
  80. package/dist/IrisGridUtils.js +567 -556
  81. package/dist/IrisGridUtils.js.map +1 -1
  82. package/dist/PartitionSelectorSearch.d.ts +2 -1
  83. package/dist/PartitionSelectorSearch.d.ts.map +1 -1
  84. package/dist/PartitionSelectorSearch.js +3 -1
  85. package/dist/PartitionSelectorSearch.js.map +1 -1
  86. package/dist/TableViewportUpdater.d.ts +1 -1
  87. package/dist/TableViewportUpdater.d.ts.map +1 -1
  88. package/dist/TableViewportUpdater.js.map +1 -1
  89. package/dist/TreeTableViewportUpdater.d.ts +2 -1
  90. package/dist/TreeTableViewportUpdater.d.ts.map +1 -1
  91. package/dist/TreeTableViewportUpdater.js +1 -1
  92. package/dist/TreeTableViewportUpdater.js.map +1 -1
  93. package/dist/format-context-menus/DecimalFormatContextMenu.d.ts +3 -1
  94. package/dist/format-context-menus/DecimalFormatContextMenu.d.ts.map +1 -1
  95. package/dist/format-context-menus/DecimalFormatContextMenu.js +3 -2
  96. package/dist/format-context-menus/DecimalFormatContextMenu.js.map +1 -1
  97. package/dist/format-context-menus/IntegerFormatContextMenu.d.ts +3 -1
  98. package/dist/format-context-menus/IntegerFormatContextMenu.d.ts.map +1 -1
  99. package/dist/format-context-menus/IntegerFormatContextMenu.js +3 -2
  100. package/dist/format-context-menus/IntegerFormatContextMenu.js.map +1 -1
  101. package/dist/mousehandlers/IrisGridColumnSelectMouseHandler.js.map +1 -1
  102. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts +10 -9
  103. package/dist/mousehandlers/IrisGridContextMenuHandler.d.ts.map +1 -1
  104. package/dist/mousehandlers/IrisGridContextMenuHandler.js +49 -32
  105. package/dist/mousehandlers/IrisGridContextMenuHandler.js.map +1 -1
  106. package/dist/sidebar/ChartBuilder.d.ts +11 -11
  107. package/dist/sidebar/ChartBuilder.d.ts.map +1 -1
  108. package/dist/sidebar/ChartBuilder.js +118 -84
  109. package/dist/sidebar/ChartBuilder.js.map +1 -1
  110. package/dist/sidebar/RollupRows.d.ts +1 -1
  111. package/dist/sidebar/RollupRows.d.ts.map +1 -1
  112. package/dist/sidebar/RollupRows.js.map +1 -1
  113. package/dist/sidebar/SelectDistinctBuilder.d.ts +1 -1
  114. package/dist/sidebar/SelectDistinctBuilder.d.ts.map +1 -1
  115. package/dist/sidebar/SelectDistinctBuilder.js.map +1 -1
  116. package/dist/sidebar/TableCsvExporter.d.ts +2 -2
  117. package/dist/sidebar/TableCsvExporter.d.ts.map +1 -1
  118. package/dist/sidebar/TableCsvExporter.js +3 -3
  119. package/dist/sidebar/TableCsvExporter.js.map +1 -1
  120. package/dist/sidebar/TableSaver.d.ts +2 -1
  121. package/dist/sidebar/TableSaver.d.ts.map +1 -1
  122. package/dist/sidebar/TableSaver.js +4 -1
  123. package/dist/sidebar/TableSaver.js.map +1 -1
  124. package/dist/sidebar/aggregations/AggregationEdit.d.ts +1 -1
  125. package/dist/sidebar/aggregations/AggregationEdit.d.ts.map +1 -1
  126. package/dist/sidebar/aggregations/AggregationEdit.js.map +1 -1
  127. package/dist/sidebar/aggregations/AggregationUtils.d.ts +1 -1
  128. package/dist/sidebar/aggregations/AggregationUtils.d.ts.map +1 -1
  129. package/dist/sidebar/aggregations/AggregationUtils.js.map +1 -1
  130. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts +2 -0
  131. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +1 -1
  132. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +2 -0
  133. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -1
  134. package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts +2 -0
  135. package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -1
  136. package/dist/sidebar/conditional-formatting/ConditionEditor.js +3 -2
  137. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -1
  138. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts +2 -0
  139. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts.map +1 -1
  140. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +3 -0
  141. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -1
  142. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.d.ts +2 -2
  143. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.d.ts.map +1 -1
  144. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +1 -1
  145. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -1
  146. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +3 -3
  147. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -1
  148. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +3 -3
  149. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -1
  150. package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts +2 -0
  151. package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -1
  152. package/dist/sidebar/conditional-formatting/RowFormatEditor.js +2 -0
  153. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -1
  154. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +1 -1
  155. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -1
  156. package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
  157. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts +1 -1
  158. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts.map +1 -1
  159. package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
  160. package/package.json +16 -15
@@ -1,12 +1,8 @@
1
- function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
3
- function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
4
1
  import React, { PureComponent } from 'react';
5
2
  import classNames from 'classnames';
6
3
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
7
4
  import { Button, RadioGroup, RadioItem } from '@deephaven/components';
8
5
  import { vsLink, dhUnlink, dhTable, dhNewCircleLargeFilled, vsCircleLargeFilled, vsTrash } from '@deephaven/icons';
9
- import dh from '@deephaven/jsapi-shim';
10
6
  import Log from '@deephaven/log';
11
7
  import shortid from 'shortid';
12
8
  import { BarIcon, HistogramIcon, LineIcon, PieIcon, ScatterIcon } from "./icons/index.js";
@@ -16,43 +12,7 @@ var log = Log.module('ChartBuilder');
16
12
  * Form for configuring all the settings when creating a console.
17
13
  */
18
14
  class ChartBuilder extends PureComponent {
19
- /**
20
- * Converts the provided chart type into a readable type.
21
- * Just replaces underscores with spaces and capitals the first letter of each word.
22
- */
23
- static getTypeName(type) {
24
- switch (type) {
25
- case dh.plot.SeriesPlotStyle.LINE:
26
- return 'Line';
27
- case dh.plot.SeriesPlotStyle.BAR:
28
- return 'Bar';
29
- case dh.plot.SeriesPlotStyle.SCATTER:
30
- return 'Scatter';
31
- case dh.plot.SeriesPlotStyle.PIE:
32
- return 'Pie';
33
- case dh.plot.SeriesPlotStyle.HISTOGRAM:
34
- return 'Histogram';
35
- default:
36
- return type;
37
- }
38
- }
39
- static getTypeIcon(type) {
40
- switch (type) {
41
- case dh.plot.SeriesPlotStyle.LINE:
42
- return /*#__PURE__*/React.createElement(LineIcon, null);
43
- case dh.plot.SeriesPlotStyle.BAR:
44
- return /*#__PURE__*/React.createElement(BarIcon, null);
45
- case dh.plot.SeriesPlotStyle.SCATTER:
46
- return /*#__PURE__*/React.createElement(ScatterIcon, null);
47
- case dh.plot.SeriesPlotStyle.PIE:
48
- return /*#__PURE__*/React.createElement(PieIcon, null);
49
- case dh.plot.SeriesPlotStyle.HISTOGRAM:
50
- return /*#__PURE__*/React.createElement(HistogramIcon, null);
51
- default:
52
- return null;
53
- }
54
- }
55
- static getMaxSeriesCount(type) {
15
+ static getMaxSeriesCount(dh, type) {
56
16
  switch (type) {
57
17
  case dh.plot.SeriesPlotStyle.PIE:
58
18
  return 1;
@@ -62,32 +22,14 @@ class ChartBuilder extends PureComponent {
62
22
  return 100;
63
23
  }
64
24
  }
65
- static getXAxisLabel(type) {
66
- switch (type) {
67
- case dh.plot.SeriesPlotStyle.PIE:
68
- return 'Labels';
69
- case dh.plot.SeriesPlotStyle.HISTOGRAM:
70
- return 'Data';
71
- default:
72
- return 'X-Axis';
73
- }
74
- }
75
- static getSeriesLabel(type) {
76
- switch (type) {
77
- case dh.plot.SeriesPlotStyle.PIE:
78
- return 'Values';
79
- default:
80
- return 'Series';
81
- }
82
- }
83
25
  static makeSeriesItem(value) {
84
26
  return {
85
27
  id: shortid.generate(),
86
28
  value
87
29
  };
88
30
  }
89
- static makeDefaultSeriesItems(type, columns) {
90
- var maxSeriesCount = ChartBuilder.getMaxSeriesCount(type);
31
+ static makeDefaultSeriesItems(dh, type, columns) {
32
+ var maxSeriesCount = ChartBuilder.getMaxSeriesCount(dh, type);
91
33
  if (maxSeriesCount === 0 || columns == null || columns.length === 0) {
92
34
  return [];
93
35
  }
@@ -115,11 +57,12 @@ class ChartBuilder extends PureComponent {
115
57
  model
116
58
  } = props;
117
59
  var {
118
- columns
60
+ columns,
61
+ dh
119
62
  } = model;
120
- var type = ChartBuilder.types[0];
63
+ var type = this.getTypes()[0];
121
64
  var xAxis = ChartBuilder.getDefaultXAxis(type, columns);
122
- var seriesItems = ChartBuilder.makeDefaultSeriesItems(type, columns);
65
+ var seriesItems = ChartBuilder.makeDefaultSeriesItems(dh, type, columns);
123
66
  this.state = {
124
67
  /** The selected chart type */
125
68
  type,
@@ -131,6 +74,97 @@ class ChartBuilder extends PureComponent {
131
74
  isLinked: true
132
75
  };
133
76
  }
77
+ getTypes() {
78
+ var {
79
+ model
80
+ } = this.props;
81
+ var {
82
+ dh
83
+ } = model;
84
+ return [dh.plot.SeriesPlotStyle.LINE, dh.plot.SeriesPlotStyle.BAR, dh.plot.SeriesPlotStyle.SCATTER, dh.plot.SeriesPlotStyle.PIE
85
+ // IDS-6808: Disable Histogram in Chart Builder until we pipe histogram creation through the API
86
+ // dh.plot.SeriesPlotStyle.HISTOGRAM,
87
+ ];
88
+ }
89
+
90
+ /**
91
+ * Converts the provided chart type into a readable type.
92
+ * Just replaces underscores with spaces and capitals the first letter of each word.
93
+ */
94
+ getTypeName(type) {
95
+ var {
96
+ model
97
+ } = this.props;
98
+ var {
99
+ dh
100
+ } = model;
101
+ switch (type) {
102
+ case dh.plot.SeriesPlotStyle.LINE:
103
+ return 'Line';
104
+ case dh.plot.SeriesPlotStyle.BAR:
105
+ return 'Bar';
106
+ case dh.plot.SeriesPlotStyle.SCATTER:
107
+ return 'Scatter';
108
+ case dh.plot.SeriesPlotStyle.PIE:
109
+ return 'Pie';
110
+ case dh.plot.SeriesPlotStyle.HISTOGRAM:
111
+ return 'Histogram';
112
+ default:
113
+ return type;
114
+ }
115
+ }
116
+ getTypeIcon(type) {
117
+ var {
118
+ model
119
+ } = this.props;
120
+ var {
121
+ dh
122
+ } = model;
123
+ switch (type) {
124
+ case dh.plot.SeriesPlotStyle.LINE:
125
+ return /*#__PURE__*/React.createElement(LineIcon, null);
126
+ case dh.plot.SeriesPlotStyle.BAR:
127
+ return /*#__PURE__*/React.createElement(BarIcon, null);
128
+ case dh.plot.SeriesPlotStyle.SCATTER:
129
+ return /*#__PURE__*/React.createElement(ScatterIcon, null);
130
+ case dh.plot.SeriesPlotStyle.PIE:
131
+ return /*#__PURE__*/React.createElement(PieIcon, null);
132
+ case dh.plot.SeriesPlotStyle.HISTOGRAM:
133
+ return /*#__PURE__*/React.createElement(HistogramIcon, null);
134
+ default:
135
+ return null;
136
+ }
137
+ }
138
+ getXAxisLabel(type) {
139
+ var {
140
+ model
141
+ } = this.props;
142
+ var {
143
+ dh
144
+ } = model;
145
+ switch (type) {
146
+ case dh.plot.SeriesPlotStyle.PIE:
147
+ return 'Labels';
148
+ case dh.plot.SeriesPlotStyle.HISTOGRAM:
149
+ return 'Data';
150
+ default:
151
+ return 'X-Axis';
152
+ }
153
+ }
154
+ getSeriesLabel(type) {
155
+ var {
156
+ model
157
+ } = this.props;
158
+ var {
159
+ dh
160
+ } = model;
161
+ switch (type) {
162
+ case dh.plot.SeriesPlotStyle.PIE:
163
+ return 'Values';
164
+ default:
165
+ return 'Series';
166
+ }
167
+ }
134
168
  handleAddSeries() {
135
169
  this.setState(state => {
136
170
  var {
@@ -162,11 +196,12 @@ class ChartBuilder extends PureComponent {
162
196
  model
163
197
  } = this.props;
164
198
  var {
165
- columns
199
+ columns,
200
+ dh
166
201
  } = model;
167
- var type = ChartBuilder.types[0];
202
+ var type = this.getTypes()[0];
168
203
  var xAxis = ChartBuilder.getDefaultXAxis(type, columns);
169
- var seriesItems = ChartBuilder.makeDefaultSeriesItems(type, columns);
204
+ var seriesItems = ChartBuilder.makeDefaultSeriesItems(dh, type, columns);
170
205
  var isLinked = true;
171
206
  this.setState({
172
207
  type,
@@ -230,22 +265,25 @@ class ChartBuilder extends PureComponent {
230
265
  var changeEvent = event;
231
266
  var index = changeEvent.target.getAttribute('data-index');
232
267
  var intIndex = parseInt(index, 10);
233
- var type = ChartBuilder.types[intIndex];
268
+ var type = this.getTypes()[intIndex];
234
269
  log.debug2('handleTypeSelect', type);
235
270
  this.setState(state => {
236
- var maxSeriesCount = ChartBuilder.getMaxSeriesCount(type);
271
+ var {
272
+ model
273
+ } = this.props;
274
+ var {
275
+ dh
276
+ } = model;
277
+ var maxSeriesCount = ChartBuilder.getMaxSeriesCount(dh, type);
237
278
  var {
238
279
  seriesItems
239
280
  } = state;
240
281
  seriesItems = seriesItems.slice(0, maxSeriesCount);
241
282
  if (seriesItems.length === 0 && maxSeriesCount > 0) {
242
- var {
243
- model
244
- } = this.props;
245
283
  var {
246
284
  columns
247
285
  } = model;
248
- seriesItems = ChartBuilder.makeDefaultSeriesItems(type, columns);
286
+ seriesItems = ChartBuilder.makeDefaultSeriesItems(dh, type, columns);
249
287
  }
250
288
  return {
251
289
  type,
@@ -283,7 +321,8 @@ class ChartBuilder extends PureComponent {
283
321
  model
284
322
  } = this.props;
285
323
  var {
286
- columns
324
+ columns,
325
+ dh
287
326
  } = model;
288
327
  var {
289
328
  seriesItems,
@@ -291,9 +330,9 @@ class ChartBuilder extends PureComponent {
291
330
  xAxis,
292
331
  isLinked
293
332
  } = this.state;
294
- var maxSeriesCount = ChartBuilder.getMaxSeriesCount(type);
295
- var xAxisLabel = ChartBuilder.getXAxisLabel(type);
296
- var seriesLabel = ChartBuilder.getSeriesLabel(type);
333
+ var maxSeriesCount = ChartBuilder.getMaxSeriesCount(dh, type);
334
+ var xAxisLabel = this.getXAxisLabel(type);
335
+ var seriesLabel = this.getSeriesLabel(type);
297
336
  var isSeriesVisible = seriesItems.length > 0;
298
337
  var isAddSeriesVisible = seriesItems.length < maxSeriesCount;
299
338
  return /*#__PURE__*/React.createElement("div", {
@@ -304,7 +343,7 @@ class ChartBuilder extends PureComponent {
304
343
  className: "form-row"
305
344
  }, /*#__PURE__*/React.createElement("label", null, "Select Chart Type"), /*#__PURE__*/React.createElement("div", {
306
345
  className: "form-row"
307
- }, ChartBuilder.types.map((chartType, index) => {
346
+ }, this.getTypes().map((chartType, index) => {
308
347
  var key = chartType;
309
348
  return /*#__PURE__*/React.createElement("div", {
310
349
  key: key,
@@ -316,7 +355,7 @@ class ChartBuilder extends PureComponent {
316
355
  }),
317
356
  "data-index": index,
318
357
  onClick: this.handleTypeClick
319
- }, ChartBuilder.getTypeIcon(chartType), ChartBuilder.getTypeName(chartType)));
358
+ }, this.getTypeIcon(chartType), this.getTypeName(chartType)));
320
359
  }))), /*#__PURE__*/React.createElement("hr", null), /*#__PURE__*/React.createElement("div", {
321
360
  className: "form-row form-inline"
322
361
  }, /*#__PURE__*/React.createElement("label", {
@@ -400,10 +439,5 @@ class ChartBuilder extends PureComponent {
400
439
  }, "Create"))));
401
440
  }
402
441
  }
403
- _defineProperty(ChartBuilder, "types", [dh.plot.SeriesPlotStyle.LINE, dh.plot.SeriesPlotStyle.BAR, dh.plot.SeriesPlotStyle.SCATTER, dh.plot.SeriesPlotStyle.PIE
404
- // IDS-6808: Disable Histogram in Chart Builder until we pipe histogram creation through the API
405
- // dh.plot.SeriesPlotStyle.HISTOGRAM,
406
- ]);
407
-
408
442
  export default ChartBuilder;
409
443
  //# sourceMappingURL=ChartBuilder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartBuilder.js","names":["React","PureComponent","classNames","FontAwesomeIcon","Button","RadioGroup","RadioItem","vsLink","dhUnlink","dhTable","dhNewCircleLargeFilled","vsCircleLargeFilled","vsTrash","dh","Log","shortid","BarIcon","HistogramIcon","LineIcon","PieIcon","ScatterIcon","log","module","ChartBuilder","getTypeName","type","plot","SeriesPlotStyle","LINE","BAR","SCATTER","PIE","HISTOGRAM","getTypeIcon","getMaxSeriesCount","getXAxisLabel","getSeriesLabel","makeSeriesItem","value","id","generate","makeDefaultSeriesItems","columns","maxSeriesCount","length","name","getDefaultXAxis","constructor","props","handleAddSeries","bind","handleLinkStateChange","handleReset","handleSeriesChange","handleSeriesDeleteClick","handleSubmit","handleTypeClick","handleXAxisChange","sendChange","model","types","xAxis","seriesItems","state","isLinked","setState","newSeriesItems","push","event","target","index","getAttribute","intIndex","parseInt","changeEvent","splice","preventDefault","onSubmit","series","map","item","debug2","slice","onChange","render","xAxisLabel","seriesLabel","isSeriesVisible","isAddSeriesVisible","chartType","key","active","column","seriesItem","i"],"sources":["../../src/sidebar/ChartBuilder.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, RadioGroup, RadioItem } from '@deephaven/components';\nimport {\n vsLink,\n dhUnlink,\n dhTable,\n dhNewCircleLargeFilled,\n vsCircleLargeFilled,\n vsTrash,\n} from '@deephaven/icons';\nimport dh, { Column, SeriesPlotStyle } from '@deephaven/jsapi-shim';\nimport Log from '@deephaven/log';\nimport shortid from 'shortid';\nimport {\n BarIcon,\n HistogramIcon,\n LineIcon,\n PieIcon,\n ScatterIcon,\n} from './icons';\nimport './ChartBuilder.scss';\nimport IrisGridModel from '../IrisGridModel';\n\nconst log = Log.module('ChartBuilder');\n\nexport type ChartBuilderSettings = {\n type: SeriesPlotStyle;\n series: unknown;\n xAxis: string;\n isLinked: boolean;\n};\nexport type SeriesItem = {\n id: string;\n value: string;\n};\n\ninterface ChartBuilderProps {\n model: IrisGridModel;\n onSubmit: (obj: ChartBuilderSettings) => void;\n onChange: (obj: ChartBuilderSettings) => void;\n}\ninterface ChartBuilderState {\n /** The selected chart type */\n type: SeriesPlotStyle;\n\n /** Array of column names of the series to display */\n seriesItems: readonly SeriesItem[];\n\n /** The column name to use as the x-axis */\n xAxis: string;\n\n /** Whether the newly created chart should be linked with the table (update when filters update) */\n isLinked: boolean;\n}\n/**\n * Form for configuring all the settings when creating a console.\n */\nclass ChartBuilder extends PureComponent<ChartBuilderProps, ChartBuilderState> {\n static types = [\n dh.plot.SeriesPlotStyle.LINE,\n dh.plot.SeriesPlotStyle.BAR,\n dh.plot.SeriesPlotStyle.SCATTER,\n dh.plot.SeriesPlotStyle.PIE,\n // IDS-6808: Disable Histogram in Chart Builder until we pipe histogram creation through the API\n // dh.plot.SeriesPlotStyle.HISTOGRAM,\n ];\n\n /**\n * Converts the provided chart type into a readable type.\n * Just replaces underscores with spaces and capitals the first letter of each word.\n */\n static getTypeName(type: SeriesPlotStyle): string | SeriesPlotStyle {\n switch (type) {\n case dh.plot.SeriesPlotStyle.LINE:\n return 'Line';\n case dh.plot.SeriesPlotStyle.BAR:\n return 'Bar';\n case dh.plot.SeriesPlotStyle.SCATTER:\n return 'Scatter';\n case dh.plot.SeriesPlotStyle.PIE:\n return 'Pie';\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 'Histogram';\n default:\n return type;\n }\n }\n\n static getTypeIcon(type: SeriesPlotStyle): React.ReactElement | null {\n switch (type) {\n case dh.plot.SeriesPlotStyle.LINE:\n return <LineIcon />;\n case dh.plot.SeriesPlotStyle.BAR:\n return <BarIcon />;\n case dh.plot.SeriesPlotStyle.SCATTER:\n return <ScatterIcon />;\n case dh.plot.SeriesPlotStyle.PIE:\n return <PieIcon />;\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return <HistogramIcon />;\n default:\n return null;\n }\n }\n\n static getMaxSeriesCount(type: SeriesPlotStyle): number {\n switch (type) {\n case dh.plot.SeriesPlotStyle.PIE:\n return 1;\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 0;\n default:\n return 100;\n }\n }\n\n static getXAxisLabel(type: SeriesPlotStyle): string {\n switch (type) {\n case dh.plot.SeriesPlotStyle.PIE:\n return 'Labels';\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 'Data';\n default:\n return 'X-Axis';\n }\n }\n\n static getSeriesLabel(type: SeriesPlotStyle): string {\n switch (type) {\n case dh.plot.SeriesPlotStyle.PIE:\n return 'Values';\n default:\n return 'Series';\n }\n }\n\n static makeSeriesItem(value: string): SeriesItem {\n return { id: shortid.generate(), value };\n }\n\n static makeDefaultSeriesItems(\n type: SeriesPlotStyle,\n columns: readonly Column[]\n ): SeriesItem[] {\n const maxSeriesCount = ChartBuilder.getMaxSeriesCount(type);\n if (maxSeriesCount === 0 || columns == null || columns.length === 0) {\n return [];\n }\n\n const value = columns.length > 1 ? columns[1].name : columns[0].name;\n return [ChartBuilder.makeSeriesItem(value)];\n }\n\n static getDefaultXAxis(\n type: SeriesPlotStyle,\n columns: readonly Column[]\n ): string | null {\n if (columns != null && columns.length > 0) {\n return columns[0].name;\n }\n\n return null;\n }\n\n constructor(props: ChartBuilderProps) {\n super(props);\n\n this.handleAddSeries = this.handleAddSeries.bind(this);\n this.handleLinkStateChange = this.handleLinkStateChange.bind(this);\n this.handleReset = this.handleReset.bind(this);\n this.handleSeriesChange = this.handleSeriesChange.bind(this);\n this.handleSeriesDeleteClick = this.handleSeriesDeleteClick.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleTypeClick = this.handleTypeClick.bind(this);\n this.handleXAxisChange = this.handleXAxisChange.bind(this);\n this.sendChange = this.sendChange.bind(this);\n\n const { model } = props;\n const { columns } = model;\n\n const type = ChartBuilder.types[0];\n const xAxis = ChartBuilder.getDefaultXAxis(type, columns) as string;\n const seriesItems = ChartBuilder.makeDefaultSeriesItems(type, columns);\n\n this.state = {\n /** The selected chart type */\n type,\n\n /** Array of column names of the series to display */\n seriesItems,\n\n /** The column name to use as the x-axis */\n xAxis,\n\n /** Whether the newly created chart should be linked with the table (update when filters update) */\n isLinked: true,\n };\n }\n\n handleAddSeries(): void {\n this.setState(state => {\n const { seriesItems } = state;\n const newSeriesItems = [...seriesItems];\n\n const { model } = this.props;\n const { columns } = model;\n newSeriesItems.push({\n id: shortid.generate(),\n value: columns[0].name,\n });\n\n return { seriesItems: newSeriesItems };\n }, this.sendChange);\n }\n\n handleLinkStateChange(event: React.ChangeEvent<HTMLInputElement>): void {\n this.setState({ isLinked: event.target.value === 'true' }, this.sendChange);\n }\n\n handleReset(): void {\n const { model } = this.props;\n const { columns } = model;\n\n const type = ChartBuilder.types[0];\n const xAxis = ChartBuilder.getDefaultXAxis(type, columns) as string;\n const seriesItems = ChartBuilder.makeDefaultSeriesItems(type, columns);\n const isLinked = true;\n\n this.setState({ type, seriesItems, xAxis, isLinked }, this.sendChange);\n }\n\n handleSeriesChange(event: React.ChangeEvent<HTMLSelectElement>): void {\n const { value } = event.target;\n const index = event.target.getAttribute('data-index') as string;\n const intIndex = parseInt(index, 10);\n\n this.setState(state => {\n let { seriesItems } = state;\n\n seriesItems = [...seriesItems];\n seriesItems[intIndex].value = value;\n\n return { seriesItems };\n }, this.sendChange);\n }\n\n handleSeriesDeleteClick(event: React.MouseEvent<HTMLButtonElement>): void {\n const changeEvent = (event as unknown) as React.ChangeEvent<HTMLButtonElement>;\n const index = changeEvent.target.getAttribute('data-index') as string;\n const intIndex = parseInt(index, 10);\n\n this.setState(state => {\n const { seriesItems } = state;\n const newSeriesItems = [...seriesItems];\n\n newSeriesItems.splice(intIndex, 1);\n\n return { seriesItems: newSeriesItems };\n }, this.sendChange);\n }\n\n handleSubmit(event: React.FormEvent<HTMLFormElement>): void {\n event.preventDefault();\n\n const { onSubmit } = this.props;\n const { type, seriesItems, xAxis, isLinked } = this.state;\n const series = seriesItems.map(item => item.value);\n onSubmit({\n type: (`${type}` as unknown) as SeriesPlotStyle,\n series,\n xAxis,\n isLinked,\n });\n }\n\n handleTypeClick(event: React.MouseEvent<HTMLButtonElement>): void {\n const changeEvent = (event as unknown) as React.ChangeEvent<HTMLButtonElement>;\n const index = changeEvent.target.getAttribute('data-index') as string;\n const intIndex = parseInt(index, 10);\n\n const type = ChartBuilder.types[intIndex];\n\n log.debug2('handleTypeSelect', type);\n\n this.setState(state => {\n const maxSeriesCount = ChartBuilder.getMaxSeriesCount(type);\n let { seriesItems } = state;\n seriesItems = seriesItems.slice(0, maxSeriesCount);\n if (seriesItems.length === 0 && maxSeriesCount > 0) {\n const { model } = this.props;\n const { columns } = model;\n seriesItems = ChartBuilder.makeDefaultSeriesItems(type, columns);\n }\n\n return { type, seriesItems };\n }, this.sendChange);\n }\n\n handleXAxisChange(event: React.ChangeEvent<HTMLSelectElement>): void {\n const xAxis = event.target.value;\n log.debug2('x-axis change', xAxis);\n\n this.setState({ xAxis }, this.sendChange);\n }\n\n sendChange(): void {\n const { onChange } = this.props;\n const { isLinked, type, seriesItems, xAxis } = this.state;\n const series = seriesItems.map(item => item.value);\n\n onChange({ type, series, xAxis, isLinked });\n }\n\n render(): JSX.Element {\n const { model } = this.props;\n const { columns } = model;\n const { seriesItems, type, xAxis, isLinked } = this.state;\n const maxSeriesCount = ChartBuilder.getMaxSeriesCount(type);\n const xAxisLabel = ChartBuilder.getXAxisLabel(type);\n const seriesLabel = ChartBuilder.getSeriesLabel(type);\n const isSeriesVisible = seriesItems.length > 0;\n const isAddSeriesVisible = seriesItems.length < maxSeriesCount;\n\n return (\n <div className=\"chart-builder\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"form-row\">\n <label>Select Chart Type</label>\n <div className=\"form-row\">\n {ChartBuilder.types.map((chartType, index) => {\n const key = (chartType as unknown) as React.Key;\n return (\n <div key={key} className=\"col col-chart-type\">\n <button\n type=\"button\"\n className={classNames(\n 'btn',\n 'btn-icon',\n 'btn-chart-type',\n {\n active: chartType === type,\n }\n )}\n data-index={index}\n onClick={this.handleTypeClick}\n >\n {ChartBuilder.getTypeIcon(chartType)}\n {ChartBuilder.getTypeName(chartType)}\n </button>\n </div>\n );\n })}\n </div>\n </div>\n <hr />\n <div className=\"form-row form-inline\">\n <label className=\"col-2 label-left\">{xAxisLabel}</label>\n <select\n className=\"form-control custom-select select-x-axis col\"\n value={xAxis}\n onChange={this.handleXAxisChange}\n >\n {columns.map(column => (\n <option key={column.name} value={column.name}>\n {column.name}\n </option>\n ))}\n </select>\n </div>\n {isSeriesVisible && <hr />}\n {seriesItems.map((seriesItem, i) => (\n <div\n className=\"form-row form-inline form-series-item\"\n key={seriesItem.id}\n data-testid={`form-series-item-${i}`}\n >\n <label className=\"col-2 label-left\">\n {i === 0 ? seriesLabel : ''}\n </label>\n <select\n className=\"form-control custom-select select-series col\"\n value={seriesItem.value}\n onChange={this.handleSeriesChange}\n data-testid={`select-series-item-${i}`}\n data-index={i}\n >\n {columns.map(column => (\n <option key={column.name} value={column.name} data-index={i}>\n {column.name}\n </option>\n ))}\n </select>\n {seriesItems.length > 1 && (\n <Button\n kind=\"ghost\"\n className=\"btn-delete-series ml-2 px-2\"\n data-index={i}\n data-testid={`delete-series-${i}`}\n onClick={this.handleSeriesDeleteClick}\n icon={vsTrash}\n tooltip=\"Delete\"\n />\n )}\n </div>\n ))}\n {isAddSeriesVisible && (\n <div className=\"form-row\">\n <div className=\"col-2\" />\n <Button\n kind=\"ghost\"\n className=\"btn-add-series mt-1\"\n onClick={this.handleAddSeries}\n icon={dhNewCircleLargeFilled}\n >\n Add Series\n </Button>\n </div>\n )}\n <div className=\"form-row chart-builder-link\">\n <label className=\"col-2 label-right\">\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n mask={dhTable}\n icon={vsCircleLargeFilled}\n transform=\"right-5 down-5\"\n />\n <FontAwesomeIcon\n icon={isLinked ? vsLink : dhUnlink}\n transform=\"grow-2 right-8 down-6\"\n />\n </div>\n </label>\n <RadioGroup\n onChange={this.handleLinkStateChange}\n value={`${isLinked}`}\n >\n <RadioItem value=\"true\">Sync State</RadioItem>\n <RadioItem value=\"false\">Freeze State</RadioItem>\n </RadioGroup>\n </div>\n <div className=\"form-row\">\n <div className=\"col-2 label-right\" />\n <div className=\"col chart-builder-link-info\">\n {isLinked\n ? 'Charts with synced state will update to match any filters or user modifications applied to the parent table.'\n : 'Freeze State disconnects the chart state from the parent table. New filters or user modifications on the parent table will not be applied.'}\n </div>\n </div>\n <div\n className={classNames('form-row', 'justify-content-end', 'my-3')}\n >\n <Button\n kind=\"secondary\"\n className=\"btn-reset\"\n onClick={this.handleReset}\n >\n Reset\n </Button>\n <Button kind=\"primary\" type=\"submit\" className=\"btn-submit\">\n Create\n </Button>\n </div>\n </form>\n </div>\n );\n }\n}\n\nexport default ChartBuilder;\n"],"mappings":"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"}
1
+ {"version":3,"file":"ChartBuilder.js","names":["React","PureComponent","classNames","FontAwesomeIcon","Button","RadioGroup","RadioItem","vsLink","dhUnlink","dhTable","dhNewCircleLargeFilled","vsCircleLargeFilled","vsTrash","Log","shortid","BarIcon","HistogramIcon","LineIcon","PieIcon","ScatterIcon","log","module","ChartBuilder","getMaxSeriesCount","dh","type","plot","SeriesPlotStyle","PIE","HISTOGRAM","makeSeriesItem","value","id","generate","makeDefaultSeriesItems","columns","maxSeriesCount","length","name","getDefaultXAxis","constructor","props","handleAddSeries","bind","handleLinkStateChange","handleReset","handleSeriesChange","handleSeriesDeleteClick","handleSubmit","handleTypeClick","handleXAxisChange","sendChange","model","getTypes","xAxis","seriesItems","state","isLinked","LINE","BAR","SCATTER","getTypeName","getTypeIcon","getXAxisLabel","getSeriesLabel","setState","newSeriesItems","push","event","target","index","getAttribute","intIndex","parseInt","changeEvent","splice","preventDefault","onSubmit","series","map","item","debug2","slice","onChange","render","xAxisLabel","seriesLabel","isSeriesVisible","isAddSeriesVisible","chartType","key","active","column","seriesItem","i"],"sources":["../../src/sidebar/ChartBuilder.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, RadioGroup, RadioItem } from '@deephaven/components';\nimport {\n vsLink,\n dhUnlink,\n dhTable,\n dhNewCircleLargeFilled,\n vsCircleLargeFilled,\n vsTrash,\n} from '@deephaven/icons';\nimport type {\n Column,\n dh as DhType,\n SeriesPlotStyle,\n} from '@deephaven/jsapi-types';\nimport Log from '@deephaven/log';\nimport shortid from 'shortid';\nimport {\n BarIcon,\n HistogramIcon,\n LineIcon,\n PieIcon,\n ScatterIcon,\n} from './icons';\nimport './ChartBuilder.scss';\nimport IrisGridModel from '../IrisGridModel';\n\nconst log = Log.module('ChartBuilder');\n\nexport type ChartBuilderSettings = {\n type: SeriesPlotStyle;\n series: unknown;\n xAxis: string;\n isLinked: boolean;\n};\nexport type SeriesItem = {\n id: string;\n value: string;\n};\n\ninterface ChartBuilderProps {\n model: IrisGridModel;\n onSubmit: (obj: ChartBuilderSettings) => void;\n onChange: (obj: ChartBuilderSettings) => void;\n}\ninterface ChartBuilderState {\n /** The selected chart type */\n type: SeriesPlotStyle;\n\n /** Array of column names of the series to display */\n seriesItems: readonly SeriesItem[];\n\n /** The column name to use as the x-axis */\n xAxis: string;\n\n /** Whether the newly created chart should be linked with the table (update when filters update) */\n isLinked: boolean;\n}\n/**\n * Form for configuring all the settings when creating a console.\n */\nclass ChartBuilder extends PureComponent<ChartBuilderProps, ChartBuilderState> {\n static getMaxSeriesCount(dh: DhType, type: SeriesPlotStyle): number {\n switch (type) {\n case dh.plot.SeriesPlotStyle.PIE:\n return 1;\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 0;\n default:\n return 100;\n }\n }\n\n static makeSeriesItem(value: string): SeriesItem {\n return { id: shortid.generate(), value };\n }\n\n static makeDefaultSeriesItems(\n dh: DhType,\n type: SeriesPlotStyle,\n columns: readonly Column[]\n ): SeriesItem[] {\n const maxSeriesCount = ChartBuilder.getMaxSeriesCount(dh, type);\n if (maxSeriesCount === 0 || columns == null || columns.length === 0) {\n return [];\n }\n\n const value = columns.length > 1 ? columns[1].name : columns[0].name;\n return [ChartBuilder.makeSeriesItem(value)];\n }\n\n static getDefaultXAxis(\n type: SeriesPlotStyle,\n columns: readonly Column[]\n ): string | null {\n if (columns != null && columns.length > 0) {\n return columns[0].name;\n }\n\n return null;\n }\n\n constructor(props: ChartBuilderProps) {\n super(props);\n\n this.handleAddSeries = this.handleAddSeries.bind(this);\n this.handleLinkStateChange = this.handleLinkStateChange.bind(this);\n this.handleReset = this.handleReset.bind(this);\n this.handleSeriesChange = this.handleSeriesChange.bind(this);\n this.handleSeriesDeleteClick = this.handleSeriesDeleteClick.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleTypeClick = this.handleTypeClick.bind(this);\n this.handleXAxisChange = this.handleXAxisChange.bind(this);\n this.sendChange = this.sendChange.bind(this);\n\n const { model } = props;\n const { columns, dh } = model;\n\n const type = this.getTypes()[0];\n const xAxis = ChartBuilder.getDefaultXAxis(type, columns) as string;\n const seriesItems = ChartBuilder.makeDefaultSeriesItems(dh, type, columns);\n\n this.state = {\n /** The selected chart type */\n type,\n\n /** Array of column names of the series to display */\n seriesItems,\n\n /** The column name to use as the x-axis */\n xAxis,\n\n /** Whether the newly created chart should be linked with the table (update when filters update) */\n isLinked: true,\n };\n }\n\n getTypes() {\n const { model } = this.props;\n const { dh } = model;\n return [\n dh.plot.SeriesPlotStyle.LINE,\n dh.plot.SeriesPlotStyle.BAR,\n dh.plot.SeriesPlotStyle.SCATTER,\n dh.plot.SeriesPlotStyle.PIE,\n // IDS-6808: Disable Histogram in Chart Builder until we pipe histogram creation through the API\n // dh.plot.SeriesPlotStyle.HISTOGRAM,\n ];\n }\n\n /**\n * Converts the provided chart type into a readable type.\n * Just replaces underscores with spaces and capitals the first letter of each word.\n */\n getTypeName(type: SeriesPlotStyle): string | SeriesPlotStyle {\n const { model } = this.props;\n const { dh } = model;\n switch (type) {\n case dh.plot.SeriesPlotStyle.LINE:\n return 'Line';\n case dh.plot.SeriesPlotStyle.BAR:\n return 'Bar';\n case dh.plot.SeriesPlotStyle.SCATTER:\n return 'Scatter';\n case dh.plot.SeriesPlotStyle.PIE:\n return 'Pie';\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 'Histogram';\n default:\n return type;\n }\n }\n\n getTypeIcon(type: SeriesPlotStyle): React.ReactElement | null {\n const { model } = this.props;\n const { dh } = model;\n switch (type) {\n case dh.plot.SeriesPlotStyle.LINE:\n return <LineIcon />;\n case dh.plot.SeriesPlotStyle.BAR:\n return <BarIcon />;\n case dh.plot.SeriesPlotStyle.SCATTER:\n return <ScatterIcon />;\n case dh.plot.SeriesPlotStyle.PIE:\n return <PieIcon />;\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return <HistogramIcon />;\n default:\n return null;\n }\n }\n\n getXAxisLabel(type: SeriesPlotStyle): string {\n const { model } = this.props;\n const { dh } = model;\n switch (type) {\n case dh.plot.SeriesPlotStyle.PIE:\n return 'Labels';\n case dh.plot.SeriesPlotStyle.HISTOGRAM:\n return 'Data';\n default:\n return 'X-Axis';\n }\n }\n\n getSeriesLabel(type: SeriesPlotStyle): string {\n const { model } = this.props;\n const { dh } = model;\n switch (type) {\n case dh.plot.SeriesPlotStyle.PIE:\n return 'Values';\n default:\n return 'Series';\n }\n }\n\n handleAddSeries(): void {\n this.setState(state => {\n const { seriesItems } = state;\n const newSeriesItems = [...seriesItems];\n\n const { model } = this.props;\n const { columns } = model;\n newSeriesItems.push({\n id: shortid.generate(),\n value: columns[0].name,\n });\n\n return { seriesItems: newSeriesItems };\n }, this.sendChange);\n }\n\n handleLinkStateChange(event: React.ChangeEvent<HTMLInputElement>): void {\n this.setState({ isLinked: event.target.value === 'true' }, this.sendChange);\n }\n\n handleReset(): void {\n const { model } = this.props;\n const { columns, dh } = model;\n\n const type = this.getTypes()[0];\n const xAxis = ChartBuilder.getDefaultXAxis(type, columns) as string;\n const seriesItems = ChartBuilder.makeDefaultSeriesItems(dh, type, columns);\n const isLinked = true;\n\n this.setState({ type, seriesItems, xAxis, isLinked }, this.sendChange);\n }\n\n handleSeriesChange(event: React.ChangeEvent<HTMLSelectElement>): void {\n const { value } = event.target;\n const index = event.target.getAttribute('data-index') as string;\n const intIndex = parseInt(index, 10);\n\n this.setState(state => {\n let { seriesItems } = state;\n\n seriesItems = [...seriesItems];\n seriesItems[intIndex].value = value;\n\n return { seriesItems };\n }, this.sendChange);\n }\n\n handleSeriesDeleteClick(event: React.MouseEvent<HTMLButtonElement>): void {\n const changeEvent = (event as unknown) as React.ChangeEvent<HTMLButtonElement>;\n const index = changeEvent.target.getAttribute('data-index') as string;\n const intIndex = parseInt(index, 10);\n\n this.setState(state => {\n const { seriesItems } = state;\n const newSeriesItems = [...seriesItems];\n\n newSeriesItems.splice(intIndex, 1);\n\n return { seriesItems: newSeriesItems };\n }, this.sendChange);\n }\n\n handleSubmit(event: React.FormEvent<HTMLFormElement>): void {\n event.preventDefault();\n\n const { onSubmit } = this.props;\n const { type, seriesItems, xAxis, isLinked } = this.state;\n const series = seriesItems.map(item => item.value);\n onSubmit({\n type: (`${type}` as unknown) as SeriesPlotStyle,\n series,\n xAxis,\n isLinked,\n });\n }\n\n handleTypeClick(event: React.MouseEvent<HTMLButtonElement>): void {\n const changeEvent = (event as unknown) as React.ChangeEvent<HTMLButtonElement>;\n const index = changeEvent.target.getAttribute('data-index') as string;\n const intIndex = parseInt(index, 10);\n\n const type = this.getTypes()[intIndex];\n\n log.debug2('handleTypeSelect', type);\n\n this.setState(state => {\n const { model } = this.props;\n const { dh } = model;\n const maxSeriesCount = ChartBuilder.getMaxSeriesCount(dh, type);\n let { seriesItems } = state;\n seriesItems = seriesItems.slice(0, maxSeriesCount);\n if (seriesItems.length === 0 && maxSeriesCount > 0) {\n const { columns } = model;\n seriesItems = ChartBuilder.makeDefaultSeriesItems(dh, type, columns);\n }\n\n return { type, seriesItems };\n }, this.sendChange);\n }\n\n handleXAxisChange(event: React.ChangeEvent<HTMLSelectElement>): void {\n const xAxis = event.target.value;\n log.debug2('x-axis change', xAxis);\n\n this.setState({ xAxis }, this.sendChange);\n }\n\n sendChange(): void {\n const { onChange } = this.props;\n const { isLinked, type, seriesItems, xAxis } = this.state;\n const series = seriesItems.map(item => item.value);\n\n onChange({ type, series, xAxis, isLinked });\n }\n\n render(): JSX.Element {\n const { model } = this.props;\n const { columns, dh } = model;\n const { seriesItems, type, xAxis, isLinked } = this.state;\n const maxSeriesCount = ChartBuilder.getMaxSeriesCount(dh, type);\n const xAxisLabel = this.getXAxisLabel(type);\n const seriesLabel = this.getSeriesLabel(type);\n const isSeriesVisible = seriesItems.length > 0;\n const isAddSeriesVisible = seriesItems.length < maxSeriesCount;\n\n return (\n <div className=\"chart-builder\">\n <form onSubmit={this.handleSubmit}>\n <div className=\"form-row\">\n <label>Select Chart Type</label>\n <div className=\"form-row\">\n {this.getTypes().map((chartType, index) => {\n const key = (chartType as unknown) as React.Key;\n return (\n <div key={key} className=\"col col-chart-type\">\n <button\n type=\"button\"\n className={classNames(\n 'btn',\n 'btn-icon',\n 'btn-chart-type',\n {\n active: chartType === type,\n }\n )}\n data-index={index}\n onClick={this.handleTypeClick}\n >\n {this.getTypeIcon(chartType)}\n {this.getTypeName(chartType)}\n </button>\n </div>\n );\n })}\n </div>\n </div>\n <hr />\n <div className=\"form-row form-inline\">\n <label className=\"col-2 label-left\">{xAxisLabel}</label>\n <select\n className=\"form-control custom-select select-x-axis col\"\n value={xAxis}\n onChange={this.handleXAxisChange}\n >\n {columns.map(column => (\n <option key={column.name} value={column.name}>\n {column.name}\n </option>\n ))}\n </select>\n </div>\n {isSeriesVisible && <hr />}\n {seriesItems.map((seriesItem, i) => (\n <div\n className=\"form-row form-inline form-series-item\"\n key={seriesItem.id}\n data-testid={`form-series-item-${i}`}\n >\n <label className=\"col-2 label-left\">\n {i === 0 ? seriesLabel : ''}\n </label>\n <select\n className=\"form-control custom-select select-series col\"\n value={seriesItem.value}\n onChange={this.handleSeriesChange}\n data-testid={`select-series-item-${i}`}\n data-index={i}\n >\n {columns.map(column => (\n <option key={column.name} value={column.name} data-index={i}>\n {column.name}\n </option>\n ))}\n </select>\n {seriesItems.length > 1 && (\n <Button\n kind=\"ghost\"\n className=\"btn-delete-series ml-2 px-2\"\n data-index={i}\n data-testid={`delete-series-${i}`}\n onClick={this.handleSeriesDeleteClick}\n icon={vsTrash}\n tooltip=\"Delete\"\n />\n )}\n </div>\n ))}\n {isAddSeriesVisible && (\n <div className=\"form-row\">\n <div className=\"col-2\" />\n <Button\n kind=\"ghost\"\n className=\"btn-add-series mt-1\"\n onClick={this.handleAddSeries}\n icon={dhNewCircleLargeFilled}\n >\n Add Series\n </Button>\n </div>\n )}\n <div className=\"form-row chart-builder-link\">\n <label className=\"col-2 label-right\">\n <div className=\"fa-md fa-layers\">\n <FontAwesomeIcon\n mask={dhTable}\n icon={vsCircleLargeFilled}\n transform=\"right-5 down-5\"\n />\n <FontAwesomeIcon\n icon={isLinked ? vsLink : dhUnlink}\n transform=\"grow-2 right-8 down-6\"\n />\n </div>\n </label>\n <RadioGroup\n onChange={this.handleLinkStateChange}\n value={`${isLinked}`}\n >\n <RadioItem value=\"true\">Sync State</RadioItem>\n <RadioItem value=\"false\">Freeze State</RadioItem>\n </RadioGroup>\n </div>\n <div className=\"form-row\">\n <div className=\"col-2 label-right\" />\n <div className=\"col chart-builder-link-info\">\n {isLinked\n ? 'Charts with synced state will update to match any filters or user modifications applied to the parent table.'\n : 'Freeze State disconnects the chart state from the parent table. New filters or user modifications on the parent table will not be applied.'}\n </div>\n </div>\n <div\n className={classNames('form-row', 'justify-content-end', 'my-3')}\n >\n <Button\n kind=\"secondary\"\n className=\"btn-reset\"\n onClick={this.handleReset}\n >\n Reset\n </Button>\n <Button kind=\"primary\" type=\"submit\" className=\"btn-submit\">\n Create\n </Button>\n </div>\n </form>\n </div>\n );\n }\n}\n\nexport default ChartBuilder;\n"],"mappings":"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"}
@@ -4,7 +4,7 @@ import { DraggableItemList, Range, RenderItemProps } from '@deephaven/components
4
4
  import { SortDirection } from '@deephaven/jsapi-utils';
5
5
  import memoize from 'memoizee';
6
6
  import './RollupRows.scss';
7
- import { Column } from '@deephaven/jsapi-shim';
7
+ import type { Column } from '@deephaven/jsapi-types';
8
8
  import IrisGridModel from '../IrisGridModel';
9
9
  import { ColumnName } from '../CommonTypes';
10
10
  export interface UIRollupConfig {
@@ -1 +1 @@
1
- {"version":3,"file":"RollupRows.d.ts","sourceRoot":"","sources":["../../src/sidebar/RollupRows.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RollupRows.d.ts","sourceRoot":"","sources":["../../src/sidebar/RollupRows.tsx"],"names":[],"mappings":"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"}