feat(views/board): basic column drag support

This commit is contained in:
Elian Doran
2025-07-23 18:18:40 +03:00
parent 43229f0b99
commit cb37724879
5 changed files with 397 additions and 27 deletions

View File

@@ -110,12 +110,45 @@ export default class BoardApi {
return columnValue;
}
async reorderColumns(newColumnOrder: string[]) {
console.log("API: Reordering columns to:", newColumnOrder);
// Update the column order in persisted data
if (!this.persistedData.columns) {
this.persistedData.columns = [];
}
// Create a map of existing column data
const columnDataMap = new Map();
this.persistedData.columns.forEach(col => {
columnDataMap.set(col.value, col);
});
// Reorder columns based on new order
this.persistedData.columns = newColumnOrder.map(columnValue => {
return columnDataMap.get(columnValue) || { value: columnValue };
});
// Update internal columns array
this._columns = newColumnOrder;
console.log("API: Updated internal columns to:", this._columns);
console.log("API: Updated persisted data:", this.persistedData.columns);
await this.viewStorage.store(this.persistedData);
}
static async build(parentNote: FNote, viewStorage: ViewModeStorage<BoardData>) {
const statusAttribute = parentNote.getLabelValue("board:groupBy") ?? "status";
let persistedData = await viewStorage.restore() ?? {};
const { byColumn, newPersistedData } = await getBoardData(parentNote, statusAttribute, persistedData);
const columns = Array.from(byColumn.keys()) || [];
// Use the order from persistedData.columns, then add any new columns found
const orderedColumns = persistedData.columns?.map(col => col.value) || [];
const allColumns = Array.from(byColumn.keys());
const newColumns = allColumns.filter(col => !orderedColumns.includes(col));
const columns = [...orderedColumns, ...newColumns];
if (newPersistedData) {
persistedData = newPersistedData;