@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.
- package/dist/IrisGrid.d.ts +23 -3
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +146 -8
- 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/IrisGridModelFactory.d.ts +1 -1
- package/dist/IrisGridModelFactory.d.ts.map +1 -1
- package/dist/IrisGridModelFactory.js +8 -1
- package/dist/IrisGridModelFactory.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/TableUtils.d.ts.map +1 -1
- package/dist/TableUtils.js +2 -0
- package/dist/TableUtils.js.map +1 -1
- package/dist/sidebar/ChartBuilder.js +1 -1
- package/dist/sidebar/ChartBuilder.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;
|
|
@@ -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
|
-
|
|
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 };
|
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,
|
|
@@ -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(
|
|
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:
|
|
3355
|
+
onCreateChart: () => {},
|
|
3218
3356
|
onColumnSelected: () => {},
|
|
3219
3357
|
onDataSelected: () => {},
|
|
3220
3358
|
onError: () => {},
|