perspective alias

This commit is contained in:
Jan Prochazka
2022-08-28 13:11:42 +02:00
parent 2284264a92
commit f886b8c95d
6 changed files with 105 additions and 72 deletions

View File

@@ -4,6 +4,7 @@
MultipleDatabaseInfo,
PerspectiveConfig,
perspectiveNodesHaveStructure,
PerspectiveTreeNode,
} from 'dbgate-datalib';
import _, { findIndex } from 'lodash';
import { tick } from 'svelte';
@@ -11,20 +12,16 @@
import Designer from '../designer/Designer.svelte';
import QueryDesignerReference from '../designer/QueryDesignerReference.svelte';
import {
addToPerspectiveFilter,
addToPerspectiveSort,
clearPerspectiveSort,
setPerspectiveSort,
} from './perspectiveMenu';
import { getPerspectiveNodeMenu } from './perspectiveMenu';
export let config: PerspectiveConfig;
export let dbInfos: MultipleDatabaseInfo;
export let root: PerspectiveTreeNode;
export let conid;
export let database;
export let onChange;
export let setConfig;
function createDesignerModel(config: PerspectiveConfig, dbInfos: MultipleDatabaseInfo) {
return {
@@ -50,7 +47,7 @@
}
function handleChange(value, skipUndoChain, settings) {
onChange(oldValue => {
setConfig(oldValue => {
const newValue = _.isFunction(value) ? value(createDesignerModel(oldValue, dbInfos)) : value;
let isArranged = oldValue.isArranged;
if (settings?.isCalledFromArrange) {
@@ -67,9 +64,9 @@
...node,
};
if (table) {
nodeChanged.alias = table?.alias;
}
// if (table) {
// nodeChanged.alias = table?.alias;
// }
if (settings?.isCalledFromArrange) {
// when called from arrange, position must be set to prevent cycle
@@ -137,32 +134,29 @@
return [{ text: 'Remove', onClick: () => onRemoveReference(reference) }];
},
columnMenu: ({ designer, designerId, column, foreignKey }) => {
const node = root.findNodeByDesignerId(designerId);
const child = node.childNodes.find(x => x.columnName == column.columnName);
return getPerspectiveNodeMenu({
config,
setConfig,
conid,
database,
root,
node: child,
});
},
tableMenu: ({ designer, designerId, onRemoveTable }) => {
const node = root.findNodeByDesignerId(designerId);
return [
{
text: 'Sort ascending',
onClick: () => onChange(cfg => setPerspectiveSort(cfg, designerId, column.columnName, 'ASC')),
},
{
text: 'Sort descending',
onClick: () => onChange(cfg => setPerspectiveSort(cfg, designerId, column.columnName, 'DESC')),
},
{
text: 'Add to sort ascending',
onClick: () => onChange(cfg => addToPerspectiveSort(cfg, designerId, column.columnName, 'ASC')),
},
{
text: 'Add to sort descending',
onClick: () => onChange(cfg => addToPerspectiveSort(cfg, designerId, column.columnName, 'DESC')),
},
{
text: 'Clear sort criteria',
onClick: () => onChange(cfg => clearPerspectiveSort(cfg, designerId)),
},
{ divider: true },
{
text: 'Add to filter',
onClick: () => onChange(cfg => addToPerspectiveFilter(cfg, designerId, column.columnName)),
},
{ text: 'Remove', onClick: () => onRemoveTable({ designerId }) },
getPerspectiveNodeMenu({
config,
setConfig,
conid,
database,
root,
node,
}),
];
},
createReferenceText: reference => (reference.isAutoGenerated ? 'FK' : 'Custom'),
@@ -170,7 +164,7 @@
return config.nodes.find(x => x.designerId == designerId)?.checkedColumns?.includes(columnName);
},
setColumnChecked: (designerId, columnName, value) => {
onChange(cfg => ({
setConfig(cfg => ({
...cfg,
nodes: cfg.nodes.map(node =>
node.designerId == designerId
@@ -186,7 +180,7 @@
},
isTableChecked: designerId => config.nodes?.find(x => x.designerId == designerId)?.isNodeChecked,
setTableChecked: (designerId, value) => {
onChange(cfg => ({
setConfig(cfg => ({
...cfg,
nodes: cfg.nodes.map(node =>
node.designerId == designerId