Fianlize deck strip and management
CI / ci (push) Failing after 6s

This commit is contained in:
2026-05-25 00:51:46 +02:00
parent 5dc9b3b8d4
commit 7b56d62563
12 changed files with 755 additions and 141 deletions
+34
View File
@@ -361,6 +361,22 @@ export class DirectorsBoard extends _AppBase {
} catch (err) {
console.warn('[ScryingPool] Failed to get auto-apply config for context:', err);
}
// Dock layout selector
const currentDockLayout = this._adapter.settings?.get?.('dockLayout') ?? 'vertical-sm';
const DOCK_LAYOUTS = [
{ key: 'vertical-sm', icon: 'fa-grip-vertical', size: 'S', sepAfter: false },
{ key: 'vertical-md', icon: 'fa-grip-vertical', size: 'L', sepAfter: true },
{ key: 'horizontal-sm', icon: 'fa-grip-horizontal', size: 'S', sepAfter: false },
{ key: 'horizontal-md', icon: 'fa-grip-horizontal', size: 'L', sepAfter: true },
{ key: 'mosaic-sm', icon: 'fa-border-all', size: 'S', sepAfter: false },
{ key: 'mosaic-md', icon: 'fa-border-all', size: 'L', sepAfter: false },
];
const dockLayouts = DOCK_LAYOUTS.map(l => ({
...l,
isActive: l.key === currentDockLayout,
label: (typeof game !== 'undefined' ? game.i18n?.localize?.(`scrying-pool.directorsBoard.dockLayout.${l.key}`) : null) ?? l.key,
}));
return {
...base,
@@ -376,6 +392,8 @@ export class DirectorsBoard extends _AppBase {
presets: this._scenePresetManager?.list?.() ?? [],
// A/V mode — reflects current world AV state (0 = disabled, 3 = audio+video)
avModeEnabled: (game.webrtc?.settings?.world?.mode ?? 0) !== 0,
// Dock layout selector
dockLayouts,
};
}
@@ -420,6 +438,7 @@ export class DirectorsBoard extends _AppBase {
case 'toggle-preset-panel': this._togglePresetPanel(); break;
case 'toggle-av-mode': this._onToggleAVMode(); break;
case 'open-av-config': this._onOpenAVConfig(); break;
case 'set-dock-layout': this._onSetDockLayout(btn.dataset.layout); break;
case 'close': this.close(); break;
}
};
@@ -661,6 +680,21 @@ export class DirectorsBoard extends _AppBase {
game.webrtc.config.render({ force: true });
}
/**
* Saves the selected dock layout and re-renders the board.
* The strip re-renders automatically via the setting's onChange callback.
* @param {string} layoutKey
*/
async _onSetDockLayout(layoutKey) {
if (!layoutKey) return;
try {
await this._adapter.settings?.set?.('dockLayout', layoutKey);
} catch (err) {
console.error('[ScryingPool] Failed to set dockLayout:', err);
}
if (this.rendered) this.render({ force: true });
}
/**
* Opens the PresetSaveDialog for saving the current visibility matrix as a preset.
*/