Option to show dot input without running graphviz
authorBenjamin Auder <benjamin.auder@somewhere>
Wed, 7 Feb 2018 01:16:06 +0000 (02:16 +0100)
committerBenjamin Auder <benjamin.auder@somewhere>
Wed, 7 Feb 2018 01:16:06 +0000 (02:16 +0100)
TODO [deleted file]
parser.js

diff --git a/TODO b/TODO
deleted file mode 100644 (file)
index eda158d..0000000
--- a/TODO
+++ /dev/null
@@ -1 +0,0 @@
-Fix bug 1,1 -- 1,n --> attribute type when creating foreign key
index 5ef2b3f..eeafa08 100644 (file)
--- a/parser.js
+++ b/parser.js
@@ -1,7 +1,7 @@
 // ER diagram description parser
 class ErDiags
 {
 // ER diagram description parser
 class ErDiags
 {
-       constructor(description)
+       constructor(description, callDot)
        {
                this.entities = { };
                this.inheritances = [ ];
        {
                this.entities = { };
                this.inheritances = [ ];
@@ -9,9 +9,13 @@ class ErDiags
                this.tables = { };
                this.mcdParsing(description);
                this.mldParsing();
                this.tables = { };
                this.mcdParsing(description);
                this.mldParsing();
-               // Cache SVG graphs returned by server (in addition to server cache = good perfs)
-               this.mcdGraph = "";
-               this.mldGraph = "";
+               this.callDot = !!callDot;
+               if (this.callDot)
+               {
+                       // Cache SVG graphs returned by server (in addition to server cache = good perfs)
+                       this.mcdGraph = "";
+                       this.mldGraph = "";
+               }
                this.sqlText = "";
        }
 
                this.sqlText = "";
        }
 
@@ -302,7 +306,7 @@ class ErDiags
        {
                let element = document.getElementById(id);
                mcdStyle = mcdStyle || "compact";
        {
                let element = document.getElementById(id);
                mcdStyle = mcdStyle || "compact";
-               if (this.mcdGraph.length > 0)
+               if (!!this.mcdGraph)
                {
                        element.innerHTML = this.mcdGraph;
                        return;
                {
                        element.innerHTML = this.mcdGraph;
                        return;
@@ -420,19 +424,23 @@ class ErDiags
                        });
                });
                mcdDot += '}';
                        });
                });
                mcdDot += '}';
-               //console.log(mcdDot);
-               ErDiags.AjaxGet(mcdDot, graphSvg => {
-                       this.mcdGraph = graphSvg;
-                       element.innerHTML = graphSvg;
-               });
+               if (this.callDot)
+               {
+                       // Draw graph in element
+                       ErDiags.AjaxGet(mcdDot, graphSvg => {
+                               this.mcdGraph = graphSvg;
+                               element.innerHTML = graphSvg;
+                       });
+               }
+               else //just show dot input
+                       element.innerHTML = mcdDot.replace(/</g,"&lt;").replace(/>/g,"&gt;");
        }
 
        // "Modèle logique des données", from MCD without anomalies
        }
 
        // "Modèle logique des données", from MCD without anomalies
-       // TODO: this one should draw links from foreign keys to keys (port=... in <TD>)
        drawMld(id)
        {
                let element = document.getElementById(id);
        drawMld(id)
        {
                let element = document.getElementById(id);
-               if (this.mldGraph.length > 0)
+               if (!!this.mldGraph)
                {
                        element.innerHTML = this.mcdGraph;
                        return;
                {
                        element.innerHTML = this.mcdGraph;
                        return;
@@ -461,18 +469,22 @@ class ErDiags
                        mldDot += '</table>>];\n';
                });
                mldDot += links + '\n';
                        mldDot += '</table>>];\n';
                });
                mldDot += links + '\n';
-               mldDot += '}\n';
-               //console.log(mldDot);
-               ErDiags.AjaxGet(mldDot, graphSvg => {
-                       this.mldGraph = graphSvg;
-                       element.innerHTML = graphSvg;
-               });
+               mldDot += '}';
+               if (this.callDot)
+               {
+                       ErDiags.AjaxGet(mldDot, graphSvg => {
+                               this.mldGraph = graphSvg;
+                               element.innerHTML = graphSvg;
+                       });
+               }
+               else
+                       element.innerHTML = mldDot.replace(/</g,"&lt;").replace(/>/g,"&gt;");
        }
 
        fillSql(id)
        {
                let element = document.getElementById(id);
        }
 
        fillSql(id)
        {
                let element = document.getElementById(id);
-               if (this.sqlText.length > 0)
+               if (!!this.sqlText)
                {
                        element.innerHTML = this.sqlText;
                        return;
                {
                        element.innerHTML = this.sqlText;
                        return;
@@ -499,7 +511,6 @@ class ErDiags
                        });
                        sqlText += "\n);\n";
                });
                        });
                        sqlText += "\n);\n";
                });
-               //console.log(sqlText);
                this.sqlText = sqlText;
                element.innerHTML = "<pre><code>" + sqlText + "</code></pre>";
        }
                this.sqlText = sqlText;
                element.innerHTML = "<pre><code>" + sqlText + "</code></pre>";
        }