use svelte select

This commit is contained in:
Jan Prochazka
2021-03-11 21:00:25 +01:00
parent 2063005d5c
commit d6f9db48aa
5 changed files with 85 additions and 12 deletions

View File

@@ -0,0 +1,23 @@
<script lang="ts">
import { getFormContext } from '../forms/FormProviderCore.svelte';
import FormSelectField from '../forms/FormSelectField.svelte';
import { useDatabaseInfo, useDatabaseList } from '../utility/metadataLoaders';
export let conidName;
export let databaseName;
const { values } = getFormContext();
$: dbinfo = useDatabaseInfo({ conid: $values[conidName], database: values[databaseName] });
$: schemaOptions = (($dbinfo && $dbinfo.schemas) || []).map(schema => ({
value: schema.schemaName,
label: schema.schemaName,
}));
</script>
{#if schemaOptions.length == 0}
<div>Not available</div>
{:else}
<FormSelectField {...$$restProps} options={schemaOptions} />
{/if}

View File

@@ -0,0 +1,26 @@
<script lang="ts">
import { getFormContext } from '../forms/FormProviderCore.svelte';
import FormSelectField from '../forms/FormSelectField.svelte';
import { useDatabaseInfo, useDatabaseList } from '../utility/metadataLoaders';
import SvelteSelect from 'svelte-select';
export let conidName;
export let databaseName;
export let schemaName;
const { values } = getFormContext();
$: dbinfo = useDatabaseInfo({ conid: $values[conidName], database: values[databaseName] });
$: tablesOptions = [...(($dbinfo && $dbinfo.tables) || []), ...(($dbinfo && $dbinfo.views) || [])]
.filter(x => !$values[schemaName] || x.schemaName == $values[schemaName])
.map(x => ({
value: x.pureName,
label: x.pureName,
}));
</script>
{#if tablesOptions.length == 0}
<div>Not available</div>
{:else}
<SvelteSelect {...$$restProps} items={tablesOptions} isMulti listOpen />
{/if}

View File

@@ -8,6 +8,8 @@
import { useArchiveFiles, useDatabaseInfo } from '../utility/metadataLoaders';
import FormConnectionSelect from './FormConnectionSelect.svelte';
import FormDatabaseSelect from './FormDatabaseSelect.svelte';
import FormSchemaSelect from './FormSchemaSelect.svelte';
import FormTablesSelect from './FormTablesSelect.svelte';
export let direction;
export let storageTypeField;
@@ -63,6 +65,22 @@
<FormConnectionSelect name={connectionIdField} label="Server" />
<FormDatabaseSelect conidName={connectionIdField} name={databaseNameField} label="Database" />
{/if}
{#if storageType == 'database'}
<FormSchemaSelect
conidName={connectionIdField}
databaseName={databaseNameField}
name={schemaNameField}
label="Schema"
/>
{#if tablesField}
<FormTablesSelect
conidName={connectionIdField}
schemaName={schemaNameField}
databaseName={databaseNameField}
name={tablesField}
/>
{/if}
{/if}
</div>
<style>