@deephaven/iris-grid 0.9.4-plugins.9 → 0.10.1-beta.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 (86) hide show
  1. package/dist/IrisGrid.d.ts +23 -3
  2. package/dist/IrisGrid.d.ts.map +1 -1
  3. package/dist/IrisGrid.js +146 -8
  4. package/dist/IrisGrid.js.map +1 -1
  5. package/dist/IrisGridModel.d.ts +14 -2
  6. package/dist/IrisGridModel.d.ts.map +1 -1
  7. package/dist/IrisGridModel.js +8 -0
  8. package/dist/IrisGridModel.js.map +1 -1
  9. package/dist/IrisGridModelFactory.d.ts +1 -1
  10. package/dist/IrisGridModelFactory.d.ts.map +1 -1
  11. package/dist/IrisGridModelFactory.js +8 -1
  12. package/dist/IrisGridModelFactory.js.map +1 -1
  13. package/dist/IrisGridModelUpdater.d.ts +3 -2
  14. package/dist/IrisGridModelUpdater.d.ts.map +1 -1
  15. package/dist/IrisGridModelUpdater.js +7 -1
  16. package/dist/IrisGridModelUpdater.js.map +1 -1
  17. package/dist/IrisGridProxyModel.d.ts.map +1 -1
  18. package/dist/IrisGridProxyModel.js +12 -0
  19. package/dist/IrisGridProxyModel.js.map +1 -1
  20. package/dist/IrisGridTableModel.d.ts +2 -0
  21. package/dist/IrisGridTableModel.d.ts.map +1 -1
  22. package/dist/IrisGridTableModel.js +47 -5
  23. package/dist/IrisGridTableModel.js.map +1 -1
  24. package/dist/IrisGridUtils.d.ts +2 -0
  25. package/dist/IrisGridUtils.d.ts.map +1 -1
  26. package/dist/IrisGridUtils.js +4 -0
  27. package/dist/IrisGridUtils.js.map +1 -1
  28. package/dist/TableUtils.d.ts.map +1 -1
  29. package/dist/TableUtils.js +2 -0
  30. package/dist/TableUtils.js.map +1 -1
  31. package/dist/sidebar/ChartBuilder.js +1 -1
  32. package/dist/sidebar/ChartBuilder.js.map +1 -1
  33. package/dist/sidebar/OptionType.d.ts +3 -1
  34. package/dist/sidebar/OptionType.d.ts.map +1 -1
  35. package/dist/sidebar/OptionType.js +2 -0
  36. package/dist/sidebar/OptionType.js.map +1 -1
  37. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts +9 -0
  38. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +1 -0
  39. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +132 -0
  40. package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -0
  41. package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts +9 -0
  42. package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -0
  43. package/dist/sidebar/conditional-formatting/ConditionEditor.js +273 -0
  44. package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -0
  45. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.css +21 -0
  46. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.css.map +1 -0
  47. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts +15 -0
  48. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts.map +1 -0
  49. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +115 -0
  50. package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -0
  51. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.d.ts +6 -0
  52. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.d.ts.map +1 -0
  53. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +21 -0
  54. package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -0
  55. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.css +56 -0
  56. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.css.map +1 -0
  57. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +15 -0
  58. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -0
  59. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +160 -0
  60. package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -0
  61. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +119 -0
  62. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -0
  63. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +748 -0
  64. package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -0
  65. package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts +9 -0
  66. package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -0
  67. package/dist/sidebar/conditional-formatting/RowFormatEditor.js +132 -0
  68. package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -0
  69. package/dist/sidebar/conditional-formatting/StyleEditor.css +54 -0
  70. package/dist/sidebar/conditional-formatting/StyleEditor.css.map +1 -0
  71. package/dist/sidebar/conditional-formatting/StyleEditor.d.ts +9 -0
  72. package/dist/sidebar/conditional-formatting/StyleEditor.d.ts.map +1 -0
  73. package/dist/sidebar/conditional-formatting/StyleEditor.js +160 -0
  74. package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -0
  75. package/dist/sidebar/icons/FormatColumnWhereIcon.d.ts +4 -0
  76. package/dist/sidebar/icons/FormatColumnWhereIcon.d.ts.map +1 -0
  77. package/dist/sidebar/icons/FormatColumnWhereIcon.js +45 -0
  78. package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -0
  79. package/dist/sidebar/icons/FormatRowWhereIcon.d.ts +4 -0
  80. package/dist/sidebar/icons/FormatRowWhereIcon.d.ts.map +1 -0
  81. package/dist/sidebar/icons/FormatRowWhereIcon.js +39 -0
  82. package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -0
  83. package/dist/sidebar/icons/index.d.ts +2 -0
  84. package/dist/sidebar/icons/index.js +2 -0
  85. package/dist/sidebar/icons/index.js.map +1 -1
  86. package/package.json +11 -11
@@ -45,6 +45,12 @@ export class IrisGrid extends React.Component<any, any, any> {
45
45
  handleTooltipRef(tooltip: any): void;
46
46
  handleViewChanged(metrics: any): void;
47
47
  handleFormatSelection(modelIndex: any, selectedFormat: any): void;
48
+ handleConditionalFormatCreate(): void;
49
+ handleConditionalFormatEdit(index: any): void;
50
+ handleConditionalFormatsChange(conditionalFormats: any): void;
51
+ handleConditionalFormatEditorSave(config: any): void;
52
+ handleConditionalFormatEditorUpdate(conditionalFormatPreview: any): void;
53
+ handleConditionalFormatEditorCancel(): void;
48
54
  handleUpdateCustomColumns(customColumns: any): void;
49
55
  handleCustomColumnsChanged(): void;
50
56
  handleSelectDistinctChanged(columnNames: any): void;
@@ -113,7 +119,7 @@ export class IrisGrid extends React.Component<any, any, any> {
113
119
  }[];
114
120
  getAdvancedMenuOpenedHandler: ((column: any) => () => void) & memoize.Memoized<(column: any) => () => void>;
115
121
  getCachedAdvancedFilterMenuActions: ((model: any, column: any, advancedFilterOptions: any, sortDirection: any, formatter: any) => JSX.Element) & memoize.Memoized<(model: any, column: any, advancedFilterOptions: any, sortDirection: any, formatter: any) => JSX.Element>;
116
- getCachedOptionItems: ((isChartBuilderAvailable: any, isCustomColumnsAvailable: any, isRollupAvailable: any, isTotalsAvailable: any, isSelectDistinctAvailable: any, isExportAvailable: any, toggleFilterBarAction: any, toggleSearchBarAction: any, isFilterBarShown: any, showSearchBar: any, canDownloadCsv: any, canToggleSearch: any) => ({
122
+ getCachedOptionItems: ((isChartBuilderAvailable: any, isCustomColumnsAvailable: any, isFormatColumnsAvailable: any, isRollupAvailable: any, isTotalsAvailable: any, isSelectDistinctAvailable: any, isExportAvailable: any, toggleFilterBarAction: any, toggleSearchBarAction: any, isFilterBarShown: any, showSearchBar: any, canDownloadCsv: any, canToggleSearch: any) => ({
117
123
  type: OptionType;
118
124
  title: string;
119
125
  icon: import("@fortawesome/fontawesome-common-types").IconDefinition;
@@ -127,7 +133,7 @@ export class IrisGrid extends React.Component<any, any, any> {
127
133
  icon: import("@fortawesome/fontawesome-common-types").IconDefinition;
128
134
  isOn: any;
129
135
  onChange: any;
130
- })[]) & memoize.Memoized<(isChartBuilderAvailable: any, isCustomColumnsAvailable: any, isRollupAvailable: any, isTotalsAvailable: any, isSelectDistinctAvailable: any, isExportAvailable: any, toggleFilterBarAction: any, toggleSearchBarAction: any, isFilterBarShown: any, showSearchBar: any, canDownloadCsv: any, canToggleSearch: any) => ({
136
+ })[]) & memoize.Memoized<(isChartBuilderAvailable: any, isCustomColumnsAvailable: any, isFormatColumnsAvailable: any, isRollupAvailable: any, isTotalsAvailable: any, isSelectDistinctAvailable: any, isExportAvailable: any, toggleFilterBarAction: any, toggleSearchBarAction: any, isFilterBarShown: any, showSearchBar: any, canDownloadCsv: any, canToggleSearch: any) => ({
131
137
  type: OptionType;
132
138
  title: string;
133
139
  icon: import("@fortawesome/fontawesome-common-types").IconDefinition;
@@ -146,6 +152,17 @@ export class IrisGrid extends React.Component<any, any, any> {
146
152
  getAggregationMap: ((columns: any, aggregations: any) => {}) & memoize.Memoized<(columns: any, aggregations: any) => {}>;
147
153
  getOperationMap: ((columns: any, aggregations: any) => {}) & memoize.Memoized<(columns: any, aggregations: any) => {}>;
148
154
  getOperationOrder: ((aggregations: any) => any) & memoize.Memoized<(aggregations: any) => any>;
155
+ getCachedFormatColumns: ((columns: any, rules: any) => import("@deephaven/jsapi-shim").CustomColumn[]) & memoize.Memoized<(columns: any, rules: any) => import("@deephaven/jsapi-shim").CustomColumn[]>;
156
+ getCachedModelColumns: ((model: any, customColumns: any) => any) & memoize.Memoized<(model: any, customColumns: any) => any>;
157
+ /**
158
+ * Builds formatColumns array based on the provided formatting rules with optional preview
159
+ * @param {Column[]} columns Array of columns
160
+ * @param {FormattingRule[]} rulesParam Array of formatting rules
161
+ * @param {FormattingRule?} preview Optional temporary formatting rule for previewing live changes
162
+ * @param {Number|null} editIndex Index in the rulesParam array to replace with the preview, null if preview not applicable
163
+ * @returns {CustomColumn[]} Format columns array
164
+ */
165
+ getCachedPreviewFormatColumns: ((columns: any, rulesParam: any, preview: any, editIndex: any) => import("@deephaven/jsapi-shim").CustomColumn[]) & memoize.Memoized<(columns: any, rulesParam: any, preview: any, editIndex: any) => import("@deephaven/jsapi-shim").CustomColumn[]>;
149
166
  getModelRollupConfig: ((originalColumns: any, config: any, aggregationSettings: any) => Object) & memoize.Memoized<(originalColumns: any, config: any, aggregationSettings: any) => Object>;
150
167
  getModelTotalsConfig: ((columns: any, config: any, aggregationSettings: any) => {
151
168
  operationMap: {};
@@ -295,6 +312,7 @@ export namespace IrisGrid {
295
312
  const alwaysFetchColumns: PropTypes.Requireable<(string | null | undefined)[]>;
296
313
  const isFilterBarShown: PropTypes.Requireable<boolean>;
297
314
  const applyInputFiltersOnInit: PropTypes.Requireable<boolean>;
315
+ const conditionalFormats: PropTypes.Requireable<(PropTypes.InferProps<{}> | null | undefined)[]>;
298
316
  const customColumnFormatMap: PropTypes.Requireable<Map<unknown, unknown>>;
299
317
  const movedColumns: PropTypes.Requireable<(PropTypes.InferProps<{
300
318
  from: PropTypes.Validator<number>;
@@ -385,6 +403,8 @@ export namespace IrisGrid {
385
403
  export { advancedSettings_1 as advancedSettings };
386
404
  const alwaysFetchColumns_1: never[];
387
405
  export { alwaysFetchColumns_1 as alwaysFetchColumns };
406
+ const conditionalFormats_1: never[];
407
+ export { conditionalFormats_1 as conditionalFormats };
388
408
  const customColumnFormatMap_1: Map<any, any>;
389
409
  export { customColumnFormatMap_1 as customColumnFormatMap };
390
410
  const isFilterBarShown_1: boolean;
@@ -399,7 +419,7 @@ export namespace IrisGrid {
399
419
  export { inputFilters_1 as inputFilters };
400
420
  const customFilters_1: never[];
401
421
  export { customFilters_1 as customFilters };
402
- const onCreateChart_1: undefined;
422
+ export function onCreateChart_1(): void;
403
423
  export { onCreateChart_1 as onCreateChart };
404
424
  export function onColumnSelected_1(): void;
405
425
  export { onColumnSelected_1 as onColumnSelected };
@@ -1 +1 @@
1
- {"version":3,"file":"IrisGrid.d.ts","sourceRoot":"","sources":["../src/IrisGrid.jsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IrisGrid.d.ts","sourceRoot":"","sources":["../src/IrisGrid.jsx"],"names":[],"mappings":"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"}
package/dist/IrisGrid.js CHANGED
@@ -18,7 +18,7 @@ import Log from '@deephaven/log';
18
18
  import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
19
19
  import { ContextActionUtils, ContextActions, DeephavenSpinner, Stack, Menu, Page, Popper, ThemeExport, Tooltip } from '@deephaven/components';
20
20
  import { Grid, GridRange, GridUtils } from '@deephaven/grid';
21
- import { dhEye, dhFilterFilled, dhGraphLineUp, dhTriangleDownSquare, vsCloudDownload, vsFilter, vsMenu, vsRuby, vsSearch, vsSplitHorizontal, vsSymbolOperator, vsTools } from '@deephaven/icons';
21
+ import { dhEye, dhFilterFilled, dhGraphLineUp, dhTriangleDownSquare, vsCloudDownload, vsEdit, vsFilter, vsMenu, vsRuby, vsSearch, vsSplitHorizontal, vsSymbolOperator, vsTools } from '@deephaven/icons';
22
22
  import dh, { PropTypes as APIPropTypes } from '@deephaven/jsapi-shim';
23
23
  import { Pending, PromiseUtils, ValidationError } from '@deephaven/utils';
24
24
  import throttle from 'lodash.throttle';
@@ -50,9 +50,13 @@ import AdvancedSettingsType from "./sidebar/AdvancedSettingsType.js";
50
50
  import AdvancedSettingsMenu from "./sidebar/AdvancedSettingsMenu.js";
51
51
  import SHORTCUTS from "./IrisGridShortcuts.js";
52
52
  import DateUtils from "./DateUtils.js";
53
+ import ConditionalFormattingMenu from "./sidebar/conditional-formatting/ConditionalFormattingMenu.js";
54
+ import { getFormatColumns } from "./sidebar/conditional-formatting/ConditionalFormattingUtils.js";
55
+ import ConditionalFormatEditor from "./sidebar/conditional-formatting/ConditionalFormatEditor.js";
53
56
  var log = Log.module('IrisGrid');
54
57
  var UPDATE_DOWNLOAD_THROTTLE = 500;
55
58
  var SET_FILTER_DEBOUNCE = 250;
59
+ var SET_CONDITIONAL_FORMAT_DEBOUNCE = 250;
56
60
 
57
61
  function isEmptyConfig(_ref) {
58
62
  var {
@@ -97,7 +101,7 @@ export class IrisGrid extends Component {
97
101
  max: 50
98
102
  }));
99
103
 
100
- _defineProperty(this, "getCachedOptionItems", memoize((isChartBuilderAvailable, isCustomColumnsAvailable, isRollupAvailable, isTotalsAvailable, isSelectDistinctAvailable, isExportAvailable, toggleFilterBarAction, toggleSearchBarAction, isFilterBarShown, showSearchBar, canDownloadCsv, canToggleSearch) => {
104
+ _defineProperty(this, "getCachedOptionItems", memoize((isChartBuilderAvailable, isCustomColumnsAvailable, isFormatColumnsAvailable, isRollupAvailable, isTotalsAvailable, isSelectDistinctAvailable, isExportAvailable, toggleFilterBarAction, toggleSearchBarAction, isFilterBarShown, showSearchBar, canDownloadCsv, canToggleSearch) => {
101
105
  var optionItems = [];
102
106
 
103
107
  if (isChartBuilderAvailable) {
@@ -114,6 +118,14 @@ export class IrisGrid extends Component {
114
118
  icon: dhEye
115
119
  });
116
120
 
121
+ if (isFormatColumnsAvailable) {
122
+ optionItems.push({
123
+ type: OptionType.CONDITIONAL_FORMATTING,
124
+ title: 'Conditional Formatting',
125
+ icon: vsEdit
126
+ });
127
+ }
128
+
117
129
  if (isCustomColumnsAvailable) {
118
130
  optionItems.push({
119
131
  type: OptionType.CUSTOM_COLUMN_BUILDER,
@@ -225,6 +237,22 @@ export class IrisGrid extends Component {
225
237
 
226
238
  _defineProperty(this, "getOperationOrder", memoize(aggregations => aggregations.map(a => a.operation).filter(o => !AggregationUtils.isRollupOperation(o))));
227
239
 
240
+ _defineProperty(this, "getCachedFormatColumns", memoize((columns, rules) => getFormatColumns(columns, rules)));
241
+
242
+ _defineProperty(this, "getCachedModelColumns", memoize((model, customColumns) => model.columns));
243
+
244
+ _defineProperty(this, "getCachedPreviewFormatColumns", memoize((columns, rulesParam, preview, editIndex) => {
245
+ log.debug('getCachedPreviewFormatColumns', rulesParam, preview, editIndex);
246
+
247
+ if (preview !== undefined && editIndex !== null) {
248
+ var rules = [...rulesParam];
249
+ rules[editIndex] = preview;
250
+ return this.getCachedFormatColumns(columns, rules);
251
+ }
252
+
253
+ return this.getCachedFormatColumns(columns, rulesParam);
254
+ }));
255
+
228
256
  _defineProperty(this, "getModelRollupConfig", memoize((originalColumns, config, aggregationSettings) => IrisGridUtils.getModelRollupConfig(originalColumns, config, aggregationSettings)));
229
257
 
230
258
  _defineProperty(this, "getModelTotalsConfig", memoize((columns, config, aggregationSettings) => {
@@ -318,6 +346,12 @@ export class IrisGrid extends Component {
318
346
  this.handleTooltipRef = this.handleTooltipRef.bind(this);
319
347
  this.handleViewChanged = this.handleViewChanged.bind(this);
320
348
  this.handleFormatSelection = this.handleFormatSelection.bind(this);
349
+ this.handleConditionalFormatCreate = this.handleConditionalFormatCreate.bind(this);
350
+ this.handleConditionalFormatEdit = this.handleConditionalFormatEdit.bind(this);
351
+ this.handleConditionalFormatsChange = this.handleConditionalFormatsChange.bind(this);
352
+ this.handleConditionalFormatEditorSave = this.handleConditionalFormatEditorSave.bind(this);
353
+ this.handleConditionalFormatEditorUpdate = debounce(this.handleConditionalFormatEditorUpdate.bind(this), SET_CONDITIONAL_FORMAT_DEBOUNCE);
354
+ this.handleConditionalFormatEditorCancel = this.handleConditionalFormatEditorCancel.bind(this);
321
355
  this.handleUpdateCustomColumns = this.handleUpdateCustomColumns.bind(this);
322
356
  this.handleCustomColumnsChanged = this.handleCustomColumnsChanged.bind(this);
323
357
  this.handleSelectDistinctChanged = this.handleSelectDistinctChanged.bind(this);
@@ -393,6 +427,7 @@ export class IrisGrid extends Component {
393
427
  this.contextActions = [this.toggleFilterBarAction, this.toggleSearchBarAction, this.discardAction, this.commitAction];
394
428
  var {
395
429
  aggregationSettings: _aggregationSettings,
430
+ conditionalFormats,
396
431
  customColumnFormatMap,
397
432
  isFilterBarShown: _isFilterBarShown,
398
433
  isSelectingPartition,
@@ -467,6 +502,9 @@ export class IrisGrid extends Component {
467
502
  formatter: new Formatter(),
468
503
  isMenuShown: false,
469
504
  customColumnFormatMap: new Map(customColumnFormatMap),
505
+ conditionalFormats,
506
+ conditionalFormatEditIndex: null,
507
+ conditionalFormatPreview: undefined,
470
508
  // Column user is hovering over for selection
471
509
  hoverSelectColumn: null,
472
510
  isTableDownloading: false,
@@ -1830,7 +1868,7 @@ export class IrisGrid extends Component {
1830
1868
  model,
1831
1869
  onCreateChart
1832
1870
  } = this.props;
1833
- onCreateChart(settings, model);
1871
+ onCreateChart(settings, model.table);
1834
1872
  }
1835
1873
 
1836
1874
  handleGridError(error) {
@@ -2063,6 +2101,81 @@ export class IrisGrid extends Component {
2063
2101
  this.tooltip = tooltip;
2064
2102
  }
2065
2103
 
2104
+ handleConditionalFormatsChange(conditionalFormats) {
2105
+ log.debug('Updated conditional formats', conditionalFormats);
2106
+ this.setState({
2107
+ conditionalFormats
2108
+ });
2109
+ }
2110
+
2111
+ handleConditionalFormatCreate() {
2112
+ log.debug('Create new conditional format');
2113
+ var {
2114
+ openOptions,
2115
+ conditionalFormats
2116
+ } = this.state;
2117
+ this.setState({
2118
+ openOptions: [...openOptions, {
2119
+ type: OptionType.CONDITIONAL_FORMATTING_EDIT,
2120
+ title: "Create Formatting Rule"
2121
+ }],
2122
+ conditionalFormatEditIndex: conditionalFormats.length,
2123
+ // Start with a blank rule
2124
+ conditionalFormatPreview: undefined
2125
+ });
2126
+ }
2127
+
2128
+ handleConditionalFormatEdit(index) {
2129
+ log.debug('Edit conditional format', index);
2130
+ var {
2131
+ openOptions,
2132
+ conditionalFormats
2133
+ } = this.state;
2134
+ this.setState({
2135
+ openOptions: [...openOptions, {
2136
+ type: OptionType.CONDITIONAL_FORMATTING_EDIT,
2137
+ title: "Edit Formatting Rule"
2138
+ }],
2139
+ conditionalFormatEditIndex: index,
2140
+ // Clone rule to preview temporary changes
2141
+ conditionalFormatPreview: _objectSpread({}, conditionalFormats[index])
2142
+ });
2143
+ } // Apply live changes
2144
+
2145
+
2146
+ handleConditionalFormatEditorUpdate(conditionalFormatPreview) {
2147
+ this.setState({
2148
+ conditionalFormatPreview
2149
+ });
2150
+ }
2151
+
2152
+ handleConditionalFormatEditorSave(config) {
2153
+ log.debug('Save conditional format changes', config);
2154
+ this.setState(state => {
2155
+ if (state.conditionalFormatEditIndex === null) {
2156
+ log.debug('Invalid format index');
2157
+ return null;
2158
+ }
2159
+
2160
+ var conditionalFormats = [...state.conditionalFormats];
2161
+ conditionalFormats[state.conditionalFormatEditIndex] = config;
2162
+ return {
2163
+ conditionalFormats
2164
+ };
2165
+ }, () => {
2166
+ this.handleMenuBack();
2167
+ });
2168
+ }
2169
+
2170
+ handleConditionalFormatEditorCancel() {
2171
+ this.handleMenuBack(); // Not resetting conditionalFormatPreview here
2172
+ // to prevent editor fields change during the menu transition
2173
+
2174
+ this.setState({
2175
+ conditionalFormatEditIndex: null
2176
+ });
2177
+ }
2178
+
2066
2179
  handleUpdateCustomColumns(customColumns) {
2067
2180
  log.info("handleUpdateCustomColumns:", customColumns);
2068
2181
  var {
@@ -2407,7 +2520,8 @@ export class IrisGrid extends Component {
2407
2520
  render() {
2408
2521
  var _rollupConfig$columns3,
2409
2522
  _rollupConfig$columns4,
2410
- _this4 = this;
2523
+ _this4 = this,
2524
+ _openOptions;
2411
2525
 
2412
2526
  var {
2413
2527
  children,
@@ -2422,8 +2536,7 @@ export class IrisGrid extends Component {
2422
2536
  alwaysFetchColumns,
2423
2537
  advancedSettings,
2424
2538
  onAdvancedSettingsChange,
2425
- canDownloadCsv,
2426
- onCreateChart
2539
+ canDownloadCsv
2427
2540
  } = this.props;
2428
2541
  var {
2429
2542
  metricCalculator,
@@ -2454,6 +2567,9 @@ export class IrisGrid extends Component {
2454
2567
  movedColumns,
2455
2568
  movedRows,
2456
2569
  formatter,
2570
+ conditionalFormats,
2571
+ conditionalFormatPreview,
2572
+ conditionalFormatEditIndex,
2457
2573
  sorts,
2458
2574
  reverseType,
2459
2575
  customColumns,
@@ -2855,7 +2971,7 @@ export class IrisGrid extends Component {
2855
2971
  }
2856
2972
  }
2857
2973
 
2858
- var optionItems = this.getCachedOptionItems(onCreateChart !== undefined && model.isChartBuilderAvailable, model.isCustomColumnsAvailable, model.isRollupAvailable, model.isTotalsAvailable, model.isSelectDistinctAvailable, model.isExportAvailable, this.toggleFilterBarAction, this.toggleSearchBarAction, isFilterBarShown, showSearchBar, canDownloadCsv, this.isTableSearchAvailable());
2974
+ var optionItems = this.getCachedOptionItems(model.isChartBuilderAvailable, model.isCustomColumnsAvailable, model.isFormatColumnsAvailable, model.isRollupAvailable, model.isTotalsAvailable, model.isSelectDistinctAvailable, model.isExportAvailable, this.toggleFilterBarAction, this.toggleSearchBarAction, isFilterBarShown, showSearchBar, canDownloadCsv, this.isTableSearchAvailable());
2859
2975
  var openOptionsStack = openOptions.map(option => {
2860
2976
  switch (option.type) {
2861
2977
  case OptionType.CHART_BUILDER:
@@ -2876,6 +2992,24 @@ export class IrisGrid extends Component {
2876
2992
  key: OptionType.VISIBILITY_ORDERING_BUILDER
2877
2993
  });
2878
2994
 
2995
+ case OptionType.CONDITIONAL_FORMATTING:
2996
+ return /*#__PURE__*/React.createElement(ConditionalFormattingMenu, {
2997
+ columns: model.columns,
2998
+ rules: conditionalFormats,
2999
+ onChange: this.handleConditionalFormatsChange,
3000
+ onCreate: this.handleConditionalFormatCreate,
3001
+ onSelect: this.handleConditionalFormatEdit
3002
+ });
3003
+
3004
+ case OptionType.CONDITIONAL_FORMATTING_EDIT:
3005
+ return /*#__PURE__*/React.createElement(ConditionalFormatEditor, {
3006
+ columns: model.columns,
3007
+ rule: conditionalFormatPreview,
3008
+ onUpdate: this.handleConditionalFormatEditorUpdate,
3009
+ onSave: this.handleConditionalFormatEditorSave,
3010
+ onCancel: this.handleConditionalFormatEditorCancel
3011
+ });
3012
+
2879
3013
  case OptionType.CUSTOM_COLUMN_BUILDER:
2880
3014
  return /*#__PURE__*/React.createElement(CustomColumnBuilder, {
2881
3015
  model: model,
@@ -3031,6 +3165,8 @@ export class IrisGrid extends Component {
3031
3165
  customColumns: customColumns,
3032
3166
  hiddenColumns: hiddenColumns,
3033
3167
  alwaysFetchColumns: this.getAlwaysFetchColumns(alwaysFetchColumns, model.columns, model.floatingLeftColumnCount, model.floatingRightColumnCount),
3168
+ formatColumns: this.getCachedPreviewFormatColumns(this.getCachedModelColumns(model, customColumns), conditionalFormats, conditionalFormatPreview, // Disable the preview format when we press Back on the format edit page
3169
+ ((_openOptions = openOptions[openOptions.length - 1]) === null || _openOptions === void 0 ? void 0 : _openOptions.type) === OptionType.CONDITIONAL_FORMATTING_EDIT ? conditionalFormatEditIndex : null),
3034
3170
  rollupConfig: this.getModelRollupConfig(model.originalColumns, rollupConfig, aggregationSettings),
3035
3171
  totalsConfig: this.getModelTotalsConfig(model.columns, rollupConfig, aggregationSettings),
3036
3172
  selectDistinctColumns: selectDistinctColumns,
@@ -3121,6 +3257,7 @@ IrisGrid.propTypes = {
3121
3257
  alwaysFetchColumns: PropTypes.arrayOf(PropTypes.string),
3122
3258
  isFilterBarShown: PropTypes.bool,
3123
3259
  applyInputFiltersOnInit: PropTypes.bool,
3260
+ conditionalFormats: PropTypes.arrayOf(PropTypes.shape({})),
3124
3261
  customColumnFormatMap: PropTypes.instanceOf(Map),
3125
3262
  movedColumns: PropTypes.arrayOf(PropTypes.shape({
3126
3263
  from: PropTypes.number.isRequired,
@@ -3207,6 +3344,7 @@ IrisGrid.defaultProps = {
3207
3344
  advancedFilters: new Map(),
3208
3345
  advancedSettings: new Map(),
3209
3346
  alwaysFetchColumns: [],
3347
+ conditionalFormats: [],
3210
3348
  customColumnFormatMap: new Map(),
3211
3349
  isFilterBarShown: false,
3212
3350
  applyInputFiltersOnInit: false,
@@ -3214,7 +3352,7 @@ IrisGrid.defaultProps = {
3214
3352
  movedRows: [],
3215
3353
  inputFilters: [],
3216
3354
  customFilters: [],
3217
- onCreateChart: undefined,
3355
+ onCreateChart: () => {},
3218
3356
  onColumnSelected: () => {},
3219
3357
  onDataSelected: () => {},
3220
3358
  onError: () => {},