show sort in perspective deisgner and tree

This commit is contained in:
Jan Prochazka
2022-08-28 12:02:38 +02:00
parent 14110cb6db
commit f405db7685
8 changed files with 147 additions and 70 deletions

View File

@@ -5,12 +5,13 @@
PerspectiveConfig,
perspectiveNodesHaveStructure,
} from 'dbgate-datalib';
import _ from 'lodash';
import _, { findIndex } from 'lodash';
import { tick } from 'svelte';
import runCommand from '../commands/runCommand';
import Designer from '../designer/Designer.svelte';
import QueryDesignerReference from '../designer/QueryDesignerReference.svelte';
import { addToPerspectiveSort, clearPerspectiveSort, setPerspectiveSort } from './perspectiveMenu';
export let config: PerspectiveConfig;
export let dbInfos: MultipleDatabaseInfo;
@@ -130,6 +131,30 @@
referenceMenu: ({ designer, reference, onChangeReference, onRemoveReference }) => {
return [{ text: 'Remove', onClick: () => onRemoveReference(reference) }];
},
columnMenu: ({ designer, designerId, column, foreignKey }) => {
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)),
},
];
},
createReferenceText: reference => (reference.isAutoGenerated ? 'FK' : 'Custom'),
isColumnChecked: (designerId, columnName) => {
return config.nodes.find(x => x.designerId == designerId)?.checkedColumns?.includes(columnName);
@@ -163,6 +188,13 @@
),
}));
},
getSortOrderProps: (designerId, columnName) => {
const sort = config.nodes.find(x => x.designerId == designerId)?.sort;
const order = sort?.find(x => x.columnName == columnName)?.order;
if (!order) return null;
const orderIndex = sort.length > 1 ? _.findIndex(sort, x => x.columnName == columnName) : -1;
return { order, orderIndex };
},
}}
referenceComponent={QueryDesignerReference}
value={createDesignerModel(config, dbInfos)}