Skip to content

Commit

Permalink
Use model in partition selector
Browse files Browse the repository at this point in the history
  • Loading branch information
georgecwan committed Dec 22, 2023
1 parent e86692c commit 4e5488e
Show file tree
Hide file tree
Showing 3 changed files with 84 additions and 113 deletions.
48 changes: 12 additions & 36 deletions packages/iris-grid/src/IrisGrid.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,9 @@ export interface IrisGridProps {
onDataSelected: (index: ModelIndex, map: Record<ColumnName, unknown>) => void;
onStateChange: (irisGridState: IrisGridState, gridState: GridState) => void;
onAdvancedSettingsChange: AdvancedSettingsMenuCallback;
partitions: (string | null)[];

/** @deprecated use `partitionConfig` instead */
partitions?: (string | null)[];
partitionConfig?: PartitionConfig;
sorts: readonly Sort[];
reverseType: ReverseType;
Expand Down Expand Up @@ -583,8 +585,6 @@ export class IrisGrid extends Component<IrisGridProps, IrisGridState> {
this.handleDownloadCanceled = this.handleDownloadCanceled.bind(this);
this.handleDownloadCompleted = this.handleDownloadCompleted.bind(this);
this.handlePartitionChange = this.handlePartitionChange.bind(this);
this.handlePartitionMerge = this.handlePartitionMerge.bind(this);
this.handlePartitionKeyTable = this.handlePartitionKeyTable.bind(this);
this.handleColumnVisibilityChanged =
this.handleColumnVisibilityChanged.bind(this);
this.handleColumnVisibilityReset =
Expand Down Expand Up @@ -675,6 +675,7 @@ export class IrisGrid extends Component<IrisGridProps, IrisGridState> {
customColumnFormatMap,
isFilterBarShown,
isSelectingPartition,
partitions,
partitionConfig,
model,
movedColumns: movedColumnsProp,
Expand Down Expand Up @@ -754,7 +755,11 @@ export class IrisGrid extends Component<IrisGridProps, IrisGridState> {
keyHandlers,
mouseHandlers,

partitionConfig,
partitionConfig:
partitionConfig ??
(partitions && partitions.length
? { partitions, mode: 'partition' }
: undefined),

// setAdvancedFilter and setQuickFilter mutate the arguments
// so we want to always use map copies from the state instead of props
Expand Down Expand Up @@ -841,12 +846,9 @@ export class IrisGrid extends Component<IrisGridProps, IrisGridState> {
}

componentDidMount(): void {
const { model, partitions } = this.props;
const { model } = this.props;
try {
if (isPartitionedGridModel(model) && model.isPartitionRequired) {
if (partitions.length) {
model.partitionConfig = { partitions, mode: 'partition' };
}
this.setState({ isSelectingPartition: true }, () => {
this.initState();
});
Expand Down Expand Up @@ -2341,27 +2343,10 @@ export class IrisGrid extends Component<IrisGridProps, IrisGridState> {
}

handlePartitionChange(partitionConfig: PartitionConfig): void {
this.startLoading('Partitioning...');
this.setState({ partitionConfig });
}

handlePartitionMerge(): void {
this.setState(prevState => ({
partitionConfig: {
partitions: prevState.partitionConfig?.partitions ?? [],
mode: 'merged',
},
}));
}

handlePartitionKeyTable(): void {
this.setState(prevState => ({
partitionConfig: {
partitions: prevState.partitionConfig?.partitions ?? [],
mode: 'keys',
},
}));
}

handleTableLoadError(error: unknown): void {
if (PromiseUtils.isCanceled(error)) {
return;
Expand Down Expand Up @@ -4438,18 +4423,9 @@ export class IrisGrid extends Component<IrisGridProps, IrisGridState> {
<div className="iris-grid-partition-selector-wrapper iris-grid-bar iris-grid-bar-primary">
{isPartitionedGridModel(model) && model.isPartitionRequired && (
<IrisGridPartitionSelector
dh={model.dh}
tablePromise={model.partitionKeysTable()}
getFormattedString={(
value: unknown,
type: string,
columnName: string
) => model.displayString(value, type, columnName)}
columns={model.partitionColumns}
model={model}
partitionConfig={partitionConfig ?? model.partitionConfig}
onChange={this.handlePartitionChange}
onMerge={this.handlePartitionMerge}
onKeyTable={this.handlePartitionKeyTable}
/>
)}
</div>
Expand Down
Loading

0 comments on commit 4e5488e

Please sign in to comment.