@deephaven/iris-grid 0.9.4-updatestylelint.5 → 0.10.1-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.
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 +147 -7
  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 +1 -8
  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
- export function onCreateChart_1(): void;
422
+ const onCreateChart_1: undefined;
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.table);
1871
+ onCreateChart(settings, model);
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,7 +2536,8 @@ export class IrisGrid extends Component {
2422
2536
  alwaysFetchColumns,
2423
2537
  advancedSettings,
2424
2538
  onAdvancedSettingsChange,
2425
- canDownloadCsv
2539
+ canDownloadCsv,
2540
+ onCreateChart
2426
2541
  } = this.props;
2427
2542
  var {
2428
2543
  metricCalculator,
@@ -2453,6 +2568,9 @@ export class IrisGrid extends Component {
2453
2568
  movedColumns,
2454
2569
  movedRows,
2455
2570
  formatter,
2571
+ conditionalFormats,
2572
+ conditionalFormatPreview,
2573
+ conditionalFormatEditIndex,
2456
2574
  sorts,
2457
2575
  reverseType,
2458
2576
  customColumns,
@@ -2854,7 +2972,7 @@ export class IrisGrid extends Component {
2854
2972
  }
2855
2973
  }
2856
2974
 
2857
- var optionItems = this.getCachedOptionItems(model.isChartBuilderAvailable, model.isCustomColumnsAvailable, model.isRollupAvailable, model.isTotalsAvailable, model.isSelectDistinctAvailable, model.isExportAvailable, this.toggleFilterBarAction, this.toggleSearchBarAction, isFilterBarShown, showSearchBar, canDownloadCsv, this.isTableSearchAvailable());
2975
+ var optionItems = this.getCachedOptionItems(onCreateChart !== undefined && model.isChartBuilderAvailable, model.isCustomColumnsAvailable, model.isFormatColumnsAvailable, model.isRollupAvailable, model.isTotalsAvailable, model.isSelectDistinctAvailable, model.isExportAvailable, this.toggleFilterBarAction, this.toggleSearchBarAction, isFilterBarShown, showSearchBar, canDownloadCsv, this.isTableSearchAvailable());
2858
2976
  var openOptionsStack = openOptions.map(option => {
2859
2977
  switch (option.type) {
2860
2978
  case OptionType.CHART_BUILDER:
@@ -2875,6 +2993,24 @@ export class IrisGrid extends Component {
2875
2993
  key: OptionType.VISIBILITY_ORDERING_BUILDER
2876
2994
  });
2877
2995
 
2996
+ case OptionType.CONDITIONAL_FORMATTING:
2997
+ return /*#__PURE__*/React.createElement(ConditionalFormattingMenu, {
2998
+ columns: model.columns,
2999
+ rules: conditionalFormats,
3000
+ onChange: this.handleConditionalFormatsChange,
3001
+ onCreate: this.handleConditionalFormatCreate,
3002
+ onSelect: this.handleConditionalFormatEdit
3003
+ });
3004
+
3005
+ case OptionType.CONDITIONAL_FORMATTING_EDIT:
3006
+ return /*#__PURE__*/React.createElement(ConditionalFormatEditor, {
3007
+ columns: model.columns,
3008
+ rule: conditionalFormatPreview,
3009
+ onUpdate: this.handleConditionalFormatEditorUpdate,
3010
+ onSave: this.handleConditionalFormatEditorSave,
3011
+ onCancel: this.handleConditionalFormatEditorCancel
3012
+ });
3013
+
2878
3014
  case OptionType.CUSTOM_COLUMN_BUILDER:
2879
3015
  return /*#__PURE__*/React.createElement(CustomColumnBuilder, {
2880
3016
  model: model,
@@ -3030,6 +3166,8 @@ export class IrisGrid extends Component {
3030
3166
  customColumns: customColumns,
3031
3167
  hiddenColumns: hiddenColumns,
3032
3168
  alwaysFetchColumns: this.getAlwaysFetchColumns(alwaysFetchColumns, model.columns, model.floatingLeftColumnCount, model.floatingRightColumnCount),
3169
+ formatColumns: this.getCachedPreviewFormatColumns(this.getCachedModelColumns(model, customColumns), conditionalFormats, conditionalFormatPreview, // Disable the preview format when we press Back on the format edit page
3170
+ ((_openOptions = openOptions[openOptions.length - 1]) === null || _openOptions === void 0 ? void 0 : _openOptions.type) === OptionType.CONDITIONAL_FORMATTING_EDIT ? conditionalFormatEditIndex : null),
3033
3171
  rollupConfig: this.getModelRollupConfig(model.originalColumns, rollupConfig, aggregationSettings),
3034
3172
  totalsConfig: this.getModelTotalsConfig(model.columns, rollupConfig, aggregationSettings),
3035
3173
  selectDistinctColumns: selectDistinctColumns,
@@ -3120,6 +3258,7 @@ IrisGrid.propTypes = {
3120
3258
  alwaysFetchColumns: PropTypes.arrayOf(PropTypes.string),
3121
3259
  isFilterBarShown: PropTypes.bool,
3122
3260
  applyInputFiltersOnInit: PropTypes.bool,
3261
+ conditionalFormats: PropTypes.arrayOf(PropTypes.shape({})),
3123
3262
  customColumnFormatMap: PropTypes.instanceOf(Map),
3124
3263
  movedColumns: PropTypes.arrayOf(PropTypes.shape({
3125
3264
  from: PropTypes.number.isRequired,
@@ -3206,6 +3345,7 @@ IrisGrid.defaultProps = {
3206
3345
  advancedFilters: new Map(),
3207
3346
  advancedSettings: new Map(),
3208
3347
  alwaysFetchColumns: [],
3348
+ conditionalFormats: [],
3209
3349
  customColumnFormatMap: new Map(),
3210
3350
  isFilterBarShown: false,
3211
3351
  applyInputFiltersOnInit: false,
@@ -3213,7 +3353,7 @@ IrisGrid.defaultProps = {
3213
3353
  movedRows: [],
3214
3354
  inputFilters: [],
3215
3355
  customFilters: [],
3216
- onCreateChart: () => {},
3356
+ onCreateChart: undefined,
3217
3357
  onColumnSelected: () => {},
3218
3358
  onDataSelected: () => {},
3219
3359
  onError: () => {},