SYNC: Merge pull request #9 from dbgate/feature/apps

This commit is contained in:
Jan Prochazka
2025-09-11 13:10:36 +02:00
committed by Diflow
parent ef15f299d2
commit 11a4f0ef32
40 changed files with 1770 additions and 754 deletions

View File

@@ -1,11 +1,10 @@
<script lang="ts">
import FormProvider from '../forms/FormProvider.svelte';
import _ from 'lodash';
import FormSubmit from '../forms/FormSubmit.svelte';
import FormStyledButton from '../buttons/FormStyledButton.svelte';
import ModalBase from './ModalBase.svelte';
import { closeCurrentModal } from './modalTools';
import { useAppFolders, useConnectionList, useTableInfo, useUsedApps } from '../utility/metadataLoaders';
import { useAllApps, useConnectionList, useTableInfo } from '../utility/metadataLoaders';
import TableControl from '../elements/TableControl.svelte';
import TextField from '../forms/TextField.svelte';
import FormTextField from '../forms/FormTextField.svelte';
@@ -16,14 +15,12 @@
checkDescriptionExpression,
getDictionaryDescription,
parseDelimitedColumnList,
saveDictionaryDescription,
} from '../utility/dictionaryDescriptionTools';
import { includes } from 'lodash';
import FormCheckboxField from '../forms/FormCheckboxField.svelte';
import FormSelectField from '../forms/FormSelectField.svelte';
import TargetApplicationSelect from '../forms/TargetApplicationSelect.svelte';
import { currentDatabase } from '../stores';
import { filterAppsForDatabase } from '../utility/appTools';
import { apiCall } from '../utility/api';
export let conid;
export let database;
@@ -33,13 +30,12 @@
$: tableInfo = useTableInfo({ conid, database, schemaName, pureName });
$: apps = useUsedApps();
$: appFolders = useAppFolders();
$: apps = useAllApps();
$: connections = useConnectionList();
$: descriptionInfo = getDictionaryDescription($tableInfo, conid, database, $apps, $connections, true);
const values = writable({ targetApplication: '#new' } as any);
const values = writable({ targetApplication: '' } as any);
function initValues(descriptionInfo) {
$values = {
@@ -52,28 +48,21 @@
$: {
if (descriptionInfo) initValues(descriptionInfo);
}
$: {
if ($values.targetApplication == '#new' && $currentDatabase) {
const filtered = filterAppsForDatabase($currentDatabase.connection, $currentDatabase.name, $apps || []);
const common = _.intersection(
($appFolders || []).map(x => x.name),
filtered.map(x => x.name)
);
if (common.length > 0) {
$values = {
...$values,
targetApplication: common[0],
};
}
}
}
</script>
<FormProviderCore {values}>
<ModalBase {...$$restProps}>
<svelte:fragment slot="header">Define description</svelte:fragment>
<FormSelectField
label="Target application (mandatory)"
name="targetApplication"
disableInitialize
selectFieldComponent={TargetApplicationSelect}
{conid}
{database}
/>
<div class="wrapper">
<TableControl
rows={$tableInfo?.columns || []}
@@ -103,30 +92,34 @@
<FormTextField name="delimiter" label="Delimiter" />
<FormSelectField
label="Target application"
name="targetApplication"
disableInitialize
selectFieldComponent={TargetApplicationSelect}
/>
<!-- <FormCheckboxField name="useForAllDatabases" label="Use for all databases" /> -->
<svelte:fragment slot="footer">
<FormSubmit
value="OK"
disabled={!checkDescriptionExpression($values?.columns, $tableInfo)}
on:click={() => {
disabled={!checkDescriptionExpression($values?.columns, $tableInfo) || !$values.targetApplication}
on:click={async () => {
closeCurrentModal();
saveDictionaryDescription(
$tableInfo,
conid,
database,
$values.columns,
$values.delimiter,
$values.targetApplication
);
onConfirm();
const expression = $values.columns;
await apiCall('apps/save-dictionary-description', {
appid: $values.targetApplication,
schemaName: $tableInfo.schemaName,
pureName: $tableInfo.pureName,
columns: parseDelimitedColumnList(expression),
expression,
delimiter: $values.delimiter,
});
// saveDictionaryDescription(
// $tableInfo,
// conid,
// database,
// $values.columns,
// $values.delimiter,
// $values.targetApplication
// );
onConfirm?.();
}}
/>
<FormStyledButton type="button" value="Close" on:click={closeCurrentModal} />