From 3a5eb96410d048c95e420a8af683284813d3166f Mon Sep 17 00:00:00 2001 From: jeffvli Date: Sat, 29 Nov 2025 16:40:21 -0800 Subject: [PATCH] adjust default table columns --- .../item-table-list/default-columns.ts | 27 ++++++++++++++++++- src/renderer/store/settings.store.ts | 8 ++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/renderer/components/item-list/item-table-list/default-columns.ts b/src/renderer/components/item-list/item-table-list/default-columns.ts index cdff0ffa3..af86bb5fb 100644 --- a/src/renderer/components/item-list/item-table-list/default-columns.ts +++ b/src/renderer/components/item-list/item-table-list/default-columns.ts @@ -674,6 +674,7 @@ export const pickTableColumns = (options: { alignRightColumns?: TableColumn[]; autoSizeColumns?: TableColumn[]; columns: DefaultTableColumn[]; + columnWidths?: Partial>; enabledColumns: TableColumn[]; pickColumns?: TableColumn[]; pinnedLeftColumns?: TableColumn[]; @@ -685,6 +686,7 @@ export const pickTableColumns = (options: { alignRightColumns = [], autoSizeColumns = [], columns, + columnWidths = {}, enabledColumns, pickColumns = [], pinnedLeftColumns = [], @@ -693,7 +695,27 @@ export const pickTableColumns = (options: { const columnsToPick: ItemTableListColumnConfig[] = []; + const columnMap = new Map(); columns.forEach((column) => { + columnMap.set(column.value, column); + }); + + let columnsToProcess: DefaultTableColumn[]; + if (enabledColumns.length > 0) { + columnsToProcess = enabledColumns + .map((col) => columnMap.get(col)) + .filter((col): col is DefaultTableColumn => col !== undefined); + + if (pickColumns.length === 0) { + const enabledSet = new Set(enabledColumns); + const remaining = columns.filter((col) => !enabledSet.has(col.value)); + columnsToProcess = [...columnsToProcess, ...remaining]; + } + } else { + columnsToProcess = columns; + } + + columnsToProcess.forEach((column) => { if (pickColumns.length > 0 && !pickColumns?.includes(column.value)) { return; } @@ -720,13 +742,16 @@ export const pickTableColumns = (options: { const autoSize = autoSizeColumns.includes(column.value); + // Use custom width if provided, otherwise use default + const width = columnWidths[column.value] ?? column.width; + columnsToPick.push({ align, autoSize, id: column.value, isEnabled, pinned, - width: column.width, + width, }); }); diff --git a/src/renderer/store/settings.store.ts b/src/renderer/store/settings.store.ts index 10e28f0c6..e24394052 100644 --- a/src/renderer/store/settings.store.ts +++ b/src/renderer/store/settings.store.ts @@ -711,10 +711,18 @@ const initialState: SettingsState = { columns: pickTableColumns({ autoSizeColumns: [], columns: SONG_TABLE_COLUMNS, + columnWidths: { + [TableColumn.DURATION]: 100, + [TableColumn.GENRE]: 200, + [TableColumn.TITLE]: 400, + [TableColumn.TRACK_NUMBER]: 50, + [TableColumn.USER_FAVORITE]: 60, + }, enabledColumns: [ TableColumn.TRACK_NUMBER, TableColumn.TITLE, TableColumn.DURATION, + TableColumn.GENRE, TableColumn.USER_FAVORITE, ], }),