timeline.js/timeline.min.js

1 line
11 KiB
JavaScript
Raw Normal View History

var SVG={};SVG.ns="http://www.w3.org/2000/svg";SVG.xlinkns="http://www.w3.org/1999/xlink";SVG.marginBottom=10;SVG.marginTop=15;SVG.marginLeft=10;SVG.marginRight=10;SVG.rounded=false;SVG.x_axis=false;SVG.parent_holder=false;SVG.holder=false;SVG.g=false;SVG.axis=false;SVG.raw_points=[];SVG.labels=[];SVG.init=function(f,v,g,e,u,j){if(!document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image","1.1")){alert("Your browser does not support embedded SVG.")}SVG.parent_holder=document.getElementById(f);var s=document.createElementNS(SVG.ns,"svg:svg");s.setAttribute("width",g);s.setAttribute("height",v);s.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",SVG.xlinkns);SVG.parent_holder.appendChild(s);SVG.holder=SVG.parent_holder.querySelector("svg");var o=document.createElementNS(SVG.ns,"defs");SVG.holder.appendChild(o);if(e==="small"||e==="both"){var t=document.createElementNS(SVG.ns,"pattern");t.setAttribute("id","smallGrid");t.setAttribute("width",8);t.setAttribute("height",8);t.setAttribute("patternUnits","userSpaceOnUse");var l=document.createElementNS(SVG.ns,"path");l.setAttribute("d","M 8 0 L 0 0 0 8");l.setAttribute("fill","none");l.setAttribute("stroke","gray");l.setAttribute("stroke-width","0.5");t.appendChild(l);o.appendChild(t)}if(e==="big"||e==="both"){var k=document.createElementNS(SVG.ns,"pattern");k.setAttribute("id","grid");k.setAttribute("width",80);k.setAttribute("height",80);k.setAttribute("patternUnits","userSpaceOnUse");if(e==="both"){var h=document.createElementNS(SVG.ns,"rect");h.setAttribute("width",80);h.setAttribute("height",80);h.setAttribute("fill","url(#smallGrid)");k.appendChild(h)}var q=document.createElementNS(SVG.ns,"path");q.setAttribute("d","M 80 0 L 0 0 0 80");q.setAttribute("fill","none");q.setAttribute("stroke","gray");q.setAttribute("stroke-width","1");k.appendChild(q);o.appendChild(k)}SVG.grid=e;var p=document.createElementNS(SVG.ns,"marker");p.setAttribute("id","markerArrow");p.setAttribute("markerWidth",13);p.setAttribute("markerHeight",13);p.setAttribute("refX",2);p.setAttribute("refY",6);p.setAttribute("orient","auto");var d=document.createElementNS(SVG.ns,"path");d.setAttribute("d","M2,2 L2,11 L10,6 L2,2");d.setAttribute("fill","gray");p.appendChild(d);o.appendChild(p);SVG.g=document.createElementNS(SVG.ns,"g");SVG.g.setAttribute("transform","translate(0, "+SVG.parent_holder.offsetHeight+") scale(1, -1)");SVG.holder.appendChild(SVG.g);if(u===true){SVG.axis=document.createElementNS(SVG.ns,"line");SVG.axis.setAttribute("x1",SVG.marginLeft);SVG.axis.setAttribute("x2",SVG.parent_holder.offsetWidth-13-SVG.marginRight);SVG.axis.setAttribute("stroke","gray");SVG.axis.setAttribute("stroke-width",3);SVG.axis.setAttribute("marker-end",'url("#markerArrow")');SVG.g.appendChild(SVG.axis)}if(SVG.grid!=="none"){var e=document.createElementNS(SVG.ns,"rect");e.setAttribute("width","100%");e.setAttribute("height","100%");if(SVG.grid==="big"||SVG.grid==="both"){e.setAttribute("fill","url(#grid)")}else{e.setAttribute("fill","url(#smallGrid)")}SVG.g.appendChild(e)}SVG.rounded=j;SVG.x_axis=u};SVG.newCoordinates=function(h,f,d,g,j){var e=(j-g)/(d-f);return e*h-e*f+g};SVG.scale=function(k){var h=false,g=0;var e=false,d=false;var p=0,o=0;var f=false,l=false,q=false;for(point=0;point<k.length;point++){p=k[point][0];o=k[point][1];if(p<h||h===false){h=p}if(p>e||e===false){e=p}if(o<g){g=o}if(o>d||d===false){d=o}}o=SVG.newCoordinates(g+Math.pow(10,Math.floor(Math.log(d-g)/Math.log(10))),g,d,2*SVG.marginBottom,SVG.parent_holder.offsetHeight-SVG.marginTop)-SVG.newCoordinates(g,g,d,2*SVG.marginBottom,SVG.parent_holder.offsetHeight-SVG.marginTop);if(SVG.grid==="big"||SVG.grid==="both"){SVG.holder.getElementById("grid").setAttribute("width",o);SVG.holder.getElementById("grid").setAttribute("height",o);SVG.holder.getElementById("grid").setAttribute("y",SVG.newCoordinates(Math.floor(g/Math.pow(10,Math.floor(Math.log(d-g)/Math.log(10))))*Math.pow(10,Math.floor(Math.log(d-g)/Math.log(10))),g,d,2*SVG.marginBottom,SVG.parent_holder.offsetHeight-SVG.marginTop));SVG.holder.getElementById("grid").qu