1473 Using setConfig instead of initialize from mermaid in some cases

This commit is contained in:
Knut Sveidqvist
2020-06-15 21:55:20 +02:00
parent 08dd2bd93d
commit 603f2a2154
4 changed files with 40 additions and 36 deletions

View File

@@ -88,7 +88,7 @@ describe('Configuration', () => {
C -->|Three| F[fa:fa-car Car] C -->|Three| F[fa:fa-car Car]
`, `,
{ {
arrowMarkerAbsolute: true logLevel:0, arrowMarkerAbsolute: true
} }
); );

View File

@@ -1,3 +1,4 @@
// import { logger } from './logger';
let config = {}; let config = {};
const setConf = function(cnf) { const setConf = function(cnf) {
@@ -9,7 +10,7 @@ const setConf = function(cnf) {
const lvl2Keys = Object.keys(cnf[lvl1Keys[i]]); const lvl2Keys = Object.keys(cnf[lvl1Keys[i]]);
for (let j = 0; j < lvl2Keys.length; j++) { for (let j = 0; j < lvl2Keys.length; j++) {
// logger.debug('Setting conf ', lvl1Keys[i], '-', lvl2Keys[j]) // logger.debug('Setting conf ', lvl1Keys[i], '-', lvl2Keys[j]);
if (typeof config[lvl1Keys[i]] === 'undefined') { if (typeof config[lvl1Keys[i]] === 'undefined') {
config[lvl1Keys[i]] = {}; config[lvl1Keys[i]] = {};
} }

View File

@@ -29,7 +29,7 @@ import { logger } from './logger';
*/ */
const init = function() { const init = function() {
const conf = mermaidAPI.getConfig(); const conf = mermaidAPI.getConfig();
logger.debug('Starting rendering diagrams'); // console.log('Starting rendering diagrams (init) - mermaid.init');
let nodes; let nodes;
if (arguments.length >= 2) { if (arguments.length >= 2) {
/*! sequence config was passed as #1 */ /*! sequence config was passed as #1 */
@@ -69,11 +69,11 @@ const init = function() {
logger.debug('Start On Load before: ' + mermaid.startOnLoad); logger.debug('Start On Load before: ' + mermaid.startOnLoad);
if (typeof mermaid.startOnLoad !== 'undefined') { if (typeof mermaid.startOnLoad !== 'undefined') {
logger.debug('Start On Load inner: ' + mermaid.startOnLoad); logger.debug('Start On Load inner: ' + mermaid.startOnLoad);
mermaidAPI.initialize({ startOnLoad: mermaid.startOnLoad }); mermaidAPI.setConfig({ startOnLoad: mermaid.startOnLoad });
} }
if (typeof mermaid.ganttConfig !== 'undefined') { if (typeof mermaid.ganttConfig !== 'undefined') {
mermaidAPI.initialize({ gantt: mermaid.ganttConfig }); mermaidAPI.setConfig({ gantt: mermaid.ganttConfig });
} }
let txt; let txt;
@@ -124,7 +124,7 @@ const init = function() {
const initialize = function(config) { const initialize = function(config) {
mermaidAPI.reset(); mermaidAPI.reset();
// logger.debug('Initializing mermaid 1', config); // console.log('Initializing mermaid 1', config);
if (typeof config.mermaid !== 'undefined') { if (typeof config.mermaid !== 'undefined') {
if (typeof config.mermaid.startOnLoad !== 'undefined') { if (typeof config.mermaid.startOnLoad !== 'undefined') {
mermaid.startOnLoad = config.mermaid.startOnLoad; mermaid.startOnLoad = config.mermaid.startOnLoad;
@@ -133,8 +133,9 @@ const initialize = function(config) {
mermaid.htmlLabels = config.mermaid.htmlLabels; mermaid.htmlLabels = config.mermaid.htmlLabels;
} }
} }
// console.log('Initializing mermaid 2', config);
mermaidAPI.initialize(config); mermaidAPI.initialize(config);
logger.debug('Initializing mermaid ', config); // logger.debug('Initializing mermaid 3', config);
}; };
/** /**

View File

@@ -803,75 +803,74 @@ const render = function(id, _txt, cb, container) {
try { try {
switch (graphType) { switch (graphType) {
case 'git': case 'git':
cnf.flowchart.arrowMarkerAbsolute = config.arrowMarkerAbsolute; cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
gitGraphRenderer.setConf(config.git); gitGraphRenderer.setConf(cnf.git);
gitGraphRenderer.draw(txt, id, false); gitGraphRenderer.draw(txt, id, false);
break; break;
case 'flowchart': case 'flowchart':
config.flowchart.arrowMarkerAbsolute = config.arrowMarkerAbsolute; cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
flowRenderer.setConf(config.flowchart); flowRenderer.setConf(cnf.flowchart);
flowRenderer.draw(txt, id, false); flowRenderer.draw(txt, id, false);
break; break;
case 'flowchart-v2': case 'flowchart-v2':
config.flowchart.arrowMarkerAbsolute = config.arrowMarkerAbsolute; cnf.flowchart.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
flowRendererV2.setConf(config.flowchart); flowRendererV2.setConf(cnf.flowchart);
flowRendererV2.draw(txt, id, false); flowRendererV2.draw(txt, id, false);
break; break;
case 'sequence': case 'sequence':
config.sequence.arrowMarkerAbsolute = config.arrowMarkerAbsolute; cnf.sequence.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
if (config.sequenceDiagram) { if (cnf.sequenceDiagram) {
// backwards compatibility // backwards compatibility
sequenceRenderer.setConf(Object.assign(config.sequence, config.sequenceDiagram)); sequenceRenderer.setConf(Object.assign(cnf.sequence, cnf.sequenceDiagram));
console.error( console.error(
'`mermaid config.sequenceDiagram` has been renamed to `config.sequence`. Please update your mermaid config.' '`mermaid config.sequenceDiagram` has been renamed to `config.sequence`. Please update your mermaid config.'
); );
} else { } else {
sequenceRenderer.setConf(config.sequence); sequenceRenderer.setConf(cnf.sequence);
} }
sequenceRenderer.draw(txt, id); sequenceRenderer.draw(txt, id);
break; break;
case 'gantt': case 'gantt':
config.gantt.arrowMarkerAbsolute = config.arrowMarkerAbsolute; cnf.gantt.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
ganttRenderer.setConf(config.gantt); ganttRenderer.setConf(cnf.gantt);
ganttRenderer.draw(txt, id); ganttRenderer.draw(txt, id);
break; break;
case 'class': case 'class':
console.log(cnf, config); cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
cnf.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute;
classRenderer.setConf(cnf.class); classRenderer.setConf(cnf.class);
classRenderer.draw(txt, id); classRenderer.draw(txt, id);
break; break;
case 'state': case 'state':
// config.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute; cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
stateRenderer.setConf(config.state); stateRenderer.setConf(cnf.state);
stateRenderer.draw(txt, id); stateRenderer.draw(txt, id);
break; break;
case 'stateDiagram': case 'stateDiagram':
// config.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute; cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
stateRendererV2.setConf(config.state); stateRendererV2.setConf(cnf.state);
stateRendererV2.draw(txt, id); stateRendererV2.draw(txt, id);
break; break;
case 'info': case 'info':
config.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute; cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
infoRenderer.setConf(config.class); infoRenderer.setConf(cnf.class);
infoRenderer.draw(txt, id, pkg.version); infoRenderer.draw(txt, id, pkg.version);
break; break;
case 'pie': case 'pie':
config.class.arrowMarkerAbsolute = config.arrowMarkerAbsolute; cnf.class.arrowMarkerAbsolute = cnf.arrowMarkerAbsolute;
pieRenderer.setConf(config.class); pieRenderer.setConf(cnf.class);
pieRenderer.draw(txt, id, pkg.version); pieRenderer.draw(txt, id, pkg.version);
break; break;
case 'er': case 'er':
erRenderer.setConf(config.er); erRenderer.setConf(cnf.er);
erRenderer.draw(txt, id, pkg.version); erRenderer.draw(txt, id, pkg.version);
break; break;
case 'journey': case 'journey':
journeyRenderer.setConf(config.journey); journeyRenderer.setConf(cnf.journey);
journeyRenderer.draw(txt, id, pkg.version); journeyRenderer.draw(txt, id, pkg.version);
break; break;
} }
} catch (e) { } catch (e) {
// errorRenderer.setConf(config.class); // errorRenderer.setConf(cnf.class);
errorRenderer.draw(id, pkg.version); errorRenderer.draw(id, pkg.version);
throw e; throw e;
} }
@@ -880,7 +879,7 @@ const render = function(id, _txt, cb, container) {
.selectAll('foreignobject > *') .selectAll('foreignobject > *')
.attr('xmlns', 'http://www.w3.org/1999/xhtml'); .attr('xmlns', 'http://www.w3.org/1999/xhtml');
// if (config.arrowMarkerAbsolute) { // if (cnf.arrowMarkerAbsolute) {
// url = // url =
// window.location.protocol + // window.location.protocol +
// '//' + // '//' +
@@ -893,8 +892,8 @@ const render = function(id, _txt, cb, container) {
// Fix for when the base tag is used // Fix for when the base tag is used
let svgCode = select('#d' + id).node().innerHTML; let svgCode = select('#d' + id).node().innerHTML;
logger.debug('cnf.arrowMarkerAbsolute', cnf.arrowMarkerAbsolute);
if (!config.arrowMarkerAbsolute || config.arrowMarkerAbsolute === 'false') { if (!cnf.arrowMarkerAbsolute || cnf.arrowMarkerAbsolute === 'false') {
svgCode = svgCode.replace(/marker-end="url\(.*?#/g, 'marker-end="url(#', 'g'); svgCode = svgCode.replace(/marker-end="url\(.*?#/g, 'marker-end="url(#', 'g');
} }
@@ -930,7 +929,7 @@ const render = function(id, _txt, cb, container) {
}; };
function reinitialize(options) { function reinitialize(options) {
// console.log('re-initialize ', options.logLevel, config.logLevel, getConfig().logLevel); // console.log('re-initialize ', options.logLevel, cnf.logLevel, getConfig().logLevel);
if (typeof options === 'object') { if (typeof options === 'object') {
// setConf(options); // setConf(options);
setConfig(options); setConfig(options);
@@ -942,6 +941,7 @@ function reinitialize(options) {
let firstInit = true; let firstInit = true;
function initialize(options) { function initialize(options) {
// console.log('mermaidAPI.initialize');
// Set default options // Set default options
if (typeof options === 'object') { if (typeof options === 'object') {
if (firstInit) { if (firstInit) {
@@ -971,7 +971,9 @@ const mermaidAPI = {
initialize, initialize,
reinitialize, reinitialize,
getConfig, getConfig,
setConfig,
reset: () => { reset: () => {
// console.warn('reset');
firstInit = true; firstInit = true;
} }
}; };