@deephaven/iris-grid 0.10.0 → 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.
- package/dist/IrisGrid.d.ts +22 -2
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +143 -4
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridModel.d.ts +14 -2
- package/dist/IrisGridModel.d.ts.map +1 -1
- package/dist/IrisGridModel.js +8 -0
- package/dist/IrisGridModel.js.map +1 -1
- package/dist/IrisGridModelUpdater.d.ts +3 -2
- package/dist/IrisGridModelUpdater.d.ts.map +1 -1
- package/dist/IrisGridModelUpdater.js +7 -1
- package/dist/IrisGridModelUpdater.js.map +1 -1
- package/dist/IrisGridProxyModel.d.ts.map +1 -1
- package/dist/IrisGridProxyModel.js +12 -0
- package/dist/IrisGridProxyModel.js.map +1 -1
- package/dist/IrisGridTableModel.d.ts +2 -0
- package/dist/IrisGridTableModel.d.ts.map +1 -1
- package/dist/IrisGridTableModel.js +47 -5
- package/dist/IrisGridTableModel.js.map +1 -1
- package/dist/IrisGridUtils.d.ts +2 -0
- package/dist/IrisGridUtils.d.ts.map +1 -1
- package/dist/IrisGridUtils.js +4 -0
- package/dist/IrisGridUtils.js.map +1 -1
- package/dist/sidebar/OptionType.d.ts +3 -1
- package/dist/sidebar/OptionType.d.ts.map +1 -1
- package/dist/sidebar/OptionType.js +2 -0
- package/dist/sidebar/OptionType.js.map +1 -1
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts +9 -0
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.d.ts.map +1 -0
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js +132 -0
- package/dist/sidebar/conditional-formatting/ColumnFormatEditor.js.map +1 -0
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts +9 -0
- package/dist/sidebar/conditional-formatting/ConditionEditor.d.ts.map +1 -0
- package/dist/sidebar/conditional-formatting/ConditionEditor.js +273 -0
- package/dist/sidebar/conditional-formatting/ConditionEditor.js.map +1 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.css +21 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.css.map +1 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts +15 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.d.ts.map +1 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js +115 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormatEditor.js.map +1 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.d.ts +6 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.d.ts.map +1 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js +21 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingAPIUtils.js.map +1 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.css +56 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.css.map +1 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts +15 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.d.ts.map +1 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js +160 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingMenu.js.map +1 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts +119 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.d.ts.map +1 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js +748 -0
- package/dist/sidebar/conditional-formatting/ConditionalFormattingUtils.js.map +1 -0
- package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts +9 -0
- package/dist/sidebar/conditional-formatting/RowFormatEditor.d.ts.map +1 -0
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js +132 -0
- package/dist/sidebar/conditional-formatting/RowFormatEditor.js.map +1 -0
- package/dist/sidebar/conditional-formatting/StyleEditor.css +54 -0
- package/dist/sidebar/conditional-formatting/StyleEditor.css.map +1 -0
- package/dist/sidebar/conditional-formatting/StyleEditor.d.ts +9 -0
- package/dist/sidebar/conditional-formatting/StyleEditor.d.ts.map +1 -0
- package/dist/sidebar/conditional-formatting/StyleEditor.js +160 -0
- package/dist/sidebar/conditional-formatting/StyleEditor.js.map +1 -0
- package/dist/sidebar/icons/FormatColumnWhereIcon.d.ts +4 -0
- package/dist/sidebar/icons/FormatColumnWhereIcon.d.ts.map +1 -0
- package/dist/sidebar/icons/FormatColumnWhereIcon.js +45 -0
- package/dist/sidebar/icons/FormatColumnWhereIcon.js.map +1 -0
- package/dist/sidebar/icons/FormatRowWhereIcon.d.ts +4 -0
- package/dist/sidebar/icons/FormatRowWhereIcon.d.ts.map +1 -0
- package/dist/sidebar/icons/FormatRowWhereIcon.js +39 -0
- package/dist/sidebar/icons/FormatRowWhereIcon.js.map +1 -0
- package/dist/sidebar/icons/index.d.ts +2 -0
- package/dist/sidebar/icons/index.js +2 -0
- package/dist/sidebar/icons/index.js.map +1 -1
- package/package.json +11 -11
package/dist/IrisGrid.d.ts
CHANGED
|
@@ -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;
|
package/dist/IrisGrid.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGrid.d.ts","sourceRoot":"","sources":["../src/IrisGrid.jsx"],"names":[],"mappings":"
|
|
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,
|
|
@@ -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,
|
|
@@ -2453,6 +2567,9 @@ export class IrisGrid extends Component {
|
|
|
2453
2567
|
movedColumns,
|
|
2454
2568
|
movedRows,
|
|
2455
2569
|
formatter,
|
|
2570
|
+
conditionalFormats,
|
|
2571
|
+
conditionalFormatPreview,
|
|
2572
|
+
conditionalFormatEditIndex,
|
|
2456
2573
|
sorts,
|
|
2457
2574
|
reverseType,
|
|
2458
2575
|
customColumns,
|
|
@@ -2854,7 +2971,7 @@ export class IrisGrid extends Component {
|
|
|
2854
2971
|
}
|
|
2855
2972
|
}
|
|
2856
2973
|
|
|
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());
|
|
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());
|
|
2858
2975
|
var openOptionsStack = openOptions.map(option => {
|
|
2859
2976
|
switch (option.type) {
|
|
2860
2977
|
case OptionType.CHART_BUILDER:
|
|
@@ -2875,6 +2992,24 @@ export class IrisGrid extends Component {
|
|
|
2875
2992
|
key: OptionType.VISIBILITY_ORDERING_BUILDER
|
|
2876
2993
|
});
|
|
2877
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
|
+
|
|
2878
3013
|
case OptionType.CUSTOM_COLUMN_BUILDER:
|
|
2879
3014
|
return /*#__PURE__*/React.createElement(CustomColumnBuilder, {
|
|
2880
3015
|
model: model,
|
|
@@ -3030,6 +3165,8 @@ export class IrisGrid extends Component {
|
|
|
3030
3165
|
customColumns: customColumns,
|
|
3031
3166
|
hiddenColumns: hiddenColumns,
|
|
3032
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),
|
|
3033
3170
|
rollupConfig: this.getModelRollupConfig(model.originalColumns, rollupConfig, aggregationSettings),
|
|
3034
3171
|
totalsConfig: this.getModelTotalsConfig(model.columns, rollupConfig, aggregationSettings),
|
|
3035
3172
|
selectDistinctColumns: selectDistinctColumns,
|
|
@@ -3120,6 +3257,7 @@ IrisGrid.propTypes = {
|
|
|
3120
3257
|
alwaysFetchColumns: PropTypes.arrayOf(PropTypes.string),
|
|
3121
3258
|
isFilterBarShown: PropTypes.bool,
|
|
3122
3259
|
applyInputFiltersOnInit: PropTypes.bool,
|
|
3260
|
+
conditionalFormats: PropTypes.arrayOf(PropTypes.shape({})),
|
|
3123
3261
|
customColumnFormatMap: PropTypes.instanceOf(Map),
|
|
3124
3262
|
movedColumns: PropTypes.arrayOf(PropTypes.shape({
|
|
3125
3263
|
from: PropTypes.number.isRequired,
|
|
@@ -3206,6 +3344,7 @@ IrisGrid.defaultProps = {
|
|
|
3206
3344
|
advancedFilters: new Map(),
|
|
3207
3345
|
advancedSettings: new Map(),
|
|
3208
3346
|
alwaysFetchColumns: [],
|
|
3347
|
+
conditionalFormats: [],
|
|
3209
3348
|
customColumnFormatMap: new Map(),
|
|
3210
3349
|
isFilterBarShown: false,
|
|
3211
3350
|
applyInputFiltersOnInit: false,
|