feat:通过mermaid插件实现甘特图支持

This commit is contained in:
lifei6671
2018-08-31 18:17:47 +08:00
parent 8243a89e23
commit e802cb7c4f
15 changed files with 217515 additions and 16 deletions
+12 -1
View File
@@ -29,6 +29,7 @@
"jquery", "marked", "jquery", "marked",
//"prettify", //"prettify",
"highlight/highlight", "highlight/highlight",
"mermaid/mermaid",
"katex", "raphael", "underscore", "flowchart", "jqueryflowchart", "sequenceDiagram", "katex", "raphael", "underscore", "flowchart", "jqueryflowchart", "sequenceDiagram",
"codemirror/lib/codemirror", "codemirror/lib/codemirror",
@@ -240,6 +241,9 @@
tex : false, // TeX(LaTeX), based on KaTeX tex : false, // TeX(LaTeX), based on KaTeX
flowChart : false, // flowChart.js only support IE9+ flowChart : false, // flowChart.js only support IE9+
sequenceDiagram : false, // sequenceDiagram.js only support IE9+ sequenceDiagram : false, // sequenceDiagram.js only support IE9+
mermaidGantt : false, //mermaid/mermaid.js
mermaidSequence : false,
mermaidFlowChat : false,
previewCodeHighlight : true, previewCodeHighlight : true,
highlightStyle : "github", highlightStyle : "github",
@@ -578,7 +582,12 @@
return ; return ;
} }
if (settings.mermaidGantt || settings.mermaidFlowChat || settings.mermaidSequence) {
console.log("aa")
editormd.loadScript(loadPath + "mermaid/mermaid.min", function () {
_this.loadedDisplay();
});
}
if (settings.flowChart || settings.sequenceDiagram) if (settings.flowChart || settings.sequenceDiagram)
{ {
editormd.loadScript(loadPath + "raphael.min", function() { editormd.loadScript(loadPath + "raphael.min", function() {
@@ -3704,6 +3713,8 @@
if (lang === "seq" || lang === "sequence") if (lang === "seq" || lang === "sequence")
{ {
return "<div class=\"sequence-diagram\">" + code + "</div>"; return "<div class=\"sequence-diagram\">" + code + "</div>";
} else if (lang === "gantt"){
return "<div class=\"mermain-gantt\""> + code + "</div>"
} }
else if ( lang === "flow") else if ( lang === "flow")
{ {
+70 -5
View File
@@ -101,7 +101,7 @@
height : "100%", height : "100%",
path : "./lib/", // Dependents module file directory path : "./lib/", // Dependents module file directory
pluginPath : "", // If this empty, default use settings.path + "../plugins/" pluginPath : "", // If this empty, default use settings.path + "../plugins/"
delay : 300, // Delay parse markdown to html, Uint : ms delay : 500, // Delay parse markdown to html, Uint : ms
autoLoadModules : true, // Automatic load dependent module files autoLoadModules : true, // Automatic load dependent module files
watch : true, watch : true,
placeholder : "Enjoy Markdown! coding now...", placeholder : "Enjoy Markdown! coding now...",
@@ -168,6 +168,7 @@
tex : false, // TeX(LaTeX), based on KaTeX tex : false, // TeX(LaTeX), based on KaTeX
flowChart : false, // flowChart.js only support IE9+ flowChart : false, // flowChart.js only support IE9+
sequenceDiagram : false, // sequenceDiagram.js only support IE9+ sequenceDiagram : false, // sequenceDiagram.js only support IE9+
mermaid : true,
previewCodeHighlight : true, previewCodeHighlight : true,
toolbar : true, // show/hide toolbar toolbar : true, // show/hide toolbar
@@ -505,7 +506,47 @@
return ; return ;
} }
if (settings.mermaid) {
editormd.loadCSS(loadPath + "mermaid/mermaid", function () {
editormd.loadScript(loadPath + "mermaid/mermaid.min", function () {
window.mermaid.initialize({
theme: 'default',
startOnLoad:true,
cloneCssStyles: true,
flowchart: {
htmlLabels: false,
useMaxWidth:false
},
});
mermaid.ganttConfig = {
axisFormatter: [
// Within a day
['%I:%M', function (d) {
return d.getHours();
}],
// Monday a week
['%m/%d', function (d) { // redefine date here as '%m/%d'instead of 'w. %U', search mermaid.js
return d.getDay() == 1;
}],
// Day within a week (not monday)
['%a %d', function (d) {
return d.getDay() && d.getDate() != 1;
}],
// within a month
['%b %d', function (d) {
return d.getDate() != 1;
}],
// Month
['%m-%y', function (d) {
return d.getMonth();
}],[ "%m-%Y", function () {
return d.getFullYear();
}]]
};
_this.loadedDisplay();
});
});
}
if (settings.flowChart || settings.sequenceDiagram) if (settings.flowChart || settings.sequenceDiagram)
{ {
editormd.loadScript(loadPath + "raphael.min", function() { editormd.loadScript(loadPath + "raphael.min", function() {
@@ -1530,6 +1571,12 @@
if (editormd.isIE8) { if (editormd.isIE8) {
return this; return this;
} }
if (settings.mermaid) {
var mermaid = previewContainer.find(".lang-mermaid");
if (mermaid) {
window.mermaid.init(void 0, mermaid.removeClass("hide"));
}
}
if (settings.flowChart) { if (settings.flowChart) {
if (flowchartTimer === null) { if (flowchartTimer === null) {
@@ -1539,7 +1586,7 @@
previewContainer.find(".flowchart").flowChart(); previewContainer.find(".flowchart").flowChart();
} }
if (settings.sequenceDiagram) { if (settings.sequence) {
previewContainer.find(".sequence-diagram").sequenceDiagram({theme: "simple"}); previewContainer.find(".sequence-diagram").sequenceDiagram({theme: "simple"});
} }
@@ -2006,6 +2053,7 @@
flowChart : settings.flowChart, flowChart : settings.flowChart,
sequenceDiagram : settings.sequenceDiagram, sequenceDiagram : settings.sequenceDiagram,
previewCodeHighlight : settings.previewCodeHighlight, previewCodeHighlight : settings.previewCodeHighlight,
mermaid : settings.mermaid,
}; };
var markedOptions = this.markedOptions = { var markedOptions = this.markedOptions = {
@@ -2086,7 +2134,7 @@
} }
} }
if (settings.flowChart || settings.sequenceDiagram) if (settings.flowChart || settings.sequenceDiagram || settings.mermaid)
{ {
flowchartTimer = setTimeout(function(){ flowchartTimer = setTimeout(function(){
clearTimeout(flowchartTimer); clearTimeout(flowchartTimer);
@@ -3402,6 +3450,7 @@
tex : false, // TeX(LaTeX), based on KaTeX tex : false, // TeX(LaTeX), based on KaTeX
flowChart : false, // flowChart.js only support IE9+ flowChart : false, // flowChart.js only support IE9+
sequenceDiagram : false, // sequenceDiagram.js only support IE9+ sequenceDiagram : false, // sequenceDiagram.js only support IE9+
mermaid : true,
}; };
var settings = $.extend(defaults, options || {}); var settings = $.extend(defaults, options || {});
@@ -3631,6 +3680,17 @@
{ {
return "<div class=\"sequence-diagram\">" + code + "</div>"; return "<div class=\"sequence-diagram\">" + code + "</div>";
} }
else if (lang === "mermaid"){
var $chars = 'ABCDEFGHJKLMNOPQRSTUVWXYZabcdefhijlkmnopqrstuvwxyz012345678';
var maxPos = $chars.length;
var id = '';
for (var i = 0; i < 4; i++) {
id += $chars.charAt(Math.floor(Math.random() * maxPos));
}
return "<div class=\"lang-mermaid hide\" data-anchor-id=\""+id+"\">" + code + "</div>";
}
else if ( lang === "flow") else if ( lang === "flow")
{ {
return "<div class=\"flowchart\">" + code + "</div>"; return "<div class=\"flowchart\">" + code + "</div>";
@@ -3919,7 +3979,8 @@
emoji : false, emoji : false,
flowChart : false, flowChart : false,
sequenceDiagram : false, sequenceDiagram : false,
previewCodeHighlight : true previewCodeHighlight : true,
mermaid : true,
}; };
editormd.$marked = marked; editormd.$marked = marked;
@@ -3949,6 +4010,7 @@
emailLink : settings.emailLink, // for mail address auto link emailLink : settings.emailLink, // for mail address auto link
flowChart : settings.flowChart, flowChart : settings.flowChart,
sequenceDiagram : settings.sequenceDiagram, sequenceDiagram : settings.sequenceDiagram,
mermaid : settings.mermaid,
previewCodeHighlight : settings.previewCodeHighlight, previewCodeHighlight : settings.previewCodeHighlight,
}; };
@@ -4014,6 +4076,9 @@
if (settings.sequenceDiagram) { if (settings.sequenceDiagram) {
div.find(".sequence-diagram").sequenceDiagram({theme: "simple"}); div.find(".sequence-diagram").sequenceDiagram({theme: "simple"});
} }
if (settings.mermaid) {
window.mermaid.init(void 0, div.find(".lang-mermaid"));
}
} }
if (settings.tex) if (settings.tex)
+273
View File
@@ -0,0 +1,273 @@
/* Flowchart variables */
/* Sequence Diagram variables */
/* Gantt chart variables */
.mermaid .label {
color: #333;
}
.node rect,
.node circle,
.node ellipse,
.node polygon {
fill: #ECECFF;
stroke: #CCCCFF;
stroke-width: 1px;
}
.edgePath .path {
stroke: #333333;
}
.edgeLabel {
background-color: #e8e8e8;
}
.cluster rect {
fill: #ffffde !important;
rx: 4 !important;
stroke: #aaaa33 !important;
stroke-width: 1px !important;
}
.cluster text {
fill: #333;
}
.actor {
stroke: #CCCCFF;
fill: #ECECFF;
}
text.actor {
fill: black;
stroke: none;
}
.actor-line {
stroke: grey;
}
.messageLine0 {
stroke-width: 1.5;
stroke-dasharray: "2 2";
marker-end: "url(#arrowhead)";
stroke: #333;
}
.messageLine1 {
stroke-width: 1.5;
stroke-dasharray: "2 2";
stroke: #333;
}
#arrowhead {
fill: #333;
}
#crosshead path {
fill: #333 !important;
stroke: #333 !important;
}
.messageText {
fill: #333;
stroke: none;
}
.labelBox {
stroke: #CCCCFF;
fill: #ECECFF;
}
.labelText {
fill: black;
stroke: none;
}
.loopText {
fill: black;
stroke: none;
}
.loopLine {
stroke-width: 2;
stroke-dasharray: "2 2";
marker-end: "url(#arrowhead)";
stroke: #CCCCFF;
}
.note {
stroke: #aaaa33;
fill: #fff5ad;
}
.noteText {
fill: black;
stroke: none;
font-family: 'trebuchet ms', verdana, arial;
font-size: 14px;
}
/** Section styling */
.section {
stroke: none;
opacity: 0.2;
}
.section0 {
fill: rgba(102, 102, 255, 0.49);
}
.section2 {
fill: #fff400;
}
.section1,
.section3 {
fill: white;
opacity: 0.2;
}
.sectionTitle0 {
fill: #333;
}
.sectionTitle1 {
fill: #333;
}
.sectionTitle2 {
fill: #333;
}
.sectionTitle3 {
fill: #333;
}
.sectionTitle {
text-anchor: start;
font-size: 11px;
text-height: 14px;
}
/* Grid and axis */
.grid .tick {
stroke: lightgrey;
opacity: 0.3;
shape-rendering: crispEdges;
}
.grid path {
stroke-width: 0;
}
/* Today line */
.today {
fill: none;
stroke: red;
stroke-width: 2px;
}
/* Task styling */
/* Default task */
.task {
stroke-width: 2;
}
.taskText {
text-anchor: middle;
font-size: 11px;
}
.taskTextOutsideRight {
fill: black;
text-anchor: start;
font-size: 11px;
}
.taskTextOutsideLeft {
fill: black;
text-anchor: end;
font-size: 11px;
}
/* Specific task settings for the sections*/
.taskText0,
.taskText1,
.taskText2,
.taskText3 {
fill: white;
}
.task0,
.task1,
.task2,
.task3 {
fill: #8a90dd;
stroke: #534fbc;
}
.taskTextOutside0,
.taskTextOutside2 {
fill: black;
}
.taskTextOutside1,
.taskTextOutside3 {
fill: black;
}
/* Active task */
.active0,
.active1,
.active2,
.active3 {
fill: #bfc7ff;
stroke: #534fbc;
}
.activeText0,
.activeText1,
.activeText2,
.activeText3 {
fill: black !important;
}
/* Completed task */
.done0,
.done1,
.done2,
.done3 {
stroke: grey;
fill: lightgrey;
stroke-width: 2;
}
.doneText0,
.doneText1,
.doneText2,
.doneText3 {
fill: black !important;
}
/* Tasks on the critical line */
.crit0,
.crit1,
.crit2,
.crit3 {
stroke: #ff8888;
fill: red;
stroke-width: 2;
}
.activeCrit0,
.activeCrit1,
.activeCrit2,
.activeCrit3 {
stroke: #ff8888;
fill: #bfc7ff;
stroke-width: 2;
}
.doneCrit0,
.doneCrit1,
.doneCrit2,
.doneCrit3 {
stroke: #ff8888;
fill: lightgrey;
stroke-width: 2;
cursor: pointer;
shape-rendering: crispEdges;
}
.doneCritText0,
.doneCritText1,
.doneCritText2,
.doneCritText3 {
fill: black !important;
}
.activeCritText0,
.activeCritText1,
.activeCritText2,
.activeCritText3 {
fill: black !important;
}
.titleText {
text-anchor: middle;
font-size: 18px;
fill: black;
}
/*
*/
.node text {
font-family: 'trebuchet ms', verdana, arial;
font-size: 14px;
}
div.mermaidTooltip {
position: absolute;
text-align: center;
max-width: 200px;
padding: 2px;
font-family: 'trebuchet ms', verdana, arial;
font-size: 12px;
background: #ffffde;
border: 1px solid #aaaa33;
border-radius: 2px;
pointer-events: none;
z-index: 100;
}
+275
View File
@@ -0,0 +1,275 @@
/* Flowchart variables */
/* Sequence Diagram variables */
/* Gantt chart variables */
.mermaid .label {
color: #323D47;
}
.node rect,
.node circle,
.node ellipse,
.node polygon {
fill: #BDD5EA;
stroke: #81B1DB;
stroke-width: 1px;
}
.edgePath .path {
stroke: lightgrey;
}
.edgeLabel {
background-color: #e8e8e8;
}
.cluster rect {
fill: #6D6D65 !important;
rx: 4 !important;
stroke: rgba(255, 255, 255, 0.25) !important;
stroke-width: 1px !important;
}
.cluster text {
fill: #F9FFFE;
}
.actor {
stroke: #81B1DB;
fill: #BDD5EA;
}
text.actor {
fill: black;
stroke: none;
}
.actor-line {
stroke: lightgrey;
}
.messageLine0 {
stroke-width: 1.5;
stroke-dasharray: "2 2";
marker-end: "url(#arrowhead)";
stroke: lightgrey;
}
.messageLine1 {
stroke-width: 1.5;
stroke-dasharray: "2 2";
stroke: lightgrey;
}
#arrowhead {
fill: lightgrey !important;
}
#crosshead path {
fill: lightgrey !important;
stroke: lightgrey !important;
}
.messageText {
fill: lightgrey;
stroke: none;
}
.labelBox {
stroke: #81B1DB;
fill: #BDD5EA;
}
.labelText {
fill: #323D47;
stroke: none;
}
.loopText {
fill: lightgrey;
stroke: none;
}
.loopLine {
stroke-width: 2;
stroke-dasharray: "2 2";
marker-end: "url(#arrowhead)";
stroke: #81B1DB;
}
.note {
stroke: rgba(255, 255, 255, 0.25);
fill: #fff5ad;
}
.noteText {
fill: black;
stroke: none;
font-family: 'trebuchet ms', verdana, arial;
font-size: 14px;
}
/** Section styling */
.section {
stroke: none;
opacity: 0.2;
}
.section0 {
fill: rgba(255, 255, 255, 0.3);
}
.section2 {
fill: #EAE8B9;
}
.section1,
.section3 {
fill: white;
opacity: 0.2;
}
.sectionTitle0 {
fill: #F9FFFE;
}
.sectionTitle1 {
fill: #F9FFFE;
}
.sectionTitle2 {
fill: #F9FFFE;
}
.sectionTitle3 {
fill: #F9FFFE;
}
.sectionTitle {
text-anchor: start;
font-size: 11px;
text-height: 14px;
}
/* Grid and axis */
.grid .tick {
stroke: rgba(255, 255, 255, 0.3);
opacity: 0.3;
shape-rendering: crispEdges;
}
.grid .tick text {
fill: lightgrey;
opacity: 0.5;
}
.grid path {
stroke-width: 0;
}
/* Today line */
.today {
fill: none;
stroke: #DB5757;
stroke-width: 2px;
}
/* Task styling */
/* Default task */
.task {
stroke-width: 1;
}
.taskText {
text-anchor: middle;
font-size: 11px;
}
.taskTextOutsideRight {
fill: #323D47;
text-anchor: start;
font-size: 11px;
}
.taskTextOutsideLeft {
fill: #323D47;
text-anchor: end;
font-size: 11px;
}
/* Specific task settings for the sections*/
.taskText0,
.taskText1,
.taskText2,
.taskText3 {
fill: #323D47;
}
.task0,
.task1,
.task2,
.task3 {
fill: #BDD5EA;
stroke: rgba(255, 255, 255, 0.5);
}
.taskTextOutside0,
.taskTextOutside2 {
fill: lightgrey;
}
.taskTextOutside1,
.taskTextOutside3 {
fill: lightgrey;
}
/* Active task */
.active0,
.active1,
.active2,
.active3 {
fill: #81B1DB;
stroke: rgba(255, 255, 255, 0.5);
}
.activeText0,
.activeText1,
.activeText2,
.activeText3 {
fill: #323D47 !important;
}
/* Completed task */
.done0,
.done1,
.done2,
.done3 {
fill: lightgrey;
}
.doneText0,
.doneText1,
.doneText2,
.doneText3 {
fill: #323D47 !important;
}
/* Tasks on the critical line */
.crit0,
.crit1,
.crit2,
.crit3 {
stroke: #E83737;
fill: #E83737;
stroke-width: 2;
}
.activeCrit0,
.activeCrit1,
.activeCrit2,
.activeCrit3 {
stroke: #E83737;
fill: #81B1DB;
stroke-width: 2;
}
.doneCrit0,
.doneCrit1,
.doneCrit2,
.doneCrit3 {
stroke: #E83737;
fill: lightgrey;
stroke-width: 1;
cursor: pointer;
shape-rendering: crispEdges;
}
.doneCritText0,
.doneCritText1,
.doneCritText2,
.doneCritText3 {
fill: lightgrey !important;
}
.activeCritText0,
.activeCritText1,
.activeCritText2,
.activeCritText3 {
fill: #323D47 !important;
}
.titleText {
text-anchor: middle;
font-size: 18px;
fill: lightgrey;
}
/*
*/
.node text {
font-family: 'trebuchet ms', verdana, arial;
font-size: 14px;
}
div.mermaidTooltip {
position: absolute;
text-align: center;
max-width: 200px;
padding: 2px;
font-family: 'trebuchet ms', verdana, arial;
font-size: 12px;
background: #6D6D65;
border: 1px solid rgba(255, 255, 255, 0.25);
border-radius: 2px;
pointer-events: none;
z-index: 100;
}
+353
View File
@@ -0,0 +1,353 @@
/* Flowchart variables */
/* Sequence Diagram variables */
/* Gantt chart variables */
.mermaid .label {
font-family: 'trebuchet ms', verdana, arial;
color: #333;
}
.node rect,
.node circle,
.node ellipse,
.node polygon {
fill: #cde498;
stroke: #13540c;
stroke-width: 1px;
}
.edgePath .path {
stroke: green;
stroke-width: 1.5px;
}
.edgeLabel {
background-color: #e8e8e8;
}
.cluster rect {
fill: #cdffb2 !important;
rx: 4 !important;
stroke: #6eaa49 !important;
stroke-width: 1px !important;
}
.cluster text {
fill: #333;
}
.actor {
stroke: #13540c;
fill: #cde498;
}
text.actor {
fill: black;
stroke: none;
}
.actor-line {
stroke: grey;
}
.messageLine0 {
stroke-width: 1.5;
stroke-dasharray: "2 2";
marker-end: "url(#arrowhead)";
stroke: #333;
}
.messageLine1 {
stroke-width: 1.5;
stroke-dasharray: "2 2";
stroke: #333;
}
#arrowhead {
fill: #333;
}
#crosshead path {
fill: #333 !important;
stroke: #333 !important;
}
.messageText {
fill: #333;
stroke: none;
}
.labelBox {
stroke: #326932;
fill: #cde498;
}
.labelText {
fill: black;
stroke: none;
}
.loopText {
fill: black;
stroke: none;
}
.loopLine {
stroke-width: 2;
stroke-dasharray: "2 2";
marker-end: "url(#arrowhead)";
stroke: #326932;
}
.note {
stroke: #6eaa49;
fill: #fff5ad;
}
.noteText {
fill: black;
stroke: none;
font-family: 'trebuchet ms', verdana, arial;
font-size: 14px;
}
/** Section styling */
.section {
stroke: none;
opacity: 0.2;
}
.section0 {
fill: #6eaa49;
}
.section2 {
fill: #6eaa49;
}
.section1,
.section3 {
fill: white;
opacity: 0.2;
}
.sectionTitle0 {
fill: #333;
}
.sectionTitle1 {
fill: #333;
}
.sectionTitle2 {
fill: #333;
}
.sectionTitle3 {
fill: #333;
}
.sectionTitle {
text-anchor: start;
font-size: 11px;
text-height: 14px;
}
/* Grid and axis */
.grid .tick {
stroke: lightgrey;
opacity: 0.3;
shape-rendering: crispEdges;
}
.grid path {
stroke-width: 0;
}
/* Today line */
.today {
fill: none;
stroke: red;
stroke-width: 2px;
}
/* Task styling */
/* Default task */
.task {
stroke-width: 2;
}
.taskText {
text-anchor: middle;
font-size: 11px;
}
.taskTextOutsideRight {
fill: black;
text-anchor: start;
font-size: 11px;
}
.taskTextOutsideLeft {
fill: black;
text-anchor: end;
font-size: 11px;
}
/* Specific task settings for the sections*/
.taskText0,
.taskText1,
.taskText2,
.taskText3 {
fill: white;
}
.task0,
.task1,
.task2,
.task3 {
fill: #487e3a;
stroke: #13540c;
}
.taskTextOutside0,
.taskTextOutside2 {
fill: black;
}
.taskTextOutside1,
.taskTextOutside3 {
fill: black;
}
/* Active task */
.active0,
.active1,
.active2,
.active3 {
fill: #cde498;
stroke: #13540c;
}
.activeText0,
.activeText1,
.activeText2,
.activeText3 {
fill: black !important;
}
/* Completed task */
.done0,
.done1,
.done2,
.done3 {
stroke: grey;
fill: lightgrey;
stroke-width: 2;
}
.doneText0,
.doneText1,
.doneText2,
.doneText3 {
fill: black !important;
}
/* Tasks on the critical line */
.crit0,
.crit1,
.crit2,
.crit3 {
stroke: #ff8888;
fill: red;
stroke-width: 2;
}
.activeCrit0,
.activeCrit1,
.activeCrit2,
.activeCrit3 {
stroke: #ff8888;
fill: #cde498;
stroke-width: 2;
}
.doneCrit0,
.doneCrit1,
.doneCrit2,
.doneCrit3 {
stroke: #ff8888;
fill: lightgrey;
stroke-width: 2;
cursor: pointer;
shape-rendering: crispEdges;
}
.doneCritText0,
.doneCritText1,
.doneCritText2,
.doneCritText3 {
fill: black !important;
}
.activeCritText0,
.activeCritText1,
.activeCritText2,
.activeCritText3 {
fill: black !important;
}
.titleText {
text-anchor: middle;
font-size: 18px;
fill: black;
}
/*
*/
g.classGroup text {
fill: #13540c;
stroke: none;
font-family: 'trebuchet ms', verdana, arial;
font-size: 14px;
}
g.classGroup rect {
fill: #cde498;
stroke: #13540c;
}
g.classGroup line {
stroke: #13540c;
stroke-width: 1;
}
svg .classLabel .box {
stroke: none;
stroke-width: 0;
fill: #cde498;
opacity: 0.5;
}
svg .classLabel .label {
fill: #13540c;
}
.relation {
stroke: #13540c;
stroke-width: 1;
fill: none;
}
.composition {
fill: #13540c;
stroke: #13540c;
stroke-width: 1;
}
#compositionStart {
fill: #13540c;
stroke: #13540c;
stroke-width: 1;
}
#compositionEnd {
fill: #13540c;
stroke: #13540c;
stroke-width: 1;
}
.aggregation {
fill: #cde498;
stroke: #13540c;
stroke-width: 1;
}
#aggregationStart {
fill: #cde498;
stroke: #13540c;
stroke-width: 1;
}
#aggregationEnd {
fill: #cde498;
stroke: #13540c;
stroke-width: 1;
}
#dependencyStart {
fill: #13540c;
stroke: #13540c;
stroke-width: 1;
}
#dependencyEnd {
fill: #13540c;
stroke: #13540c;
stroke-width: 1;
}
#extensionStart {
fill: #13540c;
stroke: #13540c;
stroke-width: 1;
}
#extensionEnd {
fill: #13540c;
stroke: #13540c;
stroke-width: 1;
}
.node text {
font-family: 'trebuchet ms', verdana, arial;
font-size: 14px;
}
div.mermaidTooltip {
position: absolute;
text-align: center;
max-width: 200px;
padding: 2px;
font-family: 'trebuchet ms', verdana, arial;
font-size: 12px;
background: #cdffb2;
border: 1px solid #6eaa49;
border-radius: 2px;
pointer-events: none;
z-index: 100;
}
File diff suppressed because one or more lines are too long
+24
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+22
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+4 -1
View File
@@ -17,6 +17,7 @@ $(function () {
fileUploadURL: window.fileUploadURL, fileUploadURL: window.fileUploadURL,
taskList: true, taskList: true,
flowChart: true, flowChart: true,
mermaid: true,
htmlDecode: "style,script,iframe,title,onmouseover,onmouseout,style", htmlDecode: "style,script,iframe,title,onmouseover,onmouseout,style",
lineNumbers: false, lineNumbers: false,
sequenceDiagram: true, sequenceDiagram: true,
@@ -54,6 +55,9 @@ $(function () {
} }
} }
}); });
window.isLoad = true;
this.insertValue($("#blogRawMarkdown").html());
this.setCursor({ line: 0, ch: 0 });
}, },
onchange: function () { onchange: function () {
resetEditorChanged(true); resetEditorChanged(true);
@@ -117,7 +121,6 @@ $(function () {
if ($res.errcode === 0) { if ($res.errcode === 0) {
resetEditorChanged(false); resetEditorChanged(false);
window.blogVersion = $res.data.version; window.blogVersion = $res.data.version;
console.log(window.blogVersion);
} else if($res.errcode === 6005) { } else if($res.errcode === 6005) {
var confirmIndex = layer.confirm('文档已被其他人修改确定覆盖已存在的文档吗', { var confirmIndex = layer.confirm('文档已被其他人修改确定覆盖已存在的文档吗', {
btn: ['确定', '取消'] // 按钮 btn: ['确定', '取消'] // 按钮
+2 -7
View File
@@ -29,12 +29,6 @@
<link href="{{cdncss "/static/webuploader/webuploader.css"}}" rel="stylesheet"> <link href="{{cdncss "/static/webuploader/webuploader.css"}}" rel="stylesheet">
<link href="{{cdncss "/static/css/markdown.css" "version"}}" rel="stylesheet"> <link href="{{cdncss "/static/css/markdown.css" "version"}}" rel="stylesheet">
<link href="{{cdncss "/static/css/markdown.preview.css" "version"}}" rel="stylesheet"> <link href="{{cdncss "/static/css/markdown.preview.css" "version"}}" rel="stylesheet">
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="/static/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="/static/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head> </head>
<body> <body>
@@ -97,7 +91,7 @@
<div class="manual-body"> <div class="manual-body">
<div class="manual-editor-container" id="manualEditorContainer" style="min-width: 920px;left: 0;"> <div class="manual-editor-container" id="manualEditorContainer" style="min-width: 920px;left: 0;">
<div class="manual-editormd"> <div class="manual-editormd">
<div id="docEditor" class="manual-editormd-active"><textarea style="display:none;">{{.Model.BlogContent}}</textarea></div> <div id="docEditor" class="manual-editormd-active"></div>
</div> </div>
<div class="manual-editor-status"> <div class="manual-editor-status">
<div id="attachInfo" class="item">0 个附件</div> <div id="attachInfo" class="item">0 个附件</div>
@@ -106,6 +100,7 @@
</div> </div>
</div> </div>
<script type="text/x-markdown" id="blogRawMarkdown">{{.Model.BlogContent}}</script>
<!-- Modal --> <!-- Modal -->
<div class="modal fade" id="uploadAttachModal" tabindex="-1" role="dialog" aria-labelledby="uploadAttachModalLabel"> <div class="modal fade" id="uploadAttachModal" tabindex="-1" role="dialog" aria-labelledby="uploadAttachModalLabel">