13.8.5 release

This commit is contained in:
David Benson [draw.io] 2020-10-27 15:03:05 +00:00
parent e8ae557a1d
commit f6cde529b5
16 changed files with 4033 additions and 3106 deletions

View file

@ -1,9 +1,16 @@
26-OCT_2020: 13.8.3 27-OCT-2020: 13.8.5
- Fixes possible NPE in Confluence Cloud
27-OCT-2020: 13.8.4
- Performance improvements for Confluence Cloud
26-OCT-2020: 13.8.3
- Gliffy import improvements - Gliffy import improvements
- Updates Spanish translations - Updates Spanish translations
24-OCT-2020: 13.8.2 24-OCT-2020: 13.8.2
- Lucidchart import improvements - Lucidchart import improvements

View file

@ -1 +1 @@
13.8.3 13.8.5

View file

@ -246,15 +246,33 @@
<filelist dir="${basedir}" files="base-viewer.min.js,.tmp2.min.js"/> <filelist dir="${basedir}" files="base-viewer.min.js,.tmp2.min.js"/>
</concat> </concat>
<!-- Disables eval for JS (uses shapes.min.js) --> <!-- Disables eval for JS (uses shapes.min.js) and registers PWA -->
<echo file="${basedir}/.tmp3.js"> <echo file="${basedir}/.tmp3.js">
mxStencilRegistry.allowEval = false; mxStencilRegistry.allowEval = false;
(function()
{
try
{
if (Editor.enableServiceWorker)
{
navigator.serviceWorker.register('/service-worker.js');
}
}
catch (e)
{
if (window.console != null)
{
console.error(e);
}
}
})();
</echo> </echo>
<concat destfile="${war.dir}/js/viewer-static.min.js" fixlastline="yes" append="no"> <concat destfile="${war.dir}/js/viewer-static.min.js" fixlastline="yes" append="no">
<filelist dir="${basedir}" files="base-viewer.min.js"/> <filelist dir="${basedir}" files="base-viewer.min.js"/>
<filelist dir="${war.dir}/js" files="shapes.min.js"/> <filelist dir="${war.dir}/js" files="shapes.min.js"/>
<filelist dir="${basedir}" files=".tmp3.js,.tmp2.min.js"/> <filelist dir="${basedir}" files=".tmp3.js,.tmp2.min.js"/>
</concat> </concat>
<delete file="${war.dir}/js/extensions.min.js"/> <delete file="${war.dir}/js/extensions.min.js"/>

File diff suppressed because one or more lines are too long

View file

@ -616,8 +616,7 @@ App.main = function(callback, createUi)
// Runs as progressive web app if service workers are supported // Runs as progressive web app if service workers are supported
try try
{ {
if ('serviceWorker' in navigator && (/.*\.diagrams\.net$/.test(window.location.hostname) || if (Editor.enableServiceWorker)
/.*\.draw\.io$/.test(window.location.hostname) || urlParams['offline'] == '1'))
{ {
// Removes PWA cache on www.draw.io to force use of new domain via redirect // Removes PWA cache on www.draw.io to force use of new domain via redirect
if (urlParams['offline'] == '0' || /www\.draw\.io$/.test(window.location.hostname) || if (urlParams['offline'] == '0' || /www\.draw\.io$/.test(window.location.hostname) ||
@ -625,22 +624,25 @@ App.main = function(callback, createUi)
{ {
navigator.serviceWorker.getRegistrations().then(function(registrations) navigator.serviceWorker.getRegistrations().then(function(registrations)
{ {
for(var i = 0; i < registrations.length; i++) if (registrations != null && registrations.length > 0)
{ {
registrations[i].unregister(); for (var i = 0; i < registrations.length; i++)
{
registrations[i].unregister();
}
if (urlParams['offline'] == '0')
{
alert('Cache cleared');
}
} }
}); });
} }
else else
{ {
App.loadScripts(['js/shapes.min.js', 'js/stencils.min.js', 'js/extensions.min.js']);
mxStencilRegistry.allowEval = false; mxStencilRegistry.allowEval = false;
navigator.serviceWorker.register('/service-worker.js');
// Use the window load event to keep the page load performant App.loadScripts(['js/shapes.min.js', 'js/stencils.min.js', 'js/extensions.min.js']);
window.addEventListener('load', function()
{
navigator.serviceWorker.register('/service-worker.js');
});
} }
} }
} }

View file

@ -207,6 +207,14 @@
* Specifies if custom properties should be enabled. * Specifies if custom properties should be enabled.
*/ */
Editor.enableCustomProperties = true; Editor.enableCustomProperties = true;
/**
* Specifies if custom properties should be enabled.
*/
Editor.enableServiceWorker = urlParams['pwa'] != '0' &&
'serviceWorker' in navigator && (urlParams['offline'] == '1' ||
/.*\.diagrams\.net$/.test(window.location.hostname) ||
/.*\.draw\.io$/.test(window.location.hostname));
/** /**
* Specifies if XML files should be compressed. Default is true. * Specifies if XML files should be compressed. Default is true.
@ -834,7 +842,7 @@
} }
else else
{ {
style.fill == ''; style.fill = '';
} }
// Applies cell style // Applies cell style
@ -2288,7 +2296,6 @@
{ {
var s = document.createElement('script'); var s = document.createElement('script');
s.setAttribute('type', 'text/javascript'); s.setAttribute('type', 'text/javascript');
s.setAttribute('defer', 'true');
s.setAttribute('src', src); s.setAttribute('src', src);
tags[0].parentNode.appendChild(s); tags[0].parentNode.appendChild(s);

View file

@ -7709,7 +7709,22 @@
{ {
window.openNew = false; window.openNew = false;
window.openKey = 'import'; window.openKey = 'import';
window.listBrowserFiles = mxUtils.bind(this, function(success, error)
{
StorageFile.listFiles(this, 'F', success, error);
});
window.openBrowserFile = mxUtils.bind(this, function(title, success, error)
{
StorageFile.getFileContent(this, title, success, error);
});
window.deleteBrowserFile = mxUtils.bind(this, function(title, success, error)
{
StorageFile.deleteFile(this, title, success, error);
});
if (!noSplash) if (!noSplash)
{ {
var prevValue = Editor.useLocalStorage; var prevValue = Editor.useLocalStorage;
@ -7741,7 +7756,8 @@
})); }));
// Removes openFile if dialog is closed // Removes openFile if dialog is closed
this.showDialog(new OpenDialog(this).container, 360, 220, true, true, function() this.showDialog(new OpenDialog(this).container, (Editor.useLocalStorage) ? 640 : 360,
(Editor.useLocalStorage) ? 480 : 220, true, true, function()
{ {
window.openFile = null; window.openFile = null;
}); });
@ -7765,8 +7781,10 @@
} }
} }
}; };
/**
* Imports the given zip file.
*/
EditorUi.prototype.importZipFile = function(file, success, onerror) EditorUi.prototype.importZipFile = function(file, success, onerror)
{ {
var ui = this; var ui = this;

View file

@ -141,9 +141,9 @@ StorageFile.insertFile = function(ui, title, data, success, error)
} }
}); });
StorageFile.getFileContent(ui, title, function() StorageFile.getFileContent(ui, title, function(data)
{ {
createStorageFile(true); createStorageFile(data != null);
}, function() }, function()
{ {
createStorageFile(false); createStorageFile(false);

View file

@ -283,11 +283,11 @@ R(h,e,v);v.style="group;"+ub;if(null!=h.Stencil){null==h.Stencil.id&&(h.Stencil.
(cb.LineWidth=h.LineWidth);P.style+=c(P.style,cb,e,P,y);var H=h.FillColor,Ve=h.LineColor,We=h.LineWidth;h.FillColor=null;h.LineColor=null;h.LineWidth=null;P.style+=c(P.style,h,e,P,y);h.FillColor=H;h.LineColor=Ve;h.LineWidth=We;P.vertex=!0;P.geometry.relative=!0;v.insert(P)}for(var Gb=0,ub=h.Rotation;h["t"+Gb];){var qe=h["t"+Gb],re=g(qe);if(re){var Ia=new mxCell(re,new mxGeometry(0,0,t,r),"strokeColor=none;fillColor=none;overflow=visible;");h.Rotation=0;Ia.style+=c(Ia.style,qe,e,Ia,y);Ia.style+=c(Ia.style, (cb.LineWidth=h.LineWidth);P.style+=c(P.style,cb,e,P,y);var H=h.FillColor,Ve=h.LineColor,We=h.LineWidth;h.FillColor=null;h.LineColor=null;h.LineWidth=null;P.style+=c(P.style,h,e,P,y);h.FillColor=H;h.LineColor=Ve;h.LineWidth=We;P.vertex=!0;P.geometry.relative=!0;v.insert(P)}for(var Gb=0,ub=h.Rotation;h["t"+Gb];){var qe=h["t"+Gb],re=g(qe);if(re){var Ia=new mxCell(re,new mxGeometry(0,0,t,r),"strokeColor=none;fillColor=none;overflow=visible;");h.Rotation=0;Ia.style+=c(Ia.style,qe,e,Ia,y);Ia.style+=c(Ia.style,
h,e,Ia,y);h.Rotation=ub;if(null!=dc.text&&null!=dc.text["t"+Gb]){var sa=dc.text["t"+Gb];sa.Rotation=ub+(sa.rotation?sa.rotation:0)+(h["t"+Gb+"_TRotation"]?h["t"+Gb+"_TRotation"]:0)+(h["t"+Gb+"_TAngle"]?h["t"+Gb+"_TAngle"]:0);Ia.style+=c(Ia.style,sa,e,Ia,y);var db=Ia.geometry;sa.w&&(db.width*=sa.w);sa.h&&(db.height*=sa.h);sa.x&&(db.x=sa.x/dc.w);sa.y&&(db.y=sa.y/dc.h);sa.fw&&(db.width*=.6*sa.fw/t);sa.fh&&(db.height*=.6*sa.fh/r);sa.fx&&(db.x=(0<sa.fx?1:0)+.6*sa.fx/t);sa.fy&&(db.y=(0<sa.fy?1:0)+.6*sa.fy/ h,e,Ia,y);h.Rotation=ub;if(null!=dc.text&&null!=dc.text["t"+Gb]){var sa=dc.text["t"+Gb];sa.Rotation=ub+(sa.rotation?sa.rotation:0)+(h["t"+Gb+"_TRotation"]?h["t"+Gb+"_TRotation"]:0)+(h["t"+Gb+"_TAngle"]?h["t"+Gb+"_TAngle"]:0);Ia.style+=c(Ia.style,sa,e,Ia,y);var db=Ia.geometry;sa.w&&(db.width*=sa.w);sa.h&&(db.height*=sa.h);sa.x&&(db.x=sa.x/dc.w);sa.y&&(db.y=sa.y/dc.h);sa.fw&&(db.width*=.6*sa.fw/t);sa.fh&&(db.height*=.6*sa.fh/r);sa.fx&&(db.x=(0<sa.fx?1:0)+.6*sa.fx/t);sa.fy&&(db.y=(0<sa.fy?1:0)+.6*sa.fy/
r)}Ia.vertex=!0;Ia.geometry.relative=!0;v.insert(Ia)}Gb++}}if(h.FillColor&&h.FillColor.url){var Vc=new mxCell("",new mxGeometry(0,0,t,r),"shape=image;html=1;");Vc.style+=ec({},{},h.FillColor.url);Vc.vertex=!0;Vc.geometry.relative=!0;v.insert(Vc)}}catch(Vb){console.log("Freehand error",Vb)}break;case "RightArrowBlock":var Jd=h.Head*r/t;v.style="shape=singleArrow;arrowWidth="+(1-2*h.Notch)+";arrowSize="+Jd;v.value=g(h);v.style+=c(v.style,h,e,v,y);break;case "DoubleArrowBlock":Jd=h.Head*r/t,v.style= r)}Ia.vertex=!0;Ia.geometry.relative=!0;v.insert(Ia)}Gb++}}if(h.FillColor&&h.FillColor.url){var Vc=new mxCell("",new mxGeometry(0,0,t,r),"shape=image;html=1;");Vc.style+=ec({},{},h.FillColor.url);Vc.vertex=!0;Vc.geometry.relative=!0;v.insert(Vc)}}catch(Vb){console.log("Freehand error",Vb)}break;case "RightArrowBlock":var Jd=h.Head*r/t;v.style="shape=singleArrow;arrowWidth="+(1-2*h.Notch)+";arrowSize="+Jd;v.value=g(h);v.style+=c(v.style,h,e,v,y);break;case "DoubleArrowBlock":Jd=h.Head*r/t,v.style=
"shape=doubleArrow;arrowWidth="+(1-2*h.Notch)+";arrowSize="+Jd,v.value=g(h),v.style+=c(v.style,h,e,v,y)}v.style&&0>v.style.indexOf("html")&&(v.style+="html=1;");if(h.Title&&h.Text)try{var se=v.geometry,te=new mxCell(g(h.Title),new mxGeometry(0,se.height,se.width,10),"strokeColor=none;fillColor=none;");te.vertex=!0;v.insert(te);v.style+=m(h.Title,y)}catch(Vb){console.log(Vb)}Md(v,h);return v}function Md(a,b){if(b.Text_TRotation)try{var d=mxUtils.toDegree(b.Text_TRotation);if(0!=d&&a.value){var k=a.geometry.width, "shape=doubleArrow;arrowWidth="+(1-2*h.Notch)+";arrowSize="+Jd,v.value=g(h),v.style+=c(v.style,h,e,v,y)}v.style&&0>v.style.indexOf("html")&&(v.style+="html=1;");if(h.Title&&h.Text)try{var se=v.geometry,te=new mxCell(g(h.Title),new mxGeometry(0,se.height,se.width,10),"strokeColor=none;fillColor=none;");te.vertex=!0;v.insert(te);v.style+=m(h.Title,y)}catch(Vb){console.log(Vb)}Md(v,h);return v}function Md(a,b){if(b.Text_TRotation||b.TextRotation)try{var d=mxUtils.toDegree(b.Text_TRotation)+mxUtils.toDegree(b.TextRotation);
n=a.geometry.height,c=k,f=n,w=0,e=0;if(-90==d||-270==d)var c=n,f=k,x=Math.abs(n-k)/2,w=x/k,e=-x/n;var d=d+mxUtils.toDegree(b.Rotation),m=a.style.split(";").filter(function(a){return 0>a.indexOf("fillColor=")&&0>a.indexOf("strokeColor=")&&0>a.indexOf("rotation=")}).join(";"),z=new mxCell(a.value,new mxGeometry(w,e,c,f),m+"fillColor=none;strokeColor=none;rotation="+d+";");a.value=null;z.geometry.relative=!0;z.vertex=!0;a.insert(z)}}catch(ue){console.log(ue)}}var Ib=0,Jb=0,y=!1,md=["AEUSBBlock","AGSCutandpasteBlock", if(0!=d&&a.value){var k=a.geometry.width,n=a.geometry.height,c=k,f=n,w=0,e=0;if(-90==d||-270==d)var c=n,f=k,x=Math.abs(n-k)/2,w=x/k,e=-x/n;var d=d+mxUtils.toDegree(b.Rotation),m=a.style.split(";").filter(function(a){return 0>a.indexOf("fillColor=")&&0>a.indexOf("strokeColor=")&&0>a.indexOf("rotation=")}).join(";"),z=new mxCell(a.value,new mxGeometry(w,e,c,f),m+"fillColor=none;strokeColor=none;rotation="+d+";");a.value=null;z.geometry.relative=!0;z.vertex=!0;a.insert(z)}}catch(ue){console.log(ue)}}
"iOSDeviceiPadLandscape","iOSDeviceiPadProLandscape"],nd=["fpDoor"],Tb={None:"none;",Arrow:"block;endFill=1;","Hollow Arrow":"block;endFill=0;","Open Arrow":"open;","CFN ERD Zero Or More Arrow":"ERzeroToMany;startSize=10;","CFN ERD One Or More Arrow":"ERoneToMany;startSize=10;","CFN ERD Many Arrow":"ERmany;startSize=10;","CFN ERD Exactly One Arrow":"ERmandOne;startSize=10;","CFN ERD Zero Or One Arrow":"ERzeroToOne;startSize=10;","CFN ERD One Arrow":"ERone;startSize=16;",Generalization:"block;endFill=0;startSize=12;", var Ib=0,Jb=0,y=!1,md=["AEUSBBlock","AGSCutandpasteBlock","iOSDeviceiPadLandscape","iOSDeviceiPadProLandscape"],nd=["fpDoor"],Tb={None:"none;",Arrow:"block;endFill=1;","Hollow Arrow":"block;endFill=0;","Open Arrow":"open;","CFN ERD Zero Or More Arrow":"ERzeroToMany;startSize=10;","CFN ERD One Or More Arrow":"ERoneToMany;startSize=10;","CFN ERD Many Arrow":"ERmany;startSize=10;","CFN ERD Exactly One Arrow":"ERmandOne;startSize=10;","CFN ERD Zero Or One Arrow":"ERzeroToOne;startSize=10;","CFN ERD One Arrow":"ERone;startSize=16;",
"Big Open Arrow":"open;startSize=10;",Asynch1:"openAsync;flipH=1;startSize=10;",Asynch2:"openAsync;startSize=10;",Aggregation:"diamond;endFill=0;startSize=16;",Composition:"diamond;endFill=1;startSize=16;",BlockEnd:"none;endFill=1;startSize=16;",Measure:"ERone;startSize=10;"},Hb={DefaultTextBlockNew:"strokeColor=none;fillColor=none",DefaultTextBlock:"strokeColor=none;fillColor=none",DefaultSquareBlock:"",RectangleBlock:"",DefaultNoteBlock:"shape=note;size=15",DefaultNoteBlockV2:"shape=note;size=15", Generalization:"block;endFill=0;startSize=12;","Big Open Arrow":"open;startSize=10;",Asynch1:"openAsync;flipH=1;startSize=10;",Asynch2:"openAsync;startSize=10;",Aggregation:"diamond;endFill=0;startSize=16;",Composition:"diamond;endFill=1;startSize=16;",BlockEnd:"none;endFill=1;startSize=16;",Measure:"ERone;startSize=10;"},Hb={DefaultTextBlockNew:"strokeColor=none;fillColor=none",DefaultTextBlock:"strokeColor=none;fillColor=none",DefaultSquareBlock:"",RectangleBlock:"",DefaultNoteBlock:"shape=note;size=15",
HotspotBlock:"strokeColor=none;fillColor=none",ImageSearchBlock2:"shape=image",UserImage2Block:"shape=image",ProcessBlock:"",DecisionBlock:"rhombus",TerminatorBlock:"rounded=1;arcSize=50",PredefinedProcessBlock:"shape=process",DocumentBlock:"shape=document",MultiDocumentBlock:"shape=mxgraph.flowchart.multi-document",ManualInputBlock:"shape=manualInput;size=15",PreparationBlock:"shape=hexagon;perimeter=hexagonPerimeter2",DataBlock:"shape=parallelogram;perimeter=parallelogramPerimeter;anchorPointDirection=0", DefaultNoteBlockV2:"shape=note;size=15",HotspotBlock:"strokeColor=none;fillColor=none",ImageSearchBlock2:"shape=image",UserImage2Block:"shape=image",ProcessBlock:"",DecisionBlock:"rhombus",TerminatorBlock:"rounded=1;arcSize=50",PredefinedProcessBlock:"shape=process",DocumentBlock:"shape=document",MultiDocumentBlock:"shape=mxgraph.flowchart.multi-document",ManualInputBlock:"shape=manualInput;size=15",PreparationBlock:"shape=hexagon;perimeter=hexagonPerimeter2",DataBlock:"shape=parallelogram;perimeter=parallelogramPerimeter;anchorPointDirection=0",
DataBlockNew:"shape=parallelogram;perimeter=parallelogramPerimeter;anchorPointDirection=0",DatabaseBlock:"shape=cylinder;size=0.1;anchorPointDirection=0;boundedLbl=1;",DirectAccessStorageBlock:"shape=cylinder;direction=south;size=0.1;anchorPointDirection=0;boundedLbl=1;",InternalStorageBlock:"shape=internalStorage;dx=10;dy=10",PaperTapeBlock:"shape=tape;size=0.2",ManualOperationBlockNew:"shape=trapezoid;perimeter=trapezoidPerimeter;anchorPointDirection=0;flipV=1",DelayBlock:"shape=delay",StoredDataBlock:"shape=dataStorage", DataBlockNew:"shape=parallelogram;perimeter=parallelogramPerimeter;anchorPointDirection=0",DatabaseBlock:"shape=cylinder;size=0.1;anchorPointDirection=0;boundedLbl=1;",DirectAccessStorageBlock:"shape=cylinder;direction=south;size=0.1;anchorPointDirection=0;boundedLbl=1;",InternalStorageBlock:"shape=internalStorage;dx=10;dy=10",PaperTapeBlock:"shape=tape;size=0.2",ManualOperationBlockNew:"shape=trapezoid;perimeter=trapezoidPerimeter;anchorPointDirection=0;flipV=1",DelayBlock:"shape=delay",StoredDataBlock:"shape=dataStorage",
MergeBlock:"triangle;direction=south;anchorPointDirection=0",ConnectorBlock:"ellipse",OrBlock:"shape=mxgraph.flowchart.summing_function",SummingJunctionBlock:"shape=mxgraph.flowchart.or",DisplayBlock:"shape=display",OffPageLinkBlock:"shape=offPageConnector",BraceNoteBlock:"mxCompositeShape",NoteBlock:"mxCompositeShape",AdvancedSwimLaneBlock:"mxCompositeShape",AdvancedSwimLaneBlockRotated:"mxCompositeShape",RectangleContainerBlock:"container=1;collapsible=0",DiamondContainerBlock:"shape=rhombus;container=1;collapsible=0", MergeBlock:"triangle;direction=south;anchorPointDirection=0",ConnectorBlock:"ellipse",OrBlock:"shape=mxgraph.flowchart.summing_function",SummingJunctionBlock:"shape=mxgraph.flowchart.or",DisplayBlock:"shape=display",OffPageLinkBlock:"shape=offPageConnector",BraceNoteBlock:"mxCompositeShape",NoteBlock:"mxCompositeShape",AdvancedSwimLaneBlock:"mxCompositeShape",AdvancedSwimLaneBlockRotated:"mxCompositeShape",RectangleContainerBlock:"container=1;collapsible=0",DiamondContainerBlock:"shape=rhombus;container=1;collapsible=0",
RoundedRectangleContainerBlock:"container=1;rounded=1;absoluteArcSize=1;arcSize=24;collapsible=0",CircleContainerBlock:"ellipse;container=1;collapsible=0",PillContainerBlock:"shape=mxgraph.flowchart.terminator;container=1;collapsible=0",BraceBlock:"mxCompositeShape",BracketBlock:"mxCompositeShape",BraceBlockRotated:"mxCompositeShape",BracketBlockRotated:"mxCompositeShape",IsoscelesTriangleBlock:"triangle;direction=north;anchorPointDirection=0",RightTriangleBlock:"shape=mxgraph.basic.orthogonal_triangle", RoundedRectangleContainerBlock:"container=1;rounded=1;absoluteArcSize=1;arcSize=24;collapsible=0",CircleContainerBlock:"ellipse;container=1;collapsible=0",PillContainerBlock:"shape=mxgraph.flowchart.terminator;container=1;collapsible=0",BraceBlock:"mxCompositeShape",BracketBlock:"mxCompositeShape",BraceBlockRotated:"mxCompositeShape",BracketBlockRotated:"mxCompositeShape",IsoscelesTriangleBlock:"triangle;direction=north;anchorPointDirection=0",RightTriangleBlock:"shape=mxgraph.basic.orthogonal_triangle",

View file

@ -494,6 +494,15 @@
mxCellRenderer.registerShape('note', NoteShape); mxCellRenderer.registerShape('note', NoteShape);
// Note Shape, supports size style
function NoteShape2()
{
NoteShape.call(this);
};
mxUtils.extend(NoteShape2, NoteShape);
mxCellRenderer.registerShape('note2', NoteShape2);
// Flexible cube Shape // Flexible cube Shape
function IsoCubeShape2() function IsoCubeShape2()
{ {
@ -669,55 +678,179 @@
FolderShape.prototype.tabWidth = 60; FolderShape.prototype.tabWidth = 60;
FolderShape.prototype.tabHeight = 20; FolderShape.prototype.tabHeight = 20;
FolderShape.prototype.tabPosition = 'right'; FolderShape.prototype.tabPosition = 'right';
FolderShape.prototype.redrawPath = function(path, x, y, w, h, isForeground) FolderShape.prototype.arcSize = 0.1;
FolderShape.prototype.paintVertexShape = function(c, x, y, w, h)
{ {
c.translate(x, y);
var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'tabWidth', this.tabWidth)))); var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'tabWidth', this.tabWidth))));
var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'tabHeight', this.tabHeight)))); var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'tabHeight', this.tabHeight))));
var tp = mxUtils.getValue(this.style, 'tabPosition', this.tabPosition); var tp = mxUtils.getValue(this.style, 'tabPosition', this.tabPosition);
var rounded = mxUtils.getValue(this.style, 'rounded', false);
if (isForeground) var absArcSize = mxUtils.getValue(this.style, 'absoluteArcSize', false);
var arcSize = parseFloat(mxUtils.getValue(this.style, 'arcSize', this.arcSize));
if (!absArcSize)
{ {
if (tp == 'left') arcSize = Math.min(w, h) * arcSize;
{ }
path.moveTo(0, dy);
path.lineTo(dx, dy); arcSize = Math.min(arcSize, w * 0.5, (h - dy) * 0.5);
}
// Right is default dx = Math.max(dx, arcSize);
else dx = Math.min(w - arcSize, dx);
{
path.moveTo(w - dx, dy);
path.lineTo(w, dy);
}
path.end(); if (!rounded)
{
arcSize = 0;
}
c.begin();
if (tp == 'left')
{
c.moveTo(Math.max(arcSize, 0), dy);
c.lineTo(Math.max(arcSize, 0), 0);
c.lineTo(dx, 0);
c.lineTo(dx, dy);
}
// Right is default
else
{
c.moveTo(w - dx, dy);
c.lineTo(w - dx, 0);
c.lineTo(w - Math.max(arcSize, 0), 0);
c.lineTo(w - Math.max(arcSize, 0), dy);
}
if (rounded)
{
c.moveTo(0, arcSize + dy);
c.arcTo(arcSize, arcSize, 0, 0, 1, arcSize, dy);
c.lineTo(w - arcSize, dy);
c.arcTo(arcSize, arcSize, 0, 0, 1, w, arcSize + dy);
c.lineTo(w, h - arcSize);
c.arcTo(arcSize, arcSize, 0, 0, 1, w - arcSize, h);
c.lineTo(arcSize, h);
c.arcTo(arcSize, arcSize, 0, 0, 1, 0, h - arcSize);
} }
else else
{ {
if (tp == 'left') c.moveTo(0, dy);
{ c.lineTo(w, dy);
path.moveTo(0, 0); c.lineTo(w, h);
path.lineTo(dx, 0); c.lineTo(0, h);
path.lineTo(dx, dy); }
path.lineTo(w, dy);
} c.close();
// Right is default c.fillAndStroke();
else
{ c.setShadow(false);
path.moveTo(0, dy);
path.lineTo(w - dx, dy); var sym = mxUtils.getValue(this.style, 'folderSymbol', null);
path.lineTo(w - dx, 0);
path.lineTo(w, 0); if (sym == 'triangle')
} {
c.begin();
path.lineTo(w, h); c.moveTo(w - 30, dy + 20);
path.lineTo(0, h); c.lineTo(w - 20, dy + 10);
path.lineTo(0, dy); c.lineTo(w - 10, dy + 20);
path.close(); c.close();
path.end(); c.stroke();
} }
}; };
mxCellRenderer.registerShape('folder', FolderShape); mxCellRenderer.registerShape('folder', FolderShape);
// Folder Shape, supports tabWidth, tabHeight styles
function UMLStateShape()
{
mxCylinder.call(this);
};
mxUtils.extend(UMLStateShape, mxCylinder);
UMLStateShape.prototype.arcSize = 0.1;
UMLStateShape.prototype.paintVertexShape = function(c, x, y, w, h)
{
c.translate(x, y);
// var dx = Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'tabWidth', this.tabWidth))));
// var dy = Math.max(0, Math.min(h, parseFloat(mxUtils.getValue(this.style, 'tabHeight', this.tabHeight))));
// var tp = mxUtils.getValue(this.style, 'tabPosition', this.tabPosition);
var rounded = mxUtils.getValue(this.style, 'rounded', false);
var absArcSize = mxUtils.getValue(this.style, 'absoluteArcSize', false);
var arcSize = parseFloat(mxUtils.getValue(this.style, 'arcSize', this.arcSize));
var connPoint = mxUtils.getValue(this.style, 'umlStateConnection', null);
if (!absArcSize)
{
arcSize = Math.min(w, h) * arcSize;
}
arcSize = Math.min(arcSize, w * 0.5, h * 0.5);
if (!rounded)
{
arcSize = 0;
}
var dx = 0;
if (connPoint != null)
{
dx = 10;
}
c.begin();
c.moveTo(dx, arcSize);
c.arcTo(arcSize, arcSize, 0, 0, 1, dx + arcSize, 0);
c.lineTo(w - arcSize, 0);
c.arcTo(arcSize, arcSize, 0, 0, 1, w, arcSize);
c.lineTo(w, h - arcSize);
c.arcTo(arcSize, arcSize, 0, 0, 1, w - arcSize, h);
c.lineTo(dx + arcSize, h);
c.arcTo(arcSize, arcSize, 0, 0, 1, dx, h - arcSize);
c.close();
c.fillAndStroke();
c.setShadow(false);
var sym = mxUtils.getValue(this.style, 'umlStateSymbol', null);
if (sym == 'collapseState')
{
c.roundrect(w - 40, h - 20, 10, 10, 3, 3);
c.stroke();
c.roundrect(w - 20, h - 20, 10, 10, 3, 3);
c.stroke();
c.begin();
c.moveTo(w - 30, h - 15);
c.lineTo(w - 20, h - 15);
c.stroke();
}
if (connPoint == 'connPointRefEntry')
{
c.ellipse(0, h * 0.5 - 10, 20, 20);
c.fillAndStroke();
}
else if (connPoint == 'connPointRefExit')
{
c.ellipse(0, h * 0.5 - 10, 20, 20);
c.fillAndStroke();
c.begin();
c.moveTo(5, h * 0.5 - 5);
c.lineTo(15, h * 0.5 + 5);
c.moveTo(15, h * 0.5 - 5);
c.lineTo(5, h * 0.5 + 5);
c.stroke();
}
};
mxCellRenderer.registerShape('umlState', UMLStateShape);
// Card shape // Card shape
function CardShape() function CardShape()
@ -872,6 +1005,77 @@
return null; return null;
}; };
FolderShape.prototype.getLabelMargins = function(rect)
{
if (mxUtils.getValue(this.style, 'boundedLbl', false))
{
var sizeY = mxUtils.getValue(this.style, 'tabHeight', 15) * this.scale;
if (mxUtils.getValue(this.style, 'labelInHeader', false))
{
var sizeX = mxUtils.getValue(this.style, 'tabWidth', 15) * this.scale;
var sizeY = mxUtils.getValue(this.style, 'tabHeight', 15) * this.scale;
var rounded = mxUtils.getValue(this.style, 'rounded', false);
var absArcSize = mxUtils.getValue(this.style, 'absoluteArcSize', false);
var arcSize = parseFloat(mxUtils.getValue(this.style, 'arcSize', this.arcSize));
if (!absArcSize)
{
arcSize = Math.min(rect.width, rect.height) * arcSize;
}
arcSize = Math.min(arcSize, rect.width * 0.5, (rect.height - sizeY) * 0.5);
if (!rounded)
{
arcSize = 0;
}
if (mxUtils.getValue(this.style, 'tabPosition', this.tabPosition) == 'left')
{
return new mxRectangle(arcSize, 0, Math.min(rect.width, rect.width - sizeX), Math.min(rect.height, rect.height - sizeY));
}
else
{
return new mxRectangle(Math.min(rect.width, rect.width - sizeX), 0, arcSize, Math.min(rect.height, rect.height - sizeY));
}
}
else
{
return new mxRectangle(0, Math.min(rect.height, sizeY), 0, 0);
}
}
return null;
};
UMLStateShape.prototype.getLabelMargins = function(rect)
{
if (mxUtils.getValue(this.style, 'boundedLbl', false))
{
var connPoint = mxUtils.getValue(this.style, 'umlStateConnection', null);
if (connPoint != null)
{
return new mxRectangle(10 * this.scale, 0, 0, 0);
}
}
return null;
};
NoteShape2.prototype.getLabelMargins = function(rect)
{
if (mxUtils.getValue(this.style, 'boundedLbl', false))
{
var size = mxUtils.getValue(this.style, 'size', 15);
return new mxRectangle(0, Math.min(rect.height * this.scale, size * this.scale), 0, Math.max(0, size * this.scale));
}
return null;
};
// Parallelogram shape // Parallelogram shape
function ParallelogramShape() function ParallelogramShape()
{ {
@ -1251,6 +1455,8 @@
}; };
mxUtils.extend(ProcessShape, mxRectangleShape); mxUtils.extend(ProcessShape, mxRectangleShape);
ProcessShape.prototype.size = 0.1; ProcessShape.prototype.size = 0.1;
ProcessShape.prototype.fixedSize = false;
ProcessShape.prototype.isHtmlAllowed = function() ProcessShape.prototype.isHtmlAllowed = function()
{ {
return false; return false;
@ -1285,7 +1491,18 @@
}; };
ProcessShape.prototype.paintForeground = function(c, x, y, w, h) ProcessShape.prototype.paintForeground = function(c, x, y, w, h)
{ {
var inset = w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size)))); var isFixedSize = mxUtils.getValue(this.style, 'fixedSize', this.fixedSize);
var inset = parseFloat(mxUtils.getValue(this.style, 'size', this.size));
if (isFixedSize)
{
inset = Math.max(0, Math.min(w, inset));
}
else
{
inset = w * Math.max(0, Math.min(1, inset));
}
if (this.isRounded) if (this.isRounded)
{ {
@ -4024,12 +4241,16 @@
{ {
var handles = [createHandle(state, ['size'], function(bounds) var handles = [createHandle(state, ['size'], function(bounds)
{ {
var size = Math.max(0, Math.min(0.5, parseFloat(mxUtils.getValue(this.state.style, 'size', ProcessShape.prototype.size))));
var fixed = mxUtils.getValue(this.state.style, 'fixedSize', '0') != '0';
return new mxPoint(bounds.x + bounds.width * size, bounds.y + bounds.height / 4); var size = parseFloat(mxUtils.getValue(this.state.style, 'size', ProcessShape.prototype.size));
return (fixed) ? new mxPoint(bounds.x + size, bounds.y + bounds.height / 4) : new mxPoint(bounds.x + bounds.width * size, bounds.y + bounds.height / 4);
}, function(bounds, pt) }, function(bounds, pt)
{ {
this.state.style['size'] = Math.max(0, Math.min(0.5, (pt.x - bounds.x) / bounds.width)); var fixed = mxUtils.getValue(this.state.style, 'fixedSize', '0') != '0';
var size = (fixed) ? Math.max(0, Math.min(bounds.width * 0.5, (pt.x - bounds.x))) : Math.max(0, Math.min(0.5, (pt.x - bounds.x) / bounds.width));
this.state.style['size'] = size;
}, false)]; }, false)];
if (mxUtils.getValue(state.style, mxConstants.STYLE_ROUNDED, false)) if (mxUtils.getValue(state.style, mxConstants.STYLE_ROUNDED, false))
@ -4068,6 +4289,20 @@
Math.min(bounds.height, pt.y - bounds.y)))); Math.min(bounds.height, pt.y - bounds.y))));
})]; })];
}, },
'note2': function(state)
{
return [createHandle(state, ['size'], function(bounds)
{
var size = Math.max(0, Math.min(bounds.width, Math.min(bounds.height, parseFloat(
mxUtils.getValue(this.state.style, 'size', NoteShape2.prototype.size)))));
return new mxPoint(bounds.x + bounds.width - size, bounds.y + size);
}, function(bounds, pt)
{
this.state.style['size'] = Math.round(Math.max(0, Math.min(Math.min(bounds.width, bounds.x + bounds.width - pt.x),
Math.min(bounds.height, pt.y - bounds.y))));
})];
},
'manualInput': function(state) 'manualInput': function(state)
{ {
var handles = [createHandle(state, ['size'], function(bounds) var handles = [createHandle(state, ['size'], function(bounds)

View file

@ -1658,7 +1658,6 @@ Sidebar.prototype.addUmlPalette = function(expand)
40, 300, '', 'Control Lifeline', null, null, 'uml sequence participant lifeline control'), 40, 300, '', 'Control Lifeline', null, null, 'uml sequence participant lifeline control'),
this.createVertexTemplateEntry('shape=umlFrame;whiteSpace=wrap;html=1;', 300, 200, 'frame', 'Frame', null, null, 'uml sequence frame'), this.createVertexTemplateEntry('shape=umlFrame;whiteSpace=wrap;html=1;', 300, 200, 'frame', 'Frame', null, null, 'uml sequence frame'),
this.createVertexTemplateEntry('shape=umlDestroy;whiteSpace=wrap;html=1;strokeWidth=3;', 30, 30, '', 'Destruction', null, null, 'uml sequence destruction destroy'), this.createVertexTemplateEntry('shape=umlDestroy;whiteSpace=wrap;html=1;strokeWidth=3;', 30, 30, '', 'Destruction', null, null, 'uml sequence destruction destroy'),
this.createVertexTemplateEntry('shape=note;whiteSpace=wrap;html=1;size=14;verticalAlign=top;align=left;spacingTop=-6;', 100, 70, 'Note', 'Note', null, null, 'uml note'),
this.addEntry('uml sequence invoke invocation call activation', function() this.addEntry('uml sequence invoke invocation call activation', function()
{ {
var cell = new mxCell('', new mxGeometry(0, 0, 10, 80), 'html=1;points=[];perimeter=orthogonalPerimeter;'); var cell = new mxCell('', new mxGeometry(0, 0, 10, 80), 'html=1;points=[];perimeter=orthogonalPerimeter;');
@ -1716,6 +1715,461 @@ Sidebar.prototype.addUmlPalette = function(expand)
10, 60, 'Callback'); 10, 60, 'Callback');
}), }),
this.createVertexTemplateEntry('html=1;points=[];perimeter=orthogonalPerimeter;', 10, 80, '', 'Activation', null, null, 'uml sequence activation'), this.createVertexTemplateEntry('html=1;points=[];perimeter=orthogonalPerimeter;', 10, 80, '', 'Activation', null, null, 'uml sequence activation'),
// new 2.5.1 shapes ******************************************************************************
this.createVertexTemplateEntry('shape=partialRectangle;html=1;top=1;align=left;dashed=1;', 200, 20, 'Template1 signature', 'Template signature', null, null, 'template signature'),
this.createVertexTemplateEntry('shape=partialRectangle;html=1;top=1;align=left;dashed=1;', 200, 50, 'Template parameter 1\nTemplate parameter 2', 'Template signature', null, null, 'template signature'),
this.createVertexTemplateEntry('shape=note2;boundedLbl=1;whiteSpace=wrap;html=1;size=25;verticalAlign=top;align=center;', 120, 60, 'Comment1 body', 'Note', null, null, 'uml note'),
this.addEntry('uml sequence self call recursion delegation activation', function()
{
var cell = new mxCell('Constraint1 specification', new mxGeometry(0, 0, 160, 60), 'shape=note2;boundedLbl=1;whiteSpace=wrap;html=1;size=25;verticalAlign=top;align=center;');
cell.vertex = true;
var label = new mxCell('<<keyword>>', new mxGeometry(0, 0, cell.geometry.width, 25), 'resizeWidth=1;part=1;strokeColor=none;fillColor=none;align=left;spacingLeft=5;');
label.geometry.relative = true;
label.vertex = true;
cell.insert(label);
return sb.createVertexTemplateFromCells([cell], cell.geometry.width, cell.geometry.height, 'Note');
}),
this.addEntry(dt + 'classifier', function()
{
var cell1 = new mxCell('&lt;&lt;keyword&gt;&gt;<br><b>Classifier1</b><br>{abstract}', new mxGeometry(0, 0, 140, 183),
'swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=55;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;html=1;');
cell1.vertex = true;
var field1 = new mxCell('attributes',
new mxGeometry(0, 0, 140, 20), 'text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
field1.vertex = true;
cell1.insert(field1);
var field2 = new mxCell('attribute1',
new mxGeometry(0, 0, 140, 20), 'text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
field2.vertex = true;
cell1.insert(field2);
var field3 = new mxCell('inherited attribute2',
new mxGeometry(0, 0, 140, 20), 'text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontColor=#808080;');
field3.vertex = true;
cell1.insert(field3);
var field4 = new mxCell('...',
new mxGeometry(0, 0, 140, 20), 'text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
field4.vertex = true;
cell1.insert(field4);
cell1.insert(divider.clone());
var field5 = new mxCell('operations',
new mxGeometry(0, 0, 140, 20), 'text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
field5.vertex = true;
cell1.insert(field5);
var field6 = new mxCell('operation1',
new mxGeometry(0, 0, 140, 20), 'text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
field6.vertex = true;
cell1.insert(field6);
return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Classifier');
}),
this.createVertexTemplateEntry('shape=process;fixedSize=1;size=5;fontStyle=1;', 140, 40, 'Classifier1', 'Classifier', null, null, 'classifier'),
this.addEntry(dt + 'classifier', function()
{
var cell1 = new mxCell('Classifier1', new mxGeometry(0, 0, 140, 183),
'swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;html=1;');
cell1.vertex = true;
var field1 = new mxCell('internal structure',
new mxGeometry(0, 0, 140, 30), 'html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;spacingLeft=4;spacingRight=4;rotatable=0;points=[[0,0.5],[1,0.5]];resizeWidth=1;');
field1.vertex = true;
cell1.insert(field1);
var cell2 = new mxCell('', new mxGeometry(0, 0, 140, 140),
'strokeColor=none;fillColor=none;');
cell2.vertex = true;
cell1.insert(cell2);
var field2 = new mxCell('property1',
new mxGeometry(0, 0, 100, 30), 'html=1;align=center;verticalAlign=middle;rotatable=0;');
field2.geometry.relative = true;
field2.geometry.offset = new mxPoint(20, 20);
field2.vertex = true;
cell2.insert(field2);
var field3 = new mxCell('property2',
new mxGeometry(0, 0, 100, 30), 'html=1;align=center;verticalAlign=middle;rotatable=0;');
field3.geometry.relative = true;
field3.geometry.offset = new mxPoint(20, 90);
field3.vertex = true;
cell2.insert(field3);
var assoc1 = new mxCell('connector1', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;endArrow=none;verticalAlign=middle;labelBackgroundColor=none;endSize=12;html=1;align=left;endFill=0;exitX=0.15;exitY=1;entryX=0.15;entryY=0;spacingLeft=4;');
assoc1.geometry.relative = true;
assoc1.edge = true;
field2.insertEdge(assoc1, true);
field3.insertEdge(assoc1, false);
cell2.insert(assoc1);
return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Classifier');
}),
this.createVertexTemplateEntry('fontStyle=1;', 140, 30, 'Association1', 'Association', null, null, 'association'),
this.addEntry(dt + 'classifier', function()
{
var cell1 = new mxCell('Instance1', new mxGeometry(0, 0, 140, 138),
'swimlane;fontStyle=4;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=30;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;html=1;');
cell1.vertex = true;
var field1 = new mxCell('slot1',
new mxGeometry(0, 0, 140, 30), 'html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;rotatable=0;points=[[0,0.5],[1,0.5]];resizeWidth=1;');
field1.vertex = true;
cell1.insert(field1);
cell1.insert(divider.clone());
var field2 = new mxCell('internal structure',
new mxGeometry(0, 0, 140, 20), 'html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;spacingLeft=4;spacingRight=4;rotatable=0;points=[[0,0.5],[1,0.5]];resizeWidth=1;');
field2.vertex = true;
cell1.insert(field2);
var cell2 = new mxCell('', new mxGeometry(0, 0, 140, 50),
'strokeColor=none;fillColor=none;');
cell2.vertex = true;
cell1.insert(cell2);
var field3 = new mxCell('instance2',
new mxGeometry(0, 0, 80, 30), 'html=1;align=center;verticalAlign=middle;rotatable=0;');
field3.geometry.relative = true;
field3.geometry.offset = new mxPoint(30, 10);
field3.vertex = true;
cell2.insert(field3);
return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Classifier');
}),
this.createVertexTemplateEntry('fontStyle=0;', 120, 40, 'Instance1 value', 'Instance', null, null, 'instance'),
this.addEntry(dt + 'classifier', function()
{
var cell1 = new mxCell('&lt;&lt;enumeration&gt;&gt;<br><b>Enum1</b>', new mxGeometry(0, 0, 140, 70),
'swimlane;fontStyle=0;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=40;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;html=1;');
cell1.vertex = true;
var field1 = new mxCell('literal1',
new mxGeometry(0, 0, 140, 30), 'text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
field1.vertex = true;
cell1.insert(field1);
return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Classifier');
}),
this.addEntry(dt + 'classifier', function()
{
var cell1 = new mxCell('0..1', new mxGeometry(0, 0, 120, 50),
'align=right;verticalAlign=top;spacingRight=2;');
cell1.vertex = true;
var field1 = new mxCell('Property1',
new mxGeometry(0, 1, 120, 30), 'text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;resizeWidth=1;');
field1.geometry.relative = true;
field1.geometry.offset = new mxPoint(0, -30);
field1.vertex = true;
cell1.insert(field1);
return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Classifier');
}),
this.createVertexTemplateEntry('fontStyle=0;dashed=1;', 140, 30, 'Property1', 'Property', null, null, 'property'),
this.createVertexTemplateEntry('fontStyle=0;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=2;', 30, 30, 'port1', 'Port', null, null, 'port'),
this.addEntry(dt + 'component', function()
{
var cell1 = new mxCell('', new mxGeometry(0, 0, 140, 200), 'fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;marginBottom=0;');
cell1.vertex = true;
var cell2 = new mxCell('Component', new mxGeometry(0, 0, 140, 40), 'html=1;align=left;spacingLeft=4;verticalAlign=top;strokeColor=none;fillColor=none;');
cell2.vertex = true;
cell1.insert(cell2);
var symbol = new mxCell('', new mxGeometry(1, 0, 16, 20), 'shape=module;jettyWidth=10;jettyHeight=4;');
symbol.vertex = true;
symbol.geometry.relative = true;
symbol.geometry.offset = new mxPoint(-25, 9);
cell2.insert(symbol);
cell1.insert(divider.clone());
var cell3 = new mxCell('provided interfaces', new mxGeometry(0, 0, 140, 25), 'html=1;align=center;spacingLeft=4;verticalAlign=top;strokeColor=none;fillColor=none;');
cell3.vertex = true;
cell1.insert(cell3);
var cell4 = new mxCell('Interface1', new mxGeometry(0, 0, 140, 25), 'html=1;align=left;spacingLeft=4;verticalAlign=top;strokeColor=none;fillColor=none;');
cell4.vertex = true;
cell1.insert(cell4);
cell1.insert(divider.clone());
var cell5 = new mxCell('required interfaces', new mxGeometry(0, 0, 140, 25), 'html=1;align=center;spacingLeft=4;verticalAlign=top;strokeColor=none;fillColor=none;');
cell5.vertex = true;
cell1.insert(cell5);
var cell6 = new mxCell('Interface2', new mxGeometry(0, 0, 140, 30), 'html=1;align=left;spacingLeft=4;verticalAlign=top;strokeColor=none;fillColor=none;');
cell6.vertex = true;
cell1.insert(cell6);
return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Component');
}),
this.addEntry(dt + 'classifier', function()
{
var cell1 = new mxCell('', new mxGeometry(0, 0, 270, 230),
'shape=ellipse;container=1;horizontal=1;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;html=1;dashed=1;collapsible=0;');
cell1.vertex = true;
var field1 = new mxCell('Collaboration1',
new mxGeometry(0, 0, 270, 30), 'html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;spacingLeft=4;spacingRight=4;rotatable=0;points=[[0,0.5],[1,0.5]];resizeWidth=1;');
field1.vertex = true;
cell1.insert(field1);
var divider1 = new mxCell('', new mxGeometry(0.145, 0, 192, 8), 'line;strokeWidth=1;fillColor=none;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;dashed=1;resizeWidth=1;');
divider1.geometry.relative = true;
divider1.geometry.offset = new mxPoint(0, 30);
divider1.vertex = true;
cell1.insert(divider1);
var field2 = new mxCell('Classifier1',
new mxGeometry(0, 0, 100, 30), 'html=1;align=center;verticalAlign=middle;rotatable=0;');
field2.geometry.relative = true;
field2.geometry.offset = new mxPoint(85, 50);
field2.vertex = true;
cell1.insert(field2);
var field3 = new mxCell('Collaboration use 1',
new mxGeometry(0, 0, 140, 30), 'shape=ellipse;html=1;align=center;verticalAlign=middle;rotatable=0;dashed=1;');
field3.geometry.relative = true;
field3.geometry.offset = new mxPoint(65, 110);
field3.vertex = true;
cell1.insert(field3);
var assoc1 = new mxCell('property1', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;endArrow=none;verticalAlign=middle;labelBackgroundColor=none;endSize=12;html=1;align=left;endFill=0;spacingLeft=4;');
assoc1.geometry.relative = true;
assoc1.edge = true;
field2.insertEdge(assoc1, true);
field3.insertEdge(assoc1, false);
cell1.insert(assoc1);
var field4 = new mxCell('Classifier2',
new mxGeometry(0, 0, 100, 30), 'html=1;align=center;verticalAlign=middle;rotatable=0;');
field4.geometry.relative = true;
field4.geometry.offset = new mxPoint(85, 170);
field4.vertex = true;
cell1.insert(field4);
var assoc2 = new mxCell('property1', new mxGeometry(0, 0, 0, 0), 'edgeStyle=none;endArrow=none;verticalAlign=middle;labelBackgroundColor=none;endSize=12;html=1;align=left;endFill=0;spacingLeft=4;');
assoc2.geometry.relative = true;
assoc2.edge = true;
field3.insertEdge(assoc2, true);
field4.insertEdge(assoc2, false);
cell1.insert(assoc2);
return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Classifier');
}),
this.createVertexTemplateEntry('shape=folder;fontStyle=1;tabWidth=80;tabHeight=30;tabPosition=left;html=1;boundedLbl=1;', 150, 80,
'Package1', 'Package', null, null, dt + 'package'),
this.addEntry(dt + 'package', function()
{
var cell1 = new mxCell('Package1', new mxGeometry(0, 0, 150, 100),
'shape=folder;fontStyle=1;tabWidth=110;tabHeight=30;tabPosition=left;html=1;boundedLbl=1;labelInHeader=1;');
cell1.vertex = true;
var field1 = new mxCell('Packaged element1',
new mxGeometry(0, 0, 110, 30), 'html=1;');
field1.geometry.relative = true;
field1.geometry.offset = new mxPoint(20, 50);
field1.vertex = true;
cell1.insert(field1);
return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Classifier');
}),
this.addEntry(dt + 'package', function()
{
var cell1 = new mxCell('Model1', new mxGeometry(0, 0, 150, 80),
'shape=folder;fontStyle=1;tabWidth=110;tabHeight=30;tabPosition=left;html=1;boundedLbl=1;folderSymbol=triangle;');
cell1.vertex = true;
return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Package');
}),
this.addEntry(dt + 'stereotype', function()
{
var cell1 = new mxCell('', new mxGeometry(0, 0, 160, 75),
'shape=note2;size=25;childLayout=stackLayout;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;html=1;container=1;');
cell1.vertex = true;
var field1 = new mxCell('&lt;&lt;stereotype1&gt;&gt;',
new mxGeometry(0, 0, 160, 25), 'text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
field1.vertex = true;
cell1.insert(field1);
var field2 = new mxCell('stereotype property 1',
new mxGeometry(0, 0, 160, 25), 'text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
field2.vertex = true;
cell1.insert(field2);
var field3 = new mxCell('stereotype property 2',
new mxGeometry(0, 0, 160, 25), 'text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
field3.vertex = true;
cell1.insert(field3);
return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Stereotype');
}),
this.addEntry(dt + 'class', function()
{
var cell1 = new mxCell('Class1', new mxGeometry(0, 0, 140, 79),
'swimlane;fontStyle=1;align=center;verticalAlign=middle;childLayout=stackLayout;horizontal=1;startSize=29;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;html=1;');
cell1.vertex = true;
var field1 = new mxCell('&lt;&lt;stereotype1&gt;&gt;',
new mxGeometry(0, 0, 140, 25), 'text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
field1.vertex = true;
cell1.insert(field1);
var field2 = new mxCell('stereotype property 1',
new mxGeometry(0, 0, 140, 25), 'text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
field2.vertex = true;
cell1.insert(field2);
return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'Class');
}),
this.createVertexTemplateEntry('text;html=1;align=center;', 200, 25,
'&lt;&lt;stereotype1, stereotype2...&gt;&gt;', 'Label', null, null, dt + 'label'),
this.createVertexTemplateEntry('ellipse;', 50, 25,
'icon', 'Icon', null, null, dt + 'icon'),
this.addEntry(dt + 'region', function()
{
var cell1 = new mxCell('', new mxGeometry(60, 0, 10, 100),
'line;strokeWidth=1;direction=south;html=1;dashed=1;dashPattern=20 20;');
cell1.vertex = true;
var cell2 = new mxCell('Region 1', new mxGeometry(0, 40, 60, 20),
'text;align=right;');
cell2.vertex = true;
var cell3 = new mxCell('Region 2', new mxGeometry(70, 40, 60, 20),
'text;align=left;');
cell3.vertex = true;
return sb.createVertexTemplateFromCells([cell1, cell2, cell3], 130, cell1.geometry.height, 'Region');
}),
this.addEntry(dt + 'State', function()
{
var cell1 = new mxCell('State1<br>[invariant1]<br>&lt;&lt;extended/final&gt;&gt;', new mxGeometry(0, 0, 140, 176),
'swimlane;fontStyle=4;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=60;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=0;marginBottom=0;html=1;rounded=1;absoluteArcSize=1;arcSize=50;');
cell1.vertex = true;
var field1 = new mxCell('',
new mxGeometry(0, 0, 140, 50), 'fillColor=none;strokeColor=none;container=1;collapsible=0;');
field1.vertex = true;
cell1.insert(field1);
var field2 = new mxCell('State2',
new mxGeometry(30, 10, 80, 30), 'html=1;align=center;verticalAlign=middle;rounded=1;absoluteArcSize=1;arcSize=10;');
field2.vertex = true;
field1.insert(field2);
cell1.insert(divider.clone());
var field3 = new mxCell('behavior1',
new mxGeometry(0, 0, 140, 25), 'fillColor=none;strokeColor=none;align=left;verticalAlign=middle;spacingLeft=5;');
field3.vertex = true;
cell1.insert(field3);
cell1.insert(divider.clone());
var field4 = new mxCell('transition1',
new mxGeometry(0, 0, 140, 25), 'fillColor=none;strokeColor=none;align=left;verticalAlign=middle;spacingLeft=5;');
field4.vertex = true;
cell1.insert(field4);
return sb.createVertexTemplateFromCells([cell1], cell1.geometry.width, cell1.geometry.height, 'State');
}),
this.createVertexTemplateEntry('html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=1;', 140, 40,
'State1', 'State', null, null, dt + 'state'),
this.createVertexTemplateEntry('html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;', 140, 40,
'State', 'State', null, null, dt + 'state'),
this.createVertexTemplateEntry('shape=folder;align=center;verticalAlign=middle;fontStyle=0;tabWidth=100;tabHeight=30;tabPosition=left;html=1;boundedLbl=1;labelInHeader=1;rounded=1;absoluteArcSize=1;arcSize=10;', 140, 90,
'State1', 'State', null, null, dt + 'state'),
this.createVertexTemplateEntry('html=1;align=center;verticalAlign=top;rounded=1;absoluteArcSize=1;arcSize=10;dashed=0;', 140, 40,
'State1, State2, ...', 'State', null, null, dt + 'state'),
this.createVertexTemplateEntry('shape=umlState;rounded=1;verticalAlign=top;spacingTop=5;umlStateSymbol=collapseState;absoluteArcSize=1;arcSize=10;', 140, 60,
'State1', 'State', null, null, dt + 'state'),
this.addEntry(dt + 'State', function()
{
var cell1 = new mxCell('State1', new mxGeometry(40, 0, 140, 50),
'shape=umlState;rounded=1;verticalAlign=middle;align=center;absoluteArcSize=1;arcSize=10;umlStateConnection=connPointRefEntry;boundedLbl=1;');
cell1.vertex = true;
var field1 = new mxCell('Entry1',
new mxGeometry(0, 40, 50, 20), 'text;verticalAlign=middle;align=center;');
field1.vertex = true;
cell1.insert(field1);
return sb.createVertexTemplateFromCells([cell1, field1], 180, 60, 'State');
}),
this.addEntry(dt + 'State', function()
{
var cell1 = new mxCell('State1', new mxGeometry(40, 0, 140, 50),
'shape=umlState;rounded=1;verticalAlign=middle;spacingTop=0;absoluteArcSize=1;arcSize=10;umlStateConnection=connPointRefExit;boundedLbl=1;');
cell1.vertex = true;
var field1 = new mxCell('Exit1',
new mxGeometry(0, 40, 50, 20), 'text;verticalAlign=middle;align=center;');
field1.vertex = true;
cell1.insert(field1);
return sb.createVertexTemplateFromCells([cell1, field1], 180, 60, 'State');
}),
this.createVertexTemplateEntry('ellipse;fillColor=#000000;strokeColor=none;', 30, 30,
'', 'Initial state', null, null, dt + 'initial state'),
this.createVertexTemplateEntry('ellipse;html=1;shape=endState;fillColor=#000000;strokeColor=#000000;', 30, 30,
'', 'Final state', null, null, dt + 'final state'),
this.createVertexTemplateEntry('ellipse;fillColor=#ffffff;strokeColor=#000000;', 30, 30,
'H', 'Shallow History', null, null, dt + 'shallow history'),
this.createVertexTemplateEntry('ellipse;fillColor=#ffffff;strokeColor=#000000;', 30, 30,
'H*', 'Deep History', null, null, dt + 'deep history'),
this.createVertexTemplateEntry('ellipse;fillColor=#ffffff;strokeColor=#000000;', 30, 30,
'', 'Entry Point', null, null, dt + 'entry point'),
this.createVertexTemplateEntry('shape=sumEllipse;perimeter=ellipsePerimeter;whiteSpace=wrap;html=1;backgroundOutline=1;', 30, 30,
'', 'Exit Point', null, null, dt + 'exit point'),
this.createVertexTemplateEntry('ellipse;fillColor=#000000;strokeColor=none;', 20, 20,
'', 'Junction', null, null, dt + 'junction'),
this.createVertexTemplateEntry('rhombus;', 30, 30,
'', 'Choice', null, null, dt + 'choice'),
this.createVertexTemplateEntry('shape=umlDestroy;', 30, 30,
'', 'Terminate', null, null, dt + 'terminate'),
this.createVertexTemplateEntry('html=1;points=[];perimeter=orthogonalPerimeter;fillColor=#000000;strokeColor=none;', 5, 80,
'', 'Join/Fork', null, null, dt + 'join fork'),
this.createVertexTemplateEntry('text;align=center;verticalAlign=middle;dashed=0;fillColor=#ffffff;strokeColor=#000000;', 140, 40,
'OpaqueAction1 spec.', 'Opaque Action', null, null, dt + 'opaque action'),
// end of new shapes ******************************************************************************
this.createEdgeTemplateEntry('html=1;verticalAlign=bottom;startArrow=oval;startFill=1;endArrow=block;startSize=8;', 60, 0, 'dispatch', 'Found Message 1', null, 'uml sequence message call invoke dispatch'), this.createEdgeTemplateEntry('html=1;verticalAlign=bottom;startArrow=oval;startFill=1;endArrow=block;startSize=8;', 60, 0, 'dispatch', 'Found Message 1', null, 'uml sequence message call invoke dispatch'),
this.createEdgeTemplateEntry('html=1;verticalAlign=bottom;startArrow=circle;startFill=1;endArrow=open;startSize=6;endSize=8;', 80, 0, 'dispatch', 'Found Message 2', null, 'uml sequence message call invoke dispatch'), this.createEdgeTemplateEntry('html=1;verticalAlign=bottom;startArrow=circle;startFill=1;endArrow=open;startSize=6;endSize=8;', 80, 0, 'dispatch', 'Found Message 2', null, 'uml sequence message call invoke dispatch'),
this.createEdgeTemplateEntry('html=1;verticalAlign=bottom;endArrow=block;', 80, 0, 'dispatch', 'Message', null, 'uml sequence message call invoke dispatch'), this.createEdgeTemplateEntry('html=1;verticalAlign=bottom;endArrow=block;', 80, 0, 'dispatch', 'Message', null, 'uml sequence message call invoke dispatch'),

232
src/main/webapp/js/open.js Normal file
View file

@ -0,0 +1,232 @@
// Handles form-submit by preparing to process response
function handleSubmit()
{
var form = window.openForm || document.getElementById('openForm');
if (window.parent.openNew && window.parent.baseUrl != null)
{
window.parent.openFile.setConsumer(null);
window.parent.open(window.parent.baseUrl);
}
// NOTE: File is loaded via JS injection into the iframe, which in turn sets the
// file contents in the parent window. The new window asks its opener if any file
// contents are available or waits for the contents to become available.
return true;
};
// Hides this dialog
function hideWindow(cancel)
{
window.parent.openFile.cancel(cancel);
}
function fileChanged()
{
var supportedText = document.getElementById('openSupported');
var form = window.openForm || document.getElementById('openForm');
var openButton = document.getElementById('openButton');
if (form.upfile.value.length > 0)
{
openButton.removeAttribute('disabled');
}
else
{
openButton.setAttribute('disabled', 'disabled');
}
}
function main()
{
if (window.parent != null && window.parent.Editor != null)
{
if (window.parent.Editor.useLocalStorage)
{
document.body.innerHTML = '';
var div = document.createElement('div');
div.style.fontFamily = 'Arial';
window.parent.listBrowserFiles(function(filesInfo)
{
if (filesInfo.length == 0)
{
window.parent.mxUtils.write(div, window.parent.mxResources.get('noFiles'));
window.parent.mxUtils.br(div);
}
else
{
// Sorts the array by filename (titles)
filesInfo.sort(function (a, b)
{
return a.title.toLowerCase().localeCompare(b.title.toLowerCase());
});
var table = document.createElement('table');
var hrow = document.createElement('tr');
hrow.style.backgroundColor = '#D6D6D6';
hrow.style.height = '25px';
hrow.style.textAlign = 'left';
table.appendChild(hrow);
var hName = document.createElement('th');
window.parent.mxUtils.write(hName, window.parent.mxResources.get('name'));
hrow.appendChild(hName);
var hModified = document.createElement('th');
hModified.style.width = '180px';
window.parent.mxUtils.write(hModified, window.parent.mxResources.get('lastModified'));
hrow.appendChild(hModified);
var hSize = document.createElement('th');
window.parent.mxUtils.write(hSize, window.parent.mxResources.get('size'));
hSize.style.width = '70px';
hrow.appendChild(hSize);
var hCtrl = document.createElement('th');
hCtrl.style.width = '23px';
hrow.appendChild(hCtrl);
table.style.fontSize = '12pt';
table.style.width = '100%';
for (var i = 0; i < filesInfo.length; i++)
{
var fileInfo = filesInfo[i];
if (fileInfo.title.length > 0)
{
var row = document.createElement('tr');
table.appendChild(row);
if (i & 1 == 1)
{
row.style.backgroundColor = '#E6E6E6';
}
var nameTd = document.createElement('td');
row.appendChild(nameTd);
var link = document.createElement('a');
link.style.fontDecoration = 'none';
window.parent.mxUtils.write(link, fileInfo.title);
link.style.cursor = 'pointer';
nameTd.appendChild(link);
var modifiedTd = document.createElement('td');
row.appendChild(modifiedTd);
var str = window.parent.EditorUi.prototype.timeSince(new Date(fileInfo.lastModified));
if (str == null)
{
str = window.parent.mxResources.get('lessThanAMinute');
}
window.parent.mxUtils.write(modifiedTd, window.parent.mxResources.get('timeAgo', [str]));
var sizeTd = document.createElement('td');
row.appendChild(sizeTd);
window.parent.mxUtils.write(sizeTd, window.parent.EditorUi.prototype.formatFileSize(fileInfo.size));
var ctrlTd = document.createElement('td');
row.appendChild(ctrlTd);
ctrlTd.style.textAlign = 'center';
var img = document.createElement('span');
img.className = 'geSprite geSprite-delete';
img.style.cursor = 'pointer';
img.style.display = 'inline-block';
ctrlTd.appendChild(img);
window.parent.mxEvent.addListener(img, 'click', (function(k)
{
return function()
{
if (window.parent.mxUtils.confirm(window.parent.mxResources.get('delete') + ' "' + k + '"?'))
{
window.parent.deleteBrowserFile(k, function()
{
window.location.reload();
});
}
};
})(fileInfo.title));
window.parent.mxEvent.addListener(link, 'click', (function(k)
{
return function()
{
if (window.parent.openNew && window.parent.baseUrl != null)
{
var of = window.parent.openFile;
window.parent.openBrowserFile(k, function(data)
{
window.parent.openWindow(window.parent.baseUrl + '#L' + encodeURIComponent(k), function()
{
of.cancel(false);
}, function()
{
of.setData(data, k);
});
}, function()
{
//TODO add error
});
}
else
{
window.parent.openBrowserFile(k, function(data)
{
window.parent.openFile.setData(data, k);
}, function()
{
//TODO add error
});
}
};
})(fileInfo.title));
}
}
div.appendChild(table);
}
var closeButton = window.parent.mxUtils.button(window.parent.mxResources.get('close'), function()
{
hideWindow(true);
});
closeButton.className = 'geBtn';
closeButton.style.position = 'fixed';
closeButton.style.bottom = '0px';
closeButton.style.right = '0px';
div.appendChild(closeButton);
document.body.appendChild(div);
});
}
else
{
var editLink = document.getElementById('editLink');
var openButton = document.getElementById('openButton');
openButton.value = window.parent.mxResources.get(window.parent.openKey || 'open');
var closeButton = document.getElementById('closeButton');
closeButton.value = window.parent.mxResources.get('close');
var supportedText = document.getElementById('openSupported');
supportedText.innerHTML = window.parent.mxResources.get('openSupported');
var form = window.openForm || document.getElementById('openForm');
form.setAttribute('action', window.parent.OPEN_URL);
form.onsubmit = function()
{
return handleSubmit();
};
form.upfile.onchange = fileChanged;
closeButton.onclick = function()
{
hideWindow(true);
};
}
}
else
{
document.body.innerHTML = 'Missing parent window';
}
};
window.addEventListener('load', main);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -4,235 +4,15 @@
<title>Open Diagram</title> <title>Open Diagram</title>
<link rel="stylesheet" type="text/css" href="styles/grapheditor.css" /> <link rel="stylesheet" type="text/css" href="styles/grapheditor.css" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="js/open.js" type="text/javascript"></script>
</head> </head>
<script type="text/javascript"> <body>
// Handles form-submit by preparing to process response
function handleSubmit()
{
var form = window.openForm || document.getElementById('openForm');
if (window.parent.openNew && window.parent.baseUrl != null)
{
window.parent.openFile.setConsumer(null);
window.parent.open(window.parent.baseUrl);
}
// NOTE: File is loaded via JS injection into the iframe, which in turn sets the
// file contents in the parent window. The new window asks its opener if any file
// contents are available or waits for the contents to become available.
return true;
};
// Hides this dialog
function hideWindow(cancel)
{
window.parent.openFile.cancel(cancel);
}
function fileChanged()
{
var supportedText = document.getElementById('openSupported');
var form = window.openForm || document.getElementById('openForm');
var openButton = document.getElementById('openButton');
if (form.upfile.value.length > 0)
{
openButton.removeAttribute('disabled');
}
else
{
openButton.setAttribute('disabled', 'disabled');
}
}
function main()
{
if (window.parent != null && window.parent.Editor != null)
{
if (window.parent.Editor.useLocalStorage)
{
document.body.innerHTML = '';
var div = document.createElement('div');
div.style.fontFamily = 'Arial';
window.parent.listBrowserFiles(function(filesInfo)
{
if (filesInfo.length == 0)
{
window.parent.mxUtils.write(div, window.parent.mxResources.get('noFiles'));
window.parent.mxUtils.br(div);
}
else
{
// Sorts the array by filename (titles)
filesInfo.sort(function (a, b)
{
return a.title.toLowerCase().localeCompare(b.title.toLowerCase());
});
var table = document.createElement('table');
var hrow = document.createElement('tr');
hrow.style.backgroundColor = '#D6D6D6';
hrow.style.height = '25px';
hrow.style.textAlign = 'left';
table.appendChild(hrow);
var hName = document.createElement('th');
window.parent.mxUtils.write(hName, window.parent.mxResources.get('name'));
hrow.appendChild(hName);
var hModified = document.createElement('th');
hModified.style.width = '130px';
window.parent.mxUtils.write(hModified, window.parent.mxResources.get('lastModified'));
hrow.appendChild(hModified);
var hSize = document.createElement('th');
window.parent.mxUtils.write(hSize, window.parent.mxResources.get('size'));
hSize.style.width = '70px';
hrow.appendChild(hSize);
var hCtrl = document.createElement('th');
hCtrl.style.width = '23px';
hrow.appendChild(hCtrl);
table.style.fontSize = '12pt';
table.style.width = '100%';
for (var i = 0; i < filesInfo.length; i++)
{
var fileInfo = filesInfo[i];
if (fileInfo.title.length > 0)
{
var row = document.createElement('tr');
table.appendChild(row);
if (i & 1 == 1)
{
row.style.backgroundColor = '#E6E6E6';
}
var nameTd = document.createElement('td');
row.appendChild(nameTd);
var link = document.createElement('a');
link.style.fontDecoration = 'none';
window.parent.mxUtils.write(link, fileInfo.title);
link.style.cursor = 'pointer';
nameTd.appendChild(link);
var modifiedTd = document.createElement('td');
row.appendChild(modifiedTd);
var str = window.parent.EditorUi.prototype.timeSince(new Date(fileInfo.lastModified));
if (str == null)
{
str = window.parent.mxResources.get('lessThanAMinute');
}
window.parent.mxUtils.write(modifiedTd, window.parent.mxResources.get('timeAgo', [str]));
var sizeTd = document.createElement('td');
row.appendChild(sizeTd);
window.parent.mxUtils.write(sizeTd, window.parent.EditorUi.prototype.formatFileSize(fileInfo.size));
var ctrlTd = document.createElement('td');
row.appendChild(ctrlTd);
ctrlTd.style.textAlign = 'center';
var img = document.createElement('span');
img.className = 'geSprite geSprite-delete';
img.style.cursor = 'pointer';
img.style.display = 'inline-block';
ctrlTd.appendChild(img);
window.parent.mxEvent.addListener(img, 'click', (function(k)
{
return function()
{
if (window.parent.mxUtils.confirm(window.parent.mxResources.get('delete') + ' "' + k + '"?'))
{
window.parent.deleteBrowserFile(k, function()
{
window.location.reload();
});
}
};
})(fileInfo.title));
window.parent.mxEvent.addListener(link, 'click', (function(k)
{
return function()
{
if (window.parent.openNew && window.parent.baseUrl != null)
{
var of = window.parent.openFile;
window.parent.openBrowserFile(k, function(data)
{
window.parent.openWindow(window.parent.baseUrl + '#L' + encodeURIComponent(k), function()
{
of.cancel(false);
}, function()
{
of.setData(data, k);
});
}, function()
{
//TODO add error
});
}
else
{
window.parent.openBrowserFile(k, function(data)
{
window.parent.openFile.setData(data, k);
}, function()
{
//TODO add error
});
}
};
})(fileInfo.title));
}
}
div.appendChild(table);
}
var closeButton = window.parent.mxUtils.button(window.parent.mxResources.get('close'), function()
{
hideWindow(true);
});
closeButton.className = 'geBtn';
closeButton.style.position = 'fixed';
closeButton.style.bottom = '0px';
closeButton.style.right = '0px';
div.appendChild(closeButton);
document.body.appendChild(div);
});
}
else
{
var editLink = document.getElementById('editLink');
var openButton = document.getElementById('openButton');
openButton.value = window.parent.mxResources.get(window.parent.openKey || 'open');
var closeButton = document.getElementById('closeButton');
closeButton.value = window.parent.mxResources.get('close');
var supportedText = document.getElementById('openSupported');
supportedText.innerHTML = window.parent.mxResources.get('openSupported');
var form = window.openForm || document.getElementById('openForm');
form.setAttribute('action', window.parent.OPEN_URL);
}
}
else
{
document.body.innerHTML = 'Missing parent window';
}
};
</script>
<body onload="main();">
<form method="POST" enctype="multipart/form-data" action="" name="openForm" <form method="POST" enctype="multipart/form-data" action="" name="openForm"
id="openForm" onsubmit="return handleSubmit();" accept-charset="UTF-8"> id="openForm" accept-charset="UTF-8">
<table style="width:100%;"> <table style="width:100%;">
<tr> <tr>
<td style="height:40px;vertical-align:top;" colspan="2"> <td style="height:40px;vertical-align:top;" colspan="2">
<input type="file" name="upfile" onchange="fileChanged()"> <input type="file" name="upfile">
</td> </td>
</tr> </tr>
<tr> <tr>
@ -243,7 +23,7 @@
<td> <td>
</td> </td>
<td style="vertical-align:middle;text-align:right;white-space:nowrap;"> <td style="vertical-align:middle;text-align:right;white-space:nowrap;">
<input type="button" id="closeButton" class="geBtn" value="Cancel" onclick="hideWindow(true);"> <input type="button" id="closeButton" class="geBtn" value="Cancel">
<input type="submit" id="openButton" class="geBtn gePrimaryBtn" value="Open" disabled="disabled"> <input type="submit" id="openButton" class="geBtn gePrimaryBtn" value="Open" disabled="disabled">
</td> </td>
</tr> </tr>

View file

@ -6,11 +6,15 @@ if (workbox)
workbox.precaching.precacheAndRoute([ workbox.precaching.precacheAndRoute([
{ {
"url": "js/app.min.js", "url": "js/app.min.js",
"revision": "7ebbf9c7172e768bc0263302beaf6b17" "revision": "da472043dd125d0ea8e13c8e51c406b1"
}, },
{ {
"url": "js/extensions.min.js", "url": "js/extensions.min.js",
"revision": "b24f190f5b615ac2488ca86208143d59" "revision": "509438d35ee02968e6abd6af13814198"
},
{
"url": "js/stencils.min.js",
"revision": "dfd6700d74c9e746589368e903e1c50f"
}, },
{ {
"url": "js/shapes.min.js", "url": "js/shapes.min.js",
@ -26,7 +30,7 @@ if (workbox)
}, },
{ {
"url": "open.html", "url": "open.html",
"revision": "dd24217f6c21207b54475409848f31ff" "revision": "d71816b3b00e769fc6019fcdd6921662"
}, },
{ {
"url": "styles/grapheditor.css", "url": "styles/grapheditor.css",
@ -52,93 +56,117 @@ if (workbox)
"url": "js/onedrive/OneDrive.js", "url": "js/onedrive/OneDrive.js",
"revision": "d82b9c14d7a069efabef719a8a5f3975" "revision": "d82b9c14d7a069efabef719a8a5f3975"
}, },
{
"url": "js/viewer-static.min.js",
"revision": "a89ad8c006bc52859fdcfab30c6b0826"
},
{
"url": "plugins/cConf-comments.js",
"revision": "dc57594d2cefbe35c15962a3ec356d24"
},
{
"url": "plugins/cConf-1-4-8.js",
"revision": "5f51c9102e55474da1f3012c011d6191"
},
{
"url": "connect/confluence/connectUtils-1-4-8.js",
"revision": "30dbcb61fbfb2366c243e68a95ed6784"
},
{
"url": "connect/new_common/cac.js",
"revision": "659b958b774f9eba916b07325420098b"
},
{
"url": "connect/gdrive_common/gac.js",
"revision": "eb7db3700937a2a30d178ab25c9f13ea"
},
{
"url": "connect/onedrive_common/ac.js",
"revision": "9cd01be6b3a233401d77595e2c38ce14"
},
{
"url": "connect/confluence/viewer-init.js",
"revision": "b398e16456cae37e4925e43c360b9034"
},
{
"url": "connect/confluence/viewer.js",
"revision": "62249a2d807bb95cc38d4cc9a56a8902"
},
{
"url": "connect/confluence/viewer-1-4-42.html",
"revision": "0e9ad57d31303c201f285b2739f34169"
},
{
"url": "connect/confluence/macroEditor-1-4-8.html",
"revision": "689fa63fd3a384662b4199f6e4a5b5c1"
},
{
"url": "connect/confluence/macro-editor.js",
"revision": "257473ece79f2f7d822a1698699c5479"
},
{ {
"url": "math/MathJax.js", "url": "math/MathJax.js",
"revision": "b2c103388b71bb3d11cbf9aa45fe9b68" "revision": "b2c103388b71bb3d11cbf9aa45fe9b68"
}, },
{
"url": "math/jax/input/TeX/config.js",
"revision": "c6de0381e92b311e75264dac618de39d"
},
{
"url": "math/jax/input/MathML/config.js",
"revision": "cf85ea4a5bc5ac677243e755a7c31464"
},
{
"url": "math/jax/input/AsciiMath/config.js",
"revision": "e9f16b23a8e666d60ab746e001b3b85b"
},
{
"url": "math/jax/output/SVG/config.js",
"revision": "2331dfa04ed33a371d8735e1798c4980"
},
{
"url": "math/extensions/tex2jax.js",
"revision": "6313aa4e8b7edf452102de2729ec6aed"
},
{
"url": "math/extensions/mml2jax.js",
"revision": "835e7b107ce67d0e09a002302b64d979"
},
{
"url": "math/extensions/asciimath2jax.js",
"revision": "ba4a24f0884938191d5cc8a719050c08"
},
{ {
"url": "resources/dia.txt", "url": "resources/dia.txt",
"revision": "b60363a6346142974bfee87b70fdae87" "revision": "b60363a6346142974bfee87b70fdae87"
}, },
{
"url": "resources/dia_cs.txt",
"revision": "a377dcb6d569e1f8813336091b42f878"
},
{
"url": "resources/dia_my.txt",
"revision": "b60363a6346142974bfee87b70fdae87"
},
{ {
"url": "resources/dia_am.txt", "url": "resources/dia_am.txt",
"revision": "0119eaf1146ee2d83ef997aa31c878d7" "revision": "0119eaf1146ee2d83ef997aa31c878d7"
}, },
{ {
"url": "resources/dia_ml.txt", "url": "resources/dia_ar.txt",
"revision": "695140b5ed11d882833a85cb13fba49c" "revision": "78e616502b54b96492a871a38cb4038a"
},
{
"url": "resources/dia_uk.txt",
"revision": "b1cb41c5fe2a688aaa5c1cf8b0958b14"
}, },
{ {
"url": "resources/dia_bg.txt", "url": "resources/dia_bg.txt",
"revision": "b93a013a4cd31e248abc433fe42193f0" "revision": "b93a013a4cd31e248abc433fe42193f0"
}, },
{ {
"url": "resources/dia_ca.txt", "url": "resources/dia_bn.txt",
"revision": "040564ea4eed721c15dbf3ad28da8d7e" "revision": "29ded70b7f3aea8c90e52a6236da2acd"
},
{
"url": "resources/dia_th.txt",
"revision": "70d9a5929789e37267c69e13b3f0ea38"
}, },
{ {
"url": "resources/dia_bs.txt", "url": "resources/dia_bs.txt",
"revision": "418e5f20f68c2a1cd810cfe2d633053d" "revision": "418e5f20f68c2a1cd810cfe2d633053d"
}, },
{ {
"url": "resources/dia_id.txt", "url": "resources/dia_ca.txt",
"revision": "5c1ab50c62be2d29fbad51f97683d331" "revision": "040564ea4eed721c15dbf3ad28da8d7e"
}, },
{ {
"url": "resources/dia_sk.txt", "url": "resources/dia_cs.txt",
"revision": "3205440ad12ebb8788f9631395255bcc" "revision": "a377dcb6d569e1f8813336091b42f878"
},
{
"url": "resources/dia_ro.txt",
"revision": "9225ffae67763e473c9e4ba2da7cec39"
},
{
"url": "resources/dia_gl.txt",
"revision": "d06bc0c67db191ff829bd44a7322c8cb"
},
{
"url": "resources/dia_es.txt",
"revision": "133752a094857cd6d30b11e2f46523a1"
},
{
"url": "resources/dia_eu.txt",
"revision": "8b0d6a63c057e78bc74b7909eb2f4cf5"
},
{
"url": "resources/dia_ko.txt",
"revision": "010c06c47c42432945686769dbbecfe5"
},
{
"url": "resources/dia_si.txt",
"revision": "b60363a6346142974bfee87b70fdae87"
},
{
"url": "resources/dia_kn.txt",
"revision": "7df158a82b5886eee06e13b9c8e91810"
},
{
"url": "resources/dia_hu.txt",
"revision": "3ca47dfdbd83fa773e0d42e2cf3c176d"
},
{
"url": "resources/dia_fi.txt",
"revision": "197418f7a41eb848862a11ec52f45f14"
}, },
{ {
"url": "resources/dia_da.txt", "url": "resources/dia_da.txt",
@ -149,96 +177,84 @@ if (workbox)
"revision": "ab28f1da640f9581e505184e97b04f9f" "revision": "ab28f1da640f9581e505184e97b04f9f"
}, },
{ {
"url": "resources/dia_sl.txt", "url": "resources/dia_el.txt",
"revision": "ad17cb8844de48c378cd1a0df7e75027" "revision": "dee88627c709c895bdae7e27656285e0"
},
{
"url": "resources/dia_it.txt",
"revision": "eef68ada859eb5c34777d0ab06874784"
},
{
"url": "resources/dia_hr.txt",
"revision": "df2e4746574a52b96922e9b0f985a16b"
},
{
"url": "resources/dia_he.txt",
"revision": "3789abaf661f41c957f0d30d4ec0de5f"
},
{
"url": "resources/dia_pt.txt",
"revision": "1dc0aa27ec864a5ff5f36845b3a20c7e"
},
{
"url": "resources/dia_zh-tw.txt",
"revision": "7c46d96889942aad148e922d6f2ebc5f"
},
{
"url": "resources/dia_et.txt",
"revision": "e7022d05309d441ec5cfcee45f3aec05"
},
{
"url": "resources/dia_ja.txt",
"revision": "418193cc8c9bc27e1d96ea90980e0bf4"
},
{
"url": "resources/dia_hi.txt",
"revision": "d6f2aa8e0066f013736ba771c1c7d4ef"
}, },
{ {
"url": "resources/dia_eo.txt", "url": "resources/dia_eo.txt",
"revision": "c88b89af86ef0fe83adf87d221bac437" "revision": "c88b89af86ef0fe83adf87d221bac437"
}, },
{
"url": "resources/dia_es.txt",
"revision": "133752a094857cd6d30b11e2f46523a1"
},
{
"url": "resources/dia_et.txt",
"revision": "e7022d05309d441ec5cfcee45f3aec05"
},
{
"url": "resources/dia_eu.txt",
"revision": "8b0d6a63c057e78bc74b7909eb2f4cf5"
},
{ {
"url": "resources/dia_fa.txt", "url": "resources/dia_fa.txt",
"revision": "5998916ee3be2945ab6e09720cf804fe" "revision": "5998916ee3be2945ab6e09720cf804fe"
}, },
{ {
"url": "resources/dia_sw.txt", "url": "resources/dia_fi.txt",
"revision": "c838acb9d39a20c5da2dc221dea88848" "revision": "197418f7a41eb848862a11ec52f45f14"
}, },
{ {
"url": "resources/dia_pl.txt", "url": "resources/dia_fil.txt",
"revision": "529b02863c2baf32df2f443e2de484b2" "revision": "f9cb36f205e162d307f4e7a0cdd85f0e"
},
{
"url": "resources/dia_pt-br.txt",
"revision": "c1464bd19ab819f771a0300f01016357"
},
{
"url": "resources/dia_sv.txt",
"revision": "dbcb057f8b8f2de8484e8de8776a6117"
},
{
"url": "resources/dia_el.txt",
"revision": "dee88627c709c895bdae7e27656285e0"
},
{
"url": "resources/dia_sr.txt",
"revision": "8a03f77ea3980c1705552a42e28adc28"
}, },
{ {
"url": "resources/dia_fr.txt", "url": "resources/dia_fr.txt",
"revision": "0013ebca3f76586c36b1d2ef022efcbe" "revision": "0013ebca3f76586c36b1d2ef022efcbe"
}, },
{ {
"url": "resources/dia_ru.txt", "url": "resources/dia_gl.txt",
"revision": "378145660d8a716d118d9d287a37c8b9" "revision": "d06bc0c67db191ff829bd44a7322c8cb"
}, },
{ {
"url": "resources/dia_gu.txt", "url": "resources/dia_gu.txt",
"revision": "641159751b878ebab87c0863a8a3a9de" "revision": "641159751b878ebab87c0863a8a3a9de"
}, },
{ {
"url": "resources/dia_ar.txt", "url": "resources/dia_he.txt",
"revision": "78e616502b54b96492a871a38cb4038a" "revision": "3789abaf661f41c957f0d30d4ec0de5f"
}, },
{ {
"url": "resources/dia_tr.txt", "url": "resources/dia_hi.txt",
"revision": "b4959378cd22097c8517a396f7cf7c09" "revision": "d6f2aa8e0066f013736ba771c1c7d4ef"
}, },
{ {
"url": "resources/dia_te.txt", "url": "resources/dia_hr.txt",
"revision": "352cb210117dfe48de767c8a2a529afc" "revision": "df2e4746574a52b96922e9b0f985a16b"
},
{
"url": "resources/dia_hu.txt",
"revision": "3ca47dfdbd83fa773e0d42e2cf3c176d"
},
{
"url": "resources/dia_id.txt",
"revision": "5c1ab50c62be2d29fbad51f97683d331"
},
{
"url": "resources/dia_it.txt",
"revision": "eef68ada859eb5c34777d0ab06874784"
},
{
"url": "resources/dia_ja.txt",
"revision": "418193cc8c9bc27e1d96ea90980e0bf4"
},
{
"url": "resources/dia_kn.txt",
"revision": "7df158a82b5886eee06e13b9c8e91810"
},
{
"url": "resources/dia_ko.txt",
"revision": "010c06c47c42432945686769dbbecfe5"
}, },
{ {
"url": "resources/dia_lt.txt", "url": "resources/dia_lt.txt",
@ -248,6 +264,10 @@ if (workbox)
"url": "resources/dia_lv.txt", "url": "resources/dia_lv.txt",
"revision": "119c7c190c3074eb7b2de9ef2b1e5361" "revision": "119c7c190c3074eb7b2de9ef2b1e5361"
}, },
{
"url": "resources/dia_ml.txt",
"revision": "695140b5ed11d882833a85cb13fba49c"
},
{ {
"url": "resources/dia_mr.txt", "url": "resources/dia_mr.txt",
"revision": "d0bf6ec6e000ed566c10086a101e1e4a" "revision": "d0bf6ec6e000ed566c10086a101e1e4a"
@ -256,34 +276,94 @@ if (workbox)
"url": "resources/dia_ms.txt", "url": "resources/dia_ms.txt",
"revision": "862171e716388d4bb76936b221abe1f1" "revision": "862171e716388d4bb76936b221abe1f1"
}, },
{
"url": "resources/dia_my.txt",
"revision": "b60363a6346142974bfee87b70fdae87"
},
{ {
"url": "resources/dia_nl.txt", "url": "resources/dia_nl.txt",
"revision": "17a3557ebc49ea861f9fa1481598227e" "revision": "17a3557ebc49ea861f9fa1481598227e"
}, },
{
"url": "resources/dia_fil.txt",
"revision": "f9cb36f205e162d307f4e7a0cdd85f0e"
},
{
"url": "resources/dia_zh.txt",
"revision": "ae339945d9d70dc8fbc8aa3371c41fa3"
},
{
"url": "resources/dia_bn.txt",
"revision": "29ded70b7f3aea8c90e52a6236da2acd"
},
{ {
"url": "resources/dia_no.txt", "url": "resources/dia_no.txt",
"revision": "907c573bff8b2c1e1aeeb962141064f6" "revision": "907c573bff8b2c1e1aeeb962141064f6"
}, },
{ {
"url": "resources/dia_vi.txt", "url": "resources/dia_pl.txt",
"revision": "2d2e414c14afd8da20f0744ef7a72069" "revision": "529b02863c2baf32df2f443e2de484b2"
},
{
"url": "resources/dia_pt-br.txt",
"revision": "c1464bd19ab819f771a0300f01016357"
},
{
"url": "resources/dia_pt.txt",
"revision": "1dc0aa27ec864a5ff5f36845b3a20c7e"
},
{
"url": "resources/dia_ro.txt",
"revision": "9225ffae67763e473c9e4ba2da7cec39"
},
{
"url": "resources/dia_ru.txt",
"revision": "378145660d8a716d118d9d287a37c8b9"
},
{
"url": "resources/dia_si.txt",
"revision": "b60363a6346142974bfee87b70fdae87"
},
{
"url": "resources/dia_sk.txt",
"revision": "3205440ad12ebb8788f9631395255bcc"
},
{
"url": "resources/dia_sl.txt",
"revision": "ad17cb8844de48c378cd1a0df7e75027"
},
{
"url": "resources/dia_sr.txt",
"revision": "8a03f77ea3980c1705552a42e28adc28"
},
{
"url": "resources/dia_sv.txt",
"revision": "dbcb057f8b8f2de8484e8de8776a6117"
},
{
"url": "resources/dia_sw.txt",
"revision": "c838acb9d39a20c5da2dc221dea88848"
}, },
{ {
"url": "resources/dia_ta.txt", "url": "resources/dia_ta.txt",
"revision": "ea8bb796a900a5b1e384ad027257dee6" "revision": "ea8bb796a900a5b1e384ad027257dee6"
}, },
{
"url": "resources/dia_te.txt",
"revision": "352cb210117dfe48de767c8a2a529afc"
},
{
"url": "resources/dia_th.txt",
"revision": "70d9a5929789e37267c69e13b3f0ea38"
},
{
"url": "resources/dia_tr.txt",
"revision": "b4959378cd22097c8517a396f7cf7c09"
},
{
"url": "resources/dia_uk.txt",
"revision": "b1cb41c5fe2a688aaa5c1cf8b0958b14"
},
{
"url": "resources/dia_vi.txt",
"revision": "2d2e414c14afd8da20f0744ef7a72069"
},
{
"url": "resources/dia_zh-tw.txt",
"revision": "7c46d96889942aad148e922d6f2ebc5f"
},
{
"url": "resources/dia_zh.txt",
"revision": "ae339945d9d70dc8fbc8aa3371c41fa3"
},
{ {
"url": "favicon.ico", "url": "favicon.ico",
"revision": "fab2d88b37c72d83607527573de45281" "revision": "fab2d88b37c72d83607527573de45281"
@ -304,6 +384,14 @@ if (workbox)
"url": "images/drawlogo-gray.svg", "url": "images/drawlogo-gray.svg",
"revision": "0aabacbc0873816e1e09e4736ae44c7d" "revision": "0aabacbc0873816e1e09e4736ae44c7d"
}, },
{
"url": "images/drawlogo-text-bottom.svg",
"revision": "f6c438823ab31f290940bd4feb8dd9c2"
},
{
"url": "images/logo-flat-small.png",
"revision": "4b178e59ff499d6dd1894fc498b59877"
},
{ {
"url": "images/apple-touch-icon.png", "url": "images/apple-touch-icon.png",
"revision": "73da7989a23ce9a4be565ec65658a239" "revision": "73da7989a23ce9a4be565ec65658a239"
@ -424,6 +512,10 @@ if (workbox)
"url": "images/hs.png", "url": "images/hs.png",
"revision": "fefa1a03d92ebad25c88dca94a0b63db" "revision": "fefa1a03d92ebad25c88dca94a0b63db"
}, },
{
"url": "images/aui-wait.gif",
"revision": "5a474bcbd8d2f2826f03d10ea44bf60e"
},
{ {
"url": "mxgraph/css/common.css", "url": "mxgraph/css/common.css",
"revision": "b5b7280ec98671bb6c3847a36bc7ea12" "revision": "b5b7280ec98671bb6c3847a36bc7ea12"