From: Benjamin Auder Date: Fri, 2 Feb 2018 17:21:00 +0000 (+0100) Subject: Fix typos, debugging X-Git-Url: https://git.auder.net/doc/html/pieces/%7B%7B%20asset%28%27mixstore/images/mini-custom.min.css?a=commitdiff_plain;h=20bccb5369dd9394e47a92664339d405664274c7;p=erdiag.git Fix typos, debugging --- diff --git a/example.html b/example.html index dcb2fcd..d5a27ac 100644 --- a/example.html +++ b/example.html @@ -1,4 +1,5 @@ -
+
+
@@ -30,5 +31,6 @@ is_a Instrument Piano Guitar `); - er.drawMcd("test"); + er.drawMcd("mcd"); //,"bubble" + er.drawMld("mld"); diff --git a/parser.js b/parser.js index f718f31..db70f7f 100644 --- a/parser.js +++ b/parser.js @@ -9,6 +9,9 @@ class ErDiags this.tables = { }; this.mcdParsing(description); this.mldParsing(); + + console.log(this.tables); + // Cache SVG graphs returned by server (in addition to server cache = good perfs) this.mcdGraph = ""; this.mldGraph = ""; @@ -192,7 +195,7 @@ class ErDiags isKey: e.card.length >= 2 && e.card[1] == 'R', //"weak tables" foreign keys become part of the key name: "#" + e2.name + "_" + attr.name, type: attr.type, - qualifiers: "foreign key references " + e2.name + " " + (e.card[0]=='1' : "not null" : ""), + qualifiers: "foreign key references " + e2.name + " " + (e.card[0]=='1' ? "not null" : ""), ref: e2.name, //easier drawMld function (fewer regexps) }); } @@ -202,18 +205,18 @@ class ErDiags else { // Add all keys in current entity - let fields = e.attributes.filter( attr => { return attr.isKey; }); + let fields = this.entities[e.name].attributes.filter( attr => { return attr.isKey; }); newTableAttrs.push({ fields: fields, entity: e.name, }); } - } + }); if (newTableAttrs.length > 1) { // Ok, really create a new table let newTable = { - name: a.name || newTableAttrs.map( item => { return item.entity; }).join("_"); + name: a.name || newTableAttrs.map( item => { return item.entity; }).join("_"), fields: [ ], }; newTableAttrs.forEach( item => { @@ -221,7 +224,7 @@ class ErDiags newTable.fields.push({ name: item.entity + "_" + f.name, isKey: true, - type: f.type,, + type: f.type, qualifiers: (f.qualifiers+" " || "") + "foreign key references " + item.entity + " not null", ref: item.entity, }); @@ -404,14 +407,14 @@ class ErDiags _.shuffle(Object.keys(this.tables)).forEach( name => { mldDot += '"' + name + '" [label=<\n'; mldDot += '\n'; - this.tables[name].fields.forEach( f => { + this.tables[name].forEach( f => { let label = (f.isKey ? '' : '') + (!!f.qualifiers && f.qualifiers.indexOf("foreign")>=0 ? '#' : '') + f.name + (f.isKey ? '' : ''); mldDot += '\n'; if (!!f.ref) { if (Math.random() < 0.5) - links += '"' + f.ref + '":__key -- "' + '"'+name+'":"'+f.name+'"\n'; + links += '"' + f.ref + '":__key -- "' + name+'":"'+f.name+'"\n'; else links += '"'+name+'":"'+f.name+'" -- "' + f.ref + '":__key\n'; } @@ -420,7 +423,7 @@ class ErDiags }); mldDot += links + '\n'; mldDot += '}\n'; - //console.log(mldDot); + console.log(mldDot); ErDiags.AjaxGet(mldDot, graphSvg => { this.mldGraph = graphSvg; element.innerHTML = graphSvg; diff --git a/tata b/tata new file mode 100644 index 0000000..105a26e --- /dev/null +++ b/tata @@ -0,0 +1,32 @@ +graph { +node [shape=plaintext]; +"Instrument" [label=<
' + name + '
' + label + '
+ + + +
Instrument
name
family
>]; +"Piano" [label=< + + +
Piano
type
>]; +"Guitar" [label=< + + +
Guitar
type
>]; +"Play" [label=< + + + + +
Play
#Musician_id
#Instrument_name
event
>]; +"Musician" [label=< + + + + + +
Musician
id
name
band
role
>]; +"Play":"Musician_id" -- "Musician":__key +"Instrument":__key -- ""Play":"Instrument_name" + +}