112 lines
3.2 KiB
JavaScript
Raw Normal View History

2019-10-05 00:39:07 +02:00
import { Base64 } from 'js-base64';
import mermaid2 from '../../src/mermaid';
/**
* ##contentLoaded
* Callback function that is called when page is loaded. This functions fetches configuration for mermaid rendering and
* calls init for rendering the mermaid diagrams on the page.
*/
2019-10-05 00:39:07 +02:00
const contentLoaded = function() {
let pos = document.location.href.indexOf('?graph=');
if (pos > 0) {
2019-10-05 00:39:07 +02:00
pos = pos + 7;
const graphBase64 = document.location.href.substr(pos);
const graphObj = JSON.parse(Base64.decode(graphBase64));
// const graph = 'hello'
2019-10-05 00:39:07 +02:00
console.log(graphObj);
2019-11-05 17:24:07 +09:00
if (Array.isArray(graphObj.code)) {
const numCodes = graphObj.code.length;
for (let i = 0; i < numCodes; i++) {
const div = document.createElement('div');
div.id = 'block' + i;
div.className = 'mermaid';
div.innerHTML = graphObj.code[i];
document.getElementsByTagName('body')[0].appendChild(div);
}
} else {
const div = document.createElement('div');
div.id = 'block';
div.className = 'mermaid';
div.innerHTML = graphObj.code;
document.getElementsByTagName('body')[0].appendChild(div);
}
2019-10-05 00:46:56 +02:00
global.mermaid.initialize(graphObj.mermaid);
2019-10-05 00:39:07 +02:00
global.mermaid.init();
}
2019-10-05 00:39:07 +02:00
};
const contentLoadedApi = function() {
let pos = document.location.href.indexOf('?graph=');
if (pos > 0) {
2019-10-05 00:39:07 +02:00
pos = pos + 7;
const graphBase64 = document.location.href.substr(pos);
const graphObj = JSON.parse(Base64.decode(graphBase64));
// const graph = 'hello'
2019-11-05 17:24:07 +09:00
if (Array.isArray(graphObj.code)) {
const numCodes = graphObj.code.length;
const divs = [];
2019-11-08 11:42:26 +01:00
let div;
2019-11-05 17:24:07 +09:00
for (let i = 0; i < numCodes; i++) {
2019-11-08 11:42:26 +01:00
div = document.createElement('div');
2019-11-05 17:24:07 +09:00
div.id = 'block' + i;
div.className = 'mermaid';
// div.innerHTML = graphObj.code
document.getElementsByTagName('body')[0].appendChild(div);
divs[i] = div;
}
mermaid2.initialize(graphObj.mermaid);
2019-11-05 17:24:07 +09:00
for (let i = 0; i < numCodes; i++) {
mermaid2.render(
'newid' + i,
graphObj.code[i],
(svgCode, bindFunctions) => {
div.innerHTML = svgCode;
bindFunctions(div);
},
divs[i]
);
}
} else {
const div = document.createElement('div');
div.id = 'block';
div.className = 'mermaid';
// div.innerHTML = graphObj.code
console.warn('graphObj.mermaid', graphObj.mermaid);
2019-11-05 17:24:07 +09:00
document.getElementsByTagName('body')[0].appendChild(div);
mermaid2.initialize(graphObj.mermaid);
2019-11-05 17:24:07 +09:00
mermaid2.render(
'newid',
graphObj.code,
(svgCode, bindFunctions) => {
div.innerHTML = svgCode;
2019-11-08 11:42:26 +01:00
if (bindFunctions) bindFunctions(div);
},
div
);
}
}
2019-10-05 00:39:07 +02:00
};
if (typeof document !== 'undefined') {
/*!
* Wait for document loaded before starting the execution
*/
window.addEventListener(
'load',
2019-10-05 00:39:07 +02:00
function() {
if (this.location.href.match('xss.html')) {
2019-10-05 00:39:07 +02:00
this.console.log('Using api');
contentLoadedApi();
} else {
2019-10-05 00:39:07 +02:00
this.console.log('Not using api');
contentLoaded();
}
},
false
2019-10-05 00:39:07 +02:00
);
}