diff --git a/packages/web/src/appobj/DatabaseObjectAppObject.svelte b/packages/web/src/appobj/DatabaseObjectAppObject.svelte index 5115bce25..702162dca 100644 --- a/packages/web/src/appobj/DatabaseObjectAppObject.svelte +++ b/packages/web/src/appobj/DatabaseObjectAppObject.svelte @@ -624,11 +624,12 @@ openDatabaseObjectDetail( menu.tab, menu.scriptTemplate, - data, + { ...data, defaultActionId: menu.defaultActionId }, menu.forceNewTab, menu.initialData, menu.icon, - data + data, + !!menu.defaultActionId ); } } @@ -658,7 +659,7 @@ export async function openDatabaseObjectDetail( tabComponent, scriptTemplate, - { schemaName, pureName, conid, database, objectTypeField }, + { schemaName, pureName, conid, database, objectTypeField, defaultActionId }, forceNewTab?, initialData?, icon?, @@ -690,6 +691,7 @@ database, objectTypeField, initialArgs: scriptTemplate ? { scriptTemplate } : null, + defaultActionId, }, }, initialData, @@ -702,24 +704,39 @@ const driver = findEngineDriver(data, getExtensions()); const activeTab = getActiveTab(); - console.log('activeTab', activeTab); + const activeTabProps = activeTab?.props || {}; + const activeDefaultActionId = activeTab?.props?.defaultActionId; - const configuredAction = getCurrentSettings()[`defaultAction.dbObjectClick.${objectTypeField}`]; - const overrideMenu = createMenus(objectTypeField, driver).find(x => x.label && x.label == configuredAction); - if (overrideMenu) { - databaseObjectMenuClickHandler(data, overrideMenu); + if (matchDatabaseObjectAppObject(data, activeTabProps)) { return; } + const availableDefaultActions = defaultDatabaseObjectAppObjectActions[objectTypeField]; + + const configuredActionId = getCurrentSettings()[`defaultAction.dbObjectClick.${objectTypeField}`]; + const prefferedAction = + availableDefaultActions.find(x => x.defaultActionId == activeDefaultActionId) ?? + availableDefaultActions.find(x => x.defaultActionId == configuredActionId) ?? + availableDefaultActions[0]; + + // console.log('activeTab', activeTab); + + // const overrideMenu = createMenus(objectTypeField, driver).find(x => x.label && x.label == configuredAction); + // if (overrideMenu) { + // databaseObjectMenuClickHandler(data, overrideMenu); + // return; + // } + openDatabaseObjectDetail( - defaultTabs[objectTypeField], - null, + prefferedAction.tab, + activeTabProps?.scriptTemplate, { schemaName, pureName, conid, database, objectTypeField, + defaultActionId: prefferedAction.defaultActionId, }, forceNewTab, null, diff --git a/packages/web/src/settings/FormDefaultActionField.svelte b/packages/web/src/settings/FormDefaultActionField.svelte new file mode 100644 index 000000000..8ddac3166 --- /dev/null +++ b/packages/web/src/settings/FormDefaultActionField.svelte @@ -0,0 +1,18 @@ + + + ({ + value: x.defaultActionId, + label: x.label, + }))} +/> diff --git a/packages/web/src/settings/SettingsModal.svelte b/packages/web/src/settings/SettingsModal.svelte index 45ffc7fac..8dd8e2e68 100644 --- a/packages/web/src/settings/SettingsModal.svelte +++ b/packages/web/src/settings/SettingsModal.svelte @@ -37,6 +37,7 @@ import { useSettings } from '../utility/metadataLoaders'; import { derived } from 'svelte/store'; import { safeFormatDate } from 'dbgate-tools'; + import FormDefaultActionField from './FormDefaultActionField.svelte'; const electron = getElectron(); let restartWarning = false; @@ -279,56 +280,11 @@ ORDER BY ]} /> - - - - - - - + + + + +
Confirmations