perspective custom joins supports views

This commit is contained in:
Jan Prochazka
2022-08-06 17:03:48 +02:00
parent 86d7d61cc5
commit cc019281d4
3 changed files with 94 additions and 65 deletions

View File

@@ -8,7 +8,13 @@
import { fullNameFromString, fullNameToLabel, fullNameToString } from 'dbgate-tools';
import SelectField from '../forms/SelectField.svelte';
import _ from 'lodash';
import { useConnectionList, useDatabaseInfo, useDatabaseList, useTableInfo } from '../utility/metadataLoaders';
import {
useConnectionList,
useDatabaseInfo,
useDatabaseList,
useTableInfo,
useViewInfo,
} from '../utility/metadataLoaders';
import { onMount, tick } from 'svelte';
import {
ChangePerspectiveConfigFunc,
@@ -52,6 +58,12 @@
schemaName: refSchemaName,
pureName: refTableName,
});
$: refViewInfo = useViewInfo({
conid: conidOverride || conid,
database: databaseOverride || database,
schemaName: refSchemaName,
pureName: refTableName,
});
let columns = editValue?.columns || [];
// let fromTableName = pureName;
@@ -76,7 +88,7 @@
// ];
$: refTableList = [
..._.sortBy($refDbInfo?.tables || [], ['schemaName', 'pureName']),
// ..._.sortBy($dbInfo?.views || [], ['schemaName', 'pureName']),
..._.sortBy($refDbInfo?.views || [], ['schemaName', 'pureName']),
];
let refTableOptions = [];
@@ -221,9 +233,10 @@
const refTable = $refDbInfo?.tables?.find(
x => x.pureName == refTableName && x.schemaName == refSchemaName
);
columns = refTable?.primaryKey?.columns?.map(col => ({
refColumnName: col.columnName,
}));
columns =
refTable?.primaryKey?.columns?.map(col => ({
refColumnName: col.columnName,
})) || [];
}
}}
/>
@@ -265,7 +278,7 @@
value={column.refColumnName}
isNative
notSelected
options={($refTableInfo?.columns || []).map(col => ({
options={($refTableInfo?.columns || $refViewInfo?.columns || []).map(col => ({
label: col.columnName,
value: col.columnName,
}))}

View File

@@ -25,7 +25,6 @@
PerspectiveDataProvider,
PerspectiveTableColumnNode,
PerspectiveTableNode,
PerspectiveViewNode,
} from 'dbgate-datalib';
import _ from 'lodash';
@@ -103,11 +102,18 @@
$: dataProvider = new PerspectiveDataProvider(cache, loader);
$: loader = new PerspectiveDataLoader(apiCall);
$: root = $tableInfo
? new PerspectiveTableNode($tableInfo, $dbInfos, config, setConfig, dataProvider, { conid, database }, null)
: $viewInfo
? new PerspectiveViewNode($viewInfo, $dbInfos, config, setConfig, dataProvider, { conid, database }, null)
: null;
$: root =
$tableInfo || $viewInfo
? new PerspectiveTableNode(
$tableInfo || $viewInfo,
$dbInfos,
config,
setConfig,
dataProvider,
{ conid, database },
null
)
: null;
// $: console.log('CONFIG', config);
</script>