parent
8bff6984fd
commit
9eacf5c0a0
63 changed files with 18097 additions and 4895 deletions
15
ChangeLog
15
ChangeLog
|
@ -1,3 +1,18 @@
|
|||
26-JUL-2018: 8.9.9
|
||||
|
||||
- Adds support for hierarchies in CSV import
|
||||
- Uses mxGraph 3.9.9 beta 6
|
||||
|
||||
23-JUL-2018: 8.9.8
|
||||
|
||||
- Changes PlantUML autosize parameter to default to true
|
||||
- Improves error handling, imports
|
||||
- Uses mxGraph 3.9.9 beta 5
|
||||
|
||||
18-JUL-2018: 8.9.7
|
||||
|
||||
- Uses new PlantUML version
|
||||
|
||||
18-JUL-2018: 8.9.6
|
||||
|
||||
- Fixes vertical offset for text editing with small fonts
|
||||
|
|
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
|||
8.9.6
|
||||
8.9.9
|
|
@ -131,7 +131,7 @@ function mxXmlRequest(a,b,c,d,e,f){this.url=a;this.params=b;this.method=c||"POST
|
|||
mxXmlRequest.prototype.decodeSimulateValues=!1;mxXmlRequest.prototype.isBinary=function(){return this.binary};mxXmlRequest.prototype.setBinary=function(a){this.binary=a};mxXmlRequest.prototype.getText=function(){return this.request.responseText};mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState};mxXmlRequest.prototype.getDocumentElement=function(){var a=this.getXml();return null!=a?a.documentElement:null};
|
||||
mxXmlRequest.prototype.getXml=function(){var a=this.request.responseXML;if(9<=document.documentMode||null==a||null==a.documentElement)a=mxUtils.parseXml(this.request.responseText);return a};mxXmlRequest.prototype.getText=function(){return this.request.responseText};mxXmlRequest.prototype.getStatus=function(){return this.request.status};
|
||||
mxXmlRequest.prototype.create=function(){if(window.XMLHttpRequest)return function(){var a=new XMLHttpRequest;this.isBinary()&&a.overrideMimeType&&a.overrideMimeType("text/plain; charset=x-user-defined");return a};if("undefined"!=typeof ActiveXObject)return function(){return new ActiveXObject("Microsoft.XMLHTTP")}}();
|
||||
mxXmlRequest.prototype.send=function(a,b,c,d){this.request=this.create();null!=this.request&&(null!=a&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(a(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),window.XMLHttpRequest&&this.withCredentials&&(this.request.withCredentials="true"),!mxClient.IS_QUIRKS&&(null==document.documentMode||9<document.documentMode)&&
|
||||
mxXmlRequest.prototype.send=function(a,b,c,d){this.request=this.create();null!=this.request&&(null!=a&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(a(this),this.request.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),window.XMLHttpRequest&&this.withCredentials&&(this.request.withCredentials="true"),!mxClient.IS_QUIRKS&&(null==document.documentMode||9<document.documentMode)&&
|
||||
window.XMLHttpRequest&&null!=c&&null!=d&&(this.request.timeout=c,this.request.ontimeout=d),this.request.send(this.params))};mxXmlRequest.prototype.setRequestHeaders=function(a,b){null!=b&&a.setRequestHeader("Content-Type","application/x-www-form-urlencoded")};
|
||||
mxXmlRequest.prototype.simulate=function(a,b){a=a||document;var c=null;a==document&&(c=window.onbeforeunload,window.onbeforeunload=null);var d=a.createElement("form");d.setAttribute("method",this.method);d.setAttribute("action",this.url);null!=b&&d.setAttribute("target",b);d.style.display="none";d.style.visibility="hidden";for(var e=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),f=0;f<e.length;f++){var g=e[f].indexOf("=");if(0<g){var k=e[f].substring(0,g),g=e[f].substring(g+
|
||||
1);this.decodeSimulateValues&&(g=decodeURIComponent(g));var l=a.createElement("textarea");l.setAttribute("wrap","off");l.setAttribute("name",k);mxUtils.write(l,g);d.appendChild(l)}}a.body.appendChild(d);d.submit();null!=d.parentNode&&d.parentNode.removeChild(d);null!=c&&(window.onbeforeunload=c)};
|
||||
|
@ -1459,9 +1459,9 @@ mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.des
|
|||
mxConnectionHandler.prototype.drawPreview=function(){this.updatePreview(null==this.error);this.shape.redraw()};mxConnectionHandler.prototype.updatePreview=function(a){this.shape.strokewidth=this.getEdgeWidth(a);this.shape.stroke=this.getEdgeColor(a)};mxConnectionHandler.prototype.getEdgeColor=function(a){return a?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR};mxConnectionHandler.prototype.getEdgeWidth=function(a){return a?3:1};
|
||||
mxConnectionHandler.prototype.connect=function(a,b,c,d){if(null!=b||this.isCreateTarget(c)||this.graph.allowDanglingEdges){var e=this.graph.getModel(),f=!1,g=null;e.beginUpdate();try{if(null!=a&&null==b&&!this.graph.isIgnoreTerminalEvent(c)&&this.isCreateTarget(c)&&(b=this.createTargetVertex(c,a),null!=b)){d=this.graph.getDropTarget([b],c,d);f=!0;if(null!=d&&this.graph.getModel().isEdge(d))d=this.graph.getDefaultParent();else{var k=this.graph.getView().getState(d);if(null!=k){var l=e.getGeometry(b);
|
||||
l.x-=k.origin.x;l.y-=k.origin.y}}this.graph.addCell(b,d)}var m=this.graph.getDefaultParent();null!=a&&null!=b&&e.getParent(a)==e.getParent(b)&&e.getParent(e.getParent(a))!=e.getRoot()&&(m=e.getParent(a),null!=a.geometry&&a.geometry.relative&&null!=b.geometry&&b.geometry.relative&&(m=e.getParent(m)));var n=k=null;null!=this.edgeState&&(k=this.edgeState.cell.value,n=this.edgeState.cell.style);g=this.insertEdge(m,null,k,a,b,n);if(null!=g){this.graph.setConnectionConstraint(g,a,!0,this.sourceConstraint);
|
||||
this.graph.setConnectionConstraint(g,b,!1,this.constraintHandler.currentConstraint);null!=this.edgeState&&e.setGeometry(g,this.edgeState.cell.geometry);e.getParent(a);if(this.isInsertBefore(g,a,b,c,d)){m=null;for(l=a;null!=l.parent&&null!=l.geometry&&l.geometry.relative&&l.parent!=g.parent;)l=this.graph.model.getParent(l);null!=l&&null!=l.parent&&l.parent==g.parent&&(m=l.parent.getIndex(l),l.parent.insert(g,m))}var p=e.getGeometry(g);null==p&&(p=new mxGeometry,p.relative=!0,e.setGeometry(g,p));if(null!=
|
||||
this.waypoints&&0<this.waypoints.length){var q=this.graph.view.scale,r=this.graph.view.translate;p.points=[];for(a=0;a<this.waypoints.length;a++){var t=this.waypoints[a];p.points.push(new mxPoint(t.x/q-r.x,t.y/q-r.y))}}if(null==b){var u=this.graph.view.translate,q=this.graph.view.scale,t=null!=this.originalPoint?new mxPoint(this.originalPoint.x/q-u.x,this.originalPoint.y/q-u.y):new mxPoint(this.currentPoint.x/q-u.x,this.currentPoint.y/q-u.y);t.x-=this.graph.panDx/this.graph.view.scale;t.y-=this.graph.panDy/
|
||||
this.graph.view.scale;p.setTerminalPoint(t,!1)}this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",g,"terminal",b,"event",c,"target",d,"terminalInserted",f))}}catch(x){mxLog.show(),mxLog.debug(x.message)}finally{e.endUpdate()}this.select&&this.selectCells(g,f?b:null)}};mxConnectionHandler.prototype.selectCells=function(a,b){this.graph.setSelectionCell(a)};
|
||||
this.graph.setConnectionConstraint(g,b,!1,this.constraintHandler.currentConstraint);null!=this.edgeState&&e.setGeometry(g,this.edgeState.cell.geometry);m=e.getParent(a);if(this.isInsertBefore(g,a,b,c,d)){for(l=a;null!=l.parent&&null!=l.geometry&&l.geometry.relative&&l.parent!=g.parent;)l=this.graph.model.getParent(l);null!=l&&null!=l.parent&&l.parent==g.parent&&e.add(m,g,l.parent.getIndex(l))}var p=e.getGeometry(g);null==p&&(p=new mxGeometry,p.relative=!0,e.setGeometry(g,p));if(null!=this.waypoints&&
|
||||
0<this.waypoints.length){var q=this.graph.view.scale,r=this.graph.view.translate;p.points=[];for(a=0;a<this.waypoints.length;a++){var t=this.waypoints[a];p.points.push(new mxPoint(t.x/q-r.x,t.y/q-r.y))}}if(null==b){var u=this.graph.view.translate,q=this.graph.view.scale,t=null!=this.originalPoint?new mxPoint(this.originalPoint.x/q-u.x,this.originalPoint.y/q-u.y):new mxPoint(this.currentPoint.x/q-u.x,this.currentPoint.y/q-u.y);t.x-=this.graph.panDx/this.graph.view.scale;t.y-=this.graph.panDy/this.graph.view.scale;
|
||||
p.setTerminalPoint(t,!1)}this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",g,"terminal",b,"event",c,"target",d,"terminalInserted",f))}}catch(x){mxLog.show(),mxLog.debug(x.message)}finally{e.endUpdate()}this.select&&this.selectCells(g,f?b:null)}};mxConnectionHandler.prototype.selectCells=function(a,b){this.graph.setSelectionCell(a)};
|
||||
mxConnectionHandler.prototype.insertEdge=function(a,b,c,d,e,f){if(null==this.factoryMethod)return this.graph.insertEdge(a,b,c,d,e,f);b=this.createEdge(c,d,e,f);return b=this.graph.addEdge(b,a,d,e)};
|
||||
mxConnectionHandler.prototype.createTargetVertex=function(a,b){for(var c=this.graph.getCellGeometry(b);null!=c&&c.relative;)b=this.graph.getModel().getParent(b),c=this.graph.getCellGeometry(b);var d=this.graph.cloneCells([b])[0],c=this.graph.getModel().getGeometry(d);if(null!=c){var e=this.graph.view.translate,f=this.graph.view.scale,g=new mxPoint(this.currentPoint.x/f-e.x,this.currentPoint.y/f-e.y);c.x=Math.round(g.x-c.width/2-this.graph.panDx/f);c.y=Math.round(g.y-c.height/2-this.graph.panDy/f);
|
||||
g=this.getAlignmentTolerance();if(0<g){var k=this.graph.view.getState(b);if(null!=k){var l=k.x/f-e.x,e=k.y/f-e.y;Math.abs(l-c.x)<=g&&(c.x=Math.round(l));Math.abs(e-c.y)<=g&&(c.y=Math.round(e))}}}return d};mxConnectionHandler.prototype.getAlignmentTolerance=function(a){return this.graph.isGridEnabled()?this.graph.gridSize/2:this.graph.tolerance};
|
||||
|
|
|
@ -9,7 +9,32 @@ VsdConverter:
|
|||
AST.net web application that provides *.vsd files conversion service and acts as a client to the previous TCP server.
|
||||
|
||||
========================================
|
||||
Running the conversion site:
|
||||
Running the conversion site without Hyper-V:
|
||||
|
||||
1- Run VsdConverterApp TCP sever
|
||||
2- Deploy VsdConverter to IIS manually
|
||||
|
||||
2.1- Install IIS and enable ASP.NET
|
||||
2.1.a Open Control Panel, Programs and Features, Turn Windows features on or off.
|
||||
2.1.b Expand Internet Information Services, World Wide Web Services, and Application Development Features.
|
||||
2.1.c Make sure that ASP.NET 4.7 is selected.
|
||||
2.2- After installing IIS, run IIS Manager to make sure that the .NET Framework version 4 is assigned to the default application pool.
|
||||
2.2.a Press WINDOWS+R to open the Run dialog box.
|
||||
2.2.b Enter "inetmgr", and then click OK.
|
||||
2.2.c In the Connections pane, expand the server node and select Application Pools. In the Application Pools pane, if DefaultAppPool is assigned to the .NET framework version 4, skip to (2.3).
|
||||
2.2.d In the Application Pools pane, click DefaultAppPool, and then in the Actions pane click Basic Settings.
|
||||
2.2.e In the Edit Application Pool dialog box, change .NET Framework version to .NET Framework v4.0.30319 and click OK.
|
||||
2.2.f IIS is now ready for you to publish a web application to it.
|
||||
2.3- Create the deployment files from Visual Studio (Build-> Publish VsdConverter) and select folder deploy
|
||||
2.4- Upload the folder (zipped) & the TCP server App (VsdConverterApp) to Google Drive and download it from the server
|
||||
2.5- Unpack the files to IIS app in C:\VsdConverter && exe to VsdConverterLocalSrv
|
||||
2.6- In folder: C:\inetpub\wwwroot\VsdConverter_deploy
|
||||
2.6.a create folder: App_Data
|
||||
2.6.b Open Properties of App_Data -> Security -> Edit
|
||||
2.6.c Give full control to Users: IIS_IUSRS
|
||||
2.7- Website is ready
|
||||
========================================
|
||||
Running the conversion site with Hyper-V:
|
||||
|
||||
1- Run VsdConverterApp TCP sever
|
||||
2- Deploy VsdConverter to IIS (manually or using Web Deployment Tool).
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -162,7 +162,7 @@
|
|||
</site>
|
||||
<site name="VsdConverter" id="2">
|
||||
<application path="/" applicationPool="Clr4IntegratedAppPool">
|
||||
<virtualDirectory path="/" physicalPath="C:\Users\ashra\source\repos\VsdConverter\VsdConverter" />
|
||||
<virtualDirectory path="/" physicalPath="C:\Users\ashra\Documents\drawio\etc\vsd\VsdConverter\VsdConverter" />
|
||||
</application>
|
||||
<bindings>
|
||||
<binding protocol="http" bindingInformation="*:59769:localhost" />
|
||||
|
|
|
@ -88,7 +88,9 @@ namespace VsdConverter.Controllers
|
|||
{
|
||||
// Read the form data and return an async task.
|
||||
await Request.Content.ReadAsMultipartAsync(provider);
|
||||
|
||||
String srcExt = "", dstExt = "";
|
||||
|
||||
//We assume one type for all files, otherwise, conversion will fail
|
||||
foreach (var file in provider.FileData)
|
||||
{
|
||||
string actualFileName = file.Headers.ContentDisposition.FileName;
|
||||
|
@ -98,6 +100,17 @@ namespace VsdConverter.Controllers
|
|||
actualNames.Add(actualFileName);
|
||||
|
||||
System.IO.File.Move(file.LocalFileName, file.LocalFileName + ".vsd");
|
||||
srcExt = ".vsd";
|
||||
dstExt = ".vsdx";
|
||||
}
|
||||
else if (actualFileName.EndsWith(".vss\""))
|
||||
{
|
||||
convertedFiles.Add(file.LocalFileName);
|
||||
actualNames.Add(actualFileName);
|
||||
|
||||
System.IO.File.Move(file.LocalFileName, file.LocalFileName + ".vss");
|
||||
srcExt = ".vss";
|
||||
dstExt = ".vssx";
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -106,12 +119,14 @@ namespace VsdConverter.Controllers
|
|||
}
|
||||
|
||||
StringBuilder allFiles = new StringBuilder();
|
||||
String newLine = "";
|
||||
allFiles.Append(srcExt);
|
||||
allFiles.Append("\n");
|
||||
allFiles.Append(dstExt);
|
||||
|
||||
for (int i = 0; i < convertedFiles.Count; i++)
|
||||
{
|
||||
allFiles.Append(newLine);
|
||||
allFiles.Append("\n");
|
||||
allFiles.Append(convertedFiles[i]);
|
||||
newLine = "\n";
|
||||
}
|
||||
|
||||
//Ask the TCP Converter Server to do the job
|
||||
|
@ -127,19 +142,19 @@ namespace VsdConverter.Controllers
|
|||
{
|
||||
var pushStreamContent = new PushStreamContent((stream, content, context) =>
|
||||
{
|
||||
FileStream fs = new FileStream(convertedFiles[0] + ".vsdx", FileMode.Open);
|
||||
FileStream fs = new FileStream(convertedFiles[0] + dstExt, FileMode.Open);
|
||||
fs.CopyTo(stream);
|
||||
fs.Close();
|
||||
stream.Close(); // After save we close the stream to signal that we are done writing.
|
||||
|
||||
System.IO.File.Delete(convertedFiles[0] + ".vsd");
|
||||
System.IO.File.Delete(convertedFiles[0] + ".vsdx");
|
||||
System.IO.File.Delete(convertedFiles[0] + srcExt);
|
||||
System.IO.File.Delete(convertedFiles[0] + dstExt);
|
||||
}, "application/x-visio");
|
||||
|
||||
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK) { Content = pushStreamContent };
|
||||
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
|
||||
{
|
||||
FileName = Path.GetFileNameWithoutExtension(actualNames[0].Replace('"', ' ')) + ".vsdx"
|
||||
FileName = Path.GetFileNameWithoutExtension(actualNames[0].Replace('"', ' ')) + dstExt
|
||||
};
|
||||
response.Content.Headers.Add("Access-Control-Allow-Origin", "*");
|
||||
return response;
|
||||
|
@ -152,8 +167,8 @@ namespace VsdConverter.Controllers
|
|||
{
|
||||
var name = Path.GetFileNameWithoutExtension(actualNames[i].Replace('"', ' '));
|
||||
var file = convertedFiles[i];
|
||||
var e = zipFile.AddFile(file + ".vsdx");
|
||||
e.FileName = name + ".vsdx";
|
||||
var e = zipFile.AddFile(file + dstExt);
|
||||
e.FileName = name + dstExt;
|
||||
}
|
||||
|
||||
var pushStreamContent = new PushStreamContent((stream, content, context) =>
|
||||
|
@ -163,8 +178,8 @@ namespace VsdConverter.Controllers
|
|||
|
||||
foreach (string file in convertedFiles)
|
||||
{
|
||||
System.IO.File.Delete(file + ".vsd");
|
||||
System.IO.File.Delete(file + ".vsdx");
|
||||
System.IO.File.Delete(file + srcExt);
|
||||
System.IO.File.Delete(file + dstExt);
|
||||
}
|
||||
}, "application/zip");
|
||||
|
||||
|
|
|
@ -10,70 +10,70 @@ by editing this MSBuild file. In order to learn more about this please visit htt
|
|||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<File Include="ApplicationInsights.config">
|
||||
<publishTime>12/28/2017 15:07:25</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Areas/HelpPage/HelpPage.css">
|
||||
<publishTime>12/28/2017 15:07:22</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Areas/HelpPage/Views/Help/Api.cshtml">
|
||||
<publishTime>12/28/2017 15:07:20</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Areas/HelpPage/Views/Help/DisplayTemplates/ApiGroup.cshtml">
|
||||
<publishTime>12/28/2017 15:07:20</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Areas/HelpPage/Views/Help/DisplayTemplates/CollectionModelDescription.cshtml">
|
||||
<publishTime>12/28/2017 15:07:20</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Areas/HelpPage/Views/Help/DisplayTemplates/ComplexTypeModelDescription.cshtml">
|
||||
<publishTime>12/28/2017 15:07:20</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Areas/HelpPage/Views/Help/DisplayTemplates/DictionaryModelDescription.cshtml">
|
||||
<publishTime>12/28/2017 15:07:20</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Areas/HelpPage/Views/Help/DisplayTemplates/EnumTypeModelDescription.cshtml">
|
||||
<publishTime>12/28/2017 15:07:20</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Areas/HelpPage/Views/Help/DisplayTemplates/HelpPageApiModel.cshtml">
|
||||
<publishTime>12/28/2017 15:07:20</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Areas/HelpPage/Views/Help/DisplayTemplates/ImageSample.cshtml">
|
||||
<publishTime>12/28/2017 15:07:20</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Areas/HelpPage/Views/Help/DisplayTemplates/InvalidSample.cshtml">
|
||||
<publishTime>12/28/2017 15:07:20</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Areas/HelpPage/Views/Help/DisplayTemplates/KeyValuePairModelDescription.cshtml">
|
||||
<publishTime>12/28/2017 15:07:20</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Areas/HelpPage/Views/Help/DisplayTemplates/ModelDescriptionLink.cshtml">
|
||||
<publishTime>12/28/2017 15:07:20</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Areas/HelpPage/Views/Help/DisplayTemplates/Parameters.cshtml">
|
||||
<publishTime>12/28/2017 15:07:20</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Areas/HelpPage/Views/Help/DisplayTemplates/Samples.cshtml">
|
||||
<publishTime>12/28/2017 15:07:20</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Areas/HelpPage/Views/Help/DisplayTemplates/SimpleTypeModelDescription.cshtml">
|
||||
<publishTime>12/28/2017 15:07:20</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Areas/HelpPage/Views/Help/DisplayTemplates/TextSample.cshtml">
|
||||
<publishTime>12/28/2017 15:07:19</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Areas/HelpPage/Views/Help/Index.cshtml">
|
||||
<publishTime>12/28/2017 15:07:19</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Areas/HelpPage/Views/Help/ResourceModel.cshtml">
|
||||
<publishTime>12/28/2017 15:07:19</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Areas/HelpPage/Views/Shared/_Layout.cshtml">
|
||||
<publishTime>12/28/2017 15:07:19</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Areas/HelpPage/Views/Web.config">
|
||||
<publishTime>03/30/2018 14:53:40</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Areas/HelpPage/Views/_ViewStart.cshtml">
|
||||
<publishTime>12/28/2017 15:07:03</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="bin/Antlr3.Runtime.dll">
|
||||
<publishTime>02/22/2013 08:43:40</publishTime>
|
||||
|
@ -82,7 +82,7 @@ by editing this MSBuild file. In order to learn more about this please visit htt
|
|||
<publishTime>02/22/2013 08:43:40</publishTime>
|
||||
</File>
|
||||
<File Include="bin/ApplicationInsights.config">
|
||||
<publishTime>12/28/2017 15:07:25</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="bin/Ionic.Zip.dll">
|
||||
<publishTime>11/22/2017 14:06:00</publishTime>
|
||||
|
@ -304,82 +304,82 @@ by editing this MSBuild file. In order to learn more about this please visit htt
|
|||
<publishTime>01/28/2015 04:04:30</publishTime>
|
||||
</File>
|
||||
<File Include="bin/VsdConverter.dll">
|
||||
<publishTime>03/31/2018 17:49:17</publishTime>
|
||||
<publishTime>07/24/2018 15:54:46</publishTime>
|
||||
</File>
|
||||
<File Include="bin/VsdConverter.pdb">
|
||||
<publishTime>03/31/2018 17:49:17</publishTime>
|
||||
<publishTime>07/24/2018 15:54:46</publishTime>
|
||||
</File>
|
||||
<File Include="bin/WebGrease.dll">
|
||||
<publishTime>09/10/2013 17:28:38</publishTime>
|
||||
</File>
|
||||
<File Include="Content/bootstrap.css">
|
||||
<publishTime>12/28/2017 15:07:10</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Content/bootstrap.min.css">
|
||||
<publishTime>12/28/2017 15:07:10</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Content/Site.css">
|
||||
<publishTime>12/28/2017 15:07:03</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="favicon.ico">
|
||||
<publishTime>12/28/2017 15:07:03</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="fonts/glyphicons-halflings-regular.eot">
|
||||
<publishTime>12/28/2017 15:07:10</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="fonts/glyphicons-halflings-regular.svg">
|
||||
<publishTime>12/28/2017 15:07:10</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="fonts/glyphicons-halflings-regular.ttf">
|
||||
<publishTime>12/28/2017 15:07:10</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="fonts/glyphicons-halflings-regular.woff">
|
||||
<publishTime>12/28/2017 15:07:10</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Global.asax">
|
||||
<publishTime>12/28/2017 15:07:03</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Scripts/bootstrap.js">
|
||||
<publishTime>12/28/2017 15:07:10</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Scripts/bootstrap.min.js">
|
||||
<publishTime>12/28/2017 15:07:10</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Scripts/jquery-1.10.2.js">
|
||||
<publishTime>12/28/2017 15:07:14</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Scripts/jquery-1.10.2.min.js">
|
||||
<publishTime>12/28/2017 15:07:14</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Scripts/jquery-1.10.2.min.map">
|
||||
<publishTime>12/28/2017 15:07:14</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Scripts/modernizr-2.6.2.js">
|
||||
<publishTime>12/28/2017 15:07:22</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Scripts/respond.js">
|
||||
<publishTime>12/28/2017 15:07:24</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Scripts/respond.min.js">
|
||||
<publishTime>12/28/2017 15:07:24</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Views/Home/Index.cshtml">
|
||||
<publishTime>03/30/2018 15:59:48</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Views/Shared/Error.cshtml">
|
||||
<publishTime>12/28/2017 15:07:03</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Views/Shared/_Layout.cshtml">
|
||||
<publishTime>12/28/2017 15:07:03</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Views/Web.config">
|
||||
<publishTime>03/30/2018 14:53:40</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Views/_ViewStart.cshtml">
|
||||
<publishTime>12/28/2017 15:07:03</publishTime>
|
||||
<publishTime>04/20/2018 13:27:12</publishTime>
|
||||
</File>
|
||||
<File Include="Web.config">
|
||||
<publishTime>03/31/2018 17:49:18</publishTime>
|
||||
<publishTime>07/24/2018 15:54:47</publishTime>
|
||||
</File>
|
||||
</ItemGroup>
|
||||
</Project>
|
Binary file not shown.
Binary file not shown.
|
@ -92,7 +92,17 @@ namespace VsdConverterApp
|
|||
//Now convert these vsd file pathes to vsdx
|
||||
Console.WriteLine("{0} - Converting ...", clientNum);
|
||||
|
||||
String[] files = allData.Split('\n');
|
||||
String[] info = allData.Split('\n');
|
||||
|
||||
if (info.Length < 3)
|
||||
throw new Exception("Invalid number of arguments");
|
||||
|
||||
String[] files = new String[info.Length - 2];
|
||||
for (var o = 2; o < info.Length; o++)
|
||||
files[o - 2] = info[o];
|
||||
|
||||
String srcExt = info[0];
|
||||
String dstExt = info[1];
|
||||
|
||||
//Using COM to call visio to convert the files
|
||||
Type VisioType = Type.GetTypeFromProgID("Visio.InvisibleApp");
|
||||
|
@ -104,8 +114,8 @@ namespace VsdConverterApp
|
|||
{
|
||||
if (file.Length > 0)
|
||||
{
|
||||
var doc = VisioInst.Documents.Open(file + ".vsd");
|
||||
doc.SaveAs(file + ".vsdx");
|
||||
var doc = VisioInst.Documents.Open(file + srcExt);
|
||||
doc.SaveAs(file + dstExt);
|
||||
doc.Close();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
CACHE MANIFEST
|
||||
|
||||
# THIS FILE WAS GENERATED. DO NOT MODIFY!
|
||||
# 07/18/2018 05:43 PM
|
||||
# 07/26/2018 10:35 AM
|
||||
|
||||
app.html
|
||||
index.html?offline=1
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 89 KiB After Width: | Height: | Size: 119 KiB |
1735
src/main/webapp/js/app.min.js
vendored
1735
src/main/webapp/js/app.min.js
vendored
File diff suppressed because one or more lines are too long
1461
src/main/webapp/js/atlas-viewer.min.js
vendored
1461
src/main/webapp/js/atlas-viewer.min.js
vendored
File diff suppressed because one or more lines are too long
2561
src/main/webapp/js/atlas.min.js
vendored
2561
src/main/webapp/js/atlas.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -2280,12 +2280,16 @@ App.prototype.start = function()
|
|||
this.hideDialog();
|
||||
var prev = Editor.useLocalStorage;
|
||||
this.createFile((filename.length > 0) ? filename : this.defaultFilename,
|
||||
this.getFileData(), null, null, null, null, null, true);
|
||||
this.getFileData(), null, null, null, true, null, true);
|
||||
Editor.useLocalStorage = prev;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.createFile(filename, this.getFileData(true), null, mode);
|
||||
this.pickFolder(mode, mxUtils.bind(this, function(folderId)
|
||||
{
|
||||
this.createFile(filename, this.getFileData(true),
|
||||
null, mode, null, true, folderId);
|
||||
}));
|
||||
}
|
||||
}), null, null, null, null, urlParams['browser'] == '1', null, null, true, rowLimit);
|
||||
this.showDialog(dlg.container, 380, (serviceCount > rowLimit) ? 390 : 270,
|
||||
|
@ -3008,7 +3012,7 @@ App.prototype.saveFile = function(forceDialog)
|
|||
* @param {number} dx X-coordinate of the translation.
|
||||
* @param {number} dy Y-coordinate of the translation.
|
||||
*/
|
||||
EditorUi.prototype.loadTemplate = function(url, onload, onerror)
|
||||
App.prototype.loadTemplate = function(url, onload, onerror)
|
||||
{
|
||||
var realUrl = url;
|
||||
|
||||
|
@ -3039,11 +3043,14 @@ EditorUi.prototype.loadTemplate = function(url, onload, onerror)
|
|||
}
|
||||
}), url);
|
||||
}
|
||||
else if (data.substring(0, 26) == '{"state":"{\\"Properties\\":')
|
||||
else if (this.isLucidChartData(data))
|
||||
{
|
||||
this.importLucidChart(data, 0, 0, false, mxUtils.bind(this, function()
|
||||
this.convertLucidChart(data, mxUtils.bind(this, function(xml)
|
||||
{
|
||||
onload(this.getFileData(true));
|
||||
onload(xml);
|
||||
}), mxUtils.bind(this, function(e)
|
||||
{
|
||||
onerror(e);
|
||||
}));
|
||||
}
|
||||
else
|
||||
|
@ -3137,14 +3144,11 @@ App.prototype.createFile = function(title, data, libs, mode, done, replace, fold
|
|||
}
|
||||
else if (mode == App.MODE_GITHUB && this.gitHub != null)
|
||||
{
|
||||
this.pickFolder(mode, mxUtils.bind(this, function(folderId)
|
||||
this.gitHub.insertFile(title, data, mxUtils.bind(this, function(file)
|
||||
{
|
||||
this.gitHub.insertFile(title, data, mxUtils.bind(this, function(file)
|
||||
{
|
||||
complete();
|
||||
this.fileCreated(file, libs, replace, done);
|
||||
}), error, false, folderId);
|
||||
}));
|
||||
complete();
|
||||
this.fileCreated(file, libs, replace, done);
|
||||
}), error, false, folderId);
|
||||
}
|
||||
else if (mode == App.MODE_TRELLO && this.trello != null)
|
||||
{
|
||||
|
|
|
@ -852,111 +852,6 @@ var ConfirmDialog = function(editorUi, message, okFn, cancelFn, okLabel, cancelL
|
|||
this.container = div;
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
var ErrorDialog = function(editorUi, title, message, buttonText, fn, retry, buttonText2, fn2, hide, buttonText3, fn3)
|
||||
{
|
||||
hide = (hide != null) ? hide : true;
|
||||
|
||||
var div = document.createElement('div');
|
||||
div.style.textAlign = 'center';
|
||||
|
||||
if (title != null)
|
||||
{
|
||||
var hd = document.createElement('div');
|
||||
hd.style.padding = '0px';
|
||||
hd.style.margin = '0px';
|
||||
hd.style.fontSize = '18px';
|
||||
hd.style.paddingBottom = '16px';
|
||||
hd.style.marginBottom = '16px';
|
||||
hd.style.borderBottom = '1px solid #c0c0c0';
|
||||
hd.style.color = 'gray';
|
||||
mxUtils.write(hd, title);
|
||||
div.appendChild(hd);
|
||||
}
|
||||
|
||||
var p2 = document.createElement('div');
|
||||
p2.style.padding = '6px';
|
||||
p2.innerHTML = message;
|
||||
div.appendChild(p2);
|
||||
|
||||
var btns = document.createElement('div');
|
||||
btns.style.marginTop = '16px';
|
||||
btns.style.textAlign = 'center';
|
||||
|
||||
if (retry != null)
|
||||
{
|
||||
var retryBtn = mxUtils.button(mxResources.get('tryAgain'), function()
|
||||
{
|
||||
editorUi.hideDialog();
|
||||
retry();
|
||||
});
|
||||
retryBtn.className = 'geBtn';
|
||||
btns.appendChild(retryBtn);
|
||||
|
||||
btns.style.textAlign = 'center';
|
||||
}
|
||||
|
||||
if (buttonText3 != null)
|
||||
{
|
||||
var btn3 = mxUtils.button(buttonText3, function()
|
||||
{
|
||||
if (fn3 != null)
|
||||
{
|
||||
fn3();
|
||||
}
|
||||
});
|
||||
|
||||
btn3.className = 'geBtn';
|
||||
btns.appendChild(btn3);
|
||||
}
|
||||
|
||||
var btn = mxUtils.button(buttonText, function()
|
||||
{
|
||||
if (hide)
|
||||
{
|
||||
editorUi.hideDialog();
|
||||
}
|
||||
|
||||
if (fn != null)
|
||||
{
|
||||
fn();
|
||||
}
|
||||
});
|
||||
|
||||
btn.className = 'geBtn';
|
||||
btns.appendChild(btn);
|
||||
|
||||
if (buttonText2 != null)
|
||||
{
|
||||
var mainBtn = mxUtils.button(buttonText2, function()
|
||||
{
|
||||
if (hide)
|
||||
{
|
||||
editorUi.hideDialog();
|
||||
}
|
||||
|
||||
if (fn2 != null)
|
||||
{
|
||||
fn2();
|
||||
}
|
||||
});
|
||||
|
||||
mainBtn.className = 'geBtn gePrimaryBtn';
|
||||
btns.appendChild(mainBtn);
|
||||
}
|
||||
|
||||
this.init = function()
|
||||
{
|
||||
btn.focus();
|
||||
};
|
||||
|
||||
div.appendChild(btns);
|
||||
|
||||
this.container = div;
|
||||
};
|
||||
|
||||
/**
|
||||
* Constructs a new embed dialog
|
||||
*/
|
||||
|
|
|
@ -83,11 +83,20 @@
|
|||
'#\n' +
|
||||
'# style: label;image=%image%;whiteSpace=wrap;html=1;rounded=1;fillColor=%fill%;strokeColor=%stroke%;\n' +
|
||||
'#\n' +
|
||||
'## Parent style for nodes with child nodes (placeholders are replaced once).\n' +
|
||||
'#\n' +
|
||||
'# parentstyle: swimlane;whiteSpace=wrap;html=1;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeLast=0;collapsible=1;\n' +
|
||||
'#\n' +
|
||||
'## Uses the given column name as the identity for cells (updates existing cells).\n' +
|
||||
'## Default is no identity (empty value or -).\n' +
|
||||
'#\n' +
|
||||
'# identity: -\n' +
|
||||
'#\n' +
|
||||
'## Uses the given column name as the parent reference for cells. Default is no parent (empty or -).\n' +
|
||||
'## The identity above is used for resolving the reference so it must be specified.\n' +
|
||||
'#\n' +
|
||||
'# parent: -\n' +
|
||||
'#\n' +
|
||||
'## Adds a prefix to the identity of cells to make sure they do not collide with existing cells (whose\n' +
|
||||
'## IDs are numbers from 0..n, sometimes with a GUID prefix in the context of realtime collaboration).\n' +
|
||||
'## Default is csvimport-.\n' +
|
||||
|
@ -1524,7 +1533,7 @@
|
|||
{
|
||||
if (href.substring(0, 17) == 'data:action/json,')
|
||||
{
|
||||
// Some actions are stateless and must be handled before of the transaction
|
||||
// Some actions are stateless and must be handled before the transaction
|
||||
var action = JSON.parse(href.substring(17));
|
||||
|
||||
if (action.actions != null)
|
||||
|
@ -1536,7 +1545,10 @@
|
|||
{
|
||||
if (this.isCustomLink(action.actions[i].open))
|
||||
{
|
||||
this.customLinkClicked(action.actions[i].open);
|
||||
if (!this.customLinkClicked(action.actions[i].open))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1972,6 +1984,7 @@
|
|||
mxStencilRegistry.libraries['eip'] = [SHAPES_PATH + '/mxEip.js', STENCIL_PATH + '/eip.xml'];
|
||||
mxStencilRegistry.libraries['networks'] = [SHAPES_PATH + '/mxNetworks.js', STENCIL_PATH + '/networks.xml'];
|
||||
mxStencilRegistry.libraries['aws3d'] = [SHAPES_PATH + '/mxAWS3D.js', STENCIL_PATH + '/aws3d.xml'];
|
||||
mxStencilRegistry.libraries['veeam'] = [STENCIL_PATH + '/veeam/2d.xml', STENCIL_PATH + '/veeam/3d.xml', STENCIL_PATH + '/veeam/veeam.xml'];
|
||||
mxStencilRegistry.libraries['pid2inst'] = [SHAPES_PATH + '/pid2/mxPidInstruments.js'];
|
||||
mxStencilRegistry.libraries['pid2misc'] = [SHAPES_PATH + '/pid2/mxPidMisc.js', STENCIL_PATH + '/pid/misc.xml'];
|
||||
mxStencilRegistry.libraries['pid2valves'] = [SHAPES_PATH + '/pid2/mxPidValves.js'];
|
||||
|
@ -2662,6 +2675,111 @@
|
|||
};
|
||||
})();
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
var ErrorDialog = function(editorUi, title, message, buttonText, fn, retry, buttonText2, fn2, hide, buttonText3, fn3)
|
||||
{
|
||||
hide = (hide != null) ? hide : true;
|
||||
|
||||
var div = document.createElement('div');
|
||||
div.style.textAlign = 'center';
|
||||
|
||||
if (title != null)
|
||||
{
|
||||
var hd = document.createElement('div');
|
||||
hd.style.padding = '0px';
|
||||
hd.style.margin = '0px';
|
||||
hd.style.fontSize = '18px';
|
||||
hd.style.paddingBottom = '16px';
|
||||
hd.style.marginBottom = '16px';
|
||||
hd.style.borderBottom = '1px solid #c0c0c0';
|
||||
hd.style.color = 'gray';
|
||||
mxUtils.write(hd, title);
|
||||
div.appendChild(hd);
|
||||
}
|
||||
|
||||
var p2 = document.createElement('div');
|
||||
p2.style.padding = '6px';
|
||||
p2.innerHTML = message;
|
||||
div.appendChild(p2);
|
||||
|
||||
var btns = document.createElement('div');
|
||||
btns.style.marginTop = '16px';
|
||||
btns.style.textAlign = 'center';
|
||||
|
||||
if (retry != null)
|
||||
{
|
||||
var retryBtn = mxUtils.button(mxResources.get('tryAgain'), function()
|
||||
{
|
||||
editorUi.hideDialog();
|
||||
retry();
|
||||
});
|
||||
retryBtn.className = 'geBtn';
|
||||
btns.appendChild(retryBtn);
|
||||
|
||||
btns.style.textAlign = 'center';
|
||||
}
|
||||
|
||||
if (buttonText3 != null)
|
||||
{
|
||||
var btn3 = mxUtils.button(buttonText3, function()
|
||||
{
|
||||
if (fn3 != null)
|
||||
{
|
||||
fn3();
|
||||
}
|
||||
});
|
||||
|
||||
btn3.className = 'geBtn';
|
||||
btns.appendChild(btn3);
|
||||
}
|
||||
|
||||
var btn = mxUtils.button(buttonText, function()
|
||||
{
|
||||
if (hide)
|
||||
{
|
||||
editorUi.hideDialog();
|
||||
}
|
||||
|
||||
if (fn != null)
|
||||
{
|
||||
fn();
|
||||
}
|
||||
});
|
||||
|
||||
btn.className = 'geBtn';
|
||||
btns.appendChild(btn);
|
||||
|
||||
if (buttonText2 != null)
|
||||
{
|
||||
var mainBtn = mxUtils.button(buttonText2, function()
|
||||
{
|
||||
if (hide)
|
||||
{
|
||||
editorUi.hideDialog();
|
||||
}
|
||||
|
||||
if (fn2 != null)
|
||||
{
|
||||
fn2();
|
||||
}
|
||||
});
|
||||
|
||||
mainBtn.className = 'geBtn gePrimaryBtn';
|
||||
btns.appendChild(mainBtn);
|
||||
}
|
||||
|
||||
this.init = function()
|
||||
{
|
||||
btn.focus();
|
||||
};
|
||||
|
||||
div.appendChild(btns);
|
||||
|
||||
this.container = div;
|
||||
};
|
||||
|
||||
// Extends codec for ChangePageSetup
|
||||
(function()
|
||||
{
|
||||
|
|
|
@ -1354,7 +1354,7 @@
|
|||
}
|
||||
});
|
||||
|
||||
if (desc.url != null)
|
||||
if (desc.url != null && desc.url.length > 0)
|
||||
{
|
||||
var realUrl = desc.url;
|
||||
|
||||
|
@ -1377,7 +1377,7 @@
|
|||
}
|
||||
else
|
||||
{
|
||||
loadData(desc.data);
|
||||
loadData('');
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -2558,7 +2558,7 @@
|
|||
}
|
||||
});
|
||||
|
||||
if (file != null && img != null && ((/(\.vsdx?)($|\?)/i.test(img)) || /(\.vssx)($|\?)/i.test(img)))
|
||||
if (file != null && img != null && ((/(\.vsdx?)($|\?)/i.test(img)) || /(\.vssx?)($|\?)/i.test(img)))
|
||||
{
|
||||
this.importVisio(file, function(xml)
|
||||
{
|
||||
|
@ -2914,14 +2914,6 @@
|
|||
mxUtils.htmlEntities(mxResources.get('tryOpeningViaThisPage')) + '</a>';
|
||||
}
|
||||
}
|
||||
else if (e.code == App.ERROR_TIMEOUT)
|
||||
{
|
||||
msg = mxUtils.htmlEntities(mxResources.get('timeout'));
|
||||
}
|
||||
else if (e.code == App.ERROR_BUSY)
|
||||
{
|
||||
msg = mxUtils.htmlEntities(mxResources.get('busy'));
|
||||
}
|
||||
else if (e.message != null)
|
||||
{
|
||||
msg = mxUtils.htmlEntities(e.message);
|
||||
|
@ -2930,6 +2922,17 @@
|
|||
{
|
||||
msg = mxUtils.htmlEntities(e.response.error);
|
||||
}
|
||||
else if (window.App !== 'undefined')
|
||||
{
|
||||
if (e.code == App.ERROR_TIMEOUT)
|
||||
{
|
||||
msg = mxUtils.htmlEntities(mxResources.get('timeout'));
|
||||
}
|
||||
else if (e.code == App.ERROR_BUSY)
|
||||
{
|
||||
msg = mxUtils.htmlEntities(mxResources.get('busy'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.showError(title, msg, btn, fn, retry);
|
||||
|
@ -5813,7 +5816,7 @@
|
|||
|
||||
if (this.doImportVisio)
|
||||
{
|
||||
if (/(\.vsd)($|\?)/i.test(filename) && VSD_CONVERT_URL != null)
|
||||
if ((/(\.vsd)($|\?)/i.test(filename) || /(\.vss)($|\?)/i.test(filename)) && VSD_CONVERT_URL != null)
|
||||
{
|
||||
var formData = new FormData();
|
||||
formData.append('file1', file, filename);
|
||||
|
@ -5830,6 +5833,8 @@
|
|||
{
|
||||
try
|
||||
{
|
||||
//add back the file name
|
||||
xhr.response.name = filename;
|
||||
this.doImportVisio(xhr.response, done, onerror);
|
||||
}
|
||||
catch (e)
|
||||
|
@ -5907,34 +5912,32 @@
|
|||
/**
|
||||
* Imports the given Lucidchart data.
|
||||
*/
|
||||
EditorUi.prototype.importLucidChart = function(data, dx, dy, crop, done)
|
||||
EditorUi.prototype.convertLucidChart = function(data, success, error)
|
||||
{
|
||||
var delayed = mxUtils.bind(this, function()
|
||||
{
|
||||
this.loadingExtensions = false;
|
||||
|
||||
// Checks for signature method
|
||||
if (this.pasteLucidChart)
|
||||
if (typeof window.LucidImporter !== 'undefined')
|
||||
{
|
||||
try
|
||||
{
|
||||
this.insertLucidChart(data, dx, dy, crop, done);
|
||||
success(LucidImporter.importState(JSON.parse(data)));
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
this.handleError(e);
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (done != null)
|
||||
{
|
||||
done();
|
||||
}
|
||||
error(e);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
error({message: mxResources.get('serviceUnavailableOrBlocked')});
|
||||
}
|
||||
});
|
||||
|
||||
if (!this.pasteLucidChart && !this.loadingExtensions && !this.isOffline())
|
||||
if (typeof window.LucidImporter === 'undefined' &&
|
||||
!this.loadingExtensions && !this.isOffline())
|
||||
{
|
||||
this.loadingExtensions = true;
|
||||
|
||||
|
@ -5949,80 +5952,11 @@
|
|||
}
|
||||
else
|
||||
{
|
||||
// Must be async for cell selection
|
||||
// Async needed for selection
|
||||
window.setTimeout(delayed, 0);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Automatic loading for lucidchart import.
|
||||
*/
|
||||
EditorUi.prototype.insertLucidChart = function(data, dx, dy, crop, done)
|
||||
{
|
||||
var state = JSON.parse(data);
|
||||
|
||||
// Extracts and sorts all pages
|
||||
var pages = [];
|
||||
|
||||
if (state.state != null)
|
||||
{
|
||||
state = JSON.parse(state.state);
|
||||
|
||||
for (var id in state.Pages)
|
||||
{
|
||||
pages.push(state.Pages[id]);
|
||||
}
|
||||
|
||||
pages.sort(function(a, b)
|
||||
{
|
||||
if (a.Properties.Order < b.Properties.Order)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
else if (a.Properties.Order > b.Properties.Order)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
pages.push(state);
|
||||
}
|
||||
|
||||
if (pages.length > 0)
|
||||
{
|
||||
this.editor.graph.getModel().beginUpdate();
|
||||
|
||||
try
|
||||
{
|
||||
this.pasteLucidChart(pages[0], dx, dy, crop);
|
||||
|
||||
// If pages are enabled add more pages
|
||||
if (this.pages != null)
|
||||
{
|
||||
var current = this.currentPage;
|
||||
|
||||
for (var i = 1; i < pages.length; i++)
|
||||
{
|
||||
this.insertPage();
|
||||
this.pasteLucidChart(pages[i]);
|
||||
}
|
||||
|
||||
this.selectPage(current);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
this.editor.graph.getModel().endUpdate();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Imports the given XML into the existing diagram.
|
||||
* TODO: Make this function asynchronous
|
||||
|
@ -6042,7 +5976,8 @@
|
|||
{
|
||||
if (xhr.readyState == 4 && xhr.status >= 200 && xhr.status <= 299)
|
||||
{
|
||||
this.editor.graph.setSelectionCells(this.insertTextAt(xhr.responseText, dx, dy, true));
|
||||
this.editor.graph.setSelectionCells(this.insertTextAt(
|
||||
xhr.responseText, dx, dy, true));
|
||||
}
|
||||
}));
|
||||
|
||||
|
@ -6050,7 +5985,8 @@
|
|||
return [];
|
||||
}
|
||||
// Handles special case of data URI which requires async loading for finding size
|
||||
else if (text.substring(0, 5) == 'data:' || (!this.isOffline() && (asImage || (/\.(gif|jpg|jpeg|tiff|png|svg)$/i).test(text))))
|
||||
else if (text.substring(0, 5) == 'data:' || (!this.isOffline() &&
|
||||
(asImage || (/\.(gif|jpg|jpeg|tiff|png|svg)$/i).test(text))))
|
||||
{
|
||||
var graph = this.editor.graph;
|
||||
|
||||
|
@ -6150,9 +6086,16 @@
|
|||
}
|
||||
else if (text.length > 0)
|
||||
{
|
||||
if (text.substring(0, 26) == '{"state":"{\\"Properties\\":')
|
||||
if (this.isLucidChartData(text))
|
||||
{
|
||||
this.importLucidChart(text, dx, dy, crop);
|
||||
this.convertLucidChart(text, mxUtils.bind(this, function(xml)
|
||||
{
|
||||
this.editor.graph.setSelectionCells(
|
||||
this.importXml(xml, dx, dy, crop));
|
||||
}), mxUtils.bind(this, function(e)
|
||||
{
|
||||
this.handleError(e);
|
||||
}));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -6248,6 +6191,14 @@
|
|||
{
|
||||
return /(\"contentType\":\s*\"application\/gliffy\+json\")/.test(data);
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns true for Gliffy or GraphML data or .vsdx filenames.
|
||||
*/
|
||||
EditorUi.prototype.isLucidChartData = function(data)
|
||||
{
|
||||
return data != null && data.substring(0, 26) == '{"state":"{\\"Properties\\":';
|
||||
};
|
||||
|
||||
/**
|
||||
* Imports a local file from the device or local storage.
|
||||
|
@ -6411,7 +6362,7 @@
|
|||
}
|
||||
}));
|
||||
}
|
||||
else if (file != null && filename != null && ((/(\.vsdx?)($|\?)/i.test(filename)) || /(\.vssx)($|\?)/i.test(filename)))
|
||||
else if (file != null && filename != null && ((/(\.vsdx?)($|\?)/i.test(filename)) || /(\.vssx?)($|\?)/i.test(filename)))
|
||||
{
|
||||
// LATER: done and async are a hack before making this asynchronous
|
||||
async = true;
|
||||
|
@ -6439,7 +6390,7 @@
|
|||
}
|
||||
}), filename);
|
||||
}
|
||||
else if (!/(\.vsd)($|\?)/i.test(filename))
|
||||
else if (!/(\.vsd)($|\?)/i.test(filename) && !/(\.vss)($|\?)/i.test(filename))
|
||||
{
|
||||
cells = this.insertTextAt(this.validateFileData(data), dx, dy, true, null, crop);
|
||||
}
|
||||
|
@ -6537,7 +6488,7 @@
|
|||
this.spinner.stop();
|
||||
this.loadLibrary(new LocalLibrary(this, data, filename));
|
||||
|
||||
return null;
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -6807,26 +6758,26 @@
|
|||
}
|
||||
else
|
||||
{
|
||||
fn(e.target.result, file.type, x + index * gs, y + index * gs, 240, 160, file.name, function(cells)
|
||||
{
|
||||
barrier(index, function()
|
||||
{
|
||||
return cells;
|
||||
});
|
||||
});
|
||||
fn(e.target.result, file.type, x + index * gs, y + index * gs, 240, 160, file.name, function(cells)
|
||||
{
|
||||
barrier(index, function()
|
||||
{
|
||||
return cells;
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Handles special cases
|
||||
if (/(\.vsdx?)($|\?)/i.test(file.name) || /(\.vssx)($|\?)/i.test(file.name))
|
||||
if (/(\.vsdx?)($|\?)/i.test(file.name) || /(\.vssx?)($|\?)/i.test(file.name))
|
||||
{
|
||||
fn(null, file.type, x + index * gs, y + index * gs, 240, 160, file.name, function(cells)
|
||||
{
|
||||
barrier(index, function()
|
||||
{
|
||||
return cells;
|
||||
});
|
||||
{
|
||||
return cells;
|
||||
});
|
||||
}, file);
|
||||
}
|
||||
else if (file.type.substring(0, 5) == 'image')
|
||||
|
@ -7227,6 +7178,8 @@
|
|||
var editorUiInit = EditorUi.prototype.init;
|
||||
EditorUi.prototype.init = function()
|
||||
{
|
||||
mxStencilRegistry.allowEval = !this.isOfflineApp();
|
||||
|
||||
// Must be set before UI is created in superclass
|
||||
if (typeof window.mxSettings !== 'undefined')
|
||||
{
|
||||
|
@ -7245,14 +7198,19 @@
|
|||
// Redirects custom link via UI for page link handling
|
||||
graph.customLinkClicked = function(link)
|
||||
{
|
||||
var done = false;
|
||||
|
||||
try
|
||||
{
|
||||
ui.handleCustomLink(link);
|
||||
done = true;
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
ui.handleError(e);
|
||||
}
|
||||
|
||||
return done;
|
||||
};
|
||||
|
||||
// Sets help link for placeholders
|
||||
|
@ -7315,9 +7273,9 @@
|
|||
|
||||
if (href != null && graph.isCustomLink(href) &&
|
||||
(mxEvent.isTouchEvent(evt) ||
|
||||
!mxEvent.isPopupTrigger(evt)))
|
||||
!mxEvent.isPopupTrigger(evt)) &&
|
||||
graph.customLinkClicked(href))
|
||||
{
|
||||
graph.customLinkClicked(href);
|
||||
mxEvent.consume(evt);
|
||||
}
|
||||
|
||||
|
@ -7374,29 +7332,6 @@
|
|||
return graphGetGlobalVariable.apply(this, arguments);
|
||||
};
|
||||
|
||||
var graphCreateLinkForHint = graph.createLinkForHint;
|
||||
|
||||
graph.createLinkForHint = function(href, label)
|
||||
{
|
||||
if (href != null && graph.isCustomLink(href))
|
||||
{
|
||||
label = graph.getLinkTitle(href);
|
||||
}
|
||||
|
||||
var a = graphCreateLinkForHint.call(this, href, label);
|
||||
|
||||
if (href != null && graph.isCustomLink(href))
|
||||
{
|
||||
mxEvent.addListener(a, 'click', function(evt)
|
||||
{
|
||||
graph.customLinkClicked(href);
|
||||
mxEvent.consume(evt);
|
||||
});
|
||||
}
|
||||
|
||||
return a;
|
||||
};
|
||||
|
||||
var graphLabelLinkClicked = graph.labelLinkClicked;
|
||||
|
||||
graph.labelLinkClicked = function(state, elt, evt)
|
||||
|
@ -8109,6 +8044,11 @@
|
|||
{
|
||||
this.selectPage(page)
|
||||
}
|
||||
else
|
||||
{
|
||||
// Needs fallback for missing resource in case of viewer lightbox
|
||||
throw new Error(mxResources.get('pageNotFound') || 'Page not found');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -8283,7 +8223,14 @@
|
|||
|
||||
if (content != null && content.length > 0)
|
||||
{
|
||||
this.importLucidChart(content, 0, 0);
|
||||
this.convertLucidChart(content, mxUtils.bind(this, function(xml)
|
||||
{
|
||||
this.editor.graph.setSelectionCells(this.importXml(xml, 0, 0));
|
||||
}), mxUtils.bind(this, function(e)
|
||||
{
|
||||
this.handleError(e);
|
||||
}));
|
||||
|
||||
mxEvent.consume(evt);
|
||||
}
|
||||
}
|
||||
|
@ -8431,8 +8378,8 @@
|
|||
{
|
||||
if (dropElt != null)
|
||||
{
|
||||
dropElt.parentNode.removeChild(dropElt);
|
||||
dropElt = null;
|
||||
dropElt.parentNode.removeChild(dropElt);
|
||||
dropElt = null;
|
||||
}
|
||||
|
||||
if (this.editor.graph.isEnabled() || urlParams['embed'] != '1')
|
||||
|
@ -8687,7 +8634,7 @@
|
|||
}
|
||||
});
|
||||
|
||||
if (/(\.vsdx?)($|\?)/i.test(name) || /(\.vssx)($|\?)/i.test(name))
|
||||
if (/(\.vsdx?)($|\?)/i.test(name) || /(\.vssx?)($|\?)/i.test(name))
|
||||
{
|
||||
this.importVisio(file, mxUtils.bind(this, function(xml)
|
||||
{
|
||||
|
@ -8717,7 +8664,7 @@
|
|||
}
|
||||
}));
|
||||
}
|
||||
else if (data.substring(0, 26) == '{"state":"{\\"Properties\\":')
|
||||
else if (this.isLucidChartData(data))
|
||||
{
|
||||
if (/(\.json)$/i.test(name))
|
||||
{
|
||||
|
@ -8725,11 +8672,14 @@
|
|||
}
|
||||
|
||||
// LATER: Add import step that produces cells and use callback
|
||||
this.openLocalFile(this.emptyDiagramXml, name, temp);
|
||||
this.importLucidChart(data, 0, 0, null, mxUtils.bind(this, function()
|
||||
this.convertLucidChart(data, mxUtils.bind(this, function(xml)
|
||||
{
|
||||
this.editor.undoManager.clear();
|
||||
this.spinner.stop();
|
||||
this.openLocalFile(xml, name, temp);
|
||||
}), mxUtils.bind(this, function(e)
|
||||
{
|
||||
this.spinner.stop();
|
||||
this.handleError(e);
|
||||
}));
|
||||
}
|
||||
else if (e.target.result.substring(0, 10) == '<mxlibrary')
|
||||
|
@ -8834,8 +8784,15 @@
|
|||
window.openFile.setData(data, name);
|
||||
window.openWindow(this.getUrl(), null, mxUtils.bind(this, function()
|
||||
{
|
||||
this.confirm(mxResources.get('allChangesLost'), null, fn,
|
||||
mxResources.get('cancel'), mxResources.get('discardChanges'));
|
||||
if (currentFile != null && currentFile.isModified())
|
||||
{
|
||||
this.confirm(mxResources.get('allChangesLost'), null, fn,
|
||||
mxResources.get('cancel'), mxResources.get('discardChanges'));
|
||||
}
|
||||
else
|
||||
{
|
||||
fn();
|
||||
}
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
@ -9766,7 +9723,9 @@
|
|||
|
||||
// Default values
|
||||
var style = null;
|
||||
var parentstyle = null;
|
||||
var identity = null;
|
||||
var parent = null;
|
||||
var namespace = '';
|
||||
var width = 'auto';
|
||||
var height = 'auto';
|
||||
|
@ -9851,10 +9810,18 @@
|
|||
{
|
||||
style = value;
|
||||
}
|
||||
else if (key == 'parentstyle')
|
||||
{
|
||||
parentstyle = value;
|
||||
}
|
||||
else if (key == 'identity' && value.length > 0 && value != '-')
|
||||
{
|
||||
identity = value;
|
||||
}
|
||||
else if (key == 'parent' && value.length > 0 && value != '-')
|
||||
{
|
||||
parent = value;
|
||||
}
|
||||
else if (key == 'namespace' && value.length > 0 && value != '-')
|
||||
{
|
||||
namespace = value;
|
||||
|
@ -9909,17 +9876,22 @@
|
|||
|
||||
var keys = this.editor.csvToArray(lines[index]);
|
||||
|
||||
// Converts name of identity to index of column
|
||||
// Converts name of identity and parent to indexes of column
|
||||
var identityIndex = null;
|
||||
var parentIndex = null;
|
||||
|
||||
if (identity != null)
|
||||
if (identity != null || parent != null)
|
||||
{
|
||||
for (var i = 0; i < keys.length; i++)
|
||||
{
|
||||
if (identity == keys[i])
|
||||
{
|
||||
identityIndex = i;
|
||||
break;
|
||||
}
|
||||
|
||||
if (parent == keys[i])
|
||||
{
|
||||
parentIndex = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -9964,7 +9936,7 @@
|
|||
cell.vertex = true;
|
||||
cell.id = id;
|
||||
}
|
||||
|
||||
|
||||
for (var j = 0; j < values.length; j++)
|
||||
{
|
||||
graph.setAttributeForCell(cell, keys[j], values[j]);
|
||||
|
@ -10022,8 +9994,19 @@
|
|||
|
||||
y += cell.geometry.height + nodespacing;
|
||||
}
|
||||
|
||||
cells.push(graph.addCell(cell));
|
||||
|
||||
var parent = (parentIndex != null) ? graph.model.getCell(
|
||||
namespace + values[parentIndex]) : null;
|
||||
|
||||
if (parent != null)
|
||||
{
|
||||
parent.style = graph.replacePlaceholders(parent, parentstyle);
|
||||
graph.addCell(cell, parent);
|
||||
}
|
||||
else
|
||||
{
|
||||
cells.push(graph.addCell(cell));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -10095,7 +10078,7 @@
|
|||
{
|
||||
edgeLayout.execute(graph.getDefaultParent());
|
||||
|
||||
// Aligns cells to grid and/or rounds positions
|
||||
// Aligns cells to grid and/or rounds positions
|
||||
for (var i = 0; i < cells.length; i++)
|
||||
{
|
||||
var geo = graph.getCellGeometry(cells[i]);
|
||||
|
|
|
@ -181,21 +181,26 @@ FeedbackDialog.feedbackUrl = 'https://log.draw.io/email';
|
|||
var fs = require('fs');
|
||||
|
||||
fs.readFile(path, encoding, mxUtils.bind(this, function (e, data)
|
||||
{
|
||||
if (e)
|
||||
{
|
||||
editorUi.spinner.stop();
|
||||
editorUi.handleError(e);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (e)
|
||||
{
|
||||
editorUi.spinner.stop();
|
||||
editorUi.handleError(e);
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
if (data.substring(0, 26) == '{"state":"{\\"Properties\\":')
|
||||
if (editorUi.isLucidChartData(data))
|
||||
{
|
||||
editorUi.importLucidChart(data, 0, 0, null, function()
|
||||
editorUi.convertLucidChart(data, function(xml)
|
||||
{
|
||||
editorUi.spinner.stop();
|
||||
graph.setSelectionCells(editorUi.importXml(xml));
|
||||
}, function(e)
|
||||
{
|
||||
editorUi.spinner.stop();
|
||||
editorUi.handleError(e);
|
||||
});
|
||||
}
|
||||
else if (/(\.vsdx)($|\?)/i.test(path))
|
||||
|
@ -203,7 +208,7 @@ FeedbackDialog.feedbackUrl = 'https://log.draw.io/email';
|
|||
editorUi.importVisio(editorUi.base64ToBlob(data, 'application/octet-stream'), function(xml)
|
||||
{
|
||||
editorUi.spinner.stop();
|
||||
editorUi.editor.graph.setSelectionCells(editorUi.insertTextAt(xml, 0, 0, true));
|
||||
graph.setSelectionCells(editorUi.importXml(xml));
|
||||
});
|
||||
}
|
||||
else if (!editorUi.isOffline() && new XMLHttpRequest().upload && editorUi.isRemoteFileFormat(data, path))
|
||||
|
@ -217,7 +222,7 @@ FeedbackDialog.feedbackUrl = 'https://log.draw.io/email';
|
|||
|
||||
if (xhr.status >= 200 && xhr.status <= 299)
|
||||
{
|
||||
editorUi.editor.graph.setSelectionCells(editorUi.insertTextAt(xhr.responseText, 0, 0, true));
|
||||
graph.setSelectionCells(editorUi.importXml(xhr.responseText));
|
||||
}
|
||||
}
|
||||
}), path);
|
||||
|
@ -235,40 +240,40 @@ FeedbackDialog.feedbackUrl = 'https://log.draw.io/email';
|
|||
}
|
||||
}
|
||||
else if (/\.svg$/i.test(path))
|
||||
{
|
||||
// LATER: Use importXml without throwing exception if no data
|
||||
// Checks if SVG contains content attribute
|
||||
var root = mxUtils.parseXml(data);
|
||||
var svgs = root.getElementsByTagName('svg');
|
||||
|
||||
if (svgs.length > 0)
|
||||
{
|
||||
// LATER: Use importXml without throwing exception if no data
|
||||
// Checks if SVG contains content attribute
|
||||
var root = mxUtils.parseXml(data);
|
||||
var svgs = root.getElementsByTagName('svg');
|
||||
|
||||
if (svgs.length > 0)
|
||||
{
|
||||
var svgRoot = svgs[0];
|
||||
var cont = svgRoot.getAttribute('content');
|
||||
|
||||
if (cont != null && cont.charAt(0) != '<' && cont.charAt(0) != '%')
|
||||
{
|
||||
var svgRoot = svgs[0];
|
||||
var cont = svgRoot.getAttribute('content');
|
||||
|
||||
if (cont != null && cont.charAt(0) != '<' && cont.charAt(0) != '%')
|
||||
{
|
||||
cont = unescape((window.atob) ? atob(cont) : Base64.decode(cont, true));
|
||||
}
|
||||
|
||||
if (cont != null && cont.charAt(0) == '%')
|
||||
{
|
||||
cont = decodeURIComponent(cont);
|
||||
}
|
||||
|
||||
if (cont != null && (cont.substring(0, 8) === '<mxfile ' ||
|
||||
cont.substring(0, 14) === '<mxGraphModel '))
|
||||
{
|
||||
asImage = false;
|
||||
data = cont;
|
||||
}
|
||||
else
|
||||
{
|
||||
asImage = true;
|
||||
data = btoa(data);
|
||||
}
|
||||
cont = unescape((window.atob) ? atob(cont) : Base64.decode(cont, true));
|
||||
}
|
||||
}
|
||||
|
||||
if (cont != null && cont.charAt(0) == '%')
|
||||
{
|
||||
cont = decodeURIComponent(cont);
|
||||
}
|
||||
|
||||
if (cont != null && (cont.substring(0, 8) === '<mxfile ' ||
|
||||
cont.substring(0, 14) === '<mxGraphModel '))
|
||||
{
|
||||
asImage = false;
|
||||
data = cont;
|
||||
}
|
||||
else
|
||||
{
|
||||
asImage = true;
|
||||
data = btoa(data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (asImage)
|
||||
{
|
||||
|
@ -315,8 +320,8 @@ FeedbackDialog.feedbackUrl = 'https://log.draw.io/email';
|
|||
editorUi.spinner.stop();
|
||||
editorUi.handleError(e);
|
||||
}
|
||||
}
|
||||
}));
|
||||
}
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -331,10 +336,10 @@ FeedbackDialog.feedbackUrl = 'https://log.draw.io/email';
|
|||
{
|
||||
oldNew();
|
||||
}
|
||||
else {
|
||||
else
|
||||
{
|
||||
const ipc = require('electron').ipcRenderer
|
||||
ipc.sendSync('winman', {action: 'newfile', opt: {width: 1600}})
|
||||
|
||||
}
|
||||
}), null, null, Editor.ctrlKey + '+N');
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
*
|
||||
* TODO: Move to dynamic loading minimized plugin.
|
||||
*/
|
||||
LucidImporter = {};
|
||||
(function()
|
||||
{
|
||||
// Global import transformation
|
||||
|
@ -3087,11 +3088,8 @@
|
|||
return hidden;
|
||||
};
|
||||
|
||||
EditorUi.prototype.pasteLucidChart = function(g, dx, dy, crop)
|
||||
function importLucidPage(graph, g, dx, dy, crop, noSelection)
|
||||
{
|
||||
// Creates a new graph, inserts cells and returns XML for insert
|
||||
var graph = this.editor.graph;
|
||||
|
||||
graph.getModel().beginUpdate();
|
||||
try
|
||||
{
|
||||
|
@ -3257,22 +3255,87 @@
|
|||
}
|
||||
}
|
||||
|
||||
graph.setSelectionCells(select);
|
||||
if (!noSelection)
|
||||
graph.setSelectionCells(select);
|
||||
}
|
||||
finally
|
||||
{
|
||||
graph.getModel().endUpdate();
|
||||
}
|
||||
|
||||
if (!graph.isSelectionEmpty())
|
||||
};
|
||||
|
||||
function createGraph()
|
||||
{
|
||||
//TODO Set the graph defaults
|
||||
var graph = new Graph();
|
||||
graph.setExtendParents(false);
|
||||
graph.setExtendParentsOnAdd(false);
|
||||
graph.setConstrainChildren(false);
|
||||
graph.setHtmlLabels(true);
|
||||
graph.getModel().maintainEdgeParent = false;
|
||||
return graph;
|
||||
};
|
||||
|
||||
LucidImporter.importState = function(state)
|
||||
{
|
||||
var xml = ['<?xml version=\"1.0\" encoding=\"UTF-8\"?>', '<mxfile>'];
|
||||
|
||||
// Extracts and sorts all pages
|
||||
var pages = [];
|
||||
|
||||
if (state.state != null)
|
||||
{
|
||||
graph.scrollCellToVisible(graph.getSelectionCell());
|
||||
state = JSON.parse(state.state);
|
||||
|
||||
if (this.hoverIcons != null)
|
||||
for (var id in state.Pages)
|
||||
{
|
||||
this.hoverIcons.update(graph.view.getState(graph.getSelectionCell()));
|
||||
pages.push(state.Pages[id]);
|
||||
}
|
||||
|
||||
pages.sort(function(a, b)
|
||||
{
|
||||
if (a.Properties.Order < b.Properties.Order)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
else if (a.Properties.Order > b.Properties.Order)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
pages.push(state);
|
||||
}
|
||||
|
||||
var graph = createGraph();
|
||||
var codec = new mxCodec();
|
||||
|
||||
for (var i = 0; i < pages.length; i++)
|
||||
{
|
||||
xml.push('<diagram');
|
||||
|
||||
if (pages[i].Properties != null && pages[i].Properties.Title != null)
|
||||
{
|
||||
xml.push(' name="' + mxUtils.htmlEntities(pages[i].Properties.Title) + '"');
|
||||
}
|
||||
|
||||
importLucidPage(graph, pages[i], null, null, null, true);
|
||||
var node = codec.encode(graph.getModel());
|
||||
graph.getModel().clear();
|
||||
|
||||
xml.push('>' + Graph.prototype.compress(mxUtils.getXml(node)) + '</diagram>');
|
||||
}
|
||||
|
||||
xml.push('</mxfile>');
|
||||
|
||||
return xml.join('');
|
||||
};
|
||||
|
||||
function addRouterEdge(x, y, edge, select, graph, cells, v, cell)
|
||||
|
|
|
@ -178,14 +178,19 @@ GraphViewer.prototype.init = function(container, xmlNode, graphConfig)
|
|||
|
||||
this.selectPageById = function(id)
|
||||
{
|
||||
var found = false;
|
||||
|
||||
for (var i = 0; i < this.diagrams.length; i++)
|
||||
{
|
||||
if (this.diagrams[i].getAttribute('id') == id)
|
||||
{
|
||||
this.selectPage(i);
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return found;
|
||||
};
|
||||
|
||||
var update = mxUtils.bind(this, function()
|
||||
|
@ -249,15 +254,24 @@ GraphViewer.prototype.init = function(container, xmlNode, graphConfig)
|
|||
|
||||
this.graph.customLinkClicked = function(href)
|
||||
{
|
||||
var done = true;
|
||||
|
||||
if (href.substring(0, 13) == 'data:page/id,')
|
||||
{
|
||||
var comma = href.indexOf(',');
|
||||
self.selectPageById(href.substring(comma + 1));
|
||||
|
||||
if (!self.selectPageById(href.substring(comma + 1)))
|
||||
{
|
||||
done = false;
|
||||
alert(mxResources.get('pageNotFound') || 'Page not found');
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.handleCustomLink(href);
|
||||
}
|
||||
|
||||
return done;
|
||||
};
|
||||
|
||||
if (this.graphConfig.toolbar != null)
|
||||
|
@ -1172,9 +1186,9 @@ GraphViewer.prototype.addClickHandler = function(graph, ui)
|
|||
}
|
||||
}
|
||||
else if (href != null && ui == null && graph.isCustomLink(href) &&
|
||||
(mxEvent.isTouchEvent(evt) || !mxEvent.isPopupTrigger(evt)))
|
||||
(mxEvent.isTouchEvent(evt) || !mxEvent.isPopupTrigger(evt)) &&
|
||||
graph.customLinkClicked(href))
|
||||
{
|
||||
graph.customLinkClicked(href);
|
||||
mxEvent.consume(evt);
|
||||
}
|
||||
}), mxUtils.bind(this, function(evt)
|
||||
|
|
|
@ -9,7 +9,7 @@ window.isSvgBrowser = window.isSvgBrowser || (navigator.userAgent.indexOf('MSIE'
|
|||
|
||||
// CUSTOM_PARAMETERS - URLs for save and export
|
||||
window.EXPORT_URL = window.EXPORT_URL || 'https://exp.draw.io/ImageExport4/export';
|
||||
window.PLANT_URL = window.PLANT_URL || 'https://exp-plant.draw.io/plantuml2';
|
||||
window.PLANT_URL = window.PLANT_URL || 'https://exp-plant.draw.io/plantuml3';
|
||||
window.VSD_CONVERT_URL = window.VSD_CONVERT_URL || "https://convert.draw.io/VsdConverter/api/converter";
|
||||
window.SAVE_URL = window.SAVE_URL || 'save';
|
||||
window.OPEN_URL = window.OPEN_URL || 'open';
|
||||
|
|
|
@ -459,7 +459,7 @@
|
|||
if (vertices.length > 0)
|
||||
{
|
||||
var dlg = new EditGeometryDialog(editorUi, vertices);
|
||||
editorUi.showDialog(dlg.container, 190, 250, true, true);
|
||||
editorUi.showDialog(dlg.container, 200, 250, true, true);
|
||||
dlg.init();
|
||||
}
|
||||
}, null, null, Editor.ctrlKey + '+Shift+M');
|
||||
|
|
|
@ -116,7 +116,7 @@ EditorUi.initMinimalTheme = function()
|
|||
{
|
||||
ui.formatWindow = new WrapperWindow(ui, mxResources.get('format'),
|
||||
Math.max(20, ui.diagramContainer.clientWidth - 240 - 12), 56,
|
||||
240, Math.min(546, graph.container.clientHeight - 10), function(container)
|
||||
240, Math.min(550, graph.container.clientHeight - 10), function(container)
|
||||
{
|
||||
var format = ui.createFormat(container);
|
||||
format.init();
|
||||
|
@ -881,7 +881,16 @@ EditorUi.initMinimalTheme = function()
|
|||
{
|
||||
ui.menus.addMenuItems(menu, ['insertRectangle', 'insertEllipse', 'insertRhombus', '-', 'insertText',
|
||||
'insertLink', '-', 'insertImage'], parent);
|
||||
ui.menus.addSubmenu('importFrom', menu, parent);
|
||||
|
||||
if (mxClient.IS_CHROMEAPP || EditorUi.isElectronApp)
|
||||
{
|
||||
ui.menus.addMenuItems(menu, ['import'], parent);
|
||||
}
|
||||
else
|
||||
{
|
||||
ui.menus.addSubmenu('importFrom', menu, parent);
|
||||
}
|
||||
|
||||
menu.addSeparator(parent);
|
||||
ui.menus.addSubmenu('insertLayout', menu, parent);
|
||||
ui.menus.addSubmenu('insertAdvanced', menu, parent);
|
||||
|
|
|
@ -556,6 +556,7 @@ Graph.prototype.setViewState = function(state)
|
|||
this.scrollbars = this.defaultScrollbars;
|
||||
this.graphHandler.guidesEnabled = true;
|
||||
this.foldingEnabled = true;
|
||||
this.setShadowVisible(false, false);
|
||||
this.defaultParent = null;
|
||||
this.setTooltips(true);
|
||||
this.setConnectable(true);
|
||||
|
@ -1326,6 +1327,13 @@ EditorUi.prototype.createPageMenu = function(page, label)
|
|||
}
|
||||
})();
|
||||
|
||||
//Overrides ChangePageSetup codec to exclude page
|
||||
(function()
|
||||
{
|
||||
var codec = mxCodecRegistry.getCodec(ChangePageSetup);
|
||||
codec.exclude.push('page');
|
||||
})();
|
||||
|
||||
//Registers codec for MovePage
|
||||
(function()
|
||||
{
|
||||
|
|
|
@ -347,13 +347,13 @@ RealtimeMapping.prototype.initRealtime = function()
|
|||
this.diagramMap.set('shadowVisible', (vs != null && vs.shadowVisible) ? '1' : '0');
|
||||
this.diagramMap.set('foldingEnabled', (vs != null && !vs.foldingEnabled) ? '0' : '1');
|
||||
this.diagramMap.set('mathEnabled', (vs != null && vs.mathEnabled) ? '1' : '0');
|
||||
this.diagramMap.set('pageScale', this.graph.pageScale);
|
||||
this.diagramMap.set('pageScale', (vs != null) ? vs.pageScale : mxGraph.prototype.pageScale);
|
||||
this.diagramMap.set('pageVisible', (vs != null && !vs.pageVisible) ? '0' : '1');
|
||||
this.diagramMap.set('pageFormat', pf.width + ',' + pf.height);
|
||||
this.diagramMap.set('backgroundImage', (vs != null && vs.backgroundImage != null) ?
|
||||
JSON.stringify(vs.backgroundImage) : '');
|
||||
this.diagramMap.set('backgroundColor', (vs != null && vs.background != null) ?
|
||||
this.graph.background : '');
|
||||
this.diagramMap.set('backgroundImage', (vs != null &&
|
||||
vs.backgroundImage != null) ? JSON.stringify(vs.backgroundImage) : '');
|
||||
this.diagramMap.set('backgroundColor', (vs != null &&
|
||||
vs.background != null) ? vs.background : '');
|
||||
}
|
||||
|
||||
this.root.set('modifiedDate', new Date().getTime());
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -109,7 +109,7 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
Sidebar.prototype.veeam = ['2D', '3D'];
|
||||
Sidebar.prototype.veeam = ['Data Center', 'Misc', 'Software', 'Storage', 'UsersStatus', 'VASComponents', 'Backup Replication', 'Products', 'VMs and Tape', '2D', '3D'];
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
|
@ -11773,7 +11773,7 @@ com.mxgraph.io.mxVsdxCodec.parsererrorNS_$LI$();
|
|||
|
||||
EditorUi.prototype.doImportVisio = function(file, done, onerror)
|
||||
{
|
||||
if (file.name != null && /(\.vssx)($|\?)/i.test(file.name))
|
||||
if (file.name != null && /(\.vssx?)($|\?)/i.test(file.name))
|
||||
{
|
||||
new com.mxgraph.io.mxVssxCodec().decodeVssx(file, done);
|
||||
}
|
||||
|
|
|
@ -730,6 +730,14 @@ mxVsdxCanvas2D.prototype.text = function(x, y, w, h, str, align, valign, wrap, f
|
|||
str = mxUtils.getOuterHtml(str);
|
||||
}
|
||||
|
||||
//This is the case with edges
|
||||
if (w == 0 && h == 0)
|
||||
{
|
||||
var strSize = mxUtils.getSizeForString(str, that.cellState.style["fontSize"], that.cellState.style["fontFamily"]);
|
||||
w = strSize.width * 1.2;
|
||||
h = strSize.height * 1.2;
|
||||
}
|
||||
|
||||
//TODO support HTML text formatting and remaining attributes
|
||||
if (format == 'html')
|
||||
{
|
||||
|
@ -866,14 +874,15 @@ mxVsdxCanvas2D.prototype.text = function(x, y, w, h, str, align, valign, wrap, f
|
|||
{
|
||||
if (ch[i].nodeType == 3)
|
||||
{ //#text
|
||||
var fontStyle = that.cellState.style["fontStyle"];
|
||||
var styleMap = {
|
||||
fontColor: pStyle['fontColor'] || that.cellState.style["fontColor"],
|
||||
fontSize: pStyle['fontSize'] || that.cellState.style["fontSize"],
|
||||
fontFamily: pStyle['fontFamily'] || that.cellState.style["fontFamily"],
|
||||
align: pStyle['align'] || that.cellState.style["align"],
|
||||
bold: pStyle['bold'],
|
||||
italic: pStyle['italic'],
|
||||
underline: pStyle['underline']
|
||||
bold: pStyle['bold'] || (fontStyle & 1),
|
||||
italic: pStyle['italic'] || (fontStyle & 2),
|
||||
underline: pStyle['underline'] || (fontStyle & 4)
|
||||
};
|
||||
createTextRow(styleMap, charSect, pSect, text, ch[i].textContent);
|
||||
}
|
||||
|
|
231
src/main/webapp/js/embed-static.min.js
vendored
231
src/main/webapp/js/embed-static.min.js
vendored
File diff suppressed because one or more lines are too long
720
src/main/webapp/js/extensions.min.js
vendored
720
src/main/webapp/js/extensions.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -189,7 +189,6 @@ Actions.prototype.init = function()
|
|||
}
|
||||
}, null, null, 'Alt+Shit+V');
|
||||
|
||||
|
||||
function deleteCells(includeEdges)
|
||||
{
|
||||
// Cancels interactive operations
|
||||
|
@ -357,7 +356,7 @@ Actions.prototype.init = function()
|
|||
ui.showLinkDialog(value, mxResources.get('apply'), function(link)
|
||||
{
|
||||
link = mxUtils.trim(link);
|
||||
graph.setLinkForCell(cell, (link.length > 0) ? link : null);
|
||||
graph.setLinkForCell(cell, (link.length > 0) ? link : null);
|
||||
});
|
||||
}
|
||||
}, null, null, 'Alt+Shift+L');
|
||||
|
@ -1031,7 +1030,7 @@ Actions.prototype.init = function()
|
|||
var model = graph.getModel();
|
||||
|
||||
var dlg = new TextareaDialog(this.editorUi, mxResources.get('editStyle') + ':',
|
||||
model.getStyle(cells[0]) || '', function(newValue)
|
||||
model.getStyle(cells[0]) || '', function(newValue)
|
||||
{
|
||||
if (newValue != null)
|
||||
{
|
||||
|
|
|
@ -2446,7 +2446,7 @@ TextFormatPanel.prototype.addFont = function(container)
|
|||
var cssPanel = stylePanel.cloneNode();
|
||||
|
||||
var cssMenu = this.editorUi.toolbar.addMenu(mxResources.get('style'),
|
||||
mxResources.get('style'), true, 'formatBlock', cssPanel);
|
||||
mxResources.get('style'), true, 'formatBlock', cssPanel, null, true);
|
||||
cssMenu.style.color = 'rgb(112, 112, 112)';
|
||||
cssMenu.style.whiteSpace = 'nowrap';
|
||||
cssMenu.style.overflow = 'hidden';
|
||||
|
@ -2473,8 +2473,9 @@ TextFormatPanel.prototype.addFont = function(container)
|
|||
colorPanel.style.borderTop = '1px solid #c0c0c0';
|
||||
colorPanel.style.paddingTop = '6px';
|
||||
colorPanel.style.paddingBottom = '6px';
|
||||
|
||||
var fontMenu = this.editorUi.toolbar.addMenu('Helvetica', mxResources.get('fontFamily'), true, 'fontFamily', stylePanel);
|
||||
|
||||
var fontMenu = this.editorUi.toolbar.addMenu('Helvetica', mxResources.get('fontFamily'),
|
||||
true, 'fontFamily', stylePanel, null, true);
|
||||
fontMenu.style.color = 'rgb(112, 112, 112)';
|
||||
fontMenu.style.whiteSpace = 'nowrap';
|
||||
fontMenu.style.overflow = 'hidden';
|
||||
|
|
|
@ -1506,8 +1506,7 @@ Graph.prototype.isCustomLink = function(href)
|
|||
*/
|
||||
Graph.prototype.customLinkClicked = function(link)
|
||||
{
|
||||
console.log('customLinkClicked not implemented');
|
||||
// Hook for subclassers
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -5936,6 +5935,52 @@ if (typeof mxVertexHandler != 'undefined')
|
|||
{
|
||||
document.execCommand('unlink', false);
|
||||
}
|
||||
else if (mxClient.IS_FF)
|
||||
{
|
||||
// Workaround for Firefox that adds a new link and removes
|
||||
// the href from the inner link if its parent is a span is
|
||||
// to remove all inner links inside the new outer link
|
||||
var tmp = this.cellEditor.textarea.getElementsByTagName('a');
|
||||
var oldLinks = [];
|
||||
|
||||
for (var i = 0; i < tmp.length; i++)
|
||||
{
|
||||
oldLinks.push(tmp[i]);
|
||||
}
|
||||
|
||||
document.execCommand('createlink', false, mxUtils.trim(value));
|
||||
|
||||
// Finds the new link element
|
||||
var newLinks = this.cellEditor.textarea.getElementsByTagName('a');
|
||||
|
||||
if (newLinks.length == oldLinks.length + 1)
|
||||
{
|
||||
// Inverse order in favor of appended links
|
||||
for (var i = newLinks.length - 1; i >= 0; i--)
|
||||
{
|
||||
if (newLinks[i] != oldLinks[i - 1])
|
||||
{
|
||||
// Removes all inner links from the new link and
|
||||
// moves the children to the inner link parent
|
||||
var tmp = newLinks[i].getElementsByTagName('a');
|
||||
|
||||
while (tmp.length > 0)
|
||||
{
|
||||
var parent = tmp[0].parentNode;
|
||||
|
||||
while (tmp[0].firstChild != null)
|
||||
{
|
||||
parent.insertBefore(tmp[0].firstChild, tmp[0]);
|
||||
}
|
||||
|
||||
parent.removeChild(tmp[0]);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// LATER: Fix inserting link/image in IE8/quirks after focus lost
|
||||
|
@ -6550,15 +6595,36 @@ if (typeof mxVertexHandler != 'undefined')
|
|||
*/
|
||||
Graph.prototype.createLinkForHint = function(link, label)
|
||||
{
|
||||
label = (label != null) ? label : link;
|
||||
link = (link != null) ? link : 'javascript:void(0);';
|
||||
|
||||
if (label == null || label.length == 0)
|
||||
{
|
||||
if (this.isCustomLink(link))
|
||||
{
|
||||
label = this.getLinkTitle(link);
|
||||
}
|
||||
else
|
||||
{
|
||||
label = link;
|
||||
}
|
||||
}
|
||||
|
||||
// Helper function to shorten strings
|
||||
function short(str, max)
|
||||
{
|
||||
if (str.length > max)
|
||||
{
|
||||
str = str.substring(0, Math.round(max / 2)) + '...' +
|
||||
str.substring(str.length - Math.round(max / 4));
|
||||
}
|
||||
|
||||
return str;
|
||||
};
|
||||
|
||||
var a = document.createElement('a');
|
||||
a.setAttribute('href', this.getAbsoluteUrl(link));
|
||||
|
||||
if (link != null && !this.isCustomLink(link))
|
||||
{
|
||||
a.setAttribute('title', link);
|
||||
}
|
||||
a.setAttribute('title', short((this.isCustomLink(link)) ?
|
||||
this.getLinkTitle(link) : link, 80));
|
||||
|
||||
if (this.linkTarget != null)
|
||||
{
|
||||
|
@ -6566,16 +6632,17 @@ if (typeof mxVertexHandler != 'undefined')
|
|||
}
|
||||
|
||||
// Adds shortened label to link
|
||||
var max = 40;
|
||||
var head = 26;
|
||||
var tail = 10;
|
||||
mxUtils.write(a, short(label, 40));
|
||||
|
||||
if (label.length > max)
|
||||
// Handles custom links
|
||||
if (this.isCustomLink(link))
|
||||
{
|
||||
label = label.substring(0, head) + '...' + label.substring(label.length - tail);
|
||||
mxEvent.addListener(a, 'click', mxUtils.bind(this, function(evt)
|
||||
{
|
||||
this.customLinkClicked(link);
|
||||
mxEvent.consume(evt);
|
||||
}));
|
||||
}
|
||||
|
||||
mxUtils.write(a, label);
|
||||
|
||||
return a;
|
||||
};
|
||||
|
@ -8143,8 +8210,8 @@ if (typeof mxVertexHandler != 'undefined')
|
|||
var div = document.createElement('div');
|
||||
div.style.marginTop = (link != null || i > 0) ? '6px' : '0px';
|
||||
div.appendChild(this.graph.createLinkForHint(
|
||||
links[i].getAttribute('href'),
|
||||
mxUtils.getTextContent(links[i])));
|
||||
links[i].getAttribute('href'),
|
||||
mxUtils.getTextContent(links[i])));
|
||||
|
||||
this.linkHint.appendChild(div);
|
||||
}
|
||||
|
|
|
@ -3153,6 +3153,16 @@ Sidebar.prototype.itemClicked = function(cells, ds, evt, elt)
|
|||
else
|
||||
{
|
||||
var pt = graph.getFreeInsertPoint();
|
||||
|
||||
if (mxEvent.isShiftDown(evt))
|
||||
{
|
||||
var bounds = graph.getGraphBounds();
|
||||
var tr = graph.view.translate;
|
||||
var s = graph.view.scale;
|
||||
pt.x = bounds.x / s - tr.x + bounds.width / s + graph.gridSize;
|
||||
pt.y = bounds.y / s - tr.y;
|
||||
}
|
||||
|
||||
ds.drop(graph, evt, null, pt.x, pt.y, true);
|
||||
|
||||
if (this.editorUi.hoverIcons != null && (mxEvent.isTouchEvent(evt) || mxEvent.isPenEvent(evt)))
|
||||
|
|
|
@ -655,7 +655,7 @@ Toolbar.prototype.hideMenu = function()
|
|||
/**
|
||||
* Adds a label to the toolbar.
|
||||
*/
|
||||
Toolbar.prototype.addMenu = function(label, tooltip, showLabels, name, c, showAll)
|
||||
Toolbar.prototype.addMenu = function(label, tooltip, showLabels, name, c, showAll, ignoreState)
|
||||
{
|
||||
var menu = this.editorUi.menus.get(name);
|
||||
var elt = this.addMenuFunction(label, tooltip, showLabels, function()
|
||||
|
@ -663,11 +663,14 @@ Toolbar.prototype.addMenu = function(label, tooltip, showLabels, name, c, showAl
|
|||
menu.funct.apply(menu, arguments);
|
||||
}, c, showAll);
|
||||
|
||||
menu.addListener('stateChanged', function()
|
||||
if (!ignoreState)
|
||||
{
|
||||
elt.setEnabled(menu.enabled);
|
||||
});
|
||||
|
||||
menu.addListener('stateChanged', function()
|
||||
{
|
||||
elt.setEnabled(menu.enabled);
|
||||
});
|
||||
}
|
||||
|
||||
return elt;
|
||||
};
|
||||
|
||||
|
|
231
src/main/webapp/js/reader.min.js
vendored
231
src/main/webapp/js/reader.min.js
vendored
File diff suppressed because one or more lines are too long
1
src/main/webapp/js/stencils.min.js
vendored
1
src/main/webapp/js/stencils.min.js
vendored
File diff suppressed because one or more lines are too long
1461
src/main/webapp/js/viewer.min.js
vendored
1461
src/main/webapp/js/viewer.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -585,7 +585,7 @@ right=Right
|
|||
rightAlign=Right Align
|
||||
rightToLeft=Right to left
|
||||
rotate=Rotate
|
||||
rotateTooltip=Click and drag to rotate, click to turn by 90 degrees
|
||||
rotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees
|
||||
rotation=Rotation
|
||||
rounded=Rounded
|
||||
save=Save
|
||||
|
@ -674,7 +674,7 @@ transparentBackground=Transparent Background
|
|||
trello=Trello
|
||||
tryAgain=Try again
|
||||
tryOpeningViaThisPage=Try opening via this page.
|
||||
turn=Rotate 90°
|
||||
turn=Rotate shape only by 90°
|
||||
type=Type
|
||||
twitter=Twitter
|
||||
uml=UML
|
||||
|
|
|
@ -585,7 +585,7 @@ right=Right
|
|||
rightAlign=Right Align
|
||||
rightToLeft=Right to left
|
||||
rotate=Rotate
|
||||
rotateTooltip=Click and drag to rotate, click to turn by 90 degrees
|
||||
rotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees
|
||||
rotation=Rotation
|
||||
rounded=Rounded
|
||||
save=Save
|
||||
|
@ -674,7 +674,7 @@ transparentBackground=Transparent Background
|
|||
trello=Trello
|
||||
tryAgain=Try again
|
||||
tryOpeningViaThisPage=Try opening via this page.
|
||||
turn=Rotate 90°
|
||||
turn=Rotate shape only by 90°
|
||||
type=Type
|
||||
twitter=Twitter
|
||||
uml=UML
|
||||
|
|
|
@ -585,7 +585,7 @@ right=Right
|
|||
rightAlign=Right Align
|
||||
rightToLeft=Right to left
|
||||
rotate=Rotate
|
||||
rotateTooltip=Click and drag to rotate, click to turn by 90 degrees
|
||||
rotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees
|
||||
rotation=Rotation
|
||||
rounded=Rounded
|
||||
save=Save
|
||||
|
@ -674,7 +674,7 @@ transparentBackground=Transparent Background
|
|||
trello=Trello
|
||||
tryAgain=Try again
|
||||
tryOpeningViaThisPage=Try opening via this page.
|
||||
turn=Rotate 90°
|
||||
turn=Rotate shape only by 90°
|
||||
type=Type
|
||||
twitter=Twitter
|
||||
uml=UML
|
||||
|
|
|
@ -585,7 +585,7 @@ right=Rechts
|
|||
rightAlign=Rechts
|
||||
rightToLeft=Von rechts nach links
|
||||
rotate=Rotieren
|
||||
rotateTooltip=Klicken und ziehen um zu rotieren, klicken für 90 Grad Drehung
|
||||
rotateTooltip=Klicken und ziehen um zu rotieren, klicken um nur Form um 90 Grad zu drehen
|
||||
rotation=Rotation
|
||||
rounded=Abgerundet
|
||||
save=Speichern
|
||||
|
@ -674,7 +674,7 @@ transparentBackground=Transparenter Hintergrund
|
|||
trello=Trello
|
||||
tryAgain=Erneut versuchen
|
||||
tryOpeningViaThisPage=Versuchen Sie die Datei über diese Seite zu öffnen.
|
||||
turn=Drehen 90°
|
||||
turn=Nur Form um 90° drehen
|
||||
type=Typ
|
||||
twitter=Twitter
|
||||
uml=UML
|
||||
|
|
|
@ -585,7 +585,7 @@ right=Right
|
|||
rightAlign=Right Align
|
||||
rightToLeft=Right to left
|
||||
rotate=Rotate
|
||||
rotateTooltip=Click and drag to rotate, click to turn by 90 degrees
|
||||
rotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees
|
||||
rotation=Rotation
|
||||
rounded=Rounded
|
||||
save=Save
|
||||
|
@ -674,7 +674,7 @@ transparentBackground=Transparent Background
|
|||
trello=Trello
|
||||
tryAgain=Try again
|
||||
tryOpeningViaThisPage=Try opening via this page.
|
||||
turn=Rotate 90°
|
||||
turn=Rotate shape only by 90°
|
||||
type=Type
|
||||
twitter=Twitter
|
||||
uml=UML
|
||||
|
|
|
@ -585,7 +585,7 @@ right=Right
|
|||
rightAlign=Right Align
|
||||
rightToLeft=Right to left
|
||||
rotate=Rotate
|
||||
rotateTooltip=Click and drag to rotate, click to turn by 90 degrees
|
||||
rotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees
|
||||
rotation=Rotation
|
||||
rounded=Rounded
|
||||
save=Save
|
||||
|
@ -674,7 +674,7 @@ transparentBackground=Transparent Background
|
|||
trello=Trello
|
||||
tryAgain=Try again
|
||||
tryOpeningViaThisPage=Try opening via this page.
|
||||
turn=Rotate 90°
|
||||
turn=Rotate shape only by 90°
|
||||
type=Type
|
||||
twitter=Twitter
|
||||
uml=UML
|
||||
|
|
|
@ -585,7 +585,7 @@ right=Right
|
|||
rightAlign=Right Align
|
||||
rightToLeft=Right to left
|
||||
rotate=Rotate
|
||||
rotateTooltip=Click and drag to rotate, click to turn by 90 degrees
|
||||
rotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees
|
||||
rotation=Rotation
|
||||
rounded=Rounded
|
||||
save=Save
|
||||
|
@ -674,7 +674,7 @@ transparentBackground=Transparent Background
|
|||
trello=Trello
|
||||
tryAgain=Try again
|
||||
tryOpeningViaThisPage=Try opening via this page.
|
||||
turn=Rotate 90°
|
||||
turn=Rotate shape only by 90°
|
||||
type=Type
|
||||
twitter=Twitter
|
||||
uml=UML
|
||||
|
|
|
@ -585,7 +585,7 @@ right=Right
|
|||
rightAlign=Right Align
|
||||
rightToLeft=Right to left
|
||||
rotate=Rotate
|
||||
rotateTooltip=Click and drag to rotate, click to turn by 90 degrees
|
||||
rotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees
|
||||
rotation=Rotation
|
||||
rounded=Rounded
|
||||
save=Save
|
||||
|
@ -674,7 +674,7 @@ transparentBackground=Transparent Background
|
|||
trello=Trello
|
||||
tryAgain=Try again
|
||||
tryOpeningViaThisPage=Try opening via this page.
|
||||
turn=Rotate 90°
|
||||
turn=Rotate shape only by 90°
|
||||
type=Type
|
||||
twitter=Twitter
|
||||
uml=UML
|
||||
|
|
|
@ -585,7 +585,7 @@ right=Right
|
|||
rightAlign=Right Align
|
||||
rightToLeft=Right to left
|
||||
rotate=Rotate
|
||||
rotateTooltip=Click and drag to rotate, click to turn by 90 degrees
|
||||
rotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees
|
||||
rotation=Rotation
|
||||
rounded=Rounded
|
||||
save=Save
|
||||
|
@ -674,7 +674,7 @@ transparentBackground=Transparent Background
|
|||
trello=Trello
|
||||
tryAgain=Try again
|
||||
tryOpeningViaThisPage=Try opening via this page.
|
||||
turn=Rotate 90°
|
||||
turn=Rotate shape only by 90°
|
||||
type=Type
|
||||
twitter=Twitter
|
||||
uml=UML
|
||||
|
|
|
@ -585,7 +585,7 @@ right=Right
|
|||
rightAlign=Right Align
|
||||
rightToLeft=Right to left
|
||||
rotate=Rotate
|
||||
rotateTooltip=Click and drag to rotate, click to turn by 90 degrees
|
||||
rotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees
|
||||
rotation=Rotation
|
||||
rounded=Rounded
|
||||
save=Save
|
||||
|
@ -674,7 +674,7 @@ transparentBackground=Transparent Background
|
|||
trello=Trello
|
||||
tryAgain=Try again
|
||||
tryOpeningViaThisPage=Try opening via this page.
|
||||
turn=Rotate 90°
|
||||
turn=Rotate shape only by 90°
|
||||
type=Type
|
||||
twitter=Twitter
|
||||
uml=UML
|
||||
|
|
|
@ -585,7 +585,7 @@ right=Right
|
|||
rightAlign=Right Align
|
||||
rightToLeft=Right to left
|
||||
rotate=Rotate
|
||||
rotateTooltip=Click and drag to rotate, click to turn by 90 degrees
|
||||
rotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees
|
||||
rotation=Rotation
|
||||
rounded=Rounded
|
||||
save=Save
|
||||
|
@ -674,7 +674,7 @@ transparentBackground=Transparent Background
|
|||
trello=Trello
|
||||
tryAgain=Try again
|
||||
tryOpeningViaThisPage=Try opening via this page.
|
||||
turn=Rotate 90°
|
||||
turn=Rotate shape only by 90°
|
||||
type=Type
|
||||
twitter=Twitter
|
||||
uml=UML
|
||||
|
|
|
@ -585,7 +585,7 @@ right=Right
|
|||
rightAlign=Right Align
|
||||
rightToLeft=Right to left
|
||||
rotate=Rotate
|
||||
rotateTooltip=Click and drag to rotate, click to turn by 90 degrees
|
||||
rotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees
|
||||
rotation=Rotation
|
||||
rounded=Rounded
|
||||
save=Save
|
||||
|
@ -674,7 +674,7 @@ transparentBackground=Transparent Background
|
|||
trello=Trello
|
||||
tryAgain=Try again
|
||||
tryOpeningViaThisPage=Try opening via this page.
|
||||
turn=Rotate 90°
|
||||
turn=Rotate shape only by 90°
|
||||
type=Type
|
||||
twitter=Twitter
|
||||
uml=UML
|
||||
|
|
|
@ -585,7 +585,7 @@ right=Right
|
|||
rightAlign=Right Align
|
||||
rightToLeft=Right to left
|
||||
rotate=Rotate
|
||||
rotateTooltip=Click and drag to rotate, click to turn by 90 degrees
|
||||
rotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees
|
||||
rotation=Rotation
|
||||
rounded=Rounded
|
||||
save=Save
|
||||
|
@ -674,7 +674,7 @@ transparentBackground=Transparent Background
|
|||
trello=Trello
|
||||
tryAgain=Try again
|
||||
tryOpeningViaThisPage=Try opening via this page.
|
||||
turn=Rotate 90°
|
||||
turn=Rotate shape only by 90°
|
||||
type=Type
|
||||
twitter=Twitter
|
||||
uml=UML
|
||||
|
|
|
@ -585,7 +585,7 @@ right=Right
|
|||
rightAlign=Right Align
|
||||
rightToLeft=Right to left
|
||||
rotate=Rotate
|
||||
rotateTooltip=Click and drag to rotate, click to turn by 90 degrees
|
||||
rotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees
|
||||
rotation=Rotation
|
||||
rounded=Rounded
|
||||
save=Save
|
||||
|
@ -674,7 +674,7 @@ transparentBackground=Transparent Background
|
|||
trello=Trello
|
||||
tryAgain=Try again
|
||||
tryOpeningViaThisPage=Try opening via this page.
|
||||
turn=Rotate 90°
|
||||
turn=Rotate shape only by 90°
|
||||
type=Type
|
||||
twitter=Twitter
|
||||
uml=UML
|
||||
|
|
|
@ -585,7 +585,7 @@ right=Right
|
|||
rightAlign=Right Align
|
||||
rightToLeft=Right to left
|
||||
rotate=Rotate
|
||||
rotateTooltip=Click and drag to rotate, click to turn by 90 degrees
|
||||
rotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees
|
||||
rotation=Rotation
|
||||
rounded=Rounded
|
||||
save=Save
|
||||
|
@ -674,7 +674,7 @@ transparentBackground=Transparent Background
|
|||
trello=Trello
|
||||
tryAgain=Try again
|
||||
tryOpeningViaThisPage=Try opening via this page.
|
||||
turn=Rotate 90°
|
||||
turn=Rotate shape only by 90°
|
||||
type=Type
|
||||
twitter=Twitter
|
||||
uml=UML
|
||||
|
|
|
@ -585,7 +585,7 @@ right=Right
|
|||
rightAlign=Right Align
|
||||
rightToLeft=Right to left
|
||||
rotate=Rotate
|
||||
rotateTooltip=Click and drag to rotate, click to turn by 90 degrees
|
||||
rotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees
|
||||
rotation=Rotation
|
||||
rounded=Rounded
|
||||
save=Save
|
||||
|
@ -674,7 +674,7 @@ transparentBackground=Transparent Background
|
|||
trello=Trello
|
||||
tryAgain=Try again
|
||||
tryOpeningViaThisPage=Try opening via this page.
|
||||
turn=Rotate 90°
|
||||
turn=Rotate shape only by 90°
|
||||
type=Type
|
||||
twitter=Twitter
|
||||
uml=UML
|
||||
|
|
|
@ -585,7 +585,7 @@ right=Right
|
|||
rightAlign=Right Align
|
||||
rightToLeft=Right to left
|
||||
rotate=Rotate
|
||||
rotateTooltip=Click and drag to rotate, click to turn by 90 degrees
|
||||
rotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees
|
||||
rotation=Rotation
|
||||
rounded=Rounded
|
||||
save=Save
|
||||
|
@ -674,7 +674,7 @@ transparentBackground=Transparent Background
|
|||
trello=Trello
|
||||
tryAgain=Try again
|
||||
tryOpeningViaThisPage=Try opening via this page.
|
||||
turn=Rotate 90°
|
||||
turn=Rotate shape only by 90°
|
||||
type=Type
|
||||
twitter=Twitter
|
||||
uml=UML
|
||||
|
|
|
@ -585,7 +585,7 @@ right=Right
|
|||
rightAlign=Right Align
|
||||
rightToLeft=Right to left
|
||||
rotate=Rotate
|
||||
rotateTooltip=Click and drag to rotate, click to turn by 90 degrees
|
||||
rotateTooltip=Click and drag to rotate, click to turn shape only by 90 degrees
|
||||
rotation=Rotation
|
||||
rounded=Rounded
|
||||
save=Save
|
||||
|
@ -674,7 +674,7 @@ transparentBackground=Transparent Background
|
|||
trello=Trello
|
||||
tryAgain=Try again
|
||||
tryOpeningViaThisPage=Try opening via this page.
|
||||
turn=Rotate 90°
|
||||
turn=Rotate shape only by 90°
|
||||
type=Type
|
||||
twitter=Twitter
|
||||
uml=UML
|
||||
|
|
12363
src/main/webapp/stencils/veeam/veeam.xml
Normal file
12363
src/main/webapp/stencils/veeam/veeam.xml
Normal file
File diff suppressed because it is too large
Load diff
|
@ -11,6 +11,18 @@
|
|||
border-radius:3px;
|
||||
background-image: linear-gradient(rgb(255, 255, 255) 0px, rgb(242, 242, 242) 100%);
|
||||
}
|
||||
body .geBigButton {
|
||||
background-color:#0052cc;
|
||||
background-image:none;
|
||||
}
|
||||
body .geBigButton:hover {
|
||||
background-color:#0065ff;
|
||||
background-image: none;
|
||||
}
|
||||
body .geBigButton:active {
|
||||
background-color:#0747a6;
|
||||
background-image:none;
|
||||
}
|
||||
body > .geToolbarContainer .geLabel, body > .geToolbarContainer .geButton {
|
||||
-webkit-box-shadow: none !important;
|
||||
-moz-box-shadow: none !important;
|
||||
|
@ -139,7 +151,7 @@ div.mxWindow .geButton:active, .mxWindow .geLabel:active {
|
|||
padding:8px 0px 8px 16px !important;
|
||||
}
|
||||
.geMenubarContainer * {
|
||||
color: #ffffff !important;
|
||||
color: #DEEBFF !important;
|
||||
}
|
||||
.geMenubarContainer .geStatus {
|
||||
color: rgb(179, 179, 179) !important;
|
||||
|
@ -161,7 +173,7 @@ div.mxWindow .geButton:active, .mxWindow .geLabel:active {
|
|||
padding: 7px !important;
|
||||
}
|
||||
.geMenubarContainer .geItem:hover {
|
||||
background-color: rgb(59, 115, 175);
|
||||
background-color: rgba(9, 30, 66, 0.48);
|
||||
}
|
||||
.geToolbarContainer .geLabel {
|
||||
margin:0px;
|
||||
|
@ -178,7 +190,7 @@ div.mxWindow .geButton:active, .mxWindow .geLabel:active {
|
|||
transition: none;
|
||||
}
|
||||
.geMenubarContainer {
|
||||
background-color: #205081 !important;
|
||||
background-color: #0049B0 !important;
|
||||
background-repeat: repeat-x;
|
||||
color: rgb(255, 255, 255);
|
||||
font-size: 13px;
|
||||
|
|
Loading…
Reference in a new issue