Skip to content

Commit afcd7d6

Browse files
committed
merge latest
2 parents cc523ee + 2827f51 commit afcd7d6

8 files changed

Lines changed: 459 additions & 194 deletions

File tree

@types/memoize-one/index.d.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
export declare type EqualityFn = (
2-
newArgs: unknown[],
3-
lastArgs: unknown[]
4-
) => boolean;
1+
export declare type EqualityFn<P> = (newArgs: P, lastArgs: P) => boolean;
52

63
// eslint-disable-next-line @typescript-eslint/ban-types
74
declare function memoizeOne<ResultFn extends Function>(
85
resultFn: ResultFn,
9-
isEqual?: EqualityFn
6+
isEqual?: EqualityFn<Parameters<ResultFn>>
107
): ResultFn;
118

129
export default memoizeOne;

packages/console/src/console-history/ConsoleHistoryResultErrorMessage.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,13 +121,15 @@ class ConsoleHistoryResultErrorMessage extends PureComponent<
121121
const { isExpanded, isTriggerHovered } = this.state;
122122
const { message: messageProp } = this.props;
123123
assertNotNull(messageProp);
124-
const lineBreakIndex = messageProp.indexOf('\n');
124+
// Trim trailing whitespace to avoid unnecessary empty lines
125+
const message = messageProp.trimEnd();
126+
const lineBreakIndex = message.indexOf('\n');
125127
const isMultiline = lineBreakIndex > -1;
126-
let topLineOfMessage = messageProp;
128+
let topLineOfMessage = message;
127129
if (isMultiline) {
128-
topLineOfMessage = messageProp.slice(0, lineBreakIndex);
130+
topLineOfMessage = message.slice(0, lineBreakIndex);
129131
}
130-
const remainderOfMessage = messageProp.slice(lineBreakIndex);
132+
const remainderOfMessage = message.slice(lineBreakIndex);
131133
const arrowBtnClasses = isTriggerHovered
132134
? 'error-btn-link error-btn-link--active'
133135
: 'error-btn-link';

packages/dashboard-core-plugins/src/panels/IrisGridPanel.tsx

Lines changed: 12 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import {
2121
IrisGrid,
2222
type IrisGridType,
2323
IrisGridModel,
24+
IrisGridCacheUtils,
2425
IrisGridUtils,
2526
isIrisGridTableModelTemplate,
2627
type ColumnName,
@@ -103,11 +104,11 @@ export interface PanelState {
103104
gridState: {
104105
isStuckToBottom: boolean;
105106
isStuckToRight: boolean;
106-
movedColumns: {
107+
movedColumns: readonly {
107108
from: string | ModelIndex | [string, string] | [ModelIndex, ModelIndex];
108109
to: string | ModelIndex;
109110
}[];
110-
movedRows: MoveOperation[];
111+
movedRows: readonly MoveOperation[];
111112
};
112113
irisGridState: DehydratedIrisGridState;
113114
irisGridPanelState: DehydratedIrisGridPanelState;
@@ -368,6 +369,12 @@ export class IrisGridPanel extends PureComponent<
368369

369370
private irisGridUtils: IrisGridUtils | null;
370371

372+
private gridStateDehydrator =
373+
IrisGridCacheUtils.makeMemoizedGridStateDehydrator();
374+
375+
private irisGridStateDehydrator =
376+
IrisGridCacheUtils.makeMemoizedIrisGridStateDehydrator();
377+
371378
getTableName(): string {
372379
const { metadata } = this.props;
373380
return getTableNameFromMetadata(metadata);
@@ -461,76 +468,6 @@ export class IrisGridPanel extends PureComponent<
461468
})
462469
);
463470

464-
getDehydratedIrisGridState = memoize(
465-
(
466-
model: IrisGridModel,
467-
sorts: readonly dh.Sort[],
468-
advancedFilters: ReadonlyAdvancedFilterMap,
469-
customColumnFormatMap: Map<ColumnName, FormattingRule>,
470-
isFilterBarShown: boolean,
471-
quickFilters: ReadonlyQuickFilterMap,
472-
customColumns: readonly ColumnName[],
473-
reverse: boolean,
474-
rollupConfig: UIRollupConfig | undefined,
475-
showSearchBar: boolean,
476-
searchValue: string,
477-
selectDistinctColumns: readonly ColumnName[],
478-
selectedSearchColumns: readonly ColumnName[],
479-
invertSearchColumns: boolean,
480-
userColumnWidths: ModelSizeMap,
481-
userRowHeights: ModelSizeMap,
482-
aggregationSettings: AggregationSettings,
483-
pendingDataMap: PendingDataMap<UIRow>,
484-
frozenColumns: readonly ColumnName[],
485-
conditionalFormats: readonly SidebarFormattingRule[],
486-
columnHeaderGroups: readonly ColumnHeaderGroup[],
487-
partitionConfig: PartitionConfig | undefined
488-
) => {
489-
assertNotNull(this.irisGridUtils);
490-
return this.irisGridUtils.dehydrateIrisGridState(model, {
491-
advancedFilters,
492-
aggregationSettings,
493-
customColumnFormatMap,
494-
isFilterBarShown,
495-
metrics: {
496-
userColumnWidths,
497-
userRowHeights,
498-
},
499-
quickFilters,
500-
customColumns,
501-
reverse,
502-
rollupConfig,
503-
showSearchBar,
504-
searchValue,
505-
selectDistinctColumns,
506-
selectedSearchColumns,
507-
sorts,
508-
invertSearchColumns,
509-
pendingDataMap,
510-
frozenColumns,
511-
conditionalFormats,
512-
columnHeaderGroups,
513-
partitionConfig,
514-
});
515-
}
516-
);
517-
518-
getDehydratedGridState = memoize(
519-
(
520-
model: IrisGridModel,
521-
movedColumns: readonly MoveOperation[],
522-
movedRows: readonly MoveOperation[],
523-
isStuckToBottom: boolean,
524-
isStuckToRight: boolean
525-
) =>
526-
IrisGridUtils.dehydrateGridState(model, {
527-
isStuckToBottom,
528-
isStuckToRight,
529-
movedColumns,
530-
movedRows,
531-
})
532-
);
533-
534471
getCachedPanelState = memoize(
535472
(
536473
irisGridPanelState: PanelState['irisGridPanelState'],
@@ -1128,34 +1065,9 @@ export class IrisGridPanel extends PureComponent<
11281065
partitions,
11291066
advancedSettings,
11301067
} = this.state;
1131-
const {
1132-
advancedFilters,
1133-
aggregationSettings,
1134-
customColumnFormatMap,
1135-
isFilterBarShown,
1136-
quickFilters,
1137-
customColumns,
1138-
reverse,
1139-
rollupConfig,
1140-
showSearchBar,
1141-
searchValue,
1142-
selectDistinctColumns,
1143-
selectedSearchColumns,
1144-
sorts,
1145-
invertSearchColumns,
1146-
metrics,
1147-
pendingDataMap,
1148-
frozenColumns,
1149-
conditionalFormats,
1150-
columnHeaderGroups,
1151-
partitionConfig,
1152-
} = irisGridState;
1068+
assertNotNull(this.irisGridUtils);
11531069
assertNotNull(model);
1154-
assertNotNull(metrics);
1155-
const { userColumnWidths, userRowHeights } = metrics;
11561070
assertNotNull(gridState);
1157-
const { isStuckToBottom, isStuckToRight, movedColumns, movedRows } =
1158-
gridState;
11591071

11601072
const panelState = this.getCachedPanelState(
11611073
this.getDehydratedIrisGridPanelState(
@@ -1164,37 +1076,8 @@ export class IrisGridPanel extends PureComponent<
11641076
partitions,
11651077
advancedSettings
11661078
),
1167-
this.getDehydratedIrisGridState(
1168-
model,
1169-
sorts,
1170-
advancedFilters,
1171-
customColumnFormatMap,
1172-
isFilterBarShown,
1173-
quickFilters,
1174-
customColumns,
1175-
reverse,
1176-
rollupConfig,
1177-
showSearchBar,
1178-
searchValue,
1179-
selectDistinctColumns,
1180-
selectedSearchColumns,
1181-
invertSearchColumns,
1182-
userColumnWidths,
1183-
userRowHeights,
1184-
aggregationSettings,
1185-
pendingDataMap,
1186-
frozenColumns,
1187-
conditionalFormats,
1188-
columnHeaderGroups,
1189-
partitionConfig
1190-
),
1191-
this.getDehydratedGridState(
1192-
model,
1193-
movedColumns,
1194-
movedRows,
1195-
isStuckToBottom,
1196-
isStuckToRight
1197-
),
1079+
this.irisGridStateDehydrator(model, irisGridState),
1080+
this.gridStateDehydrator(model, gridState),
11981081
pluginState
11991082
);
12001083

0 commit comments

Comments
 (0)