mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-23 21:56:00 +00:00
perspective alias
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user