mirror of
https://github.com/dream-num/univer.git
synced 2026-08-29 07:13:59 +08:00
fix: ensure sheet order unique (#6295)
This commit is contained in:
@@ -180,6 +180,7 @@ export class Workbook extends UnitModel<IWorkbookData, UniverInstanceType.UNIVER
|
||||
|
||||
sheets[id] = worksheetSnapshot;
|
||||
sheetOrder.splice(index, 0, id);
|
||||
this.ensureSheetOrderUnique();
|
||||
const worksheet = new Worksheet(this._unitId, worksheetSnapshot, this._styles);
|
||||
this._worksheets.set(id, worksheet);
|
||||
this._sheetCreated$.next(worksheet);
|
||||
@@ -191,6 +192,22 @@ export class Workbook extends UnitModel<IWorkbookData, UniverInstanceType.UNIVER
|
||||
return this._snapshot.sheetOrder;
|
||||
}
|
||||
|
||||
// Ensure sheet order is unique
|
||||
ensureSheetOrderUnique() {
|
||||
const seen = new Set<string>();
|
||||
const result: string[] = [];
|
||||
|
||||
for (const item of this._snapshot.sheetOrder) {
|
||||
if (!seen.has(item)) {
|
||||
seen.add(item);
|
||||
result.push(item);
|
||||
}
|
||||
}
|
||||
|
||||
this._snapshot.sheetOrder = result;
|
||||
seen.clear();
|
||||
}
|
||||
|
||||
getWorksheets(): Map<string, Worksheet> {
|
||||
return this._worksheets;
|
||||
}
|
||||
@@ -282,6 +299,7 @@ export class Workbook extends UnitModel<IWorkbookData, UniverInstanceType.UNIVER
|
||||
|
||||
this._worksheets.delete(sheetId);
|
||||
this._snapshot.sheetOrder.splice(this._snapshot.sheetOrder.indexOf(sheetId), 1);
|
||||
this.ensureSheetOrderUnique();
|
||||
this._sheetDisposed$.next(sheetToRemove);
|
||||
|
||||
return true;
|
||||
@@ -446,6 +464,8 @@ export class Workbook extends UnitModel<IWorkbookData, UniverInstanceType.UNIVER
|
||||
}
|
||||
}
|
||||
|
||||
this.ensureSheetOrderUnique();
|
||||
|
||||
// Active the first sheet.
|
||||
this.ensureActiveSheet();
|
||||
}
|
||||
|
||||
@@ -44,6 +44,7 @@ export const SetWorksheetOrderMutation: IMutation<ISetWorksheetOrderMutationPara
|
||||
const config = workbook.getConfig();
|
||||
config.sheetOrder.splice(params.fromOrder, 1);
|
||||
config.sheetOrder.splice(params.toOrder, 0, params.subUnitId);
|
||||
workbook.ensureSheetOrderUnique();
|
||||
return true;
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user