From b426e600cef70ed30fe3c6f6f6ed28ec32fd2b2d Mon Sep 17 00:00:00 2001 From: whyzdev Date: Tue, 13 Dec 2016 21:05:16 -0500 Subject: [PATCH 1/2] fix gantt chart cli configuration one more time missing }; make sequenceConfig cli configuration work; added guantt and sequence files in tape cli output tests --- lib/phantomscript.js | 21 +++++++------------ src/logger.js | 3 +-- test/cli_test-output.js | 40 ++++++++++++++++++++----------------- test/fixtures/gantt.mermaid | 8 ++++++++ 4 files changed, 38 insertions(+), 34 deletions(-) create mode 100644 test/fixtures/gantt.mermaid diff --git a/lib/phantomscript.js b/lib/phantomscript.js index b552595d65..1e0edf1f04 100644 --- a/lib/phantomscript.js +++ b/lib/phantomscript.js @@ -211,7 +211,7 @@ function executeInPage(data) { var xmlSerializer = new XMLSerializer() , contents = data.contents , sequenceConfig = JSON.stringify(data.sequenceConfig) - , ganttConfig = JSON.stringify(data.ganttConfig).replace(/"(function.*)}"/, "$1") + , ganttConfig = JSON.stringify(data.ganttConfig).replace(/"(function.*})"/, "$1") , toRemove , el , elContent @@ -222,35 +222,28 @@ function executeInPage(data) { , height , confWidth = data.confWidth - toRemove = document.getElementsByClassName('mermaid') + var toRemove = document.getElementsByClassName('mermaid') if (toRemove && toRemove.length) { for (var i = 0, len = toRemove.length; i < len; i++) { toRemove[i].parentNode.removeChild(toRemove[i]) } } - el = document.createElement("div") + var el = document.createElement("div") el.className = 'mermaid' - elContent = document.createTextNode(contents) - el.appendChild(elContent) - //el.innerText = 'hello\uD800' //contents; - + el.appendChild(document.createTextNode(contents)) document.body.appendChild(el) var config = { - sequenceDiagram: sequenceConfig, + sequenceDiagram: JSON.parse(sequenceConfig), flowchart: {useMaxWidth: false}, logLevel: 1 }; mermaid.initialize(config); - //console.log('after initialize',sequenceConfig); - - sc = document.createElement("script") - scContent = document.createTextNode('mermaid.ganttConfig = ' + ganttConfig + ';') - sc.appendChild(scContent) - + var sc = document.createElement("script") + sc.appendChild(document.createTextNode('mermaid.ganttConfig = ' + ganttConfig + ';')) document.body.appendChild(sc) mermaid.init(); diff --git a/src/logger.js b/src/logger.js index 040950adb2..feffd9db6a 100644 --- a/src/logger.js +++ b/src/logger.js @@ -71,8 +71,7 @@ function Log(level) { args.unshift('[' + formatTime(new Date()) + '] '); console.log.apply(console, args.map(function(a){ if (typeof a === "object") { - if (a.stack !== undefined) { return a.stack; } - return JSON.stringify(a, null, 2); + return a.toString() + JSON.stringify(a, null, 2); } return a; })); diff --git a/test/cli_test-output.js b/test/cli_test-output.js index 775193e27a..b853556553 100644 --- a/test/cli_test-output.js +++ b/test/cli_test-output.js @@ -13,15 +13,14 @@ var isWin = /^win/.test(process.platform); var phantomCmd; if(isWin){ phantomCmd = 'node_modules/.bin/phantomjs.cmd' - console.log('is win'); - console.log('is win'); + console.log('is win') } else{ phantomCmd = 'node_modules/.bin/phantomjs' } var singleFile = { files: [fileTestMermaid] - , outputDir: path.join(process.cwd(),'test/tmp2/') + , outputDir: path.join(process.cwd(),'test/tmp_single') , phantomPath: path.join(process.cwd(),phantomCmd) , width : 1200 , css: path.join(__dirname, '..', 'dist', 'mermaid.css') @@ -29,8 +28,12 @@ var singleFile = { , ganttConfig: null } , multiFile = { - files: [path.join('test','fixtures','test.mermaid'), path.join('test','fixtures','test2.mermaid')] - , outputDir: 'test/tmp2/' + files: [path.join('test','fixtures','test.mermaid'), + path.join('test','fixtures','test2.mermaid'), + path.join('test','fixtures','gantt.mermaid'), + path.join('test','fixtures','sequence.mermaid'), + ] + , outputDir: 'test/tmp_multi' , phantomPath: path.join(process.cwd(),phantomCmd) , width : 1200 , css: path.join(__dirname, '..', 'dist', 'mermaid.css') @@ -45,6 +48,7 @@ test('output of single png', function(t) { var expected = ['test.mermaid.png'] opt = clone(singleFile) + opt.outputDir += '_png' opt.png = true mermaid.process(opt.files, opt, function(code) { @@ -57,9 +61,11 @@ test('output of single png', function(t) { test('output of multiple png', function(t) { t.plan(3) - var expected = ['test.mermaid.png', 'test2.mermaid.png'] + var expected = ['test.mermaid.png', 'test2.mermaid.png', + 'gantt.mermaid.png', 'sequence.mermaid.png'] opt = clone(multiFile) + opt.outputDir += '_png' opt.png = true mermaid.process(opt.files, opt, function(code) { @@ -75,6 +81,7 @@ test('output of single svg', function(t) { var expected = ['test.mermaid.svg'] opt = clone(singleFile) + opt.outputDir += '_svg' opt.svg = true mermaid.process(opt.files, opt, function(code) { @@ -87,9 +94,11 @@ test('output of single svg', function(t) { test('output of multiple svg', function(t) { t.plan(3) - var expected = ['test.mermaid.svg', 'test2.mermaid.svg'] + var expected = ['test.mermaid.svg', 'test2.mermaid.svg', + 'gantt.mermaid.svg', 'sequence.mermaid.svg'] opt = clone(multiFile) + opt.outputDir += '_svg' opt.svg = true mermaid.process(opt.files, opt, function(code) { @@ -110,28 +119,22 @@ test('output including CSS', function(t) { , two opt.png = true + opt.outputDir += '_css_png' opt2.png = true + opt2.outputDir += '_css_png' mermaid.process(opt.files, opt, function(code) { t.equal(code, 0, 'has clean exit code') filename = path.join(opt.outputDir, path.basename(expected[0])) one = fs.statSync(filename) - //console.log('one: '+opt.files[0]); opt2.css = path.join('test','fixtures','test.css') - //console.log(opt2.css); - console.log('Generating #2'); - //console.log('two: '+opt2.files[0]); + console.log('Generating #2'); mermaid.process(opt2.files, opt2, function(code) { t.equal(code, 0, 'has clean exit code') two = fs.statSync(filename) - - //console.log('one: '+one.size); - //console.log('two: '+two.size); - - t.notEqual(one.size, two.size) verifyFiles(expected, opt.outputDir, t) @@ -151,8 +154,9 @@ function verifyFiles(expected, dir, t) { } , function(err) { t.notOk(err, 'all files passed') - - rimraf(dir, function(rmerr) { + var delete_tmps = true + var _rimraf=delete_tmps ? rimraf : function(dir, f) { f(0); } + _rimraf(dir, function(rmerr) { t.notOk(rmerr, 'cleaned up') t.end() }) diff --git a/test/fixtures/gantt.mermaid b/test/fixtures/gantt.mermaid new file mode 100644 index 0000000000..62e1ceba3f --- /dev/null +++ b/test/fixtures/gantt.mermaid @@ -0,0 +1,8 @@ +gantt +dateFormat YYYY-MM-DD +title Adding GANTT diagram functionality to mermaid +section A section +Completed task :done, des1, 2014-01-06,2014-01-08 +Active task :active, des2, 2014-01-09, 3d +Future task : des3, after des2, 5d +Future task2 : des4, after des3, 5d From 5d99e9c0b8dd32e8cbc75fdbd1c8e0a876daf2e6 Mon Sep 17 00:00:00 2001 From: whyzdev Date: Tue, 13 Dec 2016 21:06:48 -0500 Subject: [PATCH 2/2] changed tspan as default of sequence actor text placement --- src/diagrams/sequenceDiagram/sequenceRenderer.js | 4 ++-- src/diagrams/sequenceDiagram/svgDraw.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/diagrams/sequenceDiagram/sequenceRenderer.js b/src/diagrams/sequenceDiagram/sequenceRenderer.js index 3f2afa0eaa..0253412d96 100644 --- a/src/diagrams/sequenceDiagram/sequenceRenderer.js +++ b/src/diagrams/sequenceDiagram/sequenceRenderer.js @@ -34,8 +34,8 @@ var conf = { // width of activation box activationWidth:10, - //text placement as: tspan | fo | only text as before - textPlacement: 'fo', + //text placement as: tspan | fo | old only text as before + textPlacement: 'tspan', }; exports.bounds = { diff --git a/src/diagrams/sequenceDiagram/svgDraw.js b/src/diagrams/sequenceDiagram/svgDraw.js index 1bdb7106e7..defd454f13 100644 --- a/src/diagrams/sequenceDiagram/svgDraw.js +++ b/src/diagrams/sequenceDiagram/svgDraw.js @@ -326,6 +326,6 @@ var _drawTextCandidateFunc = (function() { return function(conf) { return conf.textPlacement==='fo' ? byFo : ( - conf.textPlacement==='tspan' ? byTspan : byText); + conf.textPlacement==='old' ? byText: byTspan); }; })();