default action handling

This commit is contained in:
SPRINX0\prochazka
2024-11-21 13:46:19 +01:00
parent 86186072ed
commit c6cd865663
3 changed files with 51 additions and 60 deletions

View File

@@ -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,

View File

@@ -0,0 +1,18 @@
<script alng="ts">
import { defaultDatabaseObjectAppObjectActions } from '../appobj/appObjectTools';
import FormSelectField from '../forms/FormSelectField.svelte';
export let label;
export let objectTypeField;
</script>
<FormSelectField
{label}
name={`defaultAction.dbObjectClick.${objectTypeField}`}
isNative
defaultValue={defaultDatabaseObjectAppObjectActions[objectTypeField][0]?.defaultActionId}
options={defaultDatabaseObjectAppObjectActions[objectTypeField].map(x => ({
value: x.defaultActionId,
label: x.label,
}))}
/>

View File

@@ -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
]}
/>
<FormSelectField
label="Table click"
name="defaultAction.dbObjectClick.tables"
isNative
defaultValue=""
options={[
{ value: '', label: 'Open data, or open existing' },
{ value: 'Open data', label: 'Open data (always new tab)' },
{ value: 'Open form', label: 'Open form (always new tab)' },
{ value: 'Open structure', label: 'Open structure' },
{ value: 'SQL: CREATE TABLE', label: 'SQL: CREATE' },
{ value: 'SQL: SELECT', label: 'SQL: SELECT' },
]}
/>
<FormSelectField
label="View click"
name="defaultAction.dbObjectClick.views"
isNative
defaultValue=""
options={[
{ value: '', label: 'Open data, or open existing' },
{ value: 'Open data', label: 'Open data (always new tab)' },
{ value: 'SQL: CREATE VIEW', label: 'SQL: CREATE' },
]}
/>
<FormSelectField
label="Materialized view click"
name="defaultAction.dbObjectClick.matviews"
isNative
defaultValue=""
options={[
{ value: '', label: 'Open data, or open existing' },
{ value: 'Open data', label: 'Open data (always new tab)' },
{ value: 'SQL: CREATE MATERIALIZED VIEW', label: 'SQL: CREATE' },
]}
/>
<FormSelectField
label="Procedure click"
name="defaultAction.dbObjectClick.procedures"
isNative
defaultValue=""
options={[
{ value: '', label: 'SQL: CREATE' },
{ value: 'SQL: EXECUTE', label: 'SQL: EXECUTE' },
// { value: 'SQL: CREATE PROCEDURE', label: 'SQL: CREATE' },
]}
/>
<FormDefaultActionField label="Table click" objectTypeField="tables" />
<FormDefaultActionField label="View click" objectTypeField="views" />
<FormDefaultActionField label="Materialized view click" objectTypeField="matviews" />
<FormDefaultActionField label="Procedure click" objectTypeField="procedures" />
<FormDefaultActionField label="Function click" objectTypeField="functions" />
</svelte:fragment>
<svelte:fragment slot="5">
<div class="heading">Confirmations</div>