update
This commit is contained in:
@@ -44,14 +44,32 @@ watch(() => props.isVisible, (newValue) => {
|
|||||||
} else {
|
} else {
|
||||||
localSidebarPanes.value = { left: [], right: [] }; // Default
|
localSidebarPanes.value = { left: [], right: [] }; // Default
|
||||||
}
|
}
|
||||||
// Initialize available panes based on store's possible panes
|
// Initialize available panes: Always include non-terminal panes, include terminal only if not already used.
|
||||||
localAvailablePanes.value = [...layoutStore.allPossiblePanes];
|
|
||||||
// Remove panes already in use (initial setup)
|
|
||||||
const initialUsed = getAllLocalUsedPaneNames(localLayoutTree.value, localSidebarPanes.value);
|
const initialUsed = getAllLocalUsedPaneNames(localLayoutTree.value, localSidebarPanes.value);
|
||||||
localAvailablePanes.value = localAvailablePanes.value.filter(pane => !initialUsed.has(pane));
|
const nonTerminalPanes = layoutStore.allPossiblePanes.filter(p => p !== 'terminal');
|
||||||
|
const available = [...nonTerminalPanes]; // Start with all non-terminal panes
|
||||||
|
if (!initialUsed.has('terminal')) {
|
||||||
|
// Add terminal only if it's not used in the current layout
|
||||||
|
// Try to insert it at its original position for consistency
|
||||||
|
const terminalOriginalIndex = layoutStore.allPossiblePanes.indexOf('terminal');
|
||||||
|
let inserted = false;
|
||||||
|
for (let i = 0; i < available.length; i++) {
|
||||||
|
const currentPane = available[i];
|
||||||
|
const currentOriginalIndex = layoutStore.allPossiblePanes.indexOf(currentPane);
|
||||||
|
if (terminalOriginalIndex < currentOriginalIndex) {
|
||||||
|
available.splice(i, 0, 'terminal');
|
||||||
|
inserted = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!inserted) {
|
||||||
|
available.push('terminal'); // Add to end if needed
|
||||||
|
}
|
||||||
|
}
|
||||||
|
localAvailablePanes.value = available;
|
||||||
|
|
||||||
hasChanges.value = false; // Reset changes flag on open
|
hasChanges.value = false; // Reset changes flag on open
|
||||||
console.log('[LayoutConfigurator] Dialog opened, loaded layout, sidebar config, and available panes.');
|
console.log('[LayoutConfigurator] Dialog opened, initialized available panes (non-terminals always present).');
|
||||||
} else {
|
} else {
|
||||||
localLayoutTree.value = null; // Clear main layout
|
localLayoutTree.value = null; // Clear main layout
|
||||||
localSidebarPanes.value = { left: [], right: [] }; // Clear sidebars
|
localSidebarPanes.value = { left: [], right: [] }; // Clear sidebars
|
||||||
@@ -190,11 +208,29 @@ const resetToDefault = () => {
|
|||||||
const defaultSidebarPanes = layoutStore.getSystemDefaultSidebarPanes();
|
const defaultSidebarPanes = layoutStore.getSystemDefaultSidebarPanes();
|
||||||
localSidebarPanes.value = JSON.parse(JSON.stringify(defaultSidebarPanes));
|
localSidebarPanes.value = JSON.parse(JSON.stringify(defaultSidebarPanes));
|
||||||
|
|
||||||
// Reset available panes
|
// Reset available panes using the new logic
|
||||||
const defaultUsed = getAllLocalUsedPaneNames(localLayoutTree.value, localSidebarPanes.value);
|
const defaultUsed = getAllLocalUsedPaneNames(localLayoutTree.value, localSidebarPanes.value);
|
||||||
localAvailablePanes.value = [...layoutStore.allPossiblePanes].filter(pane => !defaultUsed.has(pane));
|
const nonTerminalPanesDefault = layoutStore.allPossiblePanes.filter(p => p !== 'terminal');
|
||||||
|
const availableDefault = [...nonTerminalPanesDefault];
|
||||||
|
if (!defaultUsed.has('terminal')) {
|
||||||
|
const terminalOriginalIndex = layoutStore.allPossiblePanes.indexOf('terminal');
|
||||||
|
let inserted = false;
|
||||||
|
for (let i = 0; i < availableDefault.length; i++) {
|
||||||
|
const currentPane = availableDefault[i];
|
||||||
|
const currentOriginalIndex = layoutStore.allPossiblePanes.indexOf(currentPane);
|
||||||
|
if (terminalOriginalIndex < currentOriginalIndex) {
|
||||||
|
availableDefault.splice(i, 0, 'terminal');
|
||||||
|
inserted = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!inserted) {
|
||||||
|
availableDefault.push('terminal');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
localAvailablePanes.value = availableDefault;
|
||||||
|
|
||||||
console.log('[LayoutConfigurator] Reset to default layout, sidebar panes, and available panes.');
|
console.log('[LayoutConfigurator] Reset to default layout, sidebar panes, and available panes (non-terminals always present).');
|
||||||
hasChanges.value = true; // Mark as changed after reset
|
hasChanges.value = true; // Mark as changed after reset
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user