#2270 Add support for direction statements for classDiagrams

This commit is contained in:
Knut Sveidqvist
2021-08-26 17:05:10 +02:00
parent b80ebb4fcb
commit 0658a363cb
5 changed files with 141 additions and 15 deletions

View File

@@ -317,6 +317,12 @@ const setupToolTips = function (element) {
};
funs.push(setupToolTips);
let direction = 'TB';
const getDirection = () => direction;
const setDirection = (dir) => {
direction = dir;
};
export default {
parseDirective,
getConfig: () => configApi.getConfig().class,
@@ -328,6 +334,8 @@ export default {
addAnnotation,
getRelations,
addRelation,
getDirection,
setDirection,
addMember,
addMembers,
cleanupLabel,

View File

@@ -372,7 +372,7 @@ export const draw = function (text, id) {
compound: true,
})
.setGraph({
rankdir: dir,
rankdir: classDb.getDirection(),
nodesep: nodeSpacing,
ranksep: rankSpacing,
marginx: 8,

View File

@@ -19,6 +19,10 @@
%%
\%\%\{ { this.begin('open_directive'); return 'open_directive'; }
.*direction\s+TB[^\n]* return 'direction_tb';
.*direction\s+BT[^\n]* return 'direction_bt';
.*direction\s+RL[^\n]* return 'direction_rl';
.*direction\s+LR[^\n]* return 'direction_lr';
<open_directive>((?:(?!\}\%\%)[^:.])*) { this.begin('type_directive'); return 'type_directive'; }
<type_directive>":" { this.popState(); this.begin('arg_directive'); return ':'; }
<type_directive,arg_directive>\}\%\% { this.popState(); this.popState(); return 'close_directive'; }
@@ -180,9 +184,21 @@ Function arguments are optional: 'call <callback_name>()' simply executes 'callb
start
: mermaidDoc
| direction
| directive start
;
direction
: direction_tb
{ yy.setDirection('TB');}
| direction_bt
{ yy.setDirection('BT');}
| direction_rl
{ yy.setDirection('RL');}
| direction_lr
{ yy.setDirection('LR');}
;
mermaidDoc
: graphConfig
;
@@ -235,6 +251,7 @@ statement
| clickStatement
| cssClassStatement
| directive
| direction
;
classStatement