14.0.2 release

This commit is contained in:
David Benson [draw.io] 2020-12-15 17:12:50 +00:00
parent f81ede4005
commit 380c8392f3
91 changed files with 5351 additions and 2349 deletions

View file

@ -1,3 +1,7 @@
15-DEC-2020: 14.0.2
- Improves Lucidchart import
10-DEC-2020: 14.0.1
- Uses minimal UI on iPad Mini and smaller

View file

@ -1 +1 @@
14.0.1
14.0.2

View file

@ -127,6 +127,7 @@
<file name="Sidebar-FluidPower.js" />
<file name="Sidebar-GCP.js" />
<file name="Sidebar-GCP2.js" />
<file name="Sidebar-General.js" />
<file name="Sidebar-Gmdl.js" />
<file name="Sidebar-IBM.js" />
<file name="Sidebar-Infographic.js" />

View file

@ -8,46 +8,4 @@ In that repository:
* docker-compose to run draw.io integrated within nextcloud
* docker-compose to run draw.io with PlantUML support
* docker-compose to run draw.io self-contained without any dependency on draw.io website (with the export server, plantUml, Google Drive support, OneDrive support, and EMF conversion support (for VSDX export)
# HTTPS SSL Certificate via Let's Encrypt
### Prerequisites:
1. A Linux machine connected to the Internet with ports 443 and 80 open
1. A domain/subdomain name pointing to this machine's IP address. (e.g., drawio.example.com)
### Method:
1. Using jgraph/drawio docker image, run the following command
`docker run -it -m1g -e LETS_ENCRYPT_ENABLED=true -e PUBLIC_DNS=drawio.example.com --rm --name="draw" -p 80:80 -p 443:8443 jgraph/drawio`
Notice that mapping port 80 to container's port 80 allows certbot to work in stand-alone mode. Mapping port 443 to container's port 8443 allows the container tomcat to serve https requests directly.
# Changing draw.io configuration
## Method 1 (Build you custom image with setting pre-loaded)
1. Edit PreConfig.js & PostConfig.js files (next to Dockerfile in debian or alpine folders)
1. Build the docker image
## Method 2 (Using existing running docker container)
1. Edit PreConfig.js & PostConfig.js files (next to Dockerfile in debian or alpine folders)
1. Copy these files to docker container
```
docker cp PreConfig.js draw:/usr/local/tomcat/webapps/draw/js/
docker cp PostConfig.js draw:/usr/local/tomcat/webapps/draw/js/
```
## Method 3 (Bind configuration files into the container when started)
1. This method allows changing the configuration files directly on the host without invoking any other docker commands. It can be used for testing
1. Edit PreConfig.js & PostConfig.js files (next to Dockerfile in debian or alpine folders)
1. From within the directory that contained the configuration files, run the following command to start docker container
1. Note: self-contained docker-compose file already mount the configuration files into the container
```
docker run -it --rm --name="draw" --mount type=bind,source="$(pwd)"/PreConfig.js,target=/usr/local/tomcat/webapps/draw/js/PreConfig.js --mount type=bind,source="$(pwd)"/PostConfig.js,target=/usr/local/tomcat/webapps/draw/js/PostConfig.js -p 8080:8080 -p 8443:8443 fjudith/draw.io
```
* And more...

View file

@ -503,6 +503,18 @@
mxCellRenderer.registerShape('note2', NoteShape2);
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, 0);
}
return null;
};
// Flexible cube Shape
function IsoCubeShape2()
{
@ -747,7 +759,7 @@
c.fillAndStroke();
c.setShadow(false);
var sym = mxUtils.getValue(this.style, 'folderSymbol', null);
if (sym == 'triangle')
@ -762,8 +774,52 @@
};
mxCellRenderer.registerShape('folder', FolderShape);
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;
};
// Folder Shape, supports tabWidth, tabHeight styles
// UML State Shape, supports tabWidth, tabHeight styles
function UMLStateShape()
{
mxCylinder.call(this);
@ -775,15 +831,11 @@
{
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;
@ -816,7 +868,7 @@
c.fillAndStroke();
c.setShadow(false);
var sym = mxUtils.getValue(this.style, 'umlStateSymbol', null);
if (sym == 'collapseState')
@ -830,7 +882,7 @@
c.lineTo(w - 20, h - 15);
c.stroke();
}
if (connPoint == 'connPointRefEntry')
{
c.ellipse(0, h * 0.5 - 10, 20, 20);
@ -848,10 +900,25 @@
c.lineTo(5, h * 0.5 + 5);
c.stroke();
}
};
};
mxCellRenderer.registerShape('umlState', UMLStateShape);
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;
};
// Card shape
function CardShape()
{
@ -1489,6 +1556,7 @@
return rect;
};
ProcessShape.prototype.paintForeground = function(c, x, y, w, h)
{
var isFixedSize = mxUtils.getValue(this.style, 'fixedSize', this.fixedSize);
@ -1502,8 +1570,7 @@
{
inset = w * Math.max(0, Math.min(1, inset));
}
if (this.isRounded)
{
var f = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE,
@ -1876,7 +1943,247 @@
// Replaces existing actor shape
mxCellRenderer.registerShape('umlActor', UmlActorShape);
// UML Boundary Shape
////////////// UML Input Pin Shape ///////////////
function mxShapeUMLInputPin(bounds, fill, stroke, strokewidth)
{
mxShape.call(this);
this.bounds = bounds;
this.fill = fill;
this.stroke = stroke;
this.strokewidth = (strokewidth != null) ? strokewidth : 1;
this.dx = 0.5;
};
/**
* Extends mxShape.
*/
mxUtils.extend(mxShapeUMLInputPin, mxActor);
mxShapeUMLInputPin.prototype.cst = {INPUT_PIN : 'mxgraph.uml.inputPin'};
mxShapeUMLInputPin.prototype.paintVertexShape = function(c, x, y, w, h)
{
c.translate(x, y);
c.begin();
c.moveTo(0, 0);
c.lineTo(w, 0);
c.lineTo(w, h);
c.lineTo(0, h);
c.close();
c.fillAndStroke();
c.setShadow(false);
c.begin();
c.moveTo(w * 0.75, h * 0.5);
c.lineTo(w * 0.25, h * 0.5);
c.moveTo(w * 0.4, h * 0.4);
c.lineTo(w * 0.25, h * 0.5);
c.lineTo(w * 0.4, h * 0.6);
c.stroke();
};
mxCellRenderer.registerShape(mxShapeUMLInputPin.prototype.cst.INPUT_PIN, mxShapeUMLInputPin);
mxShapeUMLInputPin.prototype.constraints = null;
////////////// UML Behaviour Shape ///////////////
function mxShapeUMLBehaviorAction(bounds, fill, stroke, strokewidth)
{
mxShape.call(this);
this.bounds = bounds;
this.fill = fill;
this.stroke = stroke;
this.strokewidth = (strokewidth != null) ? strokewidth : 1;
this.dx = 0.5;
};
mxUtils.extend(mxShapeUMLBehaviorAction, mxActor);
mxShapeUMLBehaviorAction.prototype.cst = {BEHAVIOR_ACTION : 'mxgraph.uml.behaviorAction'};
/**
* Function: paintVertexShape
*
* Paints the vertex shape.
*/
mxShapeUMLBehaviorAction.prototype.paintVertexShape = function(c, x, y, w, h)
{
c.translate(x, y);
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(w, h) * arcSize;
}
arcSize = Math.min(arcSize, w * 0.5, h * 0.5);
if (!rounded)
{
arcSize = 0;
}
c.begin();
if (rounded)
{
c.moveTo(0, arcSize);
c.arcTo(arcSize, arcSize, 0, 0, 1, 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(arcSize, h);
c.arcTo(arcSize, arcSize, 0, 0, 1, 0, h - arcSize);
}
else
{
c.moveTo(0, 0);
c.lineTo(w, 0);
c.lineTo(w, h);
c.lineTo(0, h);
}
c.close();
c.fillAndStroke();
c.setShadow(false);
if (w >= 60 && h >= 40)
{
c.begin();
c.moveTo(w - 60, h * 0.5 + 20);
c.lineTo(w - 60, h * 0.5);
c.lineTo(w - 20, h * 0.5);
c.lineTo(w - 20, h * 0.5 + 20);
c.moveTo(w - 40, h * 0.5 - 20);
c.lineTo(w - 40, h * 0.5 + 20);
c.stroke();
}
};
mxCellRenderer.registerShape(mxShapeUMLBehaviorAction.prototype.cst.BEHAVIOR_ACTION, mxShapeUMLBehaviorAction);
mxShapeUMLBehaviorAction.prototype.constraints = null;
////////////// UML Action Shape ///////////////
function mxShapeUMLAction(bounds, fill, stroke, strokewidth)
{
mxShape.call(this);
this.bounds = bounds;
this.fill = fill;
this.stroke = stroke;
this.strokewidth = (strokewidth != null) ? strokewidth : 1;
this.dx = 0.5;
};
/**
* Extends mxShape.
*/
mxUtils.extend(mxShapeUMLAction, mxActor);
mxShapeUMLAction.prototype.cst = {ACTION : 'mxgraph.uml.action'};
/**
* Function: paintVertexShape
*
* Paints the vertex shape.
*/
mxShapeUMLAction.prototype.paintVertexShape = function(c, x, y, w, h)
{
c.translate(x, y);
var absArcSize = mxUtils.getValue(this.style, 'absoluteArcSize', false);
var arcSize = parseFloat(mxUtils.getValue(this.style, 'arcSize', this.arcSize));
if (!absArcSize)
{
arcSize = Math.min(w, h) * arcSize;
}
arcSize = Math.min(arcSize, w * 0.5, h * 0.5);
c.begin();
c.moveTo(0, arcSize);
c.arcTo(arcSize, arcSize, 0, 0, 1, arcSize, 0);
c.lineTo(w - arcSize - 10, 0);
c.arcTo(arcSize, arcSize, 0, 0, 1, w - 10, arcSize);
c.lineTo(w - 10, h - arcSize);
c.arcTo(arcSize, arcSize, 0, 0, 1, w - arcSize - 10, h);
c.lineTo(arcSize, h);
c.arcTo(arcSize, arcSize, 0, 0, 1, 0, h - arcSize);
c.close();
c.fillAndStroke();
c.rect(w - 10, h * 0.5 - 10, 10, 20);
c.fillAndStroke();
};
mxCellRenderer.registerShape(mxShapeUMLAction.prototype.cst.ACTION, mxShapeUMLAction);
mxShapeUMLAction.prototype.constraints = null;
////////////// UML Action Parameter Shape ///////////////
function mxShapeUMLActionParams(bounds, fill, stroke, strokewidth)
{
mxShape.call(this);
this.bounds = bounds;
this.fill = fill;
this.stroke = stroke;
this.strokewidth = (strokewidth != null) ? strokewidth : 1;
this.dx = 0.5;
};
mxUtils.extend(mxShapeUMLActionParams, mxActor);
mxShapeUMLActionParams.prototype.cst = {ACTION_PARAMS : 'mxgraph.uml.actionParams'};
mxShapeUMLActionParams.prototype.paintVertexShape = function(c, x, y, w, h)
{
c.translate(x, y);
var absArcSize = mxUtils.getValue(this.style, 'absoluteArcSize', false);
var arcSize = parseFloat(mxUtils.getValue(this.style, 'arcSize', this.arcSize));
if (!absArcSize)
{
arcSize = Math.min(w, h) * arcSize;
}
arcSize = Math.min(arcSize, w * 0.5, h * 0.5);
c.begin();
c.moveTo(20, arcSize);
c.arcTo(arcSize, arcSize, 0, 0, 1, 20 + 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(20 + arcSize, h);
c.arcTo(arcSize, arcSize, 0, 0, 1, 20, h - arcSize);
c.close();
c.fillAndStroke();
c.rect(5, h * 0.5 - 17, 20, 34);
c.fillAndStroke();
c.rect(0, h * 0.5 - 13, 10, 10);
c.fillAndStroke();
c.rect(0, h * 0.5 + 3, 10, 10);
c.fillAndStroke();
};
mxCellRenderer.registerShape(mxShapeUMLActionParams.prototype.cst.ACTION_PARAMS, mxShapeUMLActionParams);
mxShapeUMLActionParams.prototype.constraints = null;
////////////// UML Boundary Shape ///////////////
function UmlBoundaryShape()
{
mxShape.call(this);
@ -4539,7 +4846,7 @@
// Exposes custom handles
Graph.createHandle = createHandle;
Graph.handleFactory = handleFactory;
var vertexHandlerCreateCustomHandles = mxVertexHandler.prototype.createCustomHandles;
mxVertexHandler.prototype.createCustomHandles = function()
@ -4616,7 +4923,22 @@
Graph.createHandle = function() {};
Graph.handleFactory = {};
}
handleFactory['note'] = 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', NoteShape.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))));
})];
};
var isoHVector = new mxPoint(1, 0);
var isoVVector = new mxPoint(1, 0);

View file

@ -82,9 +82,6 @@ Sidebar.prototype.init = function()
var dir = STENCIL_PATH;
this.addSearchPalette(true);
this.addGeneralPalette(true);
this.addMiscPalette(false);
this.addAdvancedPalette(false);
this.addBasicPalette(dir);
this.setCurrentSearchEntryLibrary('arrows');
@ -1044,276 +1041,6 @@ Sidebar.prototype.insertSearchHint = function(div, searchTerm, count, page, resu
}
};
/**
* Adds the general palette to the sidebar.
*/
Sidebar.prototype.addGeneralPalette = function(expand)
{
var lineTags = 'line lines connector connectors connection connections arrow arrows ';
this.setCurrentSearchEntryLibrary('general', 'general');
var fns = [
this.createVertexTemplateEntry('rounded=0;whiteSpace=wrap;html=1;', 120, 60, '', 'Rectangle', null, null, 'rect rectangle box'),
this.createVertexTemplateEntry('rounded=1;whiteSpace=wrap;html=1;', 120, 60, '', 'Rounded Rectangle', null, null, 'rounded rect rectangle box'),
// Explicit strokecolor/fillcolor=none is a workaround to maintain transparent background regardless of current style
this.createVertexTemplateEntry('text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;',
40, 20, 'Text', 'Text', null, null, 'text textbox textarea label'),
this.createVertexTemplateEntry('text;html=1;strokeColor=none;fillColor=none;spacing=5;spacingTop=-20;whiteSpace=wrap;overflow=hidden;rounded=0;', 190, 120,
'<h1>Heading</h1><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>',
'Textbox', null, null, 'text textbox textarea'),
this.createVertexTemplateEntry('ellipse;whiteSpace=wrap;html=1;', 120, 80, '', 'Ellipse', null, null, 'oval ellipse state'),
this.createVertexTemplateEntry('whiteSpace=wrap;html=1;aspect=fixed;', 80, 80, '', 'Square', null, null, 'square'),
this.createVertexTemplateEntry('ellipse;whiteSpace=wrap;html=1;aspect=fixed;', 80, 80, '', 'Circle', null, null, 'circle'),
this.createVertexTemplateEntry('shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;', 120, 60, '', 'Process', null, null, 'process task'),
this.createVertexTemplateEntry('rhombus;whiteSpace=wrap;html=1;', 80, 80, '', 'Diamond', null, null, 'diamond rhombus if condition decision conditional question test'),
this.createVertexTemplateEntry('shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;', 120, 60, '', 'Parallelogram'),
this.createVertexTemplateEntry('shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;', 120, 80, '', 'Hexagon', null, null, 'hexagon preparation'),
this.createVertexTemplateEntry('triangle;whiteSpace=wrap;html=1;', 60, 80, '', 'Triangle', null, null, 'triangle logic inverter buffer'),
this.createVertexTemplateEntry('shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;', 60, 80, '', 'Cylinder', null, null, 'cylinder data database'),
this.createVertexTemplateEntry('ellipse;shape=cloud;whiteSpace=wrap;html=1;', 120, 80, '', 'Cloud', null, null, 'cloud network'),
this.createVertexTemplateEntry('shape=document;whiteSpace=wrap;html=1;boundedLbl=1;', 120, 80, '', 'Document'),
this.createVertexTemplateEntry('shape=internalStorage;whiteSpace=wrap;html=1;backgroundOutline=1;', 80, 80, '', 'Internal Storage'),
this.createVertexTemplateEntry('shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;', 120, 80, '', 'Cube'),
this.createVertexTemplateEntry('shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;', 120, 80, '', 'Step'),
this.createVertexTemplateEntry('shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;', 120, 60, '', 'Trapezoid'),
this.createVertexTemplateEntry('shape=tape;whiteSpace=wrap;html=1;', 120, 100, '', 'Tape'),
this.createVertexTemplateEntry('shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;', 80, 100, '', 'Note'),
this.createVertexTemplateEntry('shape=card;whiteSpace=wrap;html=1;', 80, 100, '', 'Card'),
this.createVertexTemplateEntry('shape=callout;whiteSpace=wrap;html=1;perimeter=calloutPerimeter;', 120, 80, '', 'Callout', null, null, 'bubble chat thought speech message'),
this.createVertexTemplateEntry('shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;', 30, 60, 'Actor', 'Actor', false, null, 'user person human stickman'),
this.createVertexTemplateEntry('shape=xor;whiteSpace=wrap;html=1;', 60, 80, '', 'Or', null, null, 'logic or'),
this.createVertexTemplateEntry('shape=or;whiteSpace=wrap;html=1;', 60, 80, '', 'And', null, null, 'logic and'),
this.createVertexTemplateEntry('shape=dataStorage;whiteSpace=wrap;html=1;fixedSize=1;', 100, 80, '', 'Data Storage'),
this.addEntry('curve', mxUtils.bind(this, function()
{
var cell = new mxCell('', new mxGeometry(0, 0, 50, 50), 'curved=1;endArrow=classic;html=1;');
cell.geometry.setTerminalPoint(new mxPoint(0, 50), true);
cell.geometry.setTerminalPoint(new mxPoint(50, 0), false);
cell.geometry.points = [new mxPoint(50, 50), new mxPoint(0, 0)];
cell.geometry.relative = true;
cell.edge = true;
return this.createEdgeTemplateFromCells([cell], cell.geometry.width, cell.geometry.height, 'Curve');
})),
this.createEdgeTemplateEntry('shape=flexArrow;endArrow=classic;startArrow=classic;html=1;', 50, 50, '', 'Bidirectional Arrow', null, lineTags + 'bidirectional'),
this.createEdgeTemplateEntry('shape=flexArrow;endArrow=classic;html=1;', 50, 50, '', 'Arrow', null, lineTags + 'directional directed'),
this.createEdgeTemplateEntry('endArrow=none;dashed=1;html=1;', 50, 50, '', 'Dashed Line', null, lineTags + 'dashed undirected no'),
this.createEdgeTemplateEntry('endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;', 50, 50, '', 'Dotted Line', null, lineTags + 'dotted undirected no'),
this.createEdgeTemplateEntry('endArrow=none;html=1;', 50, 50, '', 'Line', null, lineTags + 'simple undirected plain blank no'),
this.createEdgeTemplateEntry('endArrow=classic;startArrow=classic;html=1;', 50, 50, '', 'Bidirectional Connector', null, lineTags + 'bidirectional'),
this.createEdgeTemplateEntry('endArrow=classic;html=1;', 50, 50, '', 'Directional Connector', null, lineTags + 'directional directed'),
this.createEdgeTemplateEntry('shape=link;html=1;', 100, 0, '', 'Link', null, lineTags + 'link'),
this.addEntry(lineTags + 'edge title', mxUtils.bind(this, function()
{
var edge = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=classic;html=1;');
edge.geometry.setTerminalPoint(new mxPoint(0, 0), true);
edge.geometry.setTerminalPoint(new mxPoint(100, 0), false);
edge.geometry.relative = true;
edge.edge = true;
var cell0 = new mxCell('Label', new mxGeometry(0, 0, 0, 0), 'edgeLabel;resizable=0;html=1;align=center;verticalAlign=middle;');
cell0.geometry.relative = true;
cell0.setConnectable(false);
cell0.vertex = true;
edge.insert(cell0);
return this.createEdgeTemplateFromCells([edge], 100, 0, 'Connector with Label');
})),
this.addEntry(lineTags + 'edge title multiplicity', mxUtils.bind(this, function()
{
var edge = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=classic;html=1;');
edge.geometry.setTerminalPoint(new mxPoint(0, 0), true);
edge.geometry.setTerminalPoint(new mxPoint(160, 0), false);
edge.geometry.relative = true;
edge.edge = true;
var cell0 = new mxCell('Label', new mxGeometry(0, 0, 0, 0), 'edgeLabel;resizable=0;html=1;align=center;verticalAlign=middle;');
cell0.geometry.relative = true;
cell0.setConnectable(false);
cell0.vertex = true;
edge.insert(cell0);
var cell1 = new mxCell('Source', new mxGeometry(-1, 0, 0, 0), 'edgeLabel;resizable=0;html=1;align=left;verticalAlign=bottom;');
cell1.geometry.relative = true;
cell1.setConnectable(false);
cell1.vertex = true;
edge.insert(cell1);
return this.createEdgeTemplateFromCells([edge], 160, 0, 'Connector with 2 Labels');
})),
this.addEntry(lineTags + 'edge title multiplicity', mxUtils.bind(this, function()
{
var edge = new mxCell('Label', new mxGeometry(0, 0, 0, 0), 'endArrow=classic;html=1;');
edge.geometry.setTerminalPoint(new mxPoint(0, 0), true);
edge.geometry.setTerminalPoint(new mxPoint(160, 0), false);
edge.geometry.relative = true;
edge.edge = true;
var cell0 = new mxCell('Label', new mxGeometry(0, 0, 0, 0), 'edgeLabel;resizable=0;html=1;align=center;verticalAlign=middle;');
cell0.geometry.relative = true;
cell0.setConnectable(false);
cell0.vertex = true;
edge.insert(cell0);
var cell1 = new mxCell('Source', new mxGeometry(-1, 0, 0, 0), 'edgeLabel;resizable=0;html=1;align=left;verticalAlign=bottom;');
cell1.geometry.relative = true;
cell1.setConnectable(false);
cell1.vertex = true;
edge.insert(cell1);
var cell2 = new mxCell('Target', new mxGeometry(1, 0, 0, 0), 'edgeLabel;resizable=0;html=1;align=right;verticalAlign=bottom;');
cell2.geometry.relative = true;
cell2.setConnectable(false);
cell2.vertex = true;
edge.insert(cell2);
return this.createEdgeTemplateFromCells([edge], 160, 0, 'Connector with 3 Labels');
})),
this.addEntry(lineTags + 'edge shape symbol message mail email', mxUtils.bind(this, function()
{
var edge = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=classic;html=1;');
edge.geometry.setTerminalPoint(new mxPoint(0, 0), true);
edge.geometry.setTerminalPoint(new mxPoint(100, 0), false);
edge.geometry.relative = true;
edge.edge = true;
var cell = new mxCell('', new mxGeometry(0, 0, 20, 14), 'shape=message;html=1;outlineConnect=0;');
cell.geometry.relative = true;
cell.vertex = true;
cell.geometry.offset = new mxPoint(-10, -7);
edge.insert(cell);
return this.createEdgeTemplateFromCells([edge], 100, 0, 'Connector with Symbol');
}))
];
this.addPaletteFunctions('general', mxResources.get('general'), (expand != null) ? expand : true, fns);
this.setCurrentSearchEntryLibrary();
};
/**
* Adds the general palette to the sidebar.
*/
Sidebar.prototype.addMiscPalette = function(expand)
{
var sb = this;
var lineTags = 'line lines connector connectors connection connections arrow arrows '
this.setCurrentSearchEntryLibrary('general', 'misc');
var fns = [
this.createVertexTemplateEntry('text;strokeColor=none;fillColor=none;html=1;fontSize=24;fontStyle=1;verticalAlign=middle;align=center;', 100, 40, 'Title', 'Title', null, null, 'text heading title'),
this.createVertexTemplateEntry('text;strokeColor=none;fillColor=none;html=1;whiteSpace=wrap;verticalAlign=middle;overflow=hidden;', 100, 80,
'<ul><li>Value 1</li><li>Value 2</li><li>Value 3</li></ul>', 'Unordered List'),
this.createVertexTemplateEntry('text;strokeColor=none;fillColor=none;html=1;whiteSpace=wrap;verticalAlign=middle;overflow=hidden;', 100, 80,
'<ol><li>Value 1</li><li>Value 2</li><li>Value 3</li></ol>', 'Ordered List'),
this.addDataEntry('table', 180, 120, 'Table 1', '7ZjJTsMwEIafJleUhZZybVgucAFewDTT2pLjiewpaXl6xolLVQFqWBJArZRKns2xv5H7y4myvFxdW1HJWyxAR9lllOUWkdpRucpB6yiNVRFlF1GaxvyL0qsPokkTjSthwVCXgrQteBJ6Ca2ndTha6+BwUlR+SOLRu6aSSl7mRcLDWiqC+0rMfLzmTbDPkbB0r569K2Z7hoaEMmBDzQy1FpVTzWRthlS6uBFrXNLmNRtrGpYHlmD14RYbV9jfNWAJZNecUquCZMiYtBhiCWohN2WBTSxc61i81m6J8SBAex9g1h0gL5mU0HcwI2EWXVi+ZVVYrB6EXQAFR4XKENjLJ6bhgm+utM5Ro0du0PgXEVYhqGG+qX1EIiyDYQOY10kbKKMpP4wpj09G0Yh3k7OdbG1+fLqlHI0jy432c4BwVIPr3MD0aw08/YH+nfbbP2N89rZ/324NMsq5xppNqYoCTFfG2V7G454Qjw4c8WoX7wDEx0fiO3/wAyA/O+pAbzqw3m3TELIwOZQTdPZrsnB+4IiHl4UkPiIfWheS5CgMfQvDZEBhSD5xY/7fZyjZf63u7dD0fKv++5B/QRwO5ia8h3mP6sDm9tNeE9v58vcC'),
this.addDataEntry('table', 180, 120, 'Table 2', '7ZjBbqMwEIafhmuFISTptbTbS/eyrfbuBie2ZDzITEqyT79jMMlGWVTUBlqVSkTyjGeM+SbDLxPEab67t7yQPyETOojvgji1ANiM8l0qtA6iUGVBfBtEUUi/IPrRMcvq2bDgVhjskxA1CS9cb0XjaRwl7rV3lJIXboj82bluJOa0zVtGw0oqFI8FX7n5ih6CfCVyi4/qj3OFZK/AIFdGWJ+zAq15Uap6sSZCKp098D1ssb1Na7nobW4eKL/00Raqf02/f2FR7DoZ1C4P4F5ALtDuKaRSGUofsWw4hVKojWzTPLyQl41jc8g9IqWBp/p/wnF/wrRlVFz/EivkZtMH9jnMzELxxO1GoHcUoAwKe/dCNFpoa6V1ChpcTQwYdyOEwk9qsW5znwER8ha8B3NYtIaS3NBFmNLwKgkSepqUbHa06XLhFlMwJVr6J7g1BC+xEiX2LWD0tgLOLlC/2Vn9ftfDKGQXLaQxLvpYyHfXCIjpWkNFplRZJkxf2PGrsOcDsU46WV+2aT49690p5xHQzzvRx5NEf3j3j8B+8S0Rg0nE/rRMYyjGsrOVZl+0lRYfphjXnayTabEeXzFY2Ml+Pkn2Y0oGY9+aMbRmLEfUDHZ+EG+bafFFm4m9fiofrHvOD+Ut7eXEaH+AbnSfqK+nCX9A4SDz+DGxnjv51vgX'),
this.addDataEntry('table title', 180, 120, 'Table with Title 1', '7ZhRb6MwDMc/Da8nAmPdvZbu9nJ7WfcFMnAhUohR4o12n34OpKumrmqlDXa6VqJS/Lcdkp8bWSFK82Z9Z2Vb32MJOkpvozS3iDSMmnUOWkdJrMooXURJEvMvSv4c8IreG7fSgqFTEpIh4UXqZxiUR/mkYVAdbXRQXS1bP6Tem85ranitC8HDrlYEy1YW3t/xTlhzJC0t1auX0piFAg1JZcCGpAK1lq1T/WyLPqJWuvwrN/hM2/dsrfmKs5dhMT5balUZHhe8Sz/lPOwCLMH6IIleChjuABsgu+GQTpVUh4ibgVZcg6rqbVoWROkGoXrP3YHlQWD7Oed0j/NBxLxkUlI/QEHSVKfQ3odZWmwfpa2AgtCi8qhuX5iGC9pKaZ2jRl8Tg8a/iLANTg2rbe4TEmETDBvAvE/aQ8nm/DCmPP6VRRnvJmdb7Gx+fLilHI0jy/8EPwdIRx04OrWAyecF3ATEoUzH6nn1DeW8GrecxvjoXTm/XClksiuNHZu1KkswpyJPj56Z65EQZ2eOeP0R7wTEry/E+4RkOuSzS1sYuy3MJmwLN+dygmY/1hZ+nzni6duCiC/Ip+4LQlwaw9iNQYgJO4PYv2j/p4dIHL9mj3ZqRr5l//uQf6A7nM1V+AjzEdsDm7svgr3vwwfDNw=='),
this.addDataEntry('table title', 180, 150, 'Table with Title 2', '7Zhdb5swFIZ/DbcTHyVrbiFdb7Kbptq9Cw5YMj7IPi1kv37HYJK1FDWbQoOmSUSyz4dt3id+L/CitGrvNavL75Bz6UV3XpRqAOxHVZtyKb3QF7kXbbww9Onnhd8mskGX9WumucJzGsK+4YXJZ95HHtmT5H3U4EG6qClZbYfYZaOkxIrOuglo2JQC+a5mmc039CYUM8g07sRPG4p8CmSgkAnFtWvKQEpWG9GttukqSiHzLTvAMw77DLNkL1qeP0BjXLeGZkuLGde6p8V37qw2zaQoFI0zEsHumLiX5Bp5OylUF3Iq3XOoOOoDlTQix9JV3PZi+iUXRTm0xS7ITB8ojr0n3WngpH8fQzTCMEmAjoyCyQeeIVPFOTDGWuca6kemC44uUIOwUt29kBpHVYWUKUiwyBQouxFC7ZKS74feJ0CEaiDjhDku2okSJ/SQTKn/JfZiepuU5sFpTo8t15iCMqjpj2LX4Mxgww2eCzB8H+DBSewwfcQzugDOmxHO4KI8lbLVJ55/jMp/gwpI2r2EhqalyHOuztU8+vDS3MykcTzS+Ec3DP2Faz24U1+bGNpQqGLbd65mgNG+BvH7BZgLzupf8LO34JblZ6tP9LOvI5yX5bkcP1tdzc9uJ/1s4VrP52cTMK7gZ+v/fja3n60/0c8Cf8QzWvYl++s7tL6aoQXBpKMtXOz5HG2CxvyORtPTR4Uu9+qbwy8='),
this.addDataEntry('crossfunctional cross-functional cross functional flowchart swimlane table', 400, 400, 'Cross-Functional Flowchart', '7ZhRb5swEMc/DY+bMCRt97jQpi+tVC2fwINbbMnYyD4C6aefjaHpBrTRlNCoTALJPp9t+P25O5kgTvL6XtOCPaoMRBDfBXGilULfyusEhAiikGdBfBtEUWjvIFqPjJJmNCyoBonHTIj8hB0VJXiL3dyYL+tSpsiVpM55LVSVMqrROxvci9bZMFq4JtKfzrRKGRfZA92rEjtr11tpVT1wCcYOhM5ViTKXry0G7RYb/uwWXDgDw9wCuSW2WTGOsClo6gYri8uvIGhheLN1s4KGtNSG7+AHGL+Os0JdUJm1nUJxiaDvdhZQt/EvJXHTvpTbjAq+lbadgnO1hhYSaIR6FHRjainfg8oB9d66VDxD5j0WoRcjZMC3DP8yUuMN25e5B91so5VuWMa4J+P3FJW2JtLXrOK5oNLJxZTmz/blqXhNp3mO5cpe9smS8OsyWNp5ie2TQ99ezl1joqRBTXmDAajBCgxejprHKBcNK7fvBPIz3hOSRCcQctET8olRA+8JmSopIW2j8GOD6Sji8TDxepT4C9yTE1+OEo/mQ5xcTYn8ahR5PB/k0c2UyK9HC8SbX/mnLBAnqAlD8XK+onDTE+/fw+TiQF9fTin4Nl/O0xYAEs6X9LR5n5Ae6S7xv1lr/yf+4cQ/pN75Ej/pH88/UZyQkRPzR6R+0j9Bz4f0xMm/f8adD+qzZn/bPfw5bMb++LH4Gw=='),
this.createVertexTemplateEntry('text;html=1;strokeColor=#c0c0c0;fillColor=#ffffff;overflow=fill;rounded=0;', 280, 160,
'<table border="1" width="100%" height="100%" cellpadding="4" style="width:100%;height:100%;border-collapse:collapse;">' +
'<tr style="background-color:#A7C942;color:#ffffff;border:1px solid #98bf21;"><th align="left">Title 1</th><th align="left">Title 2</th><th align="left">Title 3</th></tr>' +
'<tr style="border:1px solid #98bf21;"><td>Value 1</td><td>Value 2</td><td>Value 3</td></tr>' +
'<tr style="background-color:#EAF2D3;border:1px solid #98bf21;"><td>Value 4</td><td>Value 5</td><td>Value 6</td></tr>' +
'<tr style="border:1px solid #98bf21;"><td>Value 7</td><td>Value 8</td><td>Value 9</td></tr>' +
'<tr style="background-color:#EAF2D3;border:1px solid #98bf21;"><td>Value 10</td><td>Value 11</td><td>Value 12</td></tr></table>', 'HTML Table 1'),
this.createVertexTemplateEntry('text;html=1;strokeColor=#c0c0c0;fillColor=none;overflow=fill;', 180, 140,
'<table border="0" width="100%" height="100%" style="width:100%;height:100%;border-collapse:collapse;">' +
'<tr><td align="center">Value 1</td><td align="center">Value 2</td><td align="center">Value 3</td></tr>' +
'<tr><td align="center">Value 4</td><td align="center">Value 5</td><td align="center">Value 6</td></tr>' +
'<tr><td align="center">Value 7</td><td align="center">Value 8</td><td align="center">Value 9</td></tr></table>', 'HTML Table 2'),
this.createVertexTemplateEntry('text;html=1;strokeColor=none;fillColor=none;overflow=fill;', 180, 140,
'<table border="1" width="100%" height="100%" style="width:100%;height:100%;border-collapse:collapse;">' +
'<tr><td align="center">Value 1</td><td align="center">Value 2</td><td align="center">Value 3</td></tr>' +
'<tr><td align="center">Value 4</td><td align="center">Value 5</td><td align="center">Value 6</td></tr>' +
'<tr><td align="center">Value 7</td><td align="center">Value 8</td><td align="center">Value 9</td></tr></table>', 'HTML Table 3'),
this.createVertexTemplateEntry('text;html=1;strokeColor=none;fillColor=none;overflow=fill;', 160, 140,
'<table border="1" width="100%" height="100%" cellpadding="4" style="width:100%;height:100%;border-collapse:collapse;">' +
'<tr><th align="center"><b>Title</b></th></tr>' +
'<tr><td align="center">Section 1.1\nSection 1.2\nSection 1.3</td></tr>' +
'<tr><td align="center">Section 2.1\nSection 2.2\nSection 2.3</td></tr></table>', 'HTML Table 4'),
this.addEntry('link hyperlink', mxUtils.bind(this, function()
{
var cell = new mxCell('Link', new mxGeometry(0, 0, 60, 40), 'text;html=1;strokeColor=none;fillColor=none;whiteSpace=wrap;align=center;verticalAlign=middle;fontColor=#0000EE;fontStyle=4;');
cell.vertex = true;
this.graph.setLinkForCell(cell, 'https://www.draw.io');
return this.createVertexTemplateFromCells([cell], cell.geometry.width, cell.geometry.height, 'Link');
})),
this.addEntry('timestamp date time text label', mxUtils.bind(this, function()
{
var cell = new mxCell('%date{ddd mmm dd yyyy HH:MM:ss}%', new mxGeometry(0, 0, 160, 20), 'text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;overflow=hidden;');
cell.vertex = true;
this.graph.setAttributeForCell(cell, 'placeholders', '1');
return this.createVertexTemplateFromCells([cell], cell.geometry.width, cell.geometry.height, 'Timestamp');
})),
this.addEntry('variable placeholder metadata hello world text label', mxUtils.bind(this, function()
{
var cell = new mxCell('%name% Text', new mxGeometry(0, 0, 80, 20), 'text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;overflow=hidden;');
cell.vertex = true;
this.graph.setAttributeForCell(cell, 'placeholders', '1');
this.graph.setAttributeForCell(cell, 'name', 'Variable');
return this.createVertexTemplateFromCells([cell], cell.geometry.width, cell.geometry.height, 'Variable');
})),
this.createVertexTemplateEntry('shape=ext;double=1;rounded=0;whiteSpace=wrap;html=1;', 120, 80, '', 'Double Rectangle', null, null, 'rect rectangle box double'),
this.createVertexTemplateEntry('shape=ext;double=1;rounded=1;whiteSpace=wrap;html=1;', 120, 80, '', 'Double Rounded Rectangle', null, null, 'rounded rect rectangle box double'),
this.createVertexTemplateEntry('ellipse;shape=doubleEllipse;whiteSpace=wrap;html=1;', 100, 60, '', 'Double Ellipse', null, null, 'oval ellipse start end state double'),
this.createVertexTemplateEntry('shape=ext;double=1;whiteSpace=wrap;html=1;aspect=fixed;', 80, 80, '', 'Double Square', null, null, 'double square'),
this.createVertexTemplateEntry('ellipse;shape=doubleEllipse;whiteSpace=wrap;html=1;aspect=fixed;', 80, 80, '', 'Double Circle', null, null, 'double circle'),
this.createVertexTemplateEntry('rounded=1;whiteSpace=wrap;html=1;strokeWidth=2;fillWeight=4;hachureGap=8;hachureAngle=45;fillColor=#1ba1e2;sketch=1;', 120, 60, '', 'Rectangle Sketch', true, null, 'rectangle rect box text sketch comic retro'),
this.createVertexTemplateEntry('ellipse;whiteSpace=wrap;html=1;strokeWidth=2;fillWeight=2;hachureGap=8;fillColor=#990000;fillStyle=dots;sketch=1;', 120, 60, '', 'Ellipse Sketch', true, null, 'ellipse oval sketch comic retro'),
this.createVertexTemplateEntry('rhombus;whiteSpace=wrap;html=1;strokeWidth=2;fillWeight=-1;hachureGap=8;fillStyle=cross-hatch;fillColor=#006600;sketch=1;', 120, 60, '', 'Diamond Sketch', true, null, 'diamond sketch comic retro'),
this.createVertexTemplateEntry('html=1;whiteSpace=wrap;shape=isoCube2;backgroundOutline=1;isoAngle=15;', 90, 100, '', 'Isometric Cube', true, null, 'cube box iso isometric'),
this.createVertexTemplateEntry('html=1;whiteSpace=wrap;aspect=fixed;shape=isoRectangle;', 150, 90, '', 'Isometric Square', true, null, 'rectangle rect box iso isometric'),
this.createEdgeTemplateEntry('edgeStyle=isometricEdgeStyle;endArrow=none;html=1;', 50, 100, '', 'Isometric Edge 1'),
this.createEdgeTemplateEntry('edgeStyle=isometricEdgeStyle;endArrow=none;html=1;elbow=vertical;', 50, 100, '', 'Isometric Edge 2'),
this.createVertexTemplateEntry('shape=curlyBracket;whiteSpace=wrap;html=1;rounded=1;', 20, 120, '', 'Curly Bracket'),
this.createVertexTemplateEntry('line;strokeWidth=2;html=1;', 160, 10, '', 'Horizontal Line'),
this.createVertexTemplateEntry('line;strokeWidth=2;direction=south;html=1;', 10, 160, '', 'Vertical Line'),
this.createVertexTemplateEntry('line;strokeWidth=4;html=1;perimeter=backbonePerimeter;points=[];outlineConnect=0;', 160, 10, '', 'Horizontal Backbone', false, null, 'backbone bus network'),
this.createVertexTemplateEntry('line;strokeWidth=4;direction=south;html=1;perimeter=backbonePerimeter;points=[];outlineConnect=0;', 10, 160, '', 'Vertical Backbone', false, null, 'backbone bus network'),
this.createVertexTemplateEntry('shape=crossbar;whiteSpace=wrap;html=1;rounded=1;', 120, 20, '', 'Crossbar', false, null, 'crossbar distance measure dimension unit'),
this.createVertexTemplateEntry('shape=image;html=1;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=1;aspect=fixed;image=' + this.gearImage, 52, 61, '', 'Image (Fixed Aspect)', false, null, 'fixed image icon symbol'),
this.createVertexTemplateEntry('shape=image;html=1;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;image=' + this.gearImage, 50, 60, '', 'Image (Variable Aspect)', false, null, 'strechted image icon symbol'),
this.createVertexTemplateEntry('icon;html=1;image=' + this.gearImage, 60, 60, 'Icon', 'Icon', false, null, 'icon image symbol'),
this.createVertexTemplateEntry('label;whiteSpace=wrap;html=1;image=' + this.gearImage, 140, 60, 'Label', 'Label 1', null, null, 'label image icon symbol'),
this.createVertexTemplateEntry('label;whiteSpace=wrap;html=1;align=center;verticalAlign=bottom;spacingLeft=0;spacingBottom=4;imageAlign=center;imageVerticalAlign=top;image=' + this.gearImage, 120, 80, 'Label', 'Label 2', null, null, 'label image icon symbol'),
this.addEntry('shape group container', function()
{
var cell = new mxCell('Label', new mxGeometry(0, 0, 160, 70),
'html=1;whiteSpace=wrap;container=1;recursiveResize=0;collapsible=0;');
cell.vertex = true;
var symbol = new mxCell('', new mxGeometry(20, 20, 20, 30), 'triangle;html=1;whiteSpace=wrap;');
symbol.vertex = true;
cell.insert(symbol);
return sb.createVertexTemplateFromCells([cell], cell.geometry.width, cell.geometry.height, 'Shape Group');
}),
this.createVertexTemplateEntry('shape=partialRectangle;whiteSpace=wrap;html=1;left=0;right=0;fillColor=none;', 120, 60, '', 'Partial Rectangle'),
this.createVertexTemplateEntry('shape=partialRectangle;whiteSpace=wrap;html=1;bottom=1;right=1;left=1;top=0;fillColor=none;routingCenterX=-0.5;', 120, 60, '', 'Partial Rectangle'),
this.createEdgeTemplateEntry('edgeStyle=segmentEdgeStyle;endArrow=classic;html=1;', 50, 50, '', 'Manual Line', null, lineTags + 'manual'),
this.createEdgeTemplateEntry('shape=filledEdge;rounded=0;fixDash=1;endArrow=none;strokeWidth=10;fillColor=#ffffff;edgeStyle=orthogonalEdgeStyle;', 60, 40, '', 'Filled Edge'),
this.createEdgeTemplateEntry('edgeStyle=elbowEdgeStyle;elbow=horizontal;endArrow=classic;html=1;', 50, 50, '', 'Horizontal Elbow', null, lineTags + 'elbow horizontal'),
this.createEdgeTemplateEntry('edgeStyle=elbowEdgeStyle;elbow=vertical;endArrow=classic;html=1;', 50, 50, '', 'Vertical Elbow', null, lineTags + 'elbow vertical')
];
this.addPaletteFunctions('misc', mxResources.get('misc'), (expand != null) ? expand : true, fns);
this.setCurrentSearchEntryLibrary();
};
/**
* Adds the container palette to the sidebar.
*/
Sidebar.prototype.addAdvancedPalette = function(expand)
{
this.setCurrentSearchEntryLibrary('general', 'advanced');
this.addPaletteFunctions('advanced', mxResources.get('advanced'), (expand != null) ? expand : false, this.createAdvancedShapes());
this.setCurrentSearchEntryLibrary();
};
/**
* Adds the general palette to the sidebar.
*/
@ -1331,67 +1058,6 @@ Sidebar.prototype.addBasicPalette = function(dir)
this.setCurrentSearchEntryLibrary();
};
/**
* Adds the container palette to the sidebar.
*/
Sidebar.prototype.createAdvancedShapes = function()
{
// Avoids having to bind all functions to "this"
var sb = this;
// Reusable cells
var field = new mxCell('List Item', new mxGeometry(0, 0, 60, 26), 'text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
field.vertex = true;
return [
this.createVertexTemplateEntry('shape=tapeData;whiteSpace=wrap;html=1;perimeter=ellipsePerimeter;', 80, 80, '', 'Tape Data'),
this.createVertexTemplateEntry('shape=manualInput;whiteSpace=wrap;html=1;', 80, 80, '', 'Manual Input'),
this.createVertexTemplateEntry('shape=loopLimit;whiteSpace=wrap;html=1;', 100, 80, '', 'Loop Limit'),
this.createVertexTemplateEntry('shape=offPageConnector;whiteSpace=wrap;html=1;', 80, 80, '', 'Off Page Connector'),
this.createVertexTemplateEntry('shape=delay;whiteSpace=wrap;html=1;', 80, 40, '', 'Delay'),
this.createVertexTemplateEntry('shape=display;whiteSpace=wrap;html=1;', 80, 40, '', 'Display'),
this.createVertexTemplateEntry('shape=singleArrow;direction=west;whiteSpace=wrap;html=1;', 100, 60, '', 'Arrow Left'),
this.createVertexTemplateEntry('shape=singleArrow;whiteSpace=wrap;html=1;', 100, 60, '', 'Arrow Right'),
this.createVertexTemplateEntry('shape=singleArrow;direction=north;whiteSpace=wrap;html=1;', 60, 100, '', 'Arrow Up'),
this.createVertexTemplateEntry('shape=singleArrow;direction=south;whiteSpace=wrap;html=1;', 60, 100, '', 'Arrow Down'),
this.createVertexTemplateEntry('shape=doubleArrow;whiteSpace=wrap;html=1;', 100, 60, '', 'Double Arrow'),
this.createVertexTemplateEntry('shape=doubleArrow;direction=south;whiteSpace=wrap;html=1;', 60, 100, '', 'Double Arrow Vertical', null, null, 'double arrow'),
this.createVertexTemplateEntry('shape=actor;whiteSpace=wrap;html=1;', 40, 60, '', 'User', null, null, 'user person human'),
this.createVertexTemplateEntry('shape=cross;whiteSpace=wrap;html=1;', 80, 80, '', 'Cross'),
this.createVertexTemplateEntry('shape=corner;whiteSpace=wrap;html=1;', 80, 80, '', 'Corner'),
this.createVertexTemplateEntry('shape=tee;whiteSpace=wrap;html=1;', 80, 80, '', 'Tee'),
this.createVertexTemplateEntry('shape=datastore;whiteSpace=wrap;html=1;', 60, 60, '', 'Data Store', null, null, 'data store cylinder database'),
this.createVertexTemplateEntry('shape=orEllipse;perimeter=ellipsePerimeter;whiteSpace=wrap;html=1;backgroundOutline=1;', 80, 80, '', 'Or', null, null, 'or circle oval ellipse'),
this.createVertexTemplateEntry('shape=sumEllipse;perimeter=ellipsePerimeter;whiteSpace=wrap;html=1;backgroundOutline=1;', 80, 80, '', 'Sum', null, null, 'sum circle oval ellipse'),
this.createVertexTemplateEntry('shape=lineEllipse;perimeter=ellipsePerimeter;whiteSpace=wrap;html=1;backgroundOutline=1;', 80, 80, '', 'Ellipse with horizontal divider', null, null, 'circle oval ellipse'),
this.createVertexTemplateEntry('shape=lineEllipse;line=vertical;perimeter=ellipsePerimeter;whiteSpace=wrap;html=1;backgroundOutline=1;', 80, 80, '', 'Ellipse with vertical divider', null, null, 'circle oval ellipse'),
this.createVertexTemplateEntry('shape=sortShape;perimeter=rhombusPerimeter;whiteSpace=wrap;html=1;', 80, 80, '', 'Sort', null, null, 'sort'),
this.createVertexTemplateEntry('shape=collate;whiteSpace=wrap;html=1;', 80, 80, '', 'Collate', null, null, 'collate'),
this.createVertexTemplateEntry('shape=switch;whiteSpace=wrap;html=1;', 60, 60, '', 'Switch', null, null, 'switch router'),
this.addEntry('process bar', function()
{
return sb.createVertexTemplateFromData('zZXRaoMwFIafJpcDjbNrb2233rRQ8AkyPdPQaCRJV+3T7yTG2rUVBoOtgpDzn/xJzncCIdGyateKNeVW5iBI9EqipZLS9KOqXYIQhAY8J9GKUBrgT+jbRDZ02aBhCmrzEwPtDZ9MHKBXdkpmoDWKCVN9VptO+Kw+8kqwGqMkK7nIN6yTB7uTNizbD1FSSsVPsjYMC1qFKHxwIZZSSIVxLZ1/nJNar5+oQPMT7IYCrqUta1ENzuqGaeOFTArBGs3f3Vmtoo2Se7ja1h00kSoHK4bBIKUNy3hdoPYU0mF91i9mT8EEL2ocZ3gKa00ayWujLZY4IfHKFonVDLsRGgXuQ90zBmWgneyTk3yT1iArMKrDKUeem9L3ajHrbSXwohxsQd/ggOleKM7ese048J2/fwuim1uQGmhQCW8vQMkacP3GCQgBFMftHEsr7cYYe95CnmKTPMFbYD8CQ++DGQy+/M5X4ku5wHYmdIktfvk9tecpavThqS3m/0YtnqIWPTy1cD77K2wYjo+Ay317I74A', 296, 100, 'Process Bar');
}),
this.createVertexTemplateEntry('swimlane;', 200, 200, 'Container', 'Container', null, null, 'container swimlane lane pool group'),
this.addEntry('list group erd table', function()
{
var cell = new mxCell('List', new mxGeometry(0, 0, 140, 110),
'swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;' +
'resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;');
cell.vertex = true;
cell.insert(sb.cloneCell(field, 'Item 1'));
cell.insert(sb.cloneCell(field, 'Item 2'));
cell.insert(sb.cloneCell(field, 'Item 3'));
return sb.createVertexTemplateFromCells([cell], cell.geometry.width, cell.geometry.height, 'List');
}),
this.addEntry('list item entry value group erd table', function()
{
return sb.createVertexTemplateFromCells([sb.cloneCell(field, 'List Item')], field.geometry.width, field.geometry.height, 'List Item');
})
];
};
/**
* Adds the general palette to the sidebar.
*/
@ -1716,460 +1382,6 @@ Sidebar.prototype.addUmlPalette = function(expand)
}),
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=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'),

View file

@ -0,0 +1,231 @@
/**
* Copyright (c) 2006, Gaudenz Alder
*/
package com.mxgraph.io;
import java.util.Iterator;
import java.util.Map;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import com.mxgraph.model.mxCell;
/**
* Codec for mxCells. This class is created and registered
* dynamically at load time and used implicitely via mxCodec
* and the mxCodecRegistry.
*/
public class mxCellCodec extends mxObjectCodec
{
/**
* Constructs a new cell codec.
*/
public mxCellCodec()
{
this(new mxCell(), null, new String[] { "parent", "source", "target" },
null);
}
/**
* Constructs a new cell codec for the given template.
*/
public mxCellCodec(Object template)
{
this(template, null, null, null);
}
/**
* Constructs a new cell codec for the given arguments.
*/
public mxCellCodec(Object template, String[] exclude, String[] idrefs,
Map<String, String> mapping)
{
super(template, exclude, idrefs, mapping);
}
/**
* Excludes user objects that are XML nodes.
*/
public boolean isExcluded(Object obj, String attr, Object value,
boolean write)
{
return exclude.contains(attr)
|| (write && attr.equals("value") && value instanceof Node && ((Node) value)
.getNodeType() == Node.ELEMENT_NODE);
}
/**
* Encodes an mxCell and wraps the XML up inside the
* XML of the user object (inversion).
*/
public Node afterEncode(mxCodec enc, Object obj, Node node)
{
if (obj instanceof mxCell)
{
mxCell cell = (mxCell) obj;
if (cell.getValue() instanceof Node)
{
// Wraps the graphical annotation up in the
// user object (inversion) by putting the
// result of the default encoding into
// a clone of the user object (node type 1)
// and returning this cloned user object.
Element tmp = (Element) node;
node = enc.getDocument().importNode((Node) cell.getValue(),
true);
node.appendChild(tmp);
// Moves the id attribute to the outermost
// XML node, namely the node which denotes
// the object boundaries in the file.
String id = tmp.getAttribute("id");
((Element) node).setAttribute("id", id);
tmp.removeAttribute("id");
}
}
return node;
}
/**
* Decodes an mxCell and uses the enclosing XML node as
* the user object for the cell (inversion).
*/
public Node beforeDecode(mxCodec dec, Node node, Object obj)
{
Element inner = (Element) node;
if (obj instanceof mxCell)
{
mxCell cell = (mxCell) obj;
String classname = getName();
String nodeName = node.getNodeName();
// Handles aliased names
if (!nodeName.equals(classname))
{
String tmp = mxCodecRegistry.aliases.get(nodeName);
if (tmp != null)
{
nodeName = tmp;
}
}
if (!nodeName.equals(classname))
{
// Passes the inner graphical annotation node to the
// object codec for further processing of the cell.
Node tmp = inner.getElementsByTagName(classname).item(0);
if (tmp != null && tmp.getParentNode() == node)
{
inner = (Element) tmp;
// Removes annotation and whitespace from node
Node tmp2 = tmp.getPreviousSibling();
while (tmp2 != null && tmp2.getNodeType() == Node.TEXT_NODE)
{
Node tmp3 = tmp2.getPreviousSibling();
if (tmp2.getTextContent().trim().length() == 0)
{
tmp2.getParentNode().removeChild(tmp2);
}
tmp2 = tmp3;
}
// Removes more whitespace
tmp2 = tmp.getNextSibling();
while (tmp2 != null && tmp2.getNodeType() == Node.TEXT_NODE)
{
Node tmp3 = tmp2.getPreviousSibling();
if (tmp2.getTextContent().trim().length() == 0)
{
tmp2.getParentNode().removeChild(tmp2);
}
tmp2 = tmp3;
}
tmp.getParentNode().removeChild(tmp);
}
else
{
inner = null;
}
// Creates the user object out of the XML node
Element value = (Element) node.cloneNode(true);
cell.setValue(value);
String id = value.getAttribute("id");
if (id != null)
{
cell.setId(id);
value.removeAttribute("id");
}
}
else
{
cell.setId(((Element) node).getAttribute("id"));
}
// Preprocesses and removes all Id-references
// in order to use the correct encoder (this)
// for the known references to cells (all).
if (inner != null && idrefs != null)
{
Iterator<String> it = idrefs.iterator();
while (it.hasNext())
{
String attr = it.next();
String ref = inner.getAttribute(attr);
if (ref != null && ref.length() > 0)
{
inner.removeAttribute(attr);
Object object = dec.objects.get(ref);
if (object == null)
{
object = dec.lookup(ref);
}
if (object == null)
{
// Needs to decode forward reference
Node element = dec.getElementById(ref);
if (element != null)
{
mxObjectCodec decoder = mxCodecRegistry
.getCodec(element.getNodeName());
if (decoder == null)
{
decoder = this;
}
object = decoder.decode(dec, element);
}
}
setFieldValue(obj, attr, object);
}
}
}
}
return inner;
}
}

View file

@ -0,0 +1,166 @@
/**
* Copyright (c) 2006, Gaudenz Alder
*/
package com.mxgraph.io;
import java.util.Map;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import com.mxgraph.model.mxGraphModel.mxChildChange;
import com.mxgraph.model.mxICell;
/**
* Codec for mxChildChanges. This class is created and registered
* dynamically at load time and used implicitely via mxCodec
* and the mxCodecRegistry.
*/
public class mxChildChangeCodec extends mxObjectCodec
{
/**
* Constructs a new model codec.
*/
public mxChildChangeCodec()
{
this(new mxChildChange(), new String[] { "model", "child",
"previousIndex" }, new String[] { "parent", "previous" }, null);
}
/**
* Constructs a new model codec for the given arguments.
*/
public mxChildChangeCodec(Object template, String[] exclude,
String[] idrefs, Map<String, String> mapping)
{
super(template, exclude, idrefs, mapping);
}
/* (non-Javadoc)
* @see com.mxgraph.io.mxObjectCodec#isReference(java.lang.Object, java.lang.String, java.lang.Object, boolean)
*/
@Override
public boolean isReference(Object obj, String attr, Object value,
boolean isWrite)
{
if (attr.equals("child") && obj instanceof mxChildChange
&& (((mxChildChange) obj).getPrevious() != null || !isWrite))
{
return true;
}
return idrefs.contains(attr);
}
/* (non-Javadoc)
* @see com.mxgraph.io.mxObjectCodec#afterEncode(com.mxgraph.io.mxCodec, java.lang.Object, org.w3c.dom.Node)
*/
@Override
public Node afterEncode(mxCodec enc, Object obj, Node node)
{
if (obj instanceof mxChildChange)
{
mxChildChange change = (mxChildChange) obj;
Object child = change.getChild();
if (isReference(obj, "child", child, true))
{
// Encodes as reference (id)
mxCodec.setAttribute(node, "child", enc.getId(child));
}
else
{
// At this point, the encoder is no longer able to know which cells
// are new, so we have to encode the complete cell hierarchy and
// ignore the ones that are already there at decoding time. Note:
// This can only be resolved by moving the notify event into the
// execute of the edit.
enc.encodeCell((mxICell) child, node, true);
}
}
return node;
}
/**
* Reads the cells into the graph model. All cells are children of the root
* element in the node.
*/
public Node beforeDecode(mxCodec dec, Node node, Object into)
{
if (into instanceof mxChildChange)
{
mxChildChange change = (mxChildChange) into;
if (node.getFirstChild() != null
&& node.getFirstChild().getNodeType() == Node.ELEMENT_NODE)
{
// Makes sure the original node isn't modified
node = node.cloneNode(true);
Node tmp = node.getFirstChild();
change.setChild(dec.decodeCell(tmp, false));
Node tmp2 = tmp.getNextSibling();
tmp.getParentNode().removeChild(tmp);
tmp = tmp2;
while (tmp != null)
{
tmp2 = tmp.getNextSibling();
if (tmp.getNodeType() == Node.ELEMENT_NODE)
{
// Ignores all existing cells because those do not need
// to be re-inserted into the model. Since the encoded
// version of these cells contains the new parent, this
// would leave to an inconsistent state on the model
// (ie. a parent change without a call to
// parentForCellChanged).
String id = ((Element) tmp).getAttribute("id");
if (dec.lookup(id) == null)
{
dec.decodeCell(tmp, true);
}
}
tmp.getParentNode().removeChild(tmp);
tmp = tmp2;
}
}
else
{
String childRef = ((Element) node).getAttribute("child");
change.setChild((mxICell) dec.getObject(childRef));
}
}
return node;
}
/* (non-Javadoc)
* @see com.mxgraph.io.mxObjectCodec#afterDecode(com.mxgraph.io.mxCodec, org.w3c.dom.Node, java.lang.Object)
*/
@Override
public Object afterDecode(mxCodec dec, Node node, Object obj)
{
if (obj instanceof mxChildChange)
{
mxChildChange change = (mxChildChange) obj;
// Cells are encoded here after a complete transaction so the previous
// parent must be restored on the cell for the case where the cell was
// added. This is needed for the local model to identify the cell as a
// new cell and register the ID.
((mxICell) change.getChild()).setParent((mxICell) change
.getPrevious());
change.setPrevious(change.getParent());
change.setPreviousIndex(change.getIndex());
}
return obj;
}
}

View file

@ -0,0 +1,490 @@
/**
* Copyright (c) 2012, JGraph Ltd
*/
package com.mxgraph.io;
import java.util.Hashtable;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import com.mxgraph.model.mxCell;
import com.mxgraph.model.mxCellPath;
import com.mxgraph.model.mxICell;
import com.mxgraph.util.mxDomUtils;
/**
* XML codec for Java object graphs. In order to resolve forward references
* when reading files the XML document that contains the data must be passed
* to the constructor.
*/
public class mxCodec
{
private static final Logger log = Logger.getLogger(mxCodec.class.getName());
/**
* Holds the owner document of the codec.
*/
protected Document document;
/**
* Maps from IDs to objects.
*/
protected Map<String, Object> objects = new Hashtable<String, Object>();
/**
* Maps from IDs to elements.
*/
protected Map<String, Node> elements = null;
/**
* Specifies if default values should be encoded. Default is false.
*/
protected boolean encodeDefaults = false;
/**
* Constructs an XML encoder/decoder with a new owner document.
*/
public mxCodec()
{
this(mxDomUtils.createDocument());
}
/**
* Constructs an XML encoder/decoder for the specified owner document.
*
* @param document Optional XML document that contains the data. If no document
* is specified then a new document is created using mxUtils.createDocument
*/
public mxCodec(Document document)
{
if (document == null)
{
document = mxDomUtils.createDocument();
}
this.document = document;
}
/**
* Returns the owner document of the codec.
*
* @return Returns the owner document.
*/
public Document getDocument()
{
return document;
}
/**
* Sets the owner document of the codec.
*/
public void setDocument(Document value)
{
document = value;
}
/**
* Returns if default values of member variables should be encoded.
*/
public boolean isEncodeDefaults()
{
return encodeDefaults;
}
/**
* Sets if default values of member variables should be encoded.
*/
public void setEncodeDefaults(boolean encodeDefaults)
{
this.encodeDefaults = encodeDefaults;
}
/**
* Returns the object lookup table.
*/
public Map<String, Object> getObjects()
{
return objects;
}
/**
* Assoiates the given object with the given ID.
*
* @param id ID for the object to be associated with.
* @param object Object to be associated with the ID.
* @return Returns the given object.
*/
public Object putObject(String id, Object object)
{
return objects.put(id, object);
}
/**
* Returns the decoded object for the element with the specified ID in
* {@link #document}. If the object is not known then {@link #lookup(String)}
* is used to find an object. If no object is found, then the element with
* the respective ID from the document is parsed using {@link #decode(Node)}.
*
* @param id ID of the object to be returned.
* @return Returns the object for the given ID.
*/
public Object getObject(String id)
{
Object obj = null;
if (id != null)
{
obj = objects.get(id);
if (obj == null)
{
obj = lookup(id);
if (obj == null)
{
Node node = getElementById(id);
if (node != null)
{
obj = decode(node);
}
}
}
}
return obj;
}
/**
* Hook for subclassers to implement a custom lookup mechanism for cell IDs.
* This implementation always returns null.
*
* @param id ID of the object to be returned.
* @return Returns the object for the given ID.
*/
public Object lookup(String id)
{
return null;
}
/**
* Returns the element with the given ID from the document.
*
* @param id ID of the element to be returned.
* @return Returns the element for the given ID.
*/
public Node getElementById(String id)
{
if (elements == null)
{
elements = new Hashtable<String, Node>();
addElement(document.getDocumentElement());
}
return elements.get(id);
}
/**
* Adds the given element to <elements> if it has an ID.
*/
protected void addElement(Node node)
{
if (node instanceof Element)
{
String id = ((Element) node).getAttribute("id");
if (id != null && !elements.containsKey(id))
{
elements.put(id, node);
}
}
node = node.getFirstChild();
while (node != null)
{
addElement(node);
node = node.getNextSibling();
}
}
/**
* Returns the ID of the specified object. This implementation calls
* reference first and if that returns null handles the object as an
* mxCell by returning their IDs using mxCell.getId. If no ID exists for
* the given cell, then an on-the-fly ID is generated using
* mxCellPath.create.
*
* @param obj Object to return the ID for.
* @return Returns the ID for the given object.
*/
public String getId(Object obj)
{
String id = null;
if (obj != null)
{
id = reference(obj);
if (id == null && obj instanceof mxICell)
{
id = ((mxICell) obj).getId();
if (id == null)
{
// Uses an on-the-fly Id
id = mxCellPath.create((mxICell) obj);
if (id.length() == 0)
{
id = "root";
}
}
}
}
return id;
}
/**
* Hook for subclassers to implement a custom method for retrieving IDs from
* objects. This implementation always returns null.
*
* @param obj Object whose ID should be returned.
* @return Returns the ID for the given object.
*/
public String reference(Object obj)
{
return null;
}
/**
* Encodes the specified object and returns the resulting XML node.
*
* @param obj Object to be encoded.
* @return Returns an XML node that represents the given object.
*/
public Node encode(Object obj)
{
Node node = null;
if (obj != null)
{
String name = mxCodecRegistry.getName(obj);
mxObjectCodec enc = mxCodecRegistry.getCodec(name);
if (enc != null)
{
node = enc.encode(this, obj);
}
else
{
if (obj instanceof Node)
{
node = ((Node) obj).cloneNode(true);
}
else
{
log.log(Level.FINEST, "No codec for " + name);
}
}
}
return node;
}
/**
* Decodes the given XML node using {@link #decode(Node, Object)}.
*
* @param node XML node to be decoded.
* @return Returns an object that represents the given node.
*/
public Object decode(Node node)
{
return decode(node, null);
}
/**
* Decodes the given XML node. The optional "into" argument specifies an
* existing object to be used. If no object is given, then a new
* instance is created using the constructor from the codec.
*
* The function returns the passed in object or the new instance if no
* object was given.
*
* @param node XML node to be decoded.
* @param into Optional object to be decodec into.
* @return Returns an object that represents the given node.
*/
public Object decode(Node node, Object into)
{
Object obj = null;
if (node != null && node.getNodeType() == Node.ELEMENT_NODE)
{
mxObjectCodec codec = mxCodecRegistry.getCodec(node.getNodeName());
try
{
if (codec != null)
{
obj = codec.decode(this, node, into);
}
else
{
obj = node.cloneNode(true);
((Element) obj).removeAttribute("as");
}
}
catch (Exception e)
{
log.log(Level.FINEST, "Cannot decode " + node.getNodeName(), e);
}
}
return obj;
}
/**
* Encoding of cell hierarchies is built-into the core, but is a
* higher-level function that needs to be explicitely used by the
* respective object encoders (eg. mxModelCodec, mxChildChangeCodec
* and mxRootChangeCodec). This implementation writes the given cell
* and its children as a (flat) sequence into the given node. The
* children are not encoded if the optional includeChildren is false.
* The function is in charge of adding the result into the given node
* and has no return value.
*
* @param cell mxCell to be encoded.
* @param node Parent XML node to add the encoded cell into.
* @param includeChildren Boolean indicating if the method
* should include all descendents.
*/
public void encodeCell(mxICell cell, Node node, boolean includeChildren)
{
node.appendChild(encode(cell));
if (includeChildren)
{
int childCount = cell.getChildCount();
for (int i = 0; i < childCount; i++)
{
encodeCell(cell.getChildAt(i), node, includeChildren);
}
}
}
/**
* Decodes cells that have been encoded using inversion, ie. where the
* user object is the enclosing node in the XML, and restores the group
* and graph structure in the cells. Returns a new <mxCell> instance
* that represents the given node.
*
* @param node XML node that contains the cell data.
* @param restoreStructures Boolean indicating whether the graph
* structure should be restored by calling insert and insertEdge on the
* parent and terminals, respectively.
* @return Graph cell that represents the given node.
*/
public mxICell decodeCell(Node node, boolean restoreStructures)
{
mxICell cell = null;
if (node != null && node.getNodeType() == Node.ELEMENT_NODE)
{
// Tries to find a codec for the given node name. If that does
// not return a codec then the node is the user object (an XML node
// that contains the mxCell, aka inversion).
mxObjectCodec decoder = mxCodecRegistry
.getCodec(node.getNodeName());
// Tries to find the codec for the cell inside the user object.
// This assumes all node names inside the user object are either
// not registered or they correspond to a class for cells.
if (!(decoder instanceof mxCellCodec))
{
Node child = node.getFirstChild();
while (child != null && !(decoder instanceof mxCellCodec))
{
decoder = mxCodecRegistry.getCodec(child.getNodeName());
child = child.getNextSibling();
}
String name = mxCell.class.getSimpleName();
decoder = mxCodecRegistry.getCodec(name);
}
if (!(decoder instanceof mxCellCodec))
{
String name = mxCell.class.getSimpleName();
decoder = mxCodecRegistry.getCodec(name);
}
cell = (mxICell) decoder.decode(this, node);
if (restoreStructures)
{
insertIntoGraph(cell);
}
}
return cell;
}
/**
* Inserts the given cell into its parent and terminal cells.
*/
public void insertIntoGraph(mxICell cell)
{
mxICell parent = cell.getParent();
mxICell source = cell.getTerminal(true);
mxICell target = cell.getTerminal(false);
// Fixes possible inconsistencies during insert into graph
cell.setTerminal(null, false);
cell.setTerminal(null, true);
cell.setParent(null);
if (parent != null)
{
parent.insert(cell);
}
if (source != null)
{
source.insertEdge(cell, true);
}
if (target != null)
{
target.insertEdge(cell, false);
}
}
/**
* Sets the attribute on the specified node to value. This is a
* helper method that makes sure the attribute and value arguments
* are not null.
*
* @param node XML node to set the attribute for.
* @param attribute Name of the attribute whose value should be set.
* @param value New value of the attribute.
*/
public static void setAttribute(Node node, String attribute, Object value)
{
if (node.getNodeType() == Node.ELEMENT_NODE && attribute != null
&& value != null)
{
((Element) node).setAttribute(attribute, String.valueOf(value));
}
}
}

View file

@ -0,0 +1,259 @@
/**
* Copyright (c) 2007, Gaudenz Alder
*/
package com.mxgraph.io;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import com.mxgraph.model.mxGraphModel.mxCollapseChange;
import com.mxgraph.model.mxGraphModel.mxGeometryChange;
import com.mxgraph.model.mxGraphModel.mxStyleChange;
import com.mxgraph.model.mxGraphModel.mxValueChange;
import com.mxgraph.model.mxGraphModel.mxVisibleChange;
/**
* Singleton class that acts as a global registry for codecs. See
* {@link mxCodec} for an example.
*/
public class mxCodecRegistry
{
private static final Logger log = Logger.getLogger(mxCodecRegistry.class.getName());
/**
* Maps from constructor names to codecs.
*/
protected static Hashtable<String, mxObjectCodec> codecs = new Hashtable<String, mxObjectCodec>();
/**
* Maps from classnames to codecnames.
*/
protected static Hashtable<String, String> aliases = new Hashtable<String, String>();
/**
* Holds the list of known packages. Packages are used to prefix short
* class names (eg. mxCell) in XML markup.
*/
protected static List<String> packages = new ArrayList<String>();
// Registers the known codecs and package names
static
{
addPackage("com.mxgraph");
addPackage("com.mxgraph.util");
addPackage("com.mxgraph.model");
addPackage("com.mxgraph.view");
addPackage("java.lang");
addPackage("java.util");
register(new mxObjectCodec(new ArrayList<Object>()));
register(new mxModelCodec());
register(new mxCellCodec());
register(new mxStylesheetCodec());
register(new mxRootChangeCodec());
register(new mxChildChangeCodec());
register(new mxTerminalChangeCodec());
register(new mxGenericChangeCodec(new mxValueChange(), "value"));
register(new mxGenericChangeCodec(new mxStyleChange(), "style"));
register(new mxGenericChangeCodec(new mxGeometryChange(), "geometry"));
register(new mxGenericChangeCodec(new mxCollapseChange(), "collapsed"));
register(new mxGenericChangeCodec(new mxVisibleChange(), "visible"));
}
/**
* Registers a new codec and associates the name of the template constructor
* in the codec with the codec object. Automatically creates an alias if the
* codename and the classname are not equal.
*/
public static mxObjectCodec register(mxObjectCodec codec)
{
if (codec != null)
{
String name = codec.getName();
codecs.put(name, codec);
String classname = getName(codec.getTemplate());
if (!classname.equals(name))
{
addAlias(classname, name);
}
}
return codec;
}
/**
* Adds an alias for mapping a classname to a codecname.
*/
public static void addAlias(String classname, String codecname)
{
aliases.put(classname, codecname);
}
/**
* Returns a codec that handles the given object, which can be an object
* instance or an XML node.
*
* @param name Java class name.
*/
public static mxObjectCodec getCodec(String name)
{
String tmp = aliases.get(name);
if (tmp != null)
{
name = tmp;
}
mxObjectCodec codec = codecs.get(name);
// Registers a new default codec for the given name
// if no codec has been previously defined.
if (codec == null)
{
Object instance = getInstanceForName(name);
if (instance != null)
{
try
{
codec = new mxObjectCodec(instance);
register(codec);
}
catch (Exception e)
{
log.log(Level.FINEST, "Failed to create and register a codec for the name: " + name, e);
}
}
else
{
log.log(Level.FINEST, "Failed to create codec for " + name);
}
}
return codec;
}
/**
* Adds the given package name to the list of known package names.
*
* @param packagename Name of the package to be added.
*/
public static void addPackage(String packagename)
{
packages.add(packagename);
}
/**
* Creates and returns a new instance for the given class name.
*
* @param name Name of the class to be instantiated.
* @return Returns a new instance of the given class.
*/
public static Object getInstanceForName(String name)
{
Class<?> clazz = getClassForName(name);
if (clazz != null)
{
if (clazz.isEnum())
{
// For an enum, use the first constant as the default instance
return clazz.getEnumConstants()[0];
}
else
{
try
{
return clazz.newInstance();
}
catch (Exception e)
{
log.log(Level.FINEST, "Failed to construct class instance for " + name, e);
}
}
}
log.log(Level.FINEST, "Failed to construct instance for " + name);
return null;
}
/**
* Returns a class that corresponds to the given name.
*
* @param name
* @return Returns the class for the given name.
*/
public static Class<?> getClassForName(String name)
{
try
{
return Class.forName(name);
}
catch (Exception e)
{
log.log(Level.FINEST, "Failed to get a class object for " + name, e);
}
for (int i = 0; i < packages.size(); i++)
{
String s = packages.get(i);
String nameWithPackage = s + "." + name;
try
{
return Class.forName(nameWithPackage);
}
catch (Exception e)
{
log.log(Level.FINEST, "Failed to get a class object for " + nameWithPackage, e);
}
}
log.log(Level.FINEST, "Class " + name + " not found");
return null;
}
/**
* Returns the name that identifies the codec associated
* with the given instance..
*
* The I/O system uses unqualified classnames, eg. for a
* <code>com.mxgraph.model.mxCell</code> this returns
* <code>mxCell</code>.
*
* @param instance Instance whose node name should be returned.
* @return Returns a string that identifies the codec.
*/
public static String getName(Object instance)
{
Class<? extends Object> type = instance.getClass();
if (type.isArray() || Collection.class.isAssignableFrom(type)
|| Map.class.isAssignableFrom(type))
{
return "Array";
}
else
{
if (packages.contains(type.getPackage().getName()))
{
return type.getSimpleName();
}
else
{
return type.getName();
}
}
}
}

View file

@ -0,0 +1,179 @@
/**
* Copyright (c) 2010-2012, JGraph Ltd
*/
package com.mxgraph.io;
import java.io.BufferedReader;
import java.io.StringReader;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import com.mxgraph.model.mxGraphModel;
import com.mxgraph.view.mxGraph;
/**
* Parses a GD .txt file and imports it in the given graph.<br/>
* This class depends from the classes contained in
* com.mxgraph.io.gd.
*/
public class mxGdCodec
{
private static final Logger log = Logger.getLogger(mxGdCodec.class.getName());
/**
* Represents the different states in the parse of a file.
*/
public enum mxGDParseState
{
START, NUM_NODES, PARSING_NODES, PARSING_EDGES
}
/**
* Map with the vertex cells added in the addNode method.
*/
protected static HashMap<String, Object> cellsMap = new HashMap<String, Object>();
/**
* Parses simple GD format and populate the specified graph
* @param input GD file to be parsed
* @param graph Graph where the parsed graph is included.
*/
public static void decode(String input, mxGraph graph)
{
BufferedReader br = new BufferedReader(new StringReader(input));
mxGDParseState state = mxGDParseState.START;
Object parent = graph.getDefaultParent();
graph.getModel().beginUpdate();
try
{
String line = br.readLine().trim();
while (line != null)
{
switch (state)
{
case START:
{
if (!line.startsWith("#"))
{
state = mxGDParseState.NUM_NODES;
}
else
{
break;
}
}
case NUM_NODES:
{
if (!line.startsWith("#"))
{
int numVertices = Integer.valueOf(line);
for (int i = 0; i < numVertices; i++)
{
String label = String.valueOf(i);
Object vertex = graph.insertVertex(parent, label, label,
0, 0, 10, 10);
cellsMap.put(label, vertex);
}
}
else
{
state = mxGDParseState.PARSING_EDGES;
}
break;
}
case PARSING_NODES:
{
if (line.startsWith("# Edges"))
{
state = mxGDParseState.PARSING_EDGES;
}
else if (!line.equals(""))
{
String[] items = line.split(",");
if (items.length != 5)
{
throw new Exception("Error in parsing");
}
else
{
double x = Double.valueOf(items[1]);
double y = Double.valueOf(items[2]);
double width = Double.valueOf(items[3]);
double height = Double.valueOf(items[4]);
//Set the node name as label.
String label = items[0];
//Insert a new vertex in the graph
Object vertex = graph.insertVertex(parent, label, label,
x - width / 2.0, y - height / 2.0, width,
height);
cellsMap.put(label, vertex);
}
}
break;
}
case PARSING_EDGES:
{
if (!line.equals(""))
{
String[] items = line.split(" ");
if (items.length != 2)
{
throw new Exception("Error in parsing");
}
else
{
Object source = cellsMap.get(items[0]);
Object target = cellsMap.get(items[1]);
graph.insertEdge(parent, null, "", source, target);
}
}
break;
}
}
line = br.readLine();
}
}
catch (Exception e)
{
log.log(Level.FINEST, "Failed to decode", e);
}
finally
{
graph.getModel().endUpdate();
}
}
/**
* Generates a GD text output with the cells in the graph.
* The implementation only uses the cells located in the default parent.
* @param graph Graph with the cells.
* @return The GD document generated.
*/
public static String encode(mxGraph graph)
{
StringBuilder builder = new StringBuilder();
Object parent = graph.getDefaultParent();
Object[] vertices = mxGraphModel.getChildCells(graph.getModel(), parent, true, false);
builder.append("# Number of Nodes (0-" + String.valueOf(vertices.length - 1) + ")");
builder.append(String.valueOf(vertices.length));
// TODO
return builder.toString();
}
}

View file

@ -0,0 +1,60 @@
/**
* Copyright (c) 2006, Gaudenz Alder
*/
package com.mxgraph.io;
import java.util.Map;
import org.w3c.dom.Node;
/**
* Codec for mxChildChanges. This class is created and registered
* dynamically at load time and used implicitely via mxCodec
* and the mxCodecRegistry.
*/
public class mxGenericChangeCodec extends mxObjectCodec
{
/**
*
*/
protected String fieldname;
/**
* Constructs a new model codec.
*/
public mxGenericChangeCodec(Object template, String fieldname)
{
this(template, new String[] { "model", "previous" },
new String[] { "cell" }, null, fieldname);
}
/**
* Constructs a new model codec for the given arguments.
*/
public mxGenericChangeCodec(Object template, String[] exclude,
String[] idrefs, Map<String, String> mapping, String fieldname)
{
super(template, exclude, idrefs, mapping);
this.fieldname = fieldname;
}
/* (non-Javadoc)
* @see com.mxgraph.io.mxObjectCodec#afterDecode(com.mxgraph.io.mxCodec, org.w3c.dom.Node, java.lang.Object)
*/
@Override
public Object afterDecode(mxCodec dec, Node node, Object obj)
{
Object cell = getFieldValue(obj, "cell");
if (cell instanceof Node)
{
setFieldValue(obj, "cell", dec.decodeCell((Node) cell, false));
}
setFieldValue(obj, "previous", getFieldValue(obj, fieldname));
return obj;
}
}

View file

@ -0,0 +1,117 @@
/**
* Copyright (c) 2006-2013, Gaudenz Alder, David Benson
*/
package com.mxgraph.io;
import java.util.Map;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import com.mxgraph.model.mxGraphModel;
import com.mxgraph.model.mxICell;
/**
* Codec for mxGraphModels. This class is created and registered
* dynamically at load time and used implicitly via mxCodec
* and the mxCodecRegistry.
*/
public class mxModelCodec extends mxObjectCodec
{
/**
* Constructs a new model codec.
*/
public mxModelCodec()
{
this(new mxGraphModel());
}
/**
* Constructs a new model codec for the given template.
*/
public mxModelCodec(Object template)
{
this(template, null, null, null);
}
/**
* Constructs a new model codec for the given arguments.
*/
public mxModelCodec(Object template, String[] exclude, String[] idrefs,
Map<String, String> mapping)
{
super(template, exclude, idrefs, mapping);
}
/**
* Encodes the given mxGraphModel by writing a (flat) XML sequence
* of cell nodes as produced by the mxCellCodec. The sequence is
* wrapped-up in a node with the name root.
*/
protected void encodeObject(mxCodec enc, Object obj, Node node)
{
if (obj instanceof mxGraphModel)
{
Node rootNode = enc.document.createElement("root");
mxGraphModel model = (mxGraphModel) obj;
enc.encodeCell((mxICell) model.getRoot(), rootNode, true);
node.appendChild(rootNode);
}
}
/**
* Reads the cells into the graph model. All cells are children of the root
* element in the node.
*/
public Node beforeDecode(mxCodec dec, Node node, Object into)
{
if (node instanceof Element)
{
Element elt = (Element) node;
mxGraphModel model = null;
if (into instanceof mxGraphModel)
{
model = (mxGraphModel) into;
}
else
{
model = new mxGraphModel();
}
// Reads the cells into the graph model. All cells
// are children of the root element in the node.
Node root = elt.getElementsByTagName("root").item(0);
mxICell rootCell = null;
if (root != null)
{
Node tmp = root.getFirstChild();
while (tmp != null)
{
mxICell cell = dec.decodeCell(tmp, true);
if (cell != null && cell.getParent() == null)
{
rootCell = cell;
}
tmp = tmp.getNextSibling();
}
root.getParentNode().removeChild(root);
}
// Sets the root on the model if one has been decoded
if (rootCell != null)
{
model.setRoot(rootCell);
}
}
return node;
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,109 @@
/**
* Copyright (c) 2006-2013, Gaudenz Alder, David Benson
*/
package com.mxgraph.io;
import java.util.Map;
import org.w3c.dom.Node;
import com.mxgraph.model.mxGraphModel.mxRootChange;
import com.mxgraph.model.mxICell;
/**
* Codec for mxChildChanges. This class is created and registered
* dynamically at load time and used implicitly via mxCodec
* and the mxCodecRegistry.
*/
public class mxRootChangeCodec extends mxObjectCodec
{
/**
* Constructs a new model codec.
*/
public mxRootChangeCodec()
{
this(new mxRootChange(), new String[] { "model", "previous", "root" },
null, null);
}
/**
* Constructs a new model codec for the given arguments.
*/
public mxRootChangeCodec(Object template, String[] exclude,
String[] idrefs, Map<String, String> mapping)
{
super(template, exclude, idrefs, mapping);
}
/* (non-Javadoc)
* @see com.mxgraph.io.mxObjectCodec#afterEncode(com.mxgraph.io.mxCodec, java.lang.Object, org.w3c.dom.Node)
*/
@Override
public Node afterEncode(mxCodec enc, Object obj, Node node)
{
if (obj instanceof mxRootChange)
{
enc.encodeCell((mxICell) ((mxRootChange) obj).getRoot(), node, true);
}
return node;
}
/**
* Reads the cells into the graph model. All cells are children of the root
* element in the node.
*/
public Node beforeDecode(mxCodec dec, Node node, Object into)
{
if (into instanceof mxRootChange)
{
mxRootChange change = (mxRootChange) into;
if (node.getFirstChild() != null
&& node.getFirstChild().getNodeType() == Node.ELEMENT_NODE)
{
// Makes sure the original node isn't modified
node = node.cloneNode(true);
Node tmp = node.getFirstChild();
change.setRoot(dec.decodeCell(tmp, false));
Node tmp2 = tmp.getNextSibling();
tmp.getParentNode().removeChild(tmp);
tmp = tmp2;
while (tmp != null)
{
tmp2 = tmp.getNextSibling();
if (tmp.getNodeType() == Node.ELEMENT_NODE)
{
dec.decodeCell(tmp, true);
}
tmp.getParentNode().removeChild(tmp);
tmp = tmp2;
}
}
}
return node;
}
/* (non-Javadoc)
* @see com.mxgraph.io.mxObjectCodec#afterDecode(com.mxgraph.io.mxCodec, org.w3c.dom.Node, java.lang.Object)
*/
@Override
public Object afterDecode(mxCodec dec, Node node, Object obj)
{
if (obj instanceof mxRootChange)
{
mxRootChange change = (mxRootChange) obj;
change.setPrevious(change.getRoot());
}
return obj;
}
}

View file

@ -0,0 +1,209 @@
/**
* Copyright (c) 2006-2013, JGraph Ltd
*/
package com.mxgraph.io;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import com.mxgraph.util.mxUtils;
import com.mxgraph.view.mxStylesheet;
/**
* Codec for mxStylesheets. This class is created and registered
* dynamically at load time and used implicitely via mxCodec
* and the mxCodecRegistry.
*/
public class mxStylesheetCodec extends mxObjectCodec
{
/**
* Constructs a new model codec.
*/
public mxStylesheetCodec()
{
this(new mxStylesheet());
}
/**
* Constructs a new stylesheet codec for the given template.
*/
public mxStylesheetCodec(Object template)
{
this(template, null, null, null);
}
/**
* Constructs a new model codec for the given arguments.
*/
public mxStylesheetCodec(Object template, String[] exclude,
String[] idrefs, Map<String, String> mapping)
{
super(template, exclude, idrefs, mapping);
}
/**
* Encodes the given mxStylesheet.
*/
public Node encode(mxCodec enc, Object obj)
{
Element node = enc.document.createElement(getName());
if (obj instanceof mxStylesheet)
{
mxStylesheet stylesheet = (mxStylesheet) obj;
Iterator<Map.Entry<String, Map<String, Object>>> it = stylesheet
.getStyles().entrySet().iterator();
while (it.hasNext())
{
Map.Entry<String, Map<String, Object>> entry = it.next();
Element styleNode = enc.document.createElement("add");
String stylename = entry.getKey();
styleNode.setAttribute("as", stylename);
Map<String, Object> style = entry.getValue();
Iterator<Map.Entry<String, Object>> it2 = style.entrySet()
.iterator();
while (it2.hasNext())
{
Map.Entry<String, Object> entry2 = it2.next();
Element entryNode = enc.document.createElement("add");
entryNode.setAttribute("as",
String.valueOf(entry2.getKey()));
entryNode.setAttribute("value", getStringValue(entry2));
styleNode.appendChild(entryNode);
}
if (styleNode.getChildNodes().getLength() > 0)
{
node.appendChild(styleNode);
}
}
}
return node;
}
/**
* Returns the string for encoding the given value.
*/
protected String getStringValue(Map.Entry<String, Object> entry)
{
if (entry.getValue() instanceof Boolean)
{
return ((Boolean) entry.getValue()) ? "1" : "0";
}
return entry.getValue().toString();
}
/**
* Decodes the given mxStylesheet.
*/
public Object decode(mxCodec dec, Node node, Object into)
{
Object obj = null;
if (node instanceof Element)
{
String id = ((Element) node).getAttribute("id");
obj = dec.objects.get(id);
if (obj == null)
{
obj = into;
if (obj == null)
{
obj = cloneTemplate(node);
}
if (id != null && id.length() > 0)
{
dec.putObject(id, obj);
}
}
node = node.getFirstChild();
while (node != null)
{
if (!processInclude(dec, node, obj)
&& node.getNodeName().equals("add")
&& node instanceof Element)
{
String as = ((Element) node).getAttribute("as");
if (as != null && as.length() > 0)
{
String extend = ((Element) node).getAttribute("extend");
Map<String, Object> style = (extend != null) ? ((mxStylesheet) obj)
.getStyles().get(extend) : null;
if (style == null)
{
style = new Hashtable<String, Object>();
}
else
{
style = new Hashtable<String, Object>(style);
}
Node entry = node.getFirstChild();
while (entry != null)
{
if (entry instanceof Element)
{
Element entryElement = (Element) entry;
String key = entryElement.getAttribute("as");
if (entry.getNodeName().equals("add"))
{
String text = entry.getTextContent();
Object value = null;
if (text != null && text.length() > 0)
{
value = mxUtils.eval(text);
}
else
{
value = entryElement
.getAttribute("value");
}
if (value != null)
{
style.put(key, value);
}
}
else if (entry.getNodeName().equals("remove"))
{
style.remove(key);
}
}
entry = entry.getNextSibling();
}
((mxStylesheet) obj).putCellStyle(as, style);
}
}
node = node.getNextSibling();
}
}
return obj;
}
}

View file

@ -0,0 +1,54 @@
/**
* Copyright (c) 2006, Gaudenz Alder
*/
package com.mxgraph.io;
import java.util.Map;
import org.w3c.dom.Node;
import com.mxgraph.model.mxGraphModel.mxTerminalChange;
/**
* Codec for mxChildChanges. This class is created and registered
* dynamically at load time and used implicitely via mxCodec
* and the mxCodecRegistry.
*/
public class mxTerminalChangeCodec extends mxObjectCodec
{
/**
* Constructs a new model codec.
*/
public mxTerminalChangeCodec()
{
this(new mxTerminalChange(), new String[] { "model", "previous" },
new String[] { "cell", "terminal" }, null);
}
/**
* Constructs a new model codec for the given arguments.
*/
public mxTerminalChangeCodec(Object template, String[] exclude,
String[] idrefs, Map<String, String> mapping)
{
super(template, exclude, idrefs, mapping);
}
/* (non-Javadoc)
* @see com.mxgraph.io.mxObjectCodec#afterDecode(com.mxgraph.io.mxCodec, org.w3c.dom.Node, java.lang.Object)
*/
@Override
public Object afterDecode(mxCodec dec, Node node, Object obj)
{
if (obj instanceof mxTerminalChange)
{
mxTerminalChange change = (mxTerminalChange) obj;
change.setPrevious(change.getTerminal());
}
return obj;
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -249,19 +249,19 @@
// Used to request draw.io sources in dev mode
var drawDevUrl = document.location.protocol + '//devhost.jgraph.com/drawio/src/main/webapp/';
var geBasePath = mxDevUrl + '/grapheditor';
var mxBasePath = mxDevUrl + '/mxgraph';
if (document.location.protocol == 'file:')
{
mxDevUrl = '..';
drawDevUrl = './';
geBasePath = '../grapheditor';
mxBasePath = './mxgraph';
// Forces includes for dev environment in node.js
mxForceIncludes = true;
}
var geBasePath = mxDevUrl + '/grapheditor';
var mxBasePath = mxDevUrl + '/mxgraph';
mxscript(drawDevUrl + 'js/PreConfig.js');
mxscript(drawDevUrl + 'js/diagramly/Init.js');
mxscript(geBasePath + '/Init.js');

File diff suppressed because it is too large Load diff

View file

@ -610,7 +610,7 @@ App.main = function(callback, createUi)
{
var content = mxUtils.getTextContent(scripts[0]);
if (CryptoJS.MD5(content).toString() != '215b173a7ec45a4a27e9aab38b696665')
if (CryptoJS.MD5(content).toString() != '7ec5b116e26db60a0939c154aef4254a')
{
console.log('Change bootstrap script MD5 in the previous line:', CryptoJS.MD5(content).toString());
alert('[Dev] Bootstrap script change requires update of CSP');

View file

@ -19,6 +19,8 @@ if (!mxIsElectron && location.protocol !== 'http:')
//----------------------------------------------------------//
//------------- Bootstrap script in index.html -------------//
//----------------------------------------------------------//
// Version 14.0.2
'\'sha256-gCA3yqbX5kV5cXQOyvSd4v54e8cOLCBlaKU4tuhJF3Y=\' ' +
// Version 14.0.1
'\'sha256-ZMnCMK9Jg5ijd0Viqw4KAFn39HeC1LrVwervb9uC7Mo=\' ' +
// Version 14.0.0
@ -152,6 +154,7 @@ mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Flowchart.js');
mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-FluidPower.js');
mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-GCP.js');
mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-GCP2.js');
mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-General.js');
mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Gmdl.js');
mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-IBM.js');
mxscript(drawDevUrl + 'js/diagramly/sidebar/Sidebar-Infographic.js');

View file

@ -82,6 +82,7 @@ LucidImporter = {};
'HotspotBlock': 'strokeColor=none;fillColor=none',
'ImageSearchBlock2': 'shape=image',
'UserImage2Block': 'shape=image',
'ExtShapeBoxBlock': '',
//Flowchart
'ProcessBlock': '',
'DecisionBlock': 'rhombus',
@ -5119,7 +5120,7 @@ LucidImporter = {};
// Fixes the case for horizontal swimlanes where we use horizontal=0
// and Lucid uses rotation
if (deg != 0 && ((action.Class == 'UMLSwimLaneBlockV2') || ((action.Class.indexOf('Rotated') >= 0 || deg == -90 || deg == 270) && (action.Class.indexOf('Pool') >= 0 || action.Class.indexOf('SwimLane') >= 0))))
if (deg != 0 && action.Class && ((action.Class == 'UMLSwimLaneBlockV2') || ((action.Class.indexOf('Rotated') >= 0 || deg == -90 || deg == 270) && (action.Class.indexOf('Pool') >= 0 || action.Class.indexOf('SwimLane') >= 0))))
{
deg += 90;
cell.geometry.rotate90();

View file

@ -1837,7 +1837,7 @@
editorUi.spinner.stop();
var dlg = new EmbedDialog(editorUi, editorUi.createLink(linkTarget, linkColor,
allPages, lightbox, editLink, layers, url, null, null, true));
allPages, lightbox, editLink, layers, url, null, ['border=0'], true));
editorUi.showDialog(dlg.container, 440, 240, true, true);
dlg.init();
});

View file

@ -0,0 +1,331 @@
(function()
{
// Adds general shapes
Sidebar.prototype.addGeneralPalette = function()
{
this.setCurrentSearchEntryLibrary('general', 'generalGeneral');
this.addGeneralGeneralPalette();
this.setCurrentSearchEntryLibrary('general', 'generalMisc');
this.addGeneralMiscPalette();
this.setCurrentSearchEntryLibrary('general', 'generalAdvanced');
this.addGeneralAdvancedPalette();
this.setCurrentSearchEntryLibrary();
};
Sidebar.prototype.addGeneralGeneralPalette = function()
{
var sb = this;
var gn = 'mxgraph.aws3';
var dt = 'aws amazon web service analytics';
var lineTags = 'line lines connector connectors connection connections arrow arrows ';
this.addPaletteFunctions('generalGeneral', 'General', true,
[
this.createVertexTemplateEntry('rounded=0;whiteSpace=wrap;html=1;', 120, 60, '', 'Rectangle', null, null, 'rect rectangle box'),
this.createVertexTemplateEntry('rounded=1;whiteSpace=wrap;html=1;', 120, 60, '', 'Rounded Rectangle', null, null, 'rounded rect rectangle box'),
// Explicit strokecolor/fillcolor=none is a workaround to maintain transparent background regardless of current style
this.createVertexTemplateEntry('text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;',
40, 20, 'Text', 'Text', null, null, 'text textbox textarea label'),
this.createVertexTemplateEntry('text;html=1;strokeColor=none;fillColor=none;spacing=5;spacingTop=-20;whiteSpace=wrap;overflow=hidden;rounded=0;', 190, 120,
'<h1>Heading</h1><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>',
'Textbox', null, null, 'text textbox textarea'),
this.createVertexTemplateEntry('ellipse;whiteSpace=wrap;html=1;', 120, 80, '', 'Ellipse', null, null, 'oval ellipse state'),
this.createVertexTemplateEntry('whiteSpace=wrap;html=1;aspect=fixed;', 80, 80, '', 'Square', null, null, 'square'),
this.createVertexTemplateEntry('ellipse;whiteSpace=wrap;html=1;aspect=fixed;', 80, 80, '', 'Circle', null, null, 'circle'),
this.createVertexTemplateEntry('shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;', 120, 60, '', 'Process', null, null, 'process task'),
this.createVertexTemplateEntry('rhombus;whiteSpace=wrap;html=1;', 80, 80, '', 'Diamond', null, null, 'diamond rhombus if condition decision conditional question test'),
this.createVertexTemplateEntry('shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fixedSize=1;', 120, 60, '', 'Parallelogram'),
this.createVertexTemplateEntry('shape=hexagon;perimeter=hexagonPerimeter2;whiteSpace=wrap;html=1;fixedSize=1;', 120, 80, '', 'Hexagon', null, null, 'hexagon preparation'),
this.createVertexTemplateEntry('triangle;whiteSpace=wrap;html=1;', 60, 80, '', 'Triangle', null, null, 'triangle logic inverter buffer'),
this.createVertexTemplateEntry('shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;', 60, 80, '', 'Cylinder', null, null, 'cylinder data database'),
this.createVertexTemplateEntry('ellipse;shape=cloud;whiteSpace=wrap;html=1;', 120, 80, '', 'Cloud', null, null, 'cloud network'),
this.createVertexTemplateEntry('shape=document;whiteSpace=wrap;html=1;boundedLbl=1;', 120, 80, '', 'Document'),
this.createVertexTemplateEntry('shape=internalStorage;whiteSpace=wrap;html=1;backgroundOutline=1;', 80, 80, '', 'Internal Storage'),
this.createVertexTemplateEntry('shape=cube;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;darkOpacity=0.05;darkOpacity2=0.1;', 120, 80, '', 'Cube'),
this.createVertexTemplateEntry('shape=step;perimeter=stepPerimeter;whiteSpace=wrap;html=1;fixedSize=1;', 120, 80, '', 'Step'),
this.createVertexTemplateEntry('shape=trapezoid;perimeter=trapezoidPerimeter;whiteSpace=wrap;html=1;fixedSize=1;', 120, 60, '', 'Trapezoid'),
this.createVertexTemplateEntry('shape=tape;whiteSpace=wrap;html=1;', 120, 100, '', 'Tape'),
this.createVertexTemplateEntry('shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;', 80, 100, '', 'Note'),
this.createVertexTemplateEntry('shape=card;whiteSpace=wrap;html=1;', 80, 100, '', 'Card'),
this.createVertexTemplateEntry('shape=callout;whiteSpace=wrap;html=1;perimeter=calloutPerimeter;', 120, 80, '', 'Callout', null, null, 'bubble chat thought speech message'),
this.createVertexTemplateEntry('shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;', 30, 60, 'Actor', 'Actor', false, null, 'user person human stickman'),
this.createVertexTemplateEntry('shape=xor;whiteSpace=wrap;html=1;', 60, 80, '', 'Or', null, null, 'logic or'),
this.createVertexTemplateEntry('shape=or;whiteSpace=wrap;html=1;', 60, 80, '', 'And', null, null, 'logic and'),
this.createVertexTemplateEntry('shape=dataStorage;whiteSpace=wrap;html=1;fixedSize=1;', 100, 80, '', 'Data Storage'),
this.addEntry('curve', mxUtils.bind(this, function()
{
var cell = new mxCell('', new mxGeometry(0, 0, 50, 50), 'curved=1;endArrow=classic;html=1;');
cell.geometry.setTerminalPoint(new mxPoint(0, 50), true);
cell.geometry.setTerminalPoint(new mxPoint(50, 0), false);
cell.geometry.points = [new mxPoint(50, 50), new mxPoint(0, 0)];
cell.geometry.relative = true;
cell.edge = true;
return this.createEdgeTemplateFromCells([cell], cell.geometry.width, cell.geometry.height, 'Curve');
})),
this.createEdgeTemplateEntry('shape=flexArrow;endArrow=classic;startArrow=classic;html=1;', 50, 50, '', 'Bidirectional Arrow', null, lineTags + 'bidirectional'),
this.createEdgeTemplateEntry('shape=flexArrow;endArrow=classic;html=1;', 50, 50, '', 'Arrow', null, lineTags + 'directional directed'),
this.createEdgeTemplateEntry('endArrow=none;dashed=1;html=1;', 50, 50, '', 'Dashed Line', null, lineTags + 'dashed undirected no'),
this.createEdgeTemplateEntry('endArrow=none;dashed=1;html=1;dashPattern=1 3;strokeWidth=2;', 50, 50, '', 'Dotted Line', null, lineTags + 'dotted undirected no'),
this.createEdgeTemplateEntry('endArrow=none;html=1;', 50, 50, '', 'Line', null, lineTags + 'simple undirected plain blank no'),
this.createEdgeTemplateEntry('endArrow=classic;startArrow=classic;html=1;', 50, 50, '', 'Bidirectional Connector', null, lineTags + 'bidirectional'),
this.createEdgeTemplateEntry('endArrow=classic;html=1;', 50, 50, '', 'Directional Connector', null, lineTags + 'directional directed'),
this.createEdgeTemplateEntry('shape=link;html=1;', 100, 0, '', 'Link', null, lineTags + 'link'),
this.addEntry(lineTags + 'edge title', mxUtils.bind(this, function()
{
var edge = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=classic;html=1;');
edge.geometry.setTerminalPoint(new mxPoint(0, 0), true);
edge.geometry.setTerminalPoint(new mxPoint(100, 0), false);
edge.geometry.relative = true;
edge.edge = true;
var cell0 = new mxCell('Label', new mxGeometry(0, 0, 0, 0), 'edgeLabel;resizable=0;html=1;align=center;verticalAlign=middle;');
cell0.geometry.relative = true;
cell0.setConnectable(false);
cell0.vertex = true;
edge.insert(cell0);
return this.createEdgeTemplateFromCells([edge], 100, 0, 'Connector with Label');
})),
this.addEntry(lineTags + 'edge title multiplicity', mxUtils.bind(this, function()
{
var edge = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=classic;html=1;');
edge.geometry.setTerminalPoint(new mxPoint(0, 0), true);
edge.geometry.setTerminalPoint(new mxPoint(160, 0), false);
edge.geometry.relative = true;
edge.edge = true;
var cell0 = new mxCell('Label', new mxGeometry(0, 0, 0, 0), 'edgeLabel;resizable=0;html=1;align=center;verticalAlign=middle;');
cell0.geometry.relative = true;
cell0.setConnectable(false);
cell0.vertex = true;
edge.insert(cell0);
var cell1 = new mxCell('Source', new mxGeometry(-1, 0, 0, 0), 'edgeLabel;resizable=0;html=1;align=left;verticalAlign=bottom;');
cell1.geometry.relative = true;
cell1.setConnectable(false);
cell1.vertex = true;
edge.insert(cell1);
return this.createEdgeTemplateFromCells([edge], 160, 0, 'Connector with 2 Labels');
})),
this.addEntry(lineTags + 'edge title multiplicity', mxUtils.bind(this, function()
{
var edge = new mxCell('Label', new mxGeometry(0, 0, 0, 0), 'endArrow=classic;html=1;');
edge.geometry.setTerminalPoint(new mxPoint(0, 0), true);
edge.geometry.setTerminalPoint(new mxPoint(160, 0), false);
edge.geometry.relative = true;
edge.edge = true;
var cell0 = new mxCell('Label', new mxGeometry(0, 0, 0, 0), 'edgeLabel;resizable=0;html=1;align=center;verticalAlign=middle;');
cell0.geometry.relative = true;
cell0.setConnectable(false);
cell0.vertex = true;
edge.insert(cell0);
var cell1 = new mxCell('Source', new mxGeometry(-1, 0, 0, 0), 'edgeLabel;resizable=0;html=1;align=left;verticalAlign=bottom;');
cell1.geometry.relative = true;
cell1.setConnectable(false);
cell1.vertex = true;
edge.insert(cell1);
var cell2 = new mxCell('Target', new mxGeometry(1, 0, 0, 0), 'edgeLabel;resizable=0;html=1;align=right;verticalAlign=bottom;');
cell2.geometry.relative = true;
cell2.setConnectable(false);
cell2.vertex = true;
edge.insert(cell2);
return this.createEdgeTemplateFromCells([edge], 160, 0, 'Connector with 3 Labels');
})),
this.addEntry(lineTags + 'edge shape symbol message mail email', mxUtils.bind(this, function()
{
var edge = new mxCell('', new mxGeometry(0, 0, 0, 0), 'endArrow=classic;html=1;');
edge.geometry.setTerminalPoint(new mxPoint(0, 0), true);
edge.geometry.setTerminalPoint(new mxPoint(100, 0), false);
edge.geometry.relative = true;
edge.edge = true;
var cell = new mxCell('', new mxGeometry(0, 0, 20, 14), 'shape=message;html=1;outlineConnect=0;');
cell.geometry.relative = true;
cell.vertex = true;
cell.geometry.offset = new mxPoint(-10, -7);
edge.insert(cell);
return this.createEdgeTemplateFromCells([edge], 100, 0, 'Connector with Symbol');
}))
]);
};
Sidebar.prototype.addGeneralMiscPalette = function()
{
var sb = this;
var gn = 'general misc';
var dt = '';
var lineTags = 'line lines connector connectors connection connections arrow arrows '
this.addPaletteFunctions('generalMisc', 'Misc', false,
[
this.createVertexTemplateEntry('text;strokeColor=none;fillColor=none;html=1;fontSize=24;fontStyle=1;verticalAlign=middle;align=center;', 100, 40, 'Title', 'Title', null, null, 'text heading title'),
this.createVertexTemplateEntry('text;strokeColor=none;fillColor=none;html=1;whiteSpace=wrap;verticalAlign=middle;overflow=hidden;', 100, 80,
'<ul><li>Value 1</li><li>Value 2</li><li>Value 3</li></ul>', 'Unordered List'),
this.createVertexTemplateEntry('text;strokeColor=none;fillColor=none;html=1;whiteSpace=wrap;verticalAlign=middle;overflow=hidden;', 100, 80,
'<ol><li>Value 1</li><li>Value 2</li><li>Value 3</li></ol>', 'Ordered List'),
this.addDataEntry('table', 180, 120, 'Table 1', '7ZjJTsMwEIafJleUhZZybVgucAFewDTT2pLjiewpaXl6xolLVQFqWBJArZRKns2xv5H7y4myvFxdW1HJWyxAR9lllOUWkdpRucpB6yiNVRFlF1GaxvyL0qsPokkTjSthwVCXgrQteBJ6Ca2ndTha6+BwUlR+SOLRu6aSSl7mRcLDWiqC+0rMfLzmTbDPkbB0r569K2Z7hoaEMmBDzQy1FpVTzWRthlS6uBFrXNLmNRtrGpYHlmD14RYbV9jfNWAJZNecUquCZMiYtBhiCWohN2WBTSxc61i81m6J8SBAex9g1h0gL5mU0HcwI2EWXVi+ZVVYrB6EXQAFR4XKENjLJ6bhgm+utM5Ro0du0PgXEVYhqGG+qX1EIiyDYQOY10kbKKMpP4wpj09G0Yh3k7OdbG1+fLqlHI0jy432c4BwVIPr3MD0aw08/YH+nfbbP2N89rZ/324NMsq5xppNqYoCTFfG2V7G454Qjw4c8WoX7wDEx0fiO3/wAyA/O+pAbzqw3m3TELIwOZQTdPZrsnB+4IiHl4UkPiIfWheS5CgMfQvDZEBhSD5xY/7fZyjZf63u7dD0fKv++5B/QRwO5ia8h3mP6sDm9tNeE9v58vcC'),
this.addDataEntry('table', 180, 120, 'Table 2', '7ZjBbqMwEIafhmuFISTptbTbS/eyrfbuBie2ZDzITEqyT79jMMlGWVTUBlqVSkTyjGeM+SbDLxPEab67t7yQPyETOojvgji1ANiM8l0qtA6iUGVBfBtEUUi/IPrRMcvq2bDgVhjskxA1CS9cb0XjaRwl7rV3lJIXboj82bluJOa0zVtGw0oqFI8FX7n5ih6CfCVyi4/qj3OFZK/AIFdGWJ+zAq15Uap6sSZCKp098D1ssb1Na7nobW4eKL/00Raqf02/f2FR7DoZ1C4P4F5ALtDuKaRSGUofsWw4hVKojWzTPLyQl41jc8g9IqWBp/p/wnF/wrRlVFz/EivkZtMH9jnMzELxxO1GoHcUoAwKe/dCNFpoa6V1ChpcTQwYdyOEwk9qsW5znwER8ha8B3NYtIaS3NBFmNLwKgkSepqUbHa06XLhFlMwJVr6J7g1BC+xEiX2LWD0tgLOLlC/2Vn9ftfDKGQXLaQxLvpYyHfXCIjpWkNFplRZJkxf2PGrsOcDsU46WV+2aT49690p5xHQzzvRx5NEf3j3j8B+8S0Rg0nE/rRMYyjGsrOVZl+0lRYfphjXnayTabEeXzFY2Ml+Pkn2Y0oGY9+aMbRmLEfUDHZ+EG+bafFFm4m9fiofrHvOD+Ut7eXEaH+AbnSfqK+nCX9A4SDz+DGxnjv51vgX'),
this.addDataEntry('table title', 180, 120, 'Table with Title 1', '7ZhRb6MwDMc/Da8nAmPdvZbu9nJ7WfcFMnAhUohR4o12n34OpKumrmqlDXa6VqJS/Lcdkp8bWSFK82Z9Z2Vb32MJOkpvozS3iDSMmnUOWkdJrMooXURJEvMvSv4c8IreG7fSgqFTEpIh4UXqZxiUR/mkYVAdbXRQXS1bP6Tem85ranitC8HDrlYEy1YW3t/xTlhzJC0t1auX0piFAg1JZcCGpAK1lq1T/WyLPqJWuvwrN/hM2/dsrfmKs5dhMT5balUZHhe8Sz/lPOwCLMH6IIleChjuABsgu+GQTpVUh4ibgVZcg6rqbVoWROkGoXrP3YHlQWD7Oed0j/NBxLxkUlI/QEHSVKfQ3odZWmwfpa2AgtCi8qhuX5iGC9pKaZ2jRl8Tg8a/iLANTg2rbe4TEmETDBvAvE/aQ8nm/DCmPP6VRRnvJmdb7Gx+fLilHI0jy/8EPwdIRx04OrWAyecF3ATEoUzH6nn1DeW8GrecxvjoXTm/XClksiuNHZu1KkswpyJPj56Z65EQZ2eOeP0R7wTEry/E+4RkOuSzS1sYuy3MJmwLN+dygmY/1hZ+nzni6duCiC/Ip+4LQlwaw9iNQYgJO4PYv2j/p4dIHL9mj3ZqRr5l//uQf6A7nM1V+AjzEdsDm7svgr3vwwfDNw=='),
this.addDataEntry('table title', 180, 150, 'Table with Title 2', '7Zhdb5swFIZ/DbcTHyVrbiFdb7Kbptq9Cw5YMj7IPi1kv37HYJK1FDWbQoOmSUSyz4dt3id+L/CitGrvNavL75Bz6UV3XpRqAOxHVZtyKb3QF7kXbbww9Onnhd8mskGX9WumucJzGsK+4YXJZ95HHtmT5H3U4EG6qClZbYfYZaOkxIrOuglo2JQC+a5mmc039CYUM8g07sRPG4p8CmSgkAnFtWvKQEpWG9GttukqSiHzLTvAMw77DLNkL1qeP0BjXLeGZkuLGde6p8V37qw2zaQoFI0zEsHumLiX5Bp5OylUF3Iq3XOoOOoDlTQix9JV3PZi+iUXRTm0xS7ITB8ojr0n3WngpH8fQzTCMEmAjoyCyQeeIVPFOTDGWuca6kemC44uUIOwUt29kBpHVYWUKUiwyBQouxFC7ZKS74feJ0CEaiDjhDku2okSJ/SQTKn/JfZiepuU5sFpTo8t15iCMqjpj2LX4Mxgww2eCzB8H+DBSewwfcQzugDOmxHO4KI8lbLVJ55/jMp/gwpI2r2EhqalyHOuztU8+vDS3MykcTzS+Ec3DP2Faz24U1+bGNpQqGLbd65mgNG+BvH7BZgLzupf8LO34JblZ6tP9LOvI5yX5bkcP1tdzc9uJ/1s4VrP52cTMK7gZ+v/fja3n60/0c8Cf8QzWvYl++s7tL6aoQXBpKMtXOz5HG2CxvyORtPTR4Uu9+qbwy8='),
this.addDataEntry('crossfunctional cross-functional cross functional flowchart swimlane table', 400, 400, 'Cross-Functional Flowchart', '7ZhRb5swEMc/DY+bMCRt97jQpi+tVC2fwINbbMnYyD4C6aefjaHpBrTRlNCoTALJPp9t+P25O5kgTvL6XtOCPaoMRBDfBXGilULfyusEhAiikGdBfBtEUWjvIFqPjJJmNCyoBonHTIj8hB0VJXiL3dyYL+tSpsiVpM55LVSVMqrROxvci9bZMFq4JtKfzrRKGRfZA92rEjtr11tpVT1wCcYOhM5ViTKXry0G7RYb/uwWXDgDw9wCuSW2WTGOsClo6gYri8uvIGhheLN1s4KGtNSG7+AHGL+Os0JdUJm1nUJxiaDvdhZQt/EvJXHTvpTbjAq+lbadgnO1hhYSaIR6FHRjainfg8oB9d66VDxD5j0WoRcjZMC3DP8yUuMN25e5B91so5VuWMa4J+P3FJW2JtLXrOK5oNLJxZTmz/blqXhNp3mO5cpe9smS8OsyWNp5ie2TQ99ezl1joqRBTXmDAajBCgxejprHKBcNK7fvBPIz3hOSRCcQctET8olRA+8JmSopIW2j8GOD6Sji8TDxepT4C9yTE1+OEo/mQ5xcTYn8ahR5PB/k0c2UyK9HC8SbX/mnLBAnqAlD8XK+onDTE+/fw+TiQF9fTin4Nl/O0xYAEs6X9LR5n5Ae6S7xv1lr/yf+4cQ/pN75Ej/pH88/UZyQkRPzR6R+0j9Bz4f0xMm/f8adD+qzZn/bPfw5bMb++LH4Gw=='),
this.createVertexTemplateEntry('text;html=1;strokeColor=#c0c0c0;fillColor=#ffffff;overflow=fill;rounded=0;', 280, 160,
'<table border="1" width="100%" height="100%" cellpadding="4" style="width:100%;height:100%;border-collapse:collapse;">' +
'<tr style="background-color:#A7C942;color:#ffffff;border:1px solid #98bf21;"><th align="left">Title 1</th><th align="left">Title 2</th><th align="left">Title 3</th></tr>' +
'<tr style="border:1px solid #98bf21;"><td>Value 1</td><td>Value 2</td><td>Value 3</td></tr>' +
'<tr style="background-color:#EAF2D3;border:1px solid #98bf21;"><td>Value 4</td><td>Value 5</td><td>Value 6</td></tr>' +
'<tr style="border:1px solid #98bf21;"><td>Value 7</td><td>Value 8</td><td>Value 9</td></tr>' +
'<tr style="background-color:#EAF2D3;border:1px solid #98bf21;"><td>Value 10</td><td>Value 11</td><td>Value 12</td></tr></table>', 'HTML Table 1'),
this.createVertexTemplateEntry('text;html=1;strokeColor=#c0c0c0;fillColor=none;overflow=fill;', 180, 140,
'<table border="0" width="100%" height="100%" style="width:100%;height:100%;border-collapse:collapse;">' +
'<tr><td align="center">Value 1</td><td align="center">Value 2</td><td align="center">Value 3</td></tr>' +
'<tr><td align="center">Value 4</td><td align="center">Value 5</td><td align="center">Value 6</td></tr>' +
'<tr><td align="center">Value 7</td><td align="center">Value 8</td><td align="center">Value 9</td></tr></table>', 'HTML Table 2'),
this.createVertexTemplateEntry('text;html=1;strokeColor=none;fillColor=none;overflow=fill;', 180, 140,
'<table border="1" width="100%" height="100%" style="width:100%;height:100%;border-collapse:collapse;">' +
'<tr><td align="center">Value 1</td><td align="center">Value 2</td><td align="center">Value 3</td></tr>' +
'<tr><td align="center">Value 4</td><td align="center">Value 5</td><td align="center">Value 6</td></tr>' +
'<tr><td align="center">Value 7</td><td align="center">Value 8</td><td align="center">Value 9</td></tr></table>', 'HTML Table 3'),
this.createVertexTemplateEntry('text;html=1;strokeColor=none;fillColor=none;overflow=fill;', 160, 140,
'<table border="1" width="100%" height="100%" cellpadding="4" style="width:100%;height:100%;border-collapse:collapse;">' +
'<tr><th align="center"><b>Title</b></th></tr>' +
'<tr><td align="center">Section 1.1\nSection 1.2\nSection 1.3</td></tr>' +
'<tr><td align="center">Section 2.1\nSection 2.2\nSection 2.3</td></tr></table>', 'HTML Table 4'),
this.addEntry('link hyperlink', mxUtils.bind(this, function()
{
var cell = new mxCell('Link', new mxGeometry(0, 0, 60, 40), 'text;html=1;strokeColor=none;fillColor=none;whiteSpace=wrap;align=center;verticalAlign=middle;fontColor=#0000EE;fontStyle=4;');
cell.vertex = true;
this.graph.setLinkForCell(cell, 'https://www.draw.io');
return this.createVertexTemplateFromCells([cell], cell.geometry.width, cell.geometry.height, 'Link');
})),
this.addEntry('timestamp date time text label', mxUtils.bind(this, function()
{
var cell = new mxCell('%date{ddd mmm dd yyyy HH:MM:ss}%', new mxGeometry(0, 0, 160, 20), 'text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;overflow=hidden;');
cell.vertex = true;
this.graph.setAttributeForCell(cell, 'placeholders', '1');
return this.createVertexTemplateFromCells([cell], cell.geometry.width, cell.geometry.height, 'Timestamp');
})),
this.addEntry('variable placeholder metadata hello world text label', mxUtils.bind(this, function()
{
var cell = new mxCell('%name% Text', new mxGeometry(0, 0, 80, 20), 'text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;overflow=hidden;');
cell.vertex = true;
this.graph.setAttributeForCell(cell, 'placeholders', '1');
this.graph.setAttributeForCell(cell, 'name', 'Variable');
return this.createVertexTemplateFromCells([cell], cell.geometry.width, cell.geometry.height, 'Variable');
})),
this.createVertexTemplateEntry('shape=ext;double=1;rounded=0;whiteSpace=wrap;html=1;', 120, 80, '', 'Double Rectangle', null, null, 'rect rectangle box double'),
this.createVertexTemplateEntry('shape=ext;double=1;rounded=1;whiteSpace=wrap;html=1;', 120, 80, '', 'Double Rounded Rectangle', null, null, 'rounded rect rectangle box double'),
this.createVertexTemplateEntry('ellipse;shape=doubleEllipse;whiteSpace=wrap;html=1;', 100, 60, '', 'Double Ellipse', null, null, 'oval ellipse start end state double'),
this.createVertexTemplateEntry('shape=ext;double=1;whiteSpace=wrap;html=1;aspect=fixed;', 80, 80, '', 'Double Square', null, null, 'double square'),
this.createVertexTemplateEntry('ellipse;shape=doubleEllipse;whiteSpace=wrap;html=1;aspect=fixed;', 80, 80, '', 'Double Circle', null, null, 'double circle'),
this.createVertexTemplateEntry('rounded=1;whiteSpace=wrap;html=1;strokeWidth=2;fillWeight=4;hachureGap=8;hachureAngle=45;fillColor=#1ba1e2;sketch=1;', 120, 60, '', 'Rectangle Sketch', true, null, 'rectangle rect box text sketch comic retro'),
this.createVertexTemplateEntry('ellipse;whiteSpace=wrap;html=1;strokeWidth=2;fillWeight=2;hachureGap=8;fillColor=#990000;fillStyle=dots;sketch=1;', 120, 60, '', 'Ellipse Sketch', true, null, 'ellipse oval sketch comic retro'),
this.createVertexTemplateEntry('rhombus;whiteSpace=wrap;html=1;strokeWidth=2;fillWeight=-1;hachureGap=8;fillStyle=cross-hatch;fillColor=#006600;sketch=1;', 120, 60, '', 'Diamond Sketch', true, null, 'diamond sketch comic retro'),
this.createVertexTemplateEntry('html=1;whiteSpace=wrap;shape=isoCube2;backgroundOutline=1;isoAngle=15;', 90, 100, '', 'Isometric Cube', true, null, 'cube box iso isometric'),
this.createVertexTemplateEntry('html=1;whiteSpace=wrap;aspect=fixed;shape=isoRectangle;', 150, 90, '', 'Isometric Square', true, null, 'rectangle rect box iso isometric'),
this.createEdgeTemplateEntry('edgeStyle=isometricEdgeStyle;endArrow=none;html=1;', 50, 100, '', 'Isometric Edge 1'),
this.createEdgeTemplateEntry('edgeStyle=isometricEdgeStyle;endArrow=none;html=1;elbow=vertical;', 50, 100, '', 'Isometric Edge 2'),
this.createVertexTemplateEntry('shape=curlyBracket;whiteSpace=wrap;html=1;rounded=1;', 20, 120, '', 'Curly Bracket'),
this.createVertexTemplateEntry('line;strokeWidth=2;html=1;', 160, 10, '', 'Horizontal Line'),
this.createVertexTemplateEntry('line;strokeWidth=2;direction=south;html=1;', 10, 160, '', 'Vertical Line'),
this.createVertexTemplateEntry('line;strokeWidth=4;html=1;perimeter=backbonePerimeter;points=[];outlineConnect=0;', 160, 10, '', 'Horizontal Backbone', false, null, 'backbone bus network'),
this.createVertexTemplateEntry('line;strokeWidth=4;direction=south;html=1;perimeter=backbonePerimeter;points=[];outlineConnect=0;', 10, 160, '', 'Vertical Backbone', false, null, 'backbone bus network'),
this.createVertexTemplateEntry('shape=crossbar;whiteSpace=wrap;html=1;rounded=1;', 120, 20, '', 'Crossbar', false, null, 'crossbar distance measure dimension unit'),
this.createVertexTemplateEntry('shape=image;html=1;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=1;aspect=fixed;image=' + this.gearImage, 52, 61, '', 'Image (Fixed Aspect)', false, null, 'fixed image icon symbol'),
this.createVertexTemplateEntry('shape=image;html=1;verticalLabelPosition=bottom;verticalAlign=top;imageAspect=0;image=' + this.gearImage, 50, 60, '', 'Image (Variable Aspect)', false, null, 'strechted image icon symbol'),
this.createVertexTemplateEntry('icon;html=1;image=' + this.gearImage, 60, 60, 'Icon', 'Icon', false, null, 'icon image symbol'),
this.createVertexTemplateEntry('label;whiteSpace=wrap;html=1;image=' + this.gearImage, 140, 60, 'Label', 'Label 1', null, null, 'label image icon symbol'),
this.createVertexTemplateEntry('label;whiteSpace=wrap;html=1;align=center;verticalAlign=bottom;spacingLeft=0;spacingBottom=4;imageAlign=center;imageVerticalAlign=top;image=' + this.gearImage, 120, 80, 'Label', 'Label 2', null, null, 'label image icon symbol'),
this.addEntry('shape group container', function()
{
var cell = new mxCell('Label', new mxGeometry(0, 0, 160, 70),
'html=1;whiteSpace=wrap;container=1;recursiveResize=0;collapsible=0;');
cell.vertex = true;
var symbol = new mxCell('', new mxGeometry(20, 20, 20, 30), 'triangle;html=1;whiteSpace=wrap;');
symbol.vertex = true;
cell.insert(symbol);
return sb.createVertexTemplateFromCells([cell], cell.geometry.width, cell.geometry.height, 'Shape Group');
}),
this.createVertexTemplateEntry('shape=partialRectangle;whiteSpace=wrap;html=1;left=0;right=0;fillColor=none;', 120, 60, '', 'Partial Rectangle'),
this.createVertexTemplateEntry('shape=partialRectangle;whiteSpace=wrap;html=1;bottom=1;right=1;left=1;top=0;fillColor=none;routingCenterX=-0.5;', 120, 60, '', 'Partial Rectangle'),
this.createEdgeTemplateEntry('edgeStyle=segmentEdgeStyle;endArrow=classic;html=1;', 50, 50, '', 'Manual Line', null, lineTags + 'manual'),
this.createEdgeTemplateEntry('shape=filledEdge;rounded=0;fixDash=1;endArrow=none;strokeWidth=10;fillColor=#ffffff;edgeStyle=orthogonalEdgeStyle;', 60, 40, '', 'Filled Edge'),
this.createEdgeTemplateEntry('edgeStyle=elbowEdgeStyle;elbow=horizontal;endArrow=classic;html=1;', 50, 50, '', 'Horizontal Elbow', null, lineTags + 'elbow horizontal'),
this.createEdgeTemplateEntry('edgeStyle=elbowEdgeStyle;elbow=vertical;endArrow=classic;html=1;', 50, 50, '', 'Vertical Elbow', null, lineTags + 'elbow vertical')
]);
};
Sidebar.prototype.addGeneralAdvancedPalette = function()
{
var sb = this;
var gn = 'general misc';
var dt = '';
var lineTags = 'line lines connector connectors connection connections arrow arrows '
// Reusable cells
var field = new mxCell('List Item', new mxGeometry(0, 0, 60, 26), 'text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;');
field.vertex = true;
this.addPaletteFunctions('generalAdvanced', 'Advanced', false,
[
this.createVertexTemplateEntry('shape=tapeData;whiteSpace=wrap;html=1;perimeter=ellipsePerimeter;', 80, 80, '', 'Tape Data'),
this.createVertexTemplateEntry('shape=manualInput;whiteSpace=wrap;html=1;', 80, 80, '', 'Manual Input'),
this.createVertexTemplateEntry('shape=loopLimit;whiteSpace=wrap;html=1;', 100, 80, '', 'Loop Limit'),
this.createVertexTemplateEntry('shape=offPageConnector;whiteSpace=wrap;html=1;', 80, 80, '', 'Off Page Connector'),
this.createVertexTemplateEntry('shape=delay;whiteSpace=wrap;html=1;', 80, 40, '', 'Delay'),
this.createVertexTemplateEntry('shape=display;whiteSpace=wrap;html=1;', 80, 40, '', 'Display'),
this.createVertexTemplateEntry('shape=singleArrow;direction=west;whiteSpace=wrap;html=1;', 100, 60, '', 'Arrow Left'),
this.createVertexTemplateEntry('shape=singleArrow;whiteSpace=wrap;html=1;', 100, 60, '', 'Arrow Right'),
this.createVertexTemplateEntry('shape=singleArrow;direction=north;whiteSpace=wrap;html=1;', 60, 100, '', 'Arrow Up'),
this.createVertexTemplateEntry('shape=singleArrow;direction=south;whiteSpace=wrap;html=1;', 60, 100, '', 'Arrow Down'),
this.createVertexTemplateEntry('shape=doubleArrow;whiteSpace=wrap;html=1;', 100, 60, '', 'Double Arrow'),
this.createVertexTemplateEntry('shape=doubleArrow;direction=south;whiteSpace=wrap;html=1;', 60, 100, '', 'Double Arrow Vertical', null, null, 'double arrow'),
this.createVertexTemplateEntry('shape=actor;whiteSpace=wrap;html=1;', 40, 60, '', 'User', null, null, 'user person human'),
this.createVertexTemplateEntry('shape=cross;whiteSpace=wrap;html=1;', 80, 80, '', 'Cross'),
this.createVertexTemplateEntry('shape=corner;whiteSpace=wrap;html=1;', 80, 80, '', 'Corner'),
this.createVertexTemplateEntry('shape=tee;whiteSpace=wrap;html=1;', 80, 80, '', 'Tee'),
this.createVertexTemplateEntry('shape=datastore;whiteSpace=wrap;html=1;', 60, 60, '', 'Data Store', null, null, 'data store cylinder database'),
this.createVertexTemplateEntry('shape=orEllipse;perimeter=ellipsePerimeter;whiteSpace=wrap;html=1;backgroundOutline=1;', 80, 80, '', 'Or', null, null, 'or circle oval ellipse'),
this.createVertexTemplateEntry('shape=sumEllipse;perimeter=ellipsePerimeter;whiteSpace=wrap;html=1;backgroundOutline=1;', 80, 80, '', 'Sum', null, null, 'sum circle oval ellipse'),
this.createVertexTemplateEntry('shape=lineEllipse;perimeter=ellipsePerimeter;whiteSpace=wrap;html=1;backgroundOutline=1;', 80, 80, '', 'Ellipse with horizontal divider', null, null, 'circle oval ellipse'),
this.createVertexTemplateEntry('shape=lineEllipse;line=vertical;perimeter=ellipsePerimeter;whiteSpace=wrap;html=1;backgroundOutline=1;', 80, 80, '', 'Ellipse with vertical divider', null, null, 'circle oval ellipse'),
this.createVertexTemplateEntry('shape=sortShape;perimeter=rhombusPerimeter;whiteSpace=wrap;html=1;', 80, 80, '', 'Sort', null, null, 'sort'),
this.createVertexTemplateEntry('shape=collate;whiteSpace=wrap;html=1;', 80, 80, '', 'Collate', null, null, 'collate'),
this.createVertexTemplateEntry('shape=switch;whiteSpace=wrap;html=1;', 60, 60, '', 'Switch', null, null, 'switch router'),
this.addEntry('process bar', function()
{
return sb.createVertexTemplateFromData('zZXRaoMwFIafJpcDjbNrb2233rRQ8AkyPdPQaCRJV+3T7yTG2rUVBoOtgpDzn/xJzncCIdGyateKNeVW5iBI9EqipZLS9KOqXYIQhAY8J9GKUBrgT+jbRDZ02aBhCmrzEwPtDZ9MHKBXdkpmoDWKCVN9VptO+Kw+8kqwGqMkK7nIN6yTB7uTNizbD1FSSsVPsjYMC1qFKHxwIZZSSIVxLZ1/nJNar5+oQPMT7IYCrqUta1ENzuqGaeOFTArBGs3f3Vmtoo2Se7ja1h00kSoHK4bBIKUNy3hdoPYU0mF91i9mT8EEL2ocZ3gKa00ayWujLZY4IfHKFonVDLsRGgXuQ90zBmWgneyTk3yT1iArMKrDKUeem9L3ajHrbSXwohxsQd/ggOleKM7ese048J2/fwuim1uQGmhQCW8vQMkacP3GCQgBFMftHEsr7cYYe95CnmKTPMFbYD8CQ++DGQy+/M5X4ku5wHYmdIktfvk9tecpavThqS3m/0YtnqIWPTy1cD77K2wYjo+Ay317I74A', 296, 100, 'Process Bar');
}),
this.createVertexTemplateEntry('swimlane;', 200, 200, 'Container', 'Container', null, null, 'container swimlane lane pool group'),
this.addEntry('list group erd table', function()
{
var cell = new mxCell('List', new mxGeometry(0, 0, 140, 110),
'swimlane;fontStyle=0;childLayout=stackLayout;horizontal=1;startSize=26;fillColor=none;horizontalStack=0;' +
'resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;');
cell.vertex = true;
cell.insert(sb.cloneCell(field, 'Item 1'));
cell.insert(sb.cloneCell(field, 'Item 2'));
cell.insert(sb.cloneCell(field, 'Item 3'));
return sb.createVertexTemplateFromCells([cell], cell.geometry.width, cell.geometry.height, 'List');
}),
this.addEntry('list item entry value group erd table', function()
{
return sb.createVertexTemplateFromCells([sb.cloneCell(field, 'List Item')], field.geometry.width, field.geometry.height, 'List Item');
})
]);
};
})();

View file

@ -79,6 +79,8 @@
'Database', 'End User Computing', 'Developer Tools', 'Game Tech', 'Internet of Things', 'IoT Things', 'IoT Resources', 'Machine Learning', 'Management Governance',
'Media Services', 'Migration Transfer', 'Mobile', 'Network Content Delivery', 'Quantum Technologies', 'Robotics', 'Satellite', 'Security Identity Compliance', 'Storage'];
Sidebar.prototype.general = ['General', 'Advanced', 'Misc'];
Sidebar.prototype.office = ['Clouds', 'Communications', 'Concepts', 'Databases', 'Devices', 'Security', 'Servers', 'Services', 'Sites', 'Users'];
Sidebar.prototype.veeam = ['Data Center', 'Misc', 'Software', 'Storage', 'UsersStatus', 'VASComponents', 'Backup Replication', 'Products', 'VMs and Tape', '2D', '3D'];
@ -109,7 +111,10 @@
/**
*
*/
Sidebar.prototype.configuration = [{id: 'general', libs: ['general', 'misc', 'advanced']}, {id: 'uml'}, {id: 'search'}, {id: 'er'},
Sidebar.prototype.configuration = [
// {id: 'general', libs: ['general', 'misc', 'advanced']},
{id: 'general', prefix: 'general', libs: Sidebar.prototype.general},
{id: 'uml'}, {id: 'search'}, {id: 'er'},
{id: 'azure2', prefix: 'azure2', libs: ['AI Machine Learning', 'Analytics', 'App Services', 'Azure Stack', 'Azure VMware Solution', 'Blockchain', 'Compute', 'Containers', 'CXP', 'Databases', 'DevOps', 'General', 'Identity', 'Integration', 'Internet of Things', 'Intune', 'IoT', 'Management Governance', 'Migrate', 'Mixed Reality', 'Monitor', 'Networking', 'Other', 'Preview', 'Security', 'Storage', 'Web']},
{id: 'ios', prefix: 'ios', libs: [''/*prefix is library*/, '7icons', '7ui']},
{id: 'android', prefix: 'android', libs: [''/*prefix is library*/]}, {id: 'aws3d'},
@ -454,7 +459,8 @@
// Defines all entries for the sidebar. This is used in the MoreShapes dialog. Create screenshots using the savesidebar URL parameter and
// http://www.alderg.com/merge.html for creating a vertical stack of PNG images if multiple sidebars are part of an entry.
this.entries = [{title: mxResources.get('standard'),
entries: [{title: mxResources.get('general'), id: 'general', image: IMAGE_PATH + '/sidebar-general.png'},
entries: [
{title: mxResources.get('general'), id: 'general', image: IMAGE_PATH + '/sidebar-general.png'},
{title: mxResources.get('basic'), id: 'basic', image: IMAGE_PATH + '/sidebar-basic.png'},
{title: mxResources.get('arrows'), id: 'arrows2', image: IMAGE_PATH + '/sidebar-arrows2.png'},
{title: mxResources.get('clipart'), id: 'clipart', image: IMAGE_PATH + '/sidebar-clipart.png'},
@ -1030,9 +1036,7 @@
}
}
this.addGeneralPalette(this.customEntries == null);
this.addMiscPalette(false);
this.addAdvancedPalette(false);
this.addGeneralPalette();
this.addBasicPalette();
this.addStencilPalette('arrows', mxResources.get('arrows'), dir + '/arrows.xml',
';html=1;' + mxConstants.STYLE_VERTICAL_LABEL_POSITION + '=bottom;' + mxConstants.STYLE_VERTICAL_ALIGN + '=top;' + mxConstants.STYLE_STROKEWIDTH + '=2;strokeColor=#000000;',

View file

@ -20,22 +20,22 @@ m.v&&m.v&&(d=!0,b+=4),h++;if(0<b)return"fontStyle="+b+";"}return""}function x(a)
a)for(var b=0;b<a.length;){var d=a[b];if("mt"==d.n&&null!=d.v)return"spacingTop="+d.v+";";b++}return""}function B(a){a=n(a);if(null!=a)for(var b=0;b<a.length;){var d=a[b];if("mb"==d.n&&null!=d.v)return"spacingBottom="+d.v+";";b++}return""}function F(a){return"number"===typeof a.InsetMargin?"spacing="+Math.max(0,Math.round(.6*parseInt(a.InsetMargin)))+";":""}function E(a){return null!=a.Text_VAlign&&"string"===typeof a.Text_VAlign?"verticalAlign="+a.Text_VAlign+";":null!=a.Title_VAlign&&"string"===
typeof a.Title_VAlign?"verticalAlign="+a.Title_VAlign+";":Ya(mxConstants.STYLE_VERTICAL_ALIGN,a.TextVAlign,"middle")}function H(a,b){return 0==a.LineWidth?mxConstants.STYLE_STROKECOLOR+"=none;":Ya(mxConstants.STYLE_STROKECOLOR,da(a.LineColor),"#000000")}function fa(a){return null!=a?mxConstants.STYLE_FILLCOLOR+"="+da(a)+";":""}function R(a){return null!=a?"swimlaneFillColor="+da(a)+";":""}function M(a,b,d){b="";if("string"===typeof a.LineColor&&(a.LineColor=T(a.LineColor),7<a.LineColor.length)){var h=
"0x"+a.LineColor.substring(a.LineColor.length-2,a.LineColor.length);d.style.includes("strokeOpacity")||(b+="strokeOpacity="+Math.round(parseInt(h)/2.55)+";")}"string"===typeof a.FillColor&&(a.FillColor=T(a.FillColor),7<a.FillColor.length&&(a="0x"+a.FillColor.substring(a.FillColor.length-2,a.FillColor.length),d.style.includes("fillOpacity")||(b+="fillOpacity="+Math.round(parseInt(a)/2.55)+";")));return b}function ca(a,b,d){var h="";if(null!=a.Rotation){a=mxUtils.toDegree(parseFloat(a.Rotation));var m=
!0;0!=a&&("UMLSwimLaneBlockV2"==b.Class||(0<=b.Class.indexOf("Rotated")||-90==a||270==a)&&(0<=b.Class.indexOf("Pool")||0<=b.Class.indexOf("SwimLane")))?(a+=90,d.geometry.rotate90(),d.geometry.isRotated=!0,m=!1):0<=mxUtils.indexOf(ud,b.Class)?(a-=90,d.geometry.rotate90()):0<=mxUtils.indexOf(vd,b.Class)&&(a+=180);0!=a&&(h+="rotation="+a+";");m||(h+="horizontal=0;")}return h}function U(a){return null!=a.Shadow?mxConstants.STYLE_SHADOW+"=1;":""}function T(a){a&&("rgb"==a.substring(0,3)?a="#"+a.match(/\d+/g).map(function(a){a=
parseInt(a).toString(16);return(1==a.length?"0":"")+a}).join(""):"#"!=a.charAt(0)&&(a="#"+a));return a}function da(a){return(a=T(a))?a.substring(0,7):null}function ha(a,b){return(a=T(a))&&7<a.length?b+"="+Math.round(parseInt("0x"+a.substr(7))/2.55)+";":""}function ba(a,b){if(null!=a.FillColor)if("object"===typeof a.FillColor){if(null!=a.FillColor.cs&&1<a.FillColor.cs.length)return Ya(mxConstants.STYLE_FILLCOLOR,da(a.FillColor.cs[0].c))+Ya(mxConstants.STYLE_GRADIENTCOLOR,da(a.FillColor.cs[1].c))}else return"string"===
typeof a.FillColor?Ya(mxConstants.STYLE_FILLCOLOR,da(a.FillColor),"#FFFFFF"):Ya(mxConstants.STYLE_FILLCOLOR,"none");return""}function hb(a){return"dotted"==a.StrokeStyle?"dashed=1;dashPattern=1 4;":"dashdot"==a.StrokeStyle?"dashed=1;dashPattern=10 5 1 5;":"dashdotdot"==a.StrokeStyle?"dashed=1;dashPattern=10 5 1 5 1 5;":"dotdotdot"==a.StrokeStyle?"dashed=1;dashPattern=1 2;":"longdash"==a.StrokeStyle?"dashed=1;dashPattern=16 6;":"dashlongdash"==a.StrokeStyle?"dashed=1;dashPattern=10 6 16 6;":"dashed24"==
a.StrokeStyle?"dashed=1;dashPattern=3 8;":"dashed32"==a.StrokeStyle?"dashed=1;dashPattern=6 5;":"dashed44"==a.StrokeStyle?"dashed=1;dashPattern=8 8;":null!=a.StrokeStyle&&"dashed"==a.StrokeStyle.substring(0,6)?"dashed=1;":""}function Ab(a){return null!=a.LineWidth?Ya(mxConstants.STYLE_STROKEWIDTH,Math.round(.6*parseFloat(a.LineWidth)),"1"):""}function Zd(a,b,d){var h="";a.FillColor&&a.FillColor.url?(d=a.FillColor.url,"fill"==a.FillColor.pos&&(h="imageAspect=0;")):"ImageSearchBlock2"==b.Class?d=a.URL:
"UserImage2Block"==b.Class&&null!=a.ImageFillProps&&null!=a.ImageFillProps.url&&(d=a.ImageFillProps.url);if(null!=d){if(null!=LucidImporter.imgSrcRepl)for(a=0;a<LucidImporter.imgSrcRepl.length;a++)b=LucidImporter.imgSrcRepl[a],d=d.replace(b.searchVal,b.replVal);return"image="+d+";"+h}return""}function Gb(a,b,d,h){for(var m=b,e=0;null!=h.getAttributeForCell(a,m);)e++,m=b+"_"+e;h.setAttributeForCell(a,m,null!=d?d:"")}function wd(a,b,d,m,g,c){var w=t(b);if(null!=w){var r=Mb[w.Class];null!=r?a.style+=
r+";":a.edge||(console.log("No mapping found for: "+w.Class),LucidImporter.hasUnknownShapes=!0);r=null!=w.Properties?w.Properties:w;if(null!=r){a.value=c?"":f(r);a.style+=e(a.style,r,w,a,z);a.style.includes("strokeColor")||(a.style+=H(r,w));null!=r.Link&&0<r.Link.length&&d.setAttributeForCell(a,"link",h(r.Link[0]));c=[];var x=d.convertValueToString(a),C=!1;if(null!=x){for(var Lb=0;match=xd.exec(x);){var n=match[0],C=!0;if(2<n.length){var A=n.substring(2,n.length-2);"documentName"==A?A="filename":
"pageName"==A?A="page":"totalPages"==A?A="pagecount":"page"==A?A="pagenumber":"date:"==A.substring(0,5)?A="date{"+A.substring(5).replace(/MMMM/g,"mmmm").replace(/MM/g,"mm").replace(/YYYY/g,"yyyy")+"}":"lastModifiedTime"==A.substring(0,16)?A=A.replace(/MMMM/g,"mmmm").replace(/MM/g,"mm").replace(/YYYY/g,"yyyy"):"i18nDate:"==A.substring(0,9)&&(A="date{"+A.substring(9).replace(/i18nShort/g,"shortDate").replace(/i18nMediumWithTime/g,"mmm d, yyyy hh:MM TT")+"}");A="%"+A+"%";c.push(x.substring(Lb,match.index)+
(null!=A?A:n));Lb=match.index+n.length}}C&&(c.push(x.substring(Lb)),d.setAttributeForCell(a,"label",c.join("")),d.setAttributeForCell(a,"placeholders","1"))}for(var D in r)if(r.hasOwnProperty(D)&&D.toString().startsWith("ShapeData_"))try{var B=r[D],F=mxUtils.trim(B.Label).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,"");Gb(a,F,B.Value,d)}catch(dd){window.console&&console.log("Ignored "+D+":",dd)}r.Title&&r.Text&&"ExtShape"!=w.Class.substr(0,8)&&(w=a.geometry,w=new mxCell(f(r.Title),
new mxGeometry(0,w.height,w.width,10),"strokeColor=none;fillColor=none;"),w.vertex=!0,a.insert(w),w.style+=k(r.Title,z));if(a.edge){a.style=null!=r.Rounding&&"diagonal"!=r.Shape?a.style+("rounded=1;arcSize="+r.Rounding+";"):a.style+"rounded=0;";if("diagonal"!=r.Shape)if(null!=r.ElbowPoints&&0<r.ElbowPoints.length)for(a.geometry.points=[],w=0;w<r.ElbowPoints.length;w++)a.geometry.points.push(new mxPoint(Math.round(.6*r.ElbowPoints[w].x+Nb),Math.round(.6*r.ElbowPoints[w].y+Ob)));else"elbow"==r.Shape?
a.style+="edgeStyle=orthogonalEdgeStyle;":null!=r.Endpoint1.Block&&null!=r.Endpoint2.Block&&(a.style+="edgeStyle=orthogonalEdgeStyle;","curve"==r.Shape&&(a.style+="curved=1;"));if(r.LineJumps||LucidImporter.globalProps.LineJumps)a.style+="jumpStyle=arc;";null!=r.Endpoint1.Style&&(w=ed[r.Endpoint1.Style],null!=w?(w=w.replace(/xyz/g,"start"),a.style+="startArrow="+w+";"):(LucidImporter.hasUnknownShapes=!0,window.console&&console.log("Unknown endpoint style: "+r.Endpoint1.Style)));null!=r.Endpoint2.Style&&
(w=ed[r.Endpoint2.Style],null!=w?(w=w.replace(/xyz/g,"end"),a.style+="endArrow="+w+";"):(LucidImporter.hasUnknownShapes=!0,window.console&&console.log("Unknown endpoint style: "+r.Endpoint2.Style)));D=null!=r.ElbowControlPoints&&0<r.ElbowControlPoints.length?r.ElbowControlPoints:null!=r.BezierJoints&&0<r.BezierJoints.length?r.BezierJoints:r.Joints;if(null!=D)for(a.geometry.points=[],w=0;w<D.length;w++)B=D[w].p?D[w].p:D[w],a.geometry.points.push(new mxPoint(Math.round(.6*B.x+Nb),Math.round(.6*B.y+
Ob)));w=!1;if((null==a.geometry.points||0==a.geometry.points.length)&&null!=r.Endpoint1.Block&&r.Endpoint1.Block==r.Endpoint2.Block&&null!=m&&null!=g){w=new mxPoint(Math.round(m.geometry.x+m.geometry.width*r.Endpoint1.LinkX),Math.round(m.geometry.y+m.geometry.height*r.Endpoint1.LinkY));D=new mxPoint(Math.round(g.geometry.x+g.geometry.width*r.Endpoint2.LinkX),Math.round(g.geometry.y+g.geometry.height*r.Endpoint2.LinkY));Nb=w.x==D.x?Math.abs(w.x-m.geometry.x)<m.geometry.width/2?-20:20:0;Ob=w.y==D.y?
Math.abs(w.y-m.geometry.y)<m.geometry.height/2?-20:20:0;var R=new mxPoint(w.x+Nb,w.y+Ob),ea=new mxPoint(D.x+Nb,D.y+Ob);R.generated=!0;ea.generated=!0;a.geometry.points=[R,ea];w=w.x==D.x}null!=m&&m.geometry.isRotated||(R=oa(a,r.Endpoint1,!0,w));null!=m&&null!=R&&(null==m.stylePoints&&(m.stylePoints=[]),m.stylePoints.push(R),LucidImporter.stylePointsSet.add(m));null!=g&&g.geometry.isRotated||(ea=oa(a,r.Endpoint2,!1,w));null!=g&&null!=ea&&(null==g.stylePoints&&(g.stylePoints=[]),g.stylePoints.push(ea),
LucidImporter.stylePointsSet.add(g))}}}null!=b.id&&Gb(a,"lucidchartObjectId",b.id,d)}function ra(a,b){var d=t(a),h=d.Properties,m=h.BoundingBox;null==a.Class||"AWS"!==a.Class.substring(0,3)&&"Amazon"!==a.Class.substring(0,6)||a.Class.includes("AWS19")||(m.h-=20);v=new mxCell("",new mxGeometry(Math.round(.6*m.x+Nb),Math.round(.6*m.y+Ob),Math.round(.6*m.w),Math.round(.6*m.h)),"html=1;overflow=block;whiteSpace=wrap;");v.vertex=!0;wd(v,a,b);v.zOrder=h.ZOrder;null!=v&&0<=v.style.indexOf(";grIcon=")&&(m=
new mxCell("",new mxGeometry(v.geometry.x,v.geometry.y,v.geometry.width,v.geometry.height),"html=1;overflow=block;whiteSpace=wrap;"),m.vertex=!0,m.style+=e(m.style,h,d,m),v.geometry.x=0,v.geometry.y=0,v.style+="part=1;",m.insert(v),v=m);$d(v,h);return v}function mc(a,b,d,h){var m=new mxCell("",new mxGeometry(0,0,100,100),"html=1;jettySize=18;");m.geometry.relative=!0;m.edge=!0;wd(m,a,b,d,h,!0);b=t(a).Properties;d=null!=b?b.TextAreas:a.TextAreas;if(null!=d){for(h=0;null!=d["t"+h];){var e=d["t"+h],
m=ib(e,m);h++}for(h=0;null!=d["m"+h]||1>h;)e=d["m"+h],null!=e&&(m=ib(e,m,a)),h++;null!=d.Text&&(m=ib(d.Text,m,a));d=null!=b?b.TextAreas:a.TextAreas;null!=d.Message&&(m=ib(d.Message,m,a))}return m}function ib(a,b,d){var h=2*(parseFloat(a.Location)-.5);isNaN(h)&&null!=a.Text&&null!=a.Text.Location&&(h=2*(parseFloat(a.Text.Location)-.5));d=mxCell;var m=f(a),h=new mxGeometry(isNaN(h)?0:h,0,0,0),e="11",c="";if(null!=a&&null!=a.Value&&null!=a.Value.m)for(var c=r(a.Value.m),w=0;w<a.Value.m.length;w++)if("s"==
!0;0!=a&&b.Class&&("UMLSwimLaneBlockV2"==b.Class||(0<=b.Class.indexOf("Rotated")||-90==a||270==a)&&(0<=b.Class.indexOf("Pool")||0<=b.Class.indexOf("SwimLane")))?(a+=90,d.geometry.rotate90(),d.geometry.isRotated=!0,m=!1):0<=mxUtils.indexOf(ud,b.Class)?(a-=90,d.geometry.rotate90()):0<=mxUtils.indexOf(vd,b.Class)&&(a+=180);0!=a&&(h+="rotation="+a+";");m||(h+="horizontal=0;")}return h}function U(a){return null!=a.Shadow?mxConstants.STYLE_SHADOW+"=1;":""}function T(a){a&&("rgb"==a.substring(0,3)?a="#"+
a.match(/\d+/g).map(function(a){a=parseInt(a).toString(16);return(1==a.length?"0":"")+a}).join(""):"#"!=a.charAt(0)&&(a="#"+a));return a}function da(a){return(a=T(a))?a.substring(0,7):null}function ha(a,b){return(a=T(a))&&7<a.length?b+"="+Math.round(parseInt("0x"+a.substr(7))/2.55)+";":""}function ba(a,b){if(null!=a.FillColor)if("object"===typeof a.FillColor){if(null!=a.FillColor.cs&&1<a.FillColor.cs.length)return Ya(mxConstants.STYLE_FILLCOLOR,da(a.FillColor.cs[0].c))+Ya(mxConstants.STYLE_GRADIENTCOLOR,
da(a.FillColor.cs[1].c))}else return"string"===typeof a.FillColor?Ya(mxConstants.STYLE_FILLCOLOR,da(a.FillColor),"#FFFFFF"):Ya(mxConstants.STYLE_FILLCOLOR,"none");return""}function hb(a){return"dotted"==a.StrokeStyle?"dashed=1;dashPattern=1 4;":"dashdot"==a.StrokeStyle?"dashed=1;dashPattern=10 5 1 5;":"dashdotdot"==a.StrokeStyle?"dashed=1;dashPattern=10 5 1 5 1 5;":"dotdotdot"==a.StrokeStyle?"dashed=1;dashPattern=1 2;":"longdash"==a.StrokeStyle?"dashed=1;dashPattern=16 6;":"dashlongdash"==a.StrokeStyle?
"dashed=1;dashPattern=10 6 16 6;":"dashed24"==a.StrokeStyle?"dashed=1;dashPattern=3 8;":"dashed32"==a.StrokeStyle?"dashed=1;dashPattern=6 5;":"dashed44"==a.StrokeStyle?"dashed=1;dashPattern=8 8;":null!=a.StrokeStyle&&"dashed"==a.StrokeStyle.substring(0,6)?"dashed=1;":""}function Ab(a){return null!=a.LineWidth?Ya(mxConstants.STYLE_STROKEWIDTH,Math.round(.6*parseFloat(a.LineWidth)),"1"):""}function Zd(a,b,d){var h="";a.FillColor&&a.FillColor.url?(d=a.FillColor.url,"fill"==a.FillColor.pos&&(h="imageAspect=0;")):
"ImageSearchBlock2"==b.Class?d=a.URL:"UserImage2Block"==b.Class&&null!=a.ImageFillProps&&null!=a.ImageFillProps.url&&(d=a.ImageFillProps.url);if(null!=d){if(null!=LucidImporter.imgSrcRepl)for(a=0;a<LucidImporter.imgSrcRepl.length;a++)b=LucidImporter.imgSrcRepl[a],d=d.replace(b.searchVal,b.replVal);return"image="+d+";"+h}return""}function Gb(a,b,d,h){for(var m=b,e=0;null!=h.getAttributeForCell(a,m);)e++,m=b+"_"+e;h.setAttributeForCell(a,m,null!=d?d:"")}function wd(a,b,d,m,g,c){var w=t(b);if(null!=
w){var r=Mb[w.Class];null!=r?a.style+=r+";":a.edge||(console.log("No mapping found for: "+w.Class),LucidImporter.hasUnknownShapes=!0);r=null!=w.Properties?w.Properties:w;if(null!=r){a.value=c?"":f(r);a.style+=e(a.style,r,w,a,z);a.style.includes("strokeColor")||(a.style+=H(r,w));null!=r.Link&&0<r.Link.length&&d.setAttributeForCell(a,"link",h(r.Link[0]));c=[];var x=d.convertValueToString(a),C=!1;if(null!=x){for(var Lb=0;match=xd.exec(x);){var n=match[0],C=!0;if(2<n.length){var A=n.substring(2,n.length-
2);"documentName"==A?A="filename":"pageName"==A?A="page":"totalPages"==A?A="pagecount":"page"==A?A="pagenumber":"date:"==A.substring(0,5)?A="date{"+A.substring(5).replace(/MMMM/g,"mmmm").replace(/MM/g,"mm").replace(/YYYY/g,"yyyy")+"}":"lastModifiedTime"==A.substring(0,16)?A=A.replace(/MMMM/g,"mmmm").replace(/MM/g,"mm").replace(/YYYY/g,"yyyy"):"i18nDate:"==A.substring(0,9)&&(A="date{"+A.substring(9).replace(/i18nShort/g,"shortDate").replace(/i18nMediumWithTime/g,"mmm d, yyyy hh:MM TT")+"}");A="%"+
A+"%";c.push(x.substring(Lb,match.index)+(null!=A?A:n));Lb=match.index+n.length}}C&&(c.push(x.substring(Lb)),d.setAttributeForCell(a,"label",c.join("")),d.setAttributeForCell(a,"placeholders","1"))}for(var D in r)if(r.hasOwnProperty(D)&&D.toString().startsWith("ShapeData_"))try{var B=r[D],F=mxUtils.trim(B.Label).replace(/[^a-z0-9]+/ig,"_").replace(/^\d+/,"").replace(/_+$/,"");Gb(a,F,B.Value,d)}catch(dd){window.console&&console.log("Ignored "+D+":",dd)}r.Title&&r.Text&&"ExtShape"!=w.Class.substr(0,
8)&&(w=a.geometry,w=new mxCell(f(r.Title),new mxGeometry(0,w.height,w.width,10),"strokeColor=none;fillColor=none;"),w.vertex=!0,a.insert(w),w.style+=k(r.Title,z));if(a.edge){a.style=null!=r.Rounding&&"diagonal"!=r.Shape?a.style+("rounded=1;arcSize="+r.Rounding+";"):a.style+"rounded=0;";if("diagonal"!=r.Shape)if(null!=r.ElbowPoints&&0<r.ElbowPoints.length)for(a.geometry.points=[],w=0;w<r.ElbowPoints.length;w++)a.geometry.points.push(new mxPoint(Math.round(.6*r.ElbowPoints[w].x+Nb),Math.round(.6*r.ElbowPoints[w].y+
Ob)));else"elbow"==r.Shape?a.style+="edgeStyle=orthogonalEdgeStyle;":null!=r.Endpoint1.Block&&null!=r.Endpoint2.Block&&(a.style+="edgeStyle=orthogonalEdgeStyle;","curve"==r.Shape&&(a.style+="curved=1;"));if(r.LineJumps||LucidImporter.globalProps.LineJumps)a.style+="jumpStyle=arc;";null!=r.Endpoint1.Style&&(w=ed[r.Endpoint1.Style],null!=w?(w=w.replace(/xyz/g,"start"),a.style+="startArrow="+w+";"):(LucidImporter.hasUnknownShapes=!0,window.console&&console.log("Unknown endpoint style: "+r.Endpoint1.Style)));
null!=r.Endpoint2.Style&&(w=ed[r.Endpoint2.Style],null!=w?(w=w.replace(/xyz/g,"end"),a.style+="endArrow="+w+";"):(LucidImporter.hasUnknownShapes=!0,window.console&&console.log("Unknown endpoint style: "+r.Endpoint2.Style)));D=null!=r.ElbowControlPoints&&0<r.ElbowControlPoints.length?r.ElbowControlPoints:null!=r.BezierJoints&&0<r.BezierJoints.length?r.BezierJoints:r.Joints;if(null!=D)for(a.geometry.points=[],w=0;w<D.length;w++)B=D[w].p?D[w].p:D[w],a.geometry.points.push(new mxPoint(Math.round(.6*B.x+
Nb),Math.round(.6*B.y+Ob)));w=!1;if((null==a.geometry.points||0==a.geometry.points.length)&&null!=r.Endpoint1.Block&&r.Endpoint1.Block==r.Endpoint2.Block&&null!=m&&null!=g){w=new mxPoint(Math.round(m.geometry.x+m.geometry.width*r.Endpoint1.LinkX),Math.round(m.geometry.y+m.geometry.height*r.Endpoint1.LinkY));D=new mxPoint(Math.round(g.geometry.x+g.geometry.width*r.Endpoint2.LinkX),Math.round(g.geometry.y+g.geometry.height*r.Endpoint2.LinkY));Nb=w.x==D.x?Math.abs(w.x-m.geometry.x)<m.geometry.width/
2?-20:20:0;Ob=w.y==D.y?Math.abs(w.y-m.geometry.y)<m.geometry.height/2?-20:20:0;var R=new mxPoint(w.x+Nb,w.y+Ob),ea=new mxPoint(D.x+Nb,D.y+Ob);R.generated=!0;ea.generated=!0;a.geometry.points=[R,ea];w=w.x==D.x}null!=m&&m.geometry.isRotated||(R=oa(a,r.Endpoint1,!0,w));null!=m&&null!=R&&(null==m.stylePoints&&(m.stylePoints=[]),m.stylePoints.push(R),LucidImporter.stylePointsSet.add(m));null!=g&&g.geometry.isRotated||(ea=oa(a,r.Endpoint2,!1,w));null!=g&&null!=ea&&(null==g.stylePoints&&(g.stylePoints=[]),
g.stylePoints.push(ea),LucidImporter.stylePointsSet.add(g))}}}null!=b.id&&Gb(a,"lucidchartObjectId",b.id,d)}function ra(a,b){var d=t(a),h=d.Properties,m=h.BoundingBox;null==a.Class||"AWS"!==a.Class.substring(0,3)&&"Amazon"!==a.Class.substring(0,6)||a.Class.includes("AWS19")||(m.h-=20);v=new mxCell("",new mxGeometry(Math.round(.6*m.x+Nb),Math.round(.6*m.y+Ob),Math.round(.6*m.w),Math.round(.6*m.h)),"html=1;overflow=block;whiteSpace=wrap;");v.vertex=!0;wd(v,a,b);v.zOrder=h.ZOrder;null!=v&&0<=v.style.indexOf(";grIcon=")&&
(m=new mxCell("",new mxGeometry(v.geometry.x,v.geometry.y,v.geometry.width,v.geometry.height),"html=1;overflow=block;whiteSpace=wrap;"),m.vertex=!0,m.style+=e(m.style,h,d,m),v.geometry.x=0,v.geometry.y=0,v.style+="part=1;",m.insert(v),v=m);$d(v,h);return v}function mc(a,b,d,h){var m=new mxCell("",new mxGeometry(0,0,100,100),"html=1;jettySize=18;");m.geometry.relative=!0;m.edge=!0;wd(m,a,b,d,h,!0);b=t(a).Properties;d=null!=b?b.TextAreas:a.TextAreas;if(null!=d){for(h=0;null!=d["t"+h];){var e=d["t"+
h],m=ib(e,m);h++}for(h=0;null!=d["m"+h]||1>h;)e=d["m"+h],null!=e&&(m=ib(e,m,a)),h++;null!=d.Text&&(m=ib(d.Text,m,a));d=null!=b?b.TextAreas:a.TextAreas;null!=d.Message&&(m=ib(d.Message,m,a))}return m}function ib(a,b,d){var h=2*(parseFloat(a.Location)-.5);isNaN(h)&&null!=a.Text&&null!=a.Text.Location&&(h=2*(parseFloat(a.Text.Location)-.5));d=mxCell;var m=f(a),h=new mxGeometry(isNaN(h)?0:h,0,0,0),e="11",c="";if(null!=a&&null!=a.Value&&null!=a.Value.m)for(var c=r(a.Value.m),w=0;w<a.Value.m.length;w++)if("s"==
a.Value.m[w].n)e=.6*parseFloat(a.Value.m[w].v);else if("c"==a.Value.m[w].n){var k=T(a.Value.m[w].v);null!=k&&(k=k.substring(0,7));c+="fontColor="+k+";"}a=new d(m,h,"text;html=1;resizable=0;labelBackgroundColor=#ffffff;align=center;verticalAlign=middle;"+(c+";fontSize="+e+";"));a.geometry.relative=!0;a.vertex=!0;b.insert(a);return b}function Ya(a,b,d,h){null!=b&&null!=h&&(b=h(b));return null!=b&&b!=d?a+"="+b+";":""}function oa(a,b,d,h,m){if(null!=b&&null!=b.LinkX&&null!=b.LinkY&&(b.LinkX=Math.round(1E3*
b.LinkX)/1E3,b.LinkY=Math.round(1E3*b.LinkY)/1E3,a.style+=(h?"":(d?"exitX":"entryX")+"="+b.LinkX+";")+(m?"":(d?"exitY":"entryY")+"="+b.LinkY+";")+(d?"exitPerimeter":"entryPerimeter")+"=0;",b.Inside))return"["+b.LinkX+","+b.LinkY+",0]"}function Wb(a,b,d,h){try{var m=function(a,b){if(null!=a)if(Array.isArray(a))for(var d=0;d<a.length;d++)m(a[d],b);else d=b?.6:1,c=Math.min(c,a.x*d),w=Math.min(w,a.y*d),r=Math.max(r,(a.x+(a.width?a.width:0))*d),k=Math.max(k,(a.y+(a.height?a.height:0))*d)};null!=a.Action&&
null!=a.Action.Properties&&(a=a.Action.Properties);var e=new mxCell("",new mxGeometry,"group;dropTarget=0;");e.vertex=!0;e.zOrder=a.ZOrder;var c=Infinity,w=Infinity,r=-Infinity,k=-Infinity,x=a.Members,f=[],t;for(t in x){var C=b[t];null!=C?f.push(C):null!=h[t]&&(f.push(h[t]),d[t]=e)}f.sort(function(a,b){var d=a.zOrder,h=b.zOrder;return null!=d&&null!=h?d>h?1:d<h?-1:0:0});for(d=b=0;d<f.length;d++)if(C=f[d],C.vertex)m(C.geometry),C.parent=e,e.insert(C,b++);else{var n=null!=C.Action&&C.Action.Properties?
@ -300,58 +300,58 @@ da(zc)+";"+ha(zc,"fillOpacity"),v.style+=e(v.style,g,c,v,z),qa=new mxCell("",new
g);return v}function $d(a,b){if(b.Text_TRotation||b.TextRotation)try{var d=mxUtils.toDegree(b.Text_TRotation||0)+mxUtils.toDegree(b.TextRotation||0);if(!isNaN(d)&&0!=d&&a.value){var h=a.geometry.width,m=a.geometry.height,e=h,c=m,w=0,r=0;if(-90==d||-270==d)var e=m,c=h,x=Math.abs(m-h)/2,w=x/h,r=-x/m;var d=d+mxUtils.toDegree(b.Rotation),k=a.style.split(";").filter(function(a){return 0>a.indexOf("fillColor=")&&0>a.indexOf("strokeColor=")&&0>a.indexOf("rotation=")}).join(";"),f=new mxCell(a.value,new mxGeometry(w,
r,e,c),k+"fillColor=none;strokeColor=none;rotation="+d+";");a.value=null;f.geometry.relative=!0;f.vertex=!0;a.insert(f)}}catch(Le){console.log(Le)}}var Nb=0,Ob=0,z=!1,ud=["AEUSBBlock","AGSCutandpasteBlock","iOSDeviceiPadLandscape","iOSDeviceiPadProLandscape"],vd=["fpDoor"],ed={None:"none;",Arrow:"block;xyzFill=1;","Hollow Arrow":"block;xyzFill=0;","Open Arrow":"open;","CFN ERD Zero Or More Arrow":"ERzeroToMany;xyzSize=10;","CFN ERD One Or More Arrow":"ERoneToMany;xyzSize=10;","CFN ERD Many Arrow":"ERmany;xyzSize=10;",
"CFN ERD Exactly One Arrow":"ERmandOne;xyzSize=10;","CFN ERD Zero Or One Arrow":"ERzeroToOne;xyzSize=10;","CFN ERD One Arrow":"ERone;xyzSize=16;",Generalization:"block;xyzFill=0;xyzSize=12;","Big Open Arrow":"open;xyzSize=10;",Asynch1:"openAsync;flipV=1;xyzSize=10;",Asynch2:"openAsync;xyzSize=10;",Aggregation:"diamond;xyzFill=0;xyzSize=16;",Composition:"diamond;xyzFill=1;xyzSize=16;",BlockEnd:"box;xyzFill=0;xyzSize=16;",Measure:"ERone;xyzSize=10;",CircleOpen:"oval;xyzFill=0;xyzSize=16;",CircleClosed:"oval;xyzFill=1;xyzSize=16;",
BlockEndFill:"box;xyzFill=1;xyzSize=16;",Nesting:"circlePlus;xyzSize=7;xyzFill=0;","BPMN Conditional":"diamond;xyzFill=0;","BPMN Default":"dash;"},Mb={DefaultTextBlockNew:"strokeColor=none;fillColor=none",DefaultTextBlock:"strokeColor=none;fillColor=none",DefaultSquareBlock:"",RectangleBlock:"",DefaultNoteBlock:"shape=note;size=15",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;boundedLbl=1",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=cylinder3;size=4;anchorPointDirection=0;boundedLbl=1;",
DirectAccessStorageBlock:"shape=cylinder3;direction=south;size=10;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=cylinder3;boundedLbl=1;size=15;lid=0;direction=south;",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:"shape=mxgraph.basic.acute_triangle;dx=0.5;anchorPointDirection=0",RightTriangleBlock:"shape=mxgraph.basic.orthogonal_triangle",PentagonBlock:"shape=mxgraph.basic.pentagon",HexagonBlock:"shape=hexagon;perimeter=hexagonPerimeter2",OctagonBlock:"shape=mxgraph.basic.octagon2;dx=15;",
CrossBlock:"shape=cross;size=0.6",CloudBlock:"ellipse;shape=cloud",HeartBlock:"shape=mxgraph.basic.heart",RightArrowBlock:"mxCompositeShape",DoubleArrowBlock:"mxCompositeShape",CalloutBlock:"shape=mxgraph.basic.rectangular_callout",ShapeCircleBlock:"ellipse",ShapePolyStarBlock:"shape=mxgraph.basic.star",ShapeDiamondBlock:"rhombus",UI2HotspotBlock:"opacity=50;strokeColor=none",AndroidDevice:"mxCompositeShape",AndroidAlertDialog:"mxCompositeShape",AndroidDateDialog:"mxCompositeShape",AndroidTimeDialog:"mxCompositeShape",
AndroidListItems:"mxCompositeShape",AndroidTabs:"mxCompositeShape",AndroidProgressBar:"mxCompositeShape",AndroidImageBlock:"mxCompositeShape",AndroidTextBlock:"mxCompositeShape",AndroidActionBar:"mxCompositeShape",AndroidButton:"mxCompositeShape",AndroidTextBox:"mxCompositeShape",AndroidRadioButton:"mxCompositeShape",AndroidCheckBox:"mxCompositeShape",AndroidToggle:"mxCompositeShape",AndroidSlider:"mxCompositeShape",AndroidIconCheck:"shape=mxgraph.ios7.misc.check",AndroidIconCancel:"shape=mxgraph.atlassian.x",
AndroidIconCollapse:"shape=mxgraph.ios7.misc.up",AndroidIconExpand:"shape=mxgraph.ios7.misc.down",AndroidIconNext:"shape=mxgraph.ios7.misc.right",AndroidIconPrevious:"shape=mxgraph.ios7.misc.left",AndroidIconRefresh:NaN,AndroidIconInformation:"shape=mxgraph.ios7.icons.info",AndroidIconSearch:"shape=mxgraph.ios7.icons.looking_glass",AndroidIconSettings:"shape=mxgraph.ios7.icons.volume;direction=south",AndroidIconTrash:"shape=mxgraph.ios7.icons.trashcan",AndroidIconEmail:"shape=mxgraph.mockup.misc.mail2",
AndroidIconNew:"shape=mxgraph.ios7.misc.flagged",iOSDeviceiPhoneSE:"shape=mxgraph.ios7.misc.iphone",iOSDeviceiPhone6s:"shape=mxgraph.ios7.misc.iphone",iOSDeviceiPhone6sPlus:"shape=mxgraph.ios7.misc.iphone",iOSDeviceiPadPortrait:"shape=mxgraph.ios7.misc.ipad7inch",iOSDeviceiPadLandscape:"shape=mxgraph.ios7.misc.ipad7inch",iOSDeviceiPadProPortrait:"shape=mxgraph.ios7.misc.ipad7inch",iOSDeviceiPadProLandscape:"shape=mxgraph.ios7.misc.ipad10inch",iOSButton:"fillColor=none;strokeColor=none;",iOSSegmentedControl:"mxCompositeShape",
iOSStepper:"shape=mxgraph.ios7.misc.adjust",iOSToggle:"shape=mxgraph.ios7ui.onOffButton;buttonState=on;strokeColor2=#aaaaaa;fillColor2=#ffffff",iOSSlider:"mxCompositeShape",iOSProgressBar:"mxCompositeShape",iOSPageControls:"mxCompositeShape",iOSStatusBar:"mxCompositeShape",iOSSearchBar:"mxCompositeShape",iOSNavBar:"mxCompositeShape",iOSTabs:"mxCompositeShape",iOSUniversalKeyboard:"shape=mxgraph.ios.iKeybLett",iOSDatePicker:"mxCompositeShape",iOSTimePicker:"mxCompositeShape",iOSCountdownPicker:"mxCompositeShape",
iOSBasicCell:"mxCompositeShape",iOSSubtitleCell:"mxCompositeShape",iOSRightDetailCell:"mxCompositeShape",iOSLeftDetailCell:"mxCompositeShape",iOSTableGroupedSectionBreak:"mxCompositeShape",iOSTablePlainHeaderFooter:"mxCompositeShape",MindMapBlock:"",MindMapStadiumBlock:"arcSize=50",MindMapCloud:"shape=cloud",MindMapCircle:"ellipse",MindMapIsoscelesTriangleBlock:"shape=triangle;direction=north",MindMapDiamondBlock:"shape=rhombus",MindMapPentagonBlock:"shape=mxgraph.basic.pentagon",MindMapHexagonBlock:"shape=hexagon;perimeter=hexagonPerimeter2",
MindMapOctagonBlock:"shape=mxgraph.basic.octagon2;dx=10;",MindMapCrossBlock:"shape=mxgraph.basic.cross2;dx=20",ERDEntityBlock:"mxCompositeShape",ERDEntityBlock2:"mxCompositeShape",ERDEntityBlock3:"mxCompositeShape",ERDEntityBlock4:"mxCompositeShape",UMLClassBlock:"mxCompositeShape",UMLActiveClassBlock:"shape=process",UMLMultiplicityBlock:"mxCompositeShape",UMLPackageBlock:"",UMLConstraintBlock:"mxCompositeShape",UMLNoteBlock:"shape=note;size=15",UMLNoteBlockV2:"shape=note;size=15",UMLTextBlock:"mxCompositeShape",
UMLActorBlock:"shape=umlActor;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;whiteSpace=nowrap",UMLUseCaseBlock:"ellipse",UMLCircleContainerBlock:"ellipse;container=1",UMLRectangleContainerBlock:"container=1",UMLOptionLoopBlock:"shape=mxgraph.sysml.package2;xSize=90;overflow=fill",UMLAlternativeBlock2:"shape=mxgraph.sysml.package2;xSize=90;overflow=fill",UMLStartBlock:"ellipse;fillColor=#000000",UMLStateBlock:"mxCompositeShape",UMLDecisionBlock:"shape=rhombus;",UMLHForkJoinBlock:"fillColor=#000000",
UMLVForkJoinBlock:"fillColor=#000000",UMLFlowFinalBlock:"shape=mxgraph.flowchart.or",UMLHistoryStateBlock:"ellipse",UMLEndBlock:"shape=mxgraph.bpmn.shape;outline=end;symbol=terminate;strokeColor=#000000;fillColor=#ffffff",UMLObjectBlock:"",UMLSendSignalBlock:"shape=mxgraph.sysml.sendSigAct",UMLReceiveSignalBlock:"shape=mxgraph.sysml.accEvent;flipH=1",UMLAcceptTimeEventActionBlock:"shape=mxgraph.sysml.timeEvent",UMLOffPageLinkBlock:"shape=mxgraph.sysml.sendSigAct;direction=south",UMLMultiLanePoolBlock:"mxCompositeShape",
UMLMultiLanePoolRotatedBlock:"mxCompositeShape",UMLMultidimensionalSwimlane:"mxCompositeShape",UMLActivationBlock:"",UMLDeletionBlock:"shape=mxgraph.sysml.x;strokeWidth=4",UMLSeqEntityBlock:"shape=mxgraph.electrical.radio.microphone_1;direction=north",UMLComponentBlock:"shape=component;align=left;spacingLeft=36",UMLComponentBlockV2:"shape=component;align=left;spacingLeft=36",UMLNodeBlock:"shape=cube;size=12;flipH=1;verticalAlign=top;align=left;spacingTop=10;spacingLeft=5",UMLNodeBlockV2:"shape=cube;size=12;flipH=1;verticalAlign=top;align=left;spacingTop=10;spacingLeft=5",
UMLComponentInterfaceBlock:"ellipse",UMLComponentInterfaceBlockV2:"ellipse",UMLComponentBoxBlock:"mxCompositeShape",UMLComponentBoxBlockV2:"mxCompositeShape",UMLAssemblyConnectorBlock:"mxCompositeShape",UMLAssemblyConnectorBlockV2:"mxCompositeShape",UMLProvidedInterfaceBlock:"mxCompositeShape",UMLProvidedInterfaceBlockV2:"mxCompositeShape",UMLRequiredInterfaceBlock:"shape=requires;direction=north",UMLRequiredInterfaceBlockV2:"shape=requires;direction=north",UMLSwimLaneBlockV2:"mxCompositeShape",UMLSwimLaneBlock:"swimlane;startSize=25;container=1;collapsible=0;dropTarget=0;fontStyle=0",
UMLEntityBlock:"",UMLWeakEntityBlock:"shape=ext;double=1",UMLAttributeBlock:"ellipse",UMLMultivaluedAttributeBlock:"shape=doubleEllipse",UMLRelationshipBlock:"shape=rhombus",UMLWeakRelationshipBlock:"shape=rhombus;double=1",BPMNActivity:"mxCompositeShape",BPMNEvent:"mxCompositeShape",BPMNConversation:"mxCompositeShape",BPMNGateway:"mxCompositeShape",BPMNData:"mxCompositeShape",BPMNDataStore:"shape=datastore",BPMNAdvancedPoolBlock:"mxCompositeShape",BPMNAdvancedPoolBlockRotated:"mxCompositeShape",
BPMNBlackPool:"mxCompositeShape",BPMNTextAnnotation:"mxCompositeShape",DFDExternalEntityBlock:"mxCompositeShape",DFDExternalEntityBlock2:"",YDMDFDProcessBlock:"ellipse",YDMDFDDataStoreBlock:"shape=partialRectangle;right=0;left=0",GSDFDProcessBlock:"mxCompositeShape",GSDFDProcessBlock2:"rounded=1;arcSize=10;",GSDFDDataStoreBlock:"mxCompositeShape",GSDFDDataStoreBlock2:"shape=partialRectangle;right=0",OrgBlock:"",DefaultTableBlock:"mxCompositeShape",VSMCustomerSupplierBlock:"shape=mxgraph.lean_mapping.outside_sources",
VSMDedicatedProcessBlock:"mxCompositeShape",VSMSharedProcessBlock:"mxCompositeShape",VSMWorkcellBlock:"mxCompositeShape",VSMDatacellBlock:"mxCompositeShape",VSMInventoryBlock:"mxCompositeShape",VSMSupermarketBlock:"mxCompositeShape",VSMPhysicalPullBlock:"shape=mxgraph.lean_mapping.physical_pull;direction=south",VSMFIFOLaneBlock:"mxCompositeShape",VSMSafetyBufferStockBlock:"mxCompositeShape",VSMExternalShipmentAirplaneBlock:"shape=mxgraph.lean_mapping.airplane_7",VSMExternalShipmentForkliftBlock:"shape=mxgraph.lean_mapping.move_by_forklift",
VSMExternalShipmentTruckBlock:"shape=mxgraph.lean_mapping.truck_shipment;align=left;",VSMExternalShipmentBoatBlock:"shape=mxgraph.lean_mapping.boat_shipment;verticalAlign=bottom;",VSMProductionControlBlock:"mxCompositeShape",VSMOtherInformationBlock:"",VSMSequencedPullBallBlock:"shape=mxgraph.lean_mapping.sequenced_pull_ball",VSMMRPERPBlock:"shape=mxgraph.lean_mapping.mrp_erp;whiteSpace=wrap",VSMLoadLevelingBlock:"shape=mxgraph.lean_mapping.load_leveling",VSMGoSeeBlock:"shape=mxgraph.lean_mapping.go_see_production_scheduling;flipH=1",
VSMGoSeeProductionBlock:"mxCompositeShape",VSMVerbalInfoBlock:"shape=mxgraph.lean_mapping.verbal",VSMKaizenBurstBlock:"shape=mxgraph.lean_mapping.kaizen_lightening_burst",VSMOperatorBlock:"shape=mxgraph.lean_mapping.operator;flipV=1",VSMQualityProblemBlock:"shape=mxgraph.lean_mapping.quality_problem",VSMProductionKanbanSingleBlock:"shape=card;size=18;flipH=1;",VSMProductionKanbanBatchBlock:"mxCompositeShape",VSMWithdrawalKanbanBlock:"shape=mxgraph.lean_mapping.withdrawal_kanban",VSMSignalKanbanBlock:"shape=triangle;direction=south;anchorPointDirection=0",
VSMKanbanPostBlock:"shape=mxgraph.lean_mapping.kanban_post",VSMShipmentArrow:"shape=singleArrow;arrowWidth=0.5;arrowSize=0.13",VSMPushArrow:"shape=mxgraph.lean_mapping.push_arrow",AWSElasticComputeCloudBlock2:"mxCompositeShape",AWSInstanceBlock2:"strokeColor=none;shape=mxgraph.aws3.instance",AWSInstancesBlock2:"strokeColor=none;shape=mxgraph.aws3.instances;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAMIBlock2:"strokeColor=none;shape=mxgraph.aws3.ami;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSDBonInstanceBlock2:"strokeColor=none;shape=mxgraph.aws3.db_on_instance;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSInstanceCloudWatchBlock2:"strokeColor=none;shape=mxgraph.aws3.instance_with_cloudwatch;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSElasticIPBlock2:"strokeColor=none;shape=mxgraph.aws3.elastic_ip;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSHDFSClusterBlock2:"strokeColor=none;shape=mxgraph.aws3.hdfs_cluster;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSAutoScalingBlock2:"strokeColor=none;shape=mxgraph.aws3.auto_scaling;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSEC2OptimizedInstance2:"strokeColor=none;shape=mxgraph.aws3.optimized_instance;verticalLabelPosition=bottom;align=center;verticalAlign=top","AWSAmazonEC2(Spotinstance)":"strokeColor=none;shape=mxgraph.aws3.spot_instance;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAmazonECR:"strokeColor=none;shape=mxgraph.aws3.ecr;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSAmazonECS:"strokeColor=none;shape=mxgraph.aws3.ecs;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSLambda2:"strokeColor=none;shape=mxgraph.aws3.lambda;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSElasticLoadBalancing:"strokeColor=none;shape=mxgraph.aws3.elastic_load_balancing;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSElasticLoadBlock2:"strokeColor=none;shape=mxgraph.aws3.classic_load_balancer;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSDirectConnectBlock3:"strokeColor=none;shape=mxgraph.aws3.direct_connect;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSElasticNetworkBlock2:"strokeColor=none;shape=mxgraph.aws3.elastic_network_interface;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSRoute53Block2:"mxCompositeShape",AWSHostedZoneBlock2:"strokeColor=none;shape=mxgraph.aws3.hosted_zone;fontColor=#FFFFFF;fontStyle=1",AWSRouteTableBlock2:"strokeColor=none;shape=mxgraph.aws3.route_table;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSVPCBlock2:"strokeColor=none;shape=mxgraph.aws3.vpc;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSVPNConnectionBlock2:"strokeColor=none;shape=mxgraph.aws3.vpn_connection;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSVPNGatewayBlock2:"strokeColor=none;shape=mxgraph.aws3.vpn_gateway;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSCustomerGatewayBlock2:"strokeColor=none;shape=mxgraph.aws3.customer_gateway;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSCustomerGatewayBlock3:"strokeColor=none;shape=mxgraph.aws3.customer_gateway;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSInternetGatewayBlock2:"strokeColor=none;shape=mxgraph.aws3.internet_gateway;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSRouterBlock2:"strokeColor=none;shape=mxgraph.aws3.router;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSRouterBlock3:"strokeColor=none;shape=mxgraph.aws3.router;verticalLabelPosition=bottom;align=center;verticalAlign=top",
"AWSAmazonVPC(endpoints)":"strokeColor=none;shape=mxgraph.aws3.endpoints;verticalLabelPosition=bottom;align=center;verticalAlign=top","AWSAmazonVPC(flowlogs)":"strokeColor=none;shape=mxgraph.aws3.flow_logs;verticalLabelPosition=bottom;align=center;verticalAlign=top","AWSAmazonVPC(VPCNATgateway)":"strokeColor=none;shape=mxgraph.aws3.vpc_nat_gateway;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSVPCPeering3:"strokeColor=none;shape=mxgraph.aws3.vpc_peering;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSSimpleStorageBlock2:"strokeColor=none;shape=mxgraph.aws3.s3;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSBucketBlock2:"strokeColor=none;shape=mxgraph.aws3.bucket;fontStyle=1;fontColor=#ffffff",AWSBuckethWithObjectsBlock2:"strokeColor=none;shape=mxgraph.aws3.bucket_with_objects;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSObjectBlock2:"strokeColor=none;shape=mxgraph.aws3.object;fontStyle=1;fontColor=#ffffff",AWSImportExportBlock2:"strokeColor=none;shape=mxgraph.aws3.import_export;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSStorageGatewayBlock2:"strokeColor=none;shape=mxgraph.aws3.storage_gateway;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSElasticBlockStorageBlock2:"strokeColor=none;shape=mxgraph.aws3.volume;fontStyle=1;fontColor=#ffffff",AWSVolumeBlock3:"strokeColor=none;shape=mxgraph.aws3.volume;fontStyle=1;fontColor=#ffffff",AWSSnapshotBlock2:"strokeColor=none;shape=mxgraph.aws3.snapshot;fontStyle=1;fontColor=#ffffff",AWSGlacierArchiveBlock3:"strokeColor=none;shape=mxgraph.aws3.archive;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSGlacierVaultBlock3:"strokeColor=none;shape=mxgraph.aws3.vault;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAmazonEFS:"strokeColor=none;shape=mxgraph.aws3.efs;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSGlacierBlock2:"strokeColor=none;shape=mxgraph.aws3.glacier;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAWSImportExportSnowball:"strokeColor=none;shape=mxgraph.aws3.snowball;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSStorageGatewayCachedVolumn2:"strokeColor=none;shape=mxgraph.aws3.cached_volume;verticalLabelPosition=bottom;align=center;verticalAlign=top",
"AWSStorageGatewayNon-CachedVolumn2":"strokeColor=none;shape=mxgraph.aws3.non_cached_volume;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSStorageGatewayVirtualTapeLibrary2:"strokeColor=none;shape=mxgraph.aws3.virtual_tape_library;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSCloudFrontBlock2:"strokeColor=none;shape=mxgraph.aws3.cloudfront;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSDownloadDistBlock2:"strokeColor=none;shape=mxgraph.aws3.download_distribution;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSStreamingBlock2:"strokeColor=none;shape=mxgraph.aws3.streaming_distribution;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSEdgeLocationBlock2:"strokeColor=none;shape=mxgraph.aws3.edge_location;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSItemBlock2:"strokeColor=none;shape=mxgraph.aws3.item;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSItemsBlock2:"strokeColor=none;shape=mxgraph.aws3.items;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSAttributeBlock2:"strokeColor=none;shape=mxgraph.aws3.attribute;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAttributesBlock2:"strokeColor=none;shape=mxgraph.aws3.attributes;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSRDBSBlock2:"mxCompositeShape",AWSRDSInstanceBlock2:"strokeColor=none;shape=mxgraph.aws3.rds_db_instance;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSRDSStandbyBlock2:"strokeColor=none;shape=mxgraph.aws3.rds_db_instance_standby_multi_az;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSRDSInstanceReadBlock2:"strokeColor=none;shape=mxgraph.aws3.rds_db_instance_read_replica;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSOracleDBBlock2:"strokeColor=none;shape=mxgraph.aws3.oracle_db_instance;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSMySQLDBBlock2:"strokeColor=none;shape=mxgraph.aws3.mysql_db_instance;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSDynamoDBBlock2:"strokeColor=none;shape=mxgraph.aws3.dynamo_db;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSSimpleDatabaseBlock3:"strokeColor=none;shape=mxgraph.aws2.database.simpledb;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSSimpleDatabaseDomainBlock3:"strokeColor=none;shape=mxgraph.aws2.database.simpledb_domain;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSTableBlock2:"strokeColor=none;shape=mxgraph.aws3.table;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAmazonRedShiftBlock3:"strokeColor=none;shape=mxgraph.aws3.redshift;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSElastiCacheNodeBlock2:"strokeColor=none;shape=mxgraph.aws3.cache_node;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSElastiCacheBlock2:"strokeColor=none;shape=mxgraph.aws3.elasticache;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSDynamoDBGlobalSecondaryIndexes2:"strokeColor=none;shape=mxgraph.aws3.global_secondary_index;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAmazonElastiCacheMemcache2:"strokeColor=none;shape=mxgraph.aws3.memcached;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSAmazonElastiCacheRedis2:"strokeColor=none;shape=mxgraph.aws3.redis;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAmazonRDSMSSQLInstance2:"strokeColor=none;shape=mxgraph.aws3.ms_sql_instance_2;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSMSSQLDBBlock3:"strokeColor=none;shape=mxgraph.aws3.ms_sql_instance;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAmazonRDSMySQLDBInstance2:"strokeColor=none;shape=mxgraph.aws3.mysql_db_instance_2;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSAmazonRDSOracleDBInstance2:"strokeColor=none;shape=mxgraph.aws3.oracle_db_instance_2;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSRDSReplicasetswithPIOP2:"strokeColor=none;shape=mxgraph.aws3.piop;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAmazonRDSPostgreSQL2:"strokeColor=none;shape=mxgraph.aws3.postgre_sql_instance;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSRDSMasterSQL2:"strokeColor=none;shape=mxgraph.aws3.sql_master;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSRDSSlaveSQL2:"strokeColor=none;shape=mxgraph.aws3.sql_slave;verticalLabelPosition=bottom;align=center;verticalAlign=top","AWSAmazonRedshift(densecomputenode)":"strokeColor=none;shape=mxgraph.aws3.dense_compute_node;verticalLabelPosition=bottom;align=center;verticalAlign=top","AWSAmazonRedshift(densestoragenode)":"strokeColor=none;shape=mxgraph.aws3.dense_storage_node;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAWSDatabaseMigrationService:"strokeColor=none;shape=mxgraph.aws3.database_migration_service;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSACM:"strokeColor=none;shape=mxgraph.aws3.certificate_manager;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAmazonInspector:"strokeColor=none;shape=mxgraph.aws3.inspector;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAWSCloudHSM:"strokeColor=none;shape=mxgraph.aws3.cloudhsm;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSDirectoryService2:"strokeColor=none;shape=mxgraph.aws3.directory_service;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSAWSKMS:"strokeColor=none;shape=mxgraph.aws3.kms;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAWSWAF:"strokeColor=none;shape=mxgraph.aws3.waf;verticalLabelPosition=bottom;align=center;verticalAlign=top","AWSACM(certificate-manager)":"strokeColor=none;shape=mxgraph.aws3.certificate_manager_2;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSSESBlock2:"strokeColor=none;shape=mxgraph.aws3.ses;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSEmailBlock2:"strokeColor=none;shape=mxgraph.aws3.email;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSSNSBlock2:"strokeColor=none;shape=mxgraph.aws3.sns;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSSQSBlock3:"strokeColor=none;shape=mxgraph.aws3.sqs;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSQueueBlock2:"strokeColor=none;shape=mxgraph.aws3.queue;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSMessageBlock2:"strokeColor=none;shape=mxgraph.aws3.message;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSDeciderBlock2:"strokeColor=none;shape=mxgraph.aws3.decider;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSSWFBlock2:"strokeColor=none;shape=mxgraph.aws3.swf;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSWorkerBlock2:"strokeColor=none;shape=mxgraph.aws3.worker;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSCloudSearchBlock2:"strokeColor=none;shape=mxgraph.aws3.cloudsearch;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSCloudSearchMetadataBlock3:"strokeColor=none;shape=mxgraph.aws3.search_documents;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSElasticTranscoder3:"strokeColor=none;shape=mxgraph.aws3.elastic_transcoder;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAmazonAPIGateway:"strokeColor=none;shape=mxgraph.aws3.api_gateway;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAppStream2:"strokeColor=none;shape=mxgraph.aws3.appstream;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSCloudFormationBlock2:"strokeColor=none;shape=mxgraph.aws3.cloudformation;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSDataPipelineBlock3:"strokeColor=none;shape=mxgraph.aws3.data_pipeline;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSDataPipelineBlock2:"strokeColor=none;shape=mxgraph.aws3.data_pipeline;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSTemplageBlock2:"strokeColor=none;shape=mxgraph.aws3.template;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSStackBlock2:"strokeColor=none;shape=mxgraph.aws3.stack_aws_cloudformation;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSBeanStockBlock2:"strokeColor=none;shape=mxgraph.aws3.elastic_beanstalk;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSApplicationBlock2:"strokeColor=none;shape=mxgraph.aws3.application;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSBeanstalkDeploymentBlock3:"strokeColor=none;shape=mxgraph.aws3.deployment;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSIAMBlock3:"strokeColor=none;shape=mxgraph.aws3.iam;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSIAMSTSBlock3:"strokeColor=none;shape=mxgraph.aws3.sts;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSIAMAddonBlock2:"strokeColor=none;shape=mxgraph.aws3.add_on;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSCloudWatchBlock3:"strokeColor=none;shape=mxgraph.aws3.cloudwatch;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSCloudWatchAlarmBlock2:"strokeColor=none;shape=mxgraph.aws3.alarm;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSIAMSecurityTokenService2:"strokeColor=none;shape=mxgraph.aws3.sts_2;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSIAMDataEncryptionKey2:"strokeColor=none;shape=mxgraph.aws3.data_encryption_key;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSIAMEncryptedData2:"strokeColor=none;shape=mxgraph.aws3.encrypted_data;verticalLabelPosition=bottom;align=center;verticalAlign=top","AWSAWSIAM(long-termsecuritycredential)":"strokeColor=none;shape=mxgraph.aws3.long_term_security_credential;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSIAMMFAToken2:"strokeColor=none;shape=mxgraph.aws3.mfa_token;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSIAMPermissions2:"strokeColor=none;shape=mxgraph.aws3.permissions_2;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSIAMRoles2:"strokeColor=none;shape=mxgraph.aws3.role;verticalLabelPosition=bottom;align=center;verticalAlign=top","AWSAWSIAM(temporarysecuritycredential)":"strokeColor=none;shape=mxgraph.aws3.long_term_security_credential;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSCloudTrail2:"strokeColor=none;shape=mxgraph.aws3.cloudtrail;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSConfig2:"strokeColor=none;shape=mxgraph.aws3.config;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSOpsWorksBlock3:"strokeColor=none;shape=mxgraph.aws3.opsworks;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAWSServiceCatalog:"strokeColor=none;shape=mxgraph.aws3.service_catalog;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSTrustedAdvisor2:"strokeColor=none;shape=mxgraph.aws3.trusted_advisor;verticalLabelPosition=bottom;align=center;verticalAlign=top",
BlockEndFill:"box;xyzFill=1;xyzSize=16;",Nesting:"circlePlus;xyzSize=7;xyzFill=0;","BPMN Conditional":"diamond;xyzFill=0;","BPMN Default":"dash;"},Mb={DefaultTextBlockNew:"strokeColor=none;fillColor=none",DefaultTextBlock:"strokeColor=none;fillColor=none",DefaultSquareBlock:"",RectangleBlock:"",DefaultNoteBlock:"shape=note;size=15",DefaultNoteBlockV2:"shape=note;size=15",HotspotBlock:"strokeColor=none;fillColor=none",ImageSearchBlock2:"shape=image",UserImage2Block:"shape=image",ExtShapeBoxBlock:"",
ProcessBlock:"",DecisionBlock:"rhombus",TerminatorBlock:"rounded=1;arcSize=50",PredefinedProcessBlock:"shape=process",DocumentBlock:"shape=document;boundedLbl=1",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=cylinder3;size=4;anchorPointDirection=0;boundedLbl=1;",DirectAccessStorageBlock:"shape=cylinder3;direction=south;size=10;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=cylinder3;boundedLbl=1;size=15;lid=0;direction=south;",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:"shape=mxgraph.basic.acute_triangle;dx=0.5;anchorPointDirection=0",RightTriangleBlock:"shape=mxgraph.basic.orthogonal_triangle",PentagonBlock:"shape=mxgraph.basic.pentagon",HexagonBlock:"shape=hexagon;perimeter=hexagonPerimeter2",
OctagonBlock:"shape=mxgraph.basic.octagon2;dx=15;",CrossBlock:"shape=cross;size=0.6",CloudBlock:"ellipse;shape=cloud",HeartBlock:"shape=mxgraph.basic.heart",RightArrowBlock:"mxCompositeShape",DoubleArrowBlock:"mxCompositeShape",CalloutBlock:"shape=mxgraph.basic.rectangular_callout",ShapeCircleBlock:"ellipse",ShapePolyStarBlock:"shape=mxgraph.basic.star",ShapeDiamondBlock:"rhombus",UI2HotspotBlock:"opacity=50;strokeColor=none",AndroidDevice:"mxCompositeShape",AndroidAlertDialog:"mxCompositeShape",
AndroidDateDialog:"mxCompositeShape",AndroidTimeDialog:"mxCompositeShape",AndroidListItems:"mxCompositeShape",AndroidTabs:"mxCompositeShape",AndroidProgressBar:"mxCompositeShape",AndroidImageBlock:"mxCompositeShape",AndroidTextBlock:"mxCompositeShape",AndroidActionBar:"mxCompositeShape",AndroidButton:"mxCompositeShape",AndroidTextBox:"mxCompositeShape",AndroidRadioButton:"mxCompositeShape",AndroidCheckBox:"mxCompositeShape",AndroidToggle:"mxCompositeShape",AndroidSlider:"mxCompositeShape",AndroidIconCheck:"shape=mxgraph.ios7.misc.check",
AndroidIconCancel:"shape=mxgraph.atlassian.x",AndroidIconCollapse:"shape=mxgraph.ios7.misc.up",AndroidIconExpand:"shape=mxgraph.ios7.misc.down",AndroidIconNext:"shape=mxgraph.ios7.misc.right",AndroidIconPrevious:"shape=mxgraph.ios7.misc.left",AndroidIconRefresh:NaN,AndroidIconInformation:"shape=mxgraph.ios7.icons.info",AndroidIconSearch:"shape=mxgraph.ios7.icons.looking_glass",AndroidIconSettings:"shape=mxgraph.ios7.icons.volume;direction=south",AndroidIconTrash:"shape=mxgraph.ios7.icons.trashcan",
AndroidIconEmail:"shape=mxgraph.mockup.misc.mail2",AndroidIconNew:"shape=mxgraph.ios7.misc.flagged",iOSDeviceiPhoneSE:"shape=mxgraph.ios7.misc.iphone",iOSDeviceiPhone6s:"shape=mxgraph.ios7.misc.iphone",iOSDeviceiPhone6sPlus:"shape=mxgraph.ios7.misc.iphone",iOSDeviceiPadPortrait:"shape=mxgraph.ios7.misc.ipad7inch",iOSDeviceiPadLandscape:"shape=mxgraph.ios7.misc.ipad7inch",iOSDeviceiPadProPortrait:"shape=mxgraph.ios7.misc.ipad7inch",iOSDeviceiPadProLandscape:"shape=mxgraph.ios7.misc.ipad10inch",iOSButton:"fillColor=none;strokeColor=none;",
iOSSegmentedControl:"mxCompositeShape",iOSStepper:"shape=mxgraph.ios7.misc.adjust",iOSToggle:"shape=mxgraph.ios7ui.onOffButton;buttonState=on;strokeColor2=#aaaaaa;fillColor2=#ffffff",iOSSlider:"mxCompositeShape",iOSProgressBar:"mxCompositeShape",iOSPageControls:"mxCompositeShape",iOSStatusBar:"mxCompositeShape",iOSSearchBar:"mxCompositeShape",iOSNavBar:"mxCompositeShape",iOSTabs:"mxCompositeShape",iOSUniversalKeyboard:"shape=mxgraph.ios.iKeybLett",iOSDatePicker:"mxCompositeShape",iOSTimePicker:"mxCompositeShape",
iOSCountdownPicker:"mxCompositeShape",iOSBasicCell:"mxCompositeShape",iOSSubtitleCell:"mxCompositeShape",iOSRightDetailCell:"mxCompositeShape",iOSLeftDetailCell:"mxCompositeShape",iOSTableGroupedSectionBreak:"mxCompositeShape",iOSTablePlainHeaderFooter:"mxCompositeShape",MindMapBlock:"",MindMapStadiumBlock:"arcSize=50",MindMapCloud:"shape=cloud",MindMapCircle:"ellipse",MindMapIsoscelesTriangleBlock:"shape=triangle;direction=north",MindMapDiamondBlock:"shape=rhombus",MindMapPentagonBlock:"shape=mxgraph.basic.pentagon",
MindMapHexagonBlock:"shape=hexagon;perimeter=hexagonPerimeter2",MindMapOctagonBlock:"shape=mxgraph.basic.octagon2;dx=10;",MindMapCrossBlock:"shape=mxgraph.basic.cross2;dx=20",ERDEntityBlock:"mxCompositeShape",ERDEntityBlock2:"mxCompositeShape",ERDEntityBlock3:"mxCompositeShape",ERDEntityBlock4:"mxCompositeShape",UMLClassBlock:"mxCompositeShape",UMLActiveClassBlock:"shape=process",UMLMultiplicityBlock:"mxCompositeShape",UMLPackageBlock:"",UMLConstraintBlock:"mxCompositeShape",UMLNoteBlock:"shape=note;size=15",
UMLNoteBlockV2:"shape=note;size=15",UMLTextBlock:"mxCompositeShape",UMLActorBlock:"shape=umlActor;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;whiteSpace=nowrap",UMLUseCaseBlock:"ellipse",UMLCircleContainerBlock:"ellipse;container=1",UMLRectangleContainerBlock:"container=1",UMLOptionLoopBlock:"shape=mxgraph.sysml.package2;xSize=90;overflow=fill",UMLAlternativeBlock2:"shape=mxgraph.sysml.package2;xSize=90;overflow=fill",UMLStartBlock:"ellipse;fillColor=#000000",UMLStateBlock:"mxCompositeShape",
UMLDecisionBlock:"shape=rhombus;",UMLHForkJoinBlock:"fillColor=#000000",UMLVForkJoinBlock:"fillColor=#000000",UMLFlowFinalBlock:"shape=mxgraph.flowchart.or",UMLHistoryStateBlock:"ellipse",UMLEndBlock:"shape=mxgraph.bpmn.shape;outline=end;symbol=terminate;strokeColor=#000000;fillColor=#ffffff",UMLObjectBlock:"",UMLSendSignalBlock:"shape=mxgraph.sysml.sendSigAct",UMLReceiveSignalBlock:"shape=mxgraph.sysml.accEvent;flipH=1",UMLAcceptTimeEventActionBlock:"shape=mxgraph.sysml.timeEvent",UMLOffPageLinkBlock:"shape=mxgraph.sysml.sendSigAct;direction=south",
UMLMultiLanePoolBlock:"mxCompositeShape",UMLMultiLanePoolRotatedBlock:"mxCompositeShape",UMLMultidimensionalSwimlane:"mxCompositeShape",UMLActivationBlock:"",UMLDeletionBlock:"shape=mxgraph.sysml.x;strokeWidth=4",UMLSeqEntityBlock:"shape=mxgraph.electrical.radio.microphone_1;direction=north",UMLComponentBlock:"shape=component;align=left;spacingLeft=36",UMLComponentBlockV2:"shape=component;align=left;spacingLeft=36",UMLNodeBlock:"shape=cube;size=12;flipH=1;verticalAlign=top;align=left;spacingTop=10;spacingLeft=5",
UMLNodeBlockV2:"shape=cube;size=12;flipH=1;verticalAlign=top;align=left;spacingTop=10;spacingLeft=5",UMLComponentInterfaceBlock:"ellipse",UMLComponentInterfaceBlockV2:"ellipse",UMLComponentBoxBlock:"mxCompositeShape",UMLComponentBoxBlockV2:"mxCompositeShape",UMLAssemblyConnectorBlock:"mxCompositeShape",UMLAssemblyConnectorBlockV2:"mxCompositeShape",UMLProvidedInterfaceBlock:"mxCompositeShape",UMLProvidedInterfaceBlockV2:"mxCompositeShape",UMLRequiredInterfaceBlock:"shape=requires;direction=north",
UMLRequiredInterfaceBlockV2:"shape=requires;direction=north",UMLSwimLaneBlockV2:"mxCompositeShape",UMLSwimLaneBlock:"swimlane;startSize=25;container=1;collapsible=0;dropTarget=0;fontStyle=0",UMLEntityBlock:"",UMLWeakEntityBlock:"shape=ext;double=1",UMLAttributeBlock:"ellipse",UMLMultivaluedAttributeBlock:"shape=doubleEllipse",UMLRelationshipBlock:"shape=rhombus",UMLWeakRelationshipBlock:"shape=rhombus;double=1",BPMNActivity:"mxCompositeShape",BPMNEvent:"mxCompositeShape",BPMNConversation:"mxCompositeShape",
BPMNGateway:"mxCompositeShape",BPMNData:"mxCompositeShape",BPMNDataStore:"shape=datastore",BPMNAdvancedPoolBlock:"mxCompositeShape",BPMNAdvancedPoolBlockRotated:"mxCompositeShape",BPMNBlackPool:"mxCompositeShape",BPMNTextAnnotation:"mxCompositeShape",DFDExternalEntityBlock:"mxCompositeShape",DFDExternalEntityBlock2:"",YDMDFDProcessBlock:"ellipse",YDMDFDDataStoreBlock:"shape=partialRectangle;right=0;left=0",GSDFDProcessBlock:"mxCompositeShape",GSDFDProcessBlock2:"rounded=1;arcSize=10;",GSDFDDataStoreBlock:"mxCompositeShape",
GSDFDDataStoreBlock2:"shape=partialRectangle;right=0",OrgBlock:"",DefaultTableBlock:"mxCompositeShape",VSMCustomerSupplierBlock:"shape=mxgraph.lean_mapping.outside_sources",VSMDedicatedProcessBlock:"mxCompositeShape",VSMSharedProcessBlock:"mxCompositeShape",VSMWorkcellBlock:"mxCompositeShape",VSMDatacellBlock:"mxCompositeShape",VSMInventoryBlock:"mxCompositeShape",VSMSupermarketBlock:"mxCompositeShape",VSMPhysicalPullBlock:"shape=mxgraph.lean_mapping.physical_pull;direction=south",VSMFIFOLaneBlock:"mxCompositeShape",
VSMSafetyBufferStockBlock:"mxCompositeShape",VSMExternalShipmentAirplaneBlock:"shape=mxgraph.lean_mapping.airplane_7",VSMExternalShipmentForkliftBlock:"shape=mxgraph.lean_mapping.move_by_forklift",VSMExternalShipmentTruckBlock:"shape=mxgraph.lean_mapping.truck_shipment;align=left;",VSMExternalShipmentBoatBlock:"shape=mxgraph.lean_mapping.boat_shipment;verticalAlign=bottom;",VSMProductionControlBlock:"mxCompositeShape",VSMOtherInformationBlock:"",VSMSequencedPullBallBlock:"shape=mxgraph.lean_mapping.sequenced_pull_ball",
VSMMRPERPBlock:"shape=mxgraph.lean_mapping.mrp_erp;whiteSpace=wrap",VSMLoadLevelingBlock:"shape=mxgraph.lean_mapping.load_leveling",VSMGoSeeBlock:"shape=mxgraph.lean_mapping.go_see_production_scheduling;flipH=1",VSMGoSeeProductionBlock:"mxCompositeShape",VSMVerbalInfoBlock:"shape=mxgraph.lean_mapping.verbal",VSMKaizenBurstBlock:"shape=mxgraph.lean_mapping.kaizen_lightening_burst",VSMOperatorBlock:"shape=mxgraph.lean_mapping.operator;flipV=1",VSMQualityProblemBlock:"shape=mxgraph.lean_mapping.quality_problem",
VSMProductionKanbanSingleBlock:"shape=card;size=18;flipH=1;",VSMProductionKanbanBatchBlock:"mxCompositeShape",VSMWithdrawalKanbanBlock:"shape=mxgraph.lean_mapping.withdrawal_kanban",VSMSignalKanbanBlock:"shape=triangle;direction=south;anchorPointDirection=0",VSMKanbanPostBlock:"shape=mxgraph.lean_mapping.kanban_post",VSMShipmentArrow:"shape=singleArrow;arrowWidth=0.5;arrowSize=0.13",VSMPushArrow:"shape=mxgraph.lean_mapping.push_arrow",AWSElasticComputeCloudBlock2:"mxCompositeShape",AWSInstanceBlock2:"strokeColor=none;shape=mxgraph.aws3.instance",
AWSInstancesBlock2:"strokeColor=none;shape=mxgraph.aws3.instances;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAMIBlock2:"strokeColor=none;shape=mxgraph.aws3.ami;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSDBonInstanceBlock2:"strokeColor=none;shape=mxgraph.aws3.db_on_instance;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSInstanceCloudWatchBlock2:"strokeColor=none;shape=mxgraph.aws3.instance_with_cloudwatch;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSElasticIPBlock2:"strokeColor=none;shape=mxgraph.aws3.elastic_ip;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSHDFSClusterBlock2:"strokeColor=none;shape=mxgraph.aws3.hdfs_cluster;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAutoScalingBlock2:"strokeColor=none;shape=mxgraph.aws3.auto_scaling;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSEC2OptimizedInstance2:"strokeColor=none;shape=mxgraph.aws3.optimized_instance;verticalLabelPosition=bottom;align=center;verticalAlign=top",
"AWSAmazonEC2(Spotinstance)":"strokeColor=none;shape=mxgraph.aws3.spot_instance;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAmazonECR:"strokeColor=none;shape=mxgraph.aws3.ecr;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAmazonECS:"strokeColor=none;shape=mxgraph.aws3.ecs;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSLambda2:"strokeColor=none;shape=mxgraph.aws3.lambda;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSElasticLoadBalancing:"strokeColor=none;shape=mxgraph.aws3.elastic_load_balancing;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSElasticLoadBlock2:"strokeColor=none;shape=mxgraph.aws3.classic_load_balancer;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSDirectConnectBlock3:"strokeColor=none;shape=mxgraph.aws3.direct_connect;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSElasticNetworkBlock2:"strokeColor=none;shape=mxgraph.aws3.elastic_network_interface;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSRoute53Block2:"mxCompositeShape",AWSHostedZoneBlock2:"strokeColor=none;shape=mxgraph.aws3.hosted_zone;fontColor=#FFFFFF;fontStyle=1",
AWSRouteTableBlock2:"strokeColor=none;shape=mxgraph.aws3.route_table;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSVPCBlock2:"strokeColor=none;shape=mxgraph.aws3.vpc;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSVPNConnectionBlock2:"strokeColor=none;shape=mxgraph.aws3.vpn_connection;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSVPNGatewayBlock2:"strokeColor=none;shape=mxgraph.aws3.vpn_gateway;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSCustomerGatewayBlock2:"strokeColor=none;shape=mxgraph.aws3.customer_gateway;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSCustomerGatewayBlock3:"strokeColor=none;shape=mxgraph.aws3.customer_gateway;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSInternetGatewayBlock2:"strokeColor=none;shape=mxgraph.aws3.internet_gateway;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSRouterBlock2:"strokeColor=none;shape=mxgraph.aws3.router;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSRouterBlock3:"strokeColor=none;shape=mxgraph.aws3.router;verticalLabelPosition=bottom;align=center;verticalAlign=top","AWSAmazonVPC(endpoints)":"strokeColor=none;shape=mxgraph.aws3.endpoints;verticalLabelPosition=bottom;align=center;verticalAlign=top","AWSAmazonVPC(flowlogs)":"strokeColor=none;shape=mxgraph.aws3.flow_logs;verticalLabelPosition=bottom;align=center;verticalAlign=top","AWSAmazonVPC(VPCNATgateway)":"strokeColor=none;shape=mxgraph.aws3.vpc_nat_gateway;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSVPCPeering3:"strokeColor=none;shape=mxgraph.aws3.vpc_peering;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSSimpleStorageBlock2:"strokeColor=none;shape=mxgraph.aws3.s3;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSBucketBlock2:"strokeColor=none;shape=mxgraph.aws3.bucket;fontStyle=1;fontColor=#ffffff",AWSBuckethWithObjectsBlock2:"strokeColor=none;shape=mxgraph.aws3.bucket_with_objects;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSObjectBlock2:"strokeColor=none;shape=mxgraph.aws3.object;fontStyle=1;fontColor=#ffffff",
AWSImportExportBlock2:"strokeColor=none;shape=mxgraph.aws3.import_export;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSStorageGatewayBlock2:"strokeColor=none;shape=mxgraph.aws3.storage_gateway;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSElasticBlockStorageBlock2:"strokeColor=none;shape=mxgraph.aws3.volume;fontStyle=1;fontColor=#ffffff",AWSVolumeBlock3:"strokeColor=none;shape=mxgraph.aws3.volume;fontStyle=1;fontColor=#ffffff",AWSSnapshotBlock2:"strokeColor=none;shape=mxgraph.aws3.snapshot;fontStyle=1;fontColor=#ffffff",
AWSGlacierArchiveBlock3:"strokeColor=none;shape=mxgraph.aws3.archive;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSGlacierVaultBlock3:"strokeColor=none;shape=mxgraph.aws3.vault;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAmazonEFS:"strokeColor=none;shape=mxgraph.aws3.efs;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSGlacierBlock2:"strokeColor=none;shape=mxgraph.aws3.glacier;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAWSImportExportSnowball:"strokeColor=none;shape=mxgraph.aws3.snowball;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSStorageGatewayCachedVolumn2:"strokeColor=none;shape=mxgraph.aws3.cached_volume;verticalLabelPosition=bottom;align=center;verticalAlign=top","AWSStorageGatewayNon-CachedVolumn2":"strokeColor=none;shape=mxgraph.aws3.non_cached_volume;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSStorageGatewayVirtualTapeLibrary2:"strokeColor=none;shape=mxgraph.aws3.virtual_tape_library;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSCloudFrontBlock2:"strokeColor=none;shape=mxgraph.aws3.cloudfront;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSDownloadDistBlock2:"strokeColor=none;shape=mxgraph.aws3.download_distribution;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSStreamingBlock2:"strokeColor=none;shape=mxgraph.aws3.streaming_distribution;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSEdgeLocationBlock2:"strokeColor=none;shape=mxgraph.aws3.edge_location;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSItemBlock2:"strokeColor=none;shape=mxgraph.aws3.item;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSItemsBlock2:"strokeColor=none;shape=mxgraph.aws3.items;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAttributeBlock2:"strokeColor=none;shape=mxgraph.aws3.attribute;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAttributesBlock2:"strokeColor=none;shape=mxgraph.aws3.attributes;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSRDBSBlock2:"mxCompositeShape",AWSRDSInstanceBlock2:"strokeColor=none;shape=mxgraph.aws3.rds_db_instance;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSRDSStandbyBlock2:"strokeColor=none;shape=mxgraph.aws3.rds_db_instance_standby_multi_az;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSRDSInstanceReadBlock2:"strokeColor=none;shape=mxgraph.aws3.rds_db_instance_read_replica;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSOracleDBBlock2:"strokeColor=none;shape=mxgraph.aws3.oracle_db_instance;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSMySQLDBBlock2:"strokeColor=none;shape=mxgraph.aws3.mysql_db_instance;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSDynamoDBBlock2:"strokeColor=none;shape=mxgraph.aws3.dynamo_db;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSSimpleDatabaseBlock3:"strokeColor=none;shape=mxgraph.aws2.database.simpledb;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSSimpleDatabaseDomainBlock3:"strokeColor=none;shape=mxgraph.aws2.database.simpledb_domain;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSTableBlock2:"strokeColor=none;shape=mxgraph.aws3.table;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSAmazonRedShiftBlock3:"strokeColor=none;shape=mxgraph.aws3.redshift;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSElastiCacheNodeBlock2:"strokeColor=none;shape=mxgraph.aws3.cache_node;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSElastiCacheBlock2:"strokeColor=none;shape=mxgraph.aws3.elasticache;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSDynamoDBGlobalSecondaryIndexes2:"strokeColor=none;shape=mxgraph.aws3.global_secondary_index;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSAmazonElastiCacheMemcache2:"strokeColor=none;shape=mxgraph.aws3.memcached;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAmazonElastiCacheRedis2:"strokeColor=none;shape=mxgraph.aws3.redis;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAmazonRDSMSSQLInstance2:"strokeColor=none;shape=mxgraph.aws3.ms_sql_instance_2;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSMSSQLDBBlock3:"strokeColor=none;shape=mxgraph.aws3.ms_sql_instance;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSAmazonRDSMySQLDBInstance2:"strokeColor=none;shape=mxgraph.aws3.mysql_db_instance_2;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAmazonRDSOracleDBInstance2:"strokeColor=none;shape=mxgraph.aws3.oracle_db_instance_2;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSRDSReplicasetswithPIOP2:"strokeColor=none;shape=mxgraph.aws3.piop;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAmazonRDSPostgreSQL2:"strokeColor=none;shape=mxgraph.aws3.postgre_sql_instance;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSRDSMasterSQL2:"strokeColor=none;shape=mxgraph.aws3.sql_master;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSRDSSlaveSQL2:"strokeColor=none;shape=mxgraph.aws3.sql_slave;verticalLabelPosition=bottom;align=center;verticalAlign=top","AWSAmazonRedshift(densecomputenode)":"strokeColor=none;shape=mxgraph.aws3.dense_compute_node;verticalLabelPosition=bottom;align=center;verticalAlign=top","AWSAmazonRedshift(densestoragenode)":"strokeColor=none;shape=mxgraph.aws3.dense_storage_node;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSAWSDatabaseMigrationService:"strokeColor=none;shape=mxgraph.aws3.database_migration_service;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSACM:"strokeColor=none;shape=mxgraph.aws3.certificate_manager;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAmazonInspector:"strokeColor=none;shape=mxgraph.aws3.inspector;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAWSCloudHSM:"strokeColor=none;shape=mxgraph.aws3.cloudhsm;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSDirectoryService2:"strokeColor=none;shape=mxgraph.aws3.directory_service;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAWSKMS:"strokeColor=none;shape=mxgraph.aws3.kms;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAWSWAF:"strokeColor=none;shape=mxgraph.aws3.waf;verticalLabelPosition=bottom;align=center;verticalAlign=top","AWSACM(certificate-manager)":"strokeColor=none;shape=mxgraph.aws3.certificate_manager_2;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSSESBlock2:"strokeColor=none;shape=mxgraph.aws3.ses;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSEmailBlock2:"strokeColor=none;shape=mxgraph.aws3.email;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSSNSBlock2:"strokeColor=none;shape=mxgraph.aws3.sns;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSSQSBlock3:"strokeColor=none;shape=mxgraph.aws3.sqs;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSQueueBlock2:"strokeColor=none;shape=mxgraph.aws3.queue;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSMessageBlock2:"strokeColor=none;shape=mxgraph.aws3.message;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSDeciderBlock2:"strokeColor=none;shape=mxgraph.aws3.decider;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSSWFBlock2:"strokeColor=none;shape=mxgraph.aws3.swf;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSWorkerBlock2:"strokeColor=none;shape=mxgraph.aws3.worker;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSCloudSearchBlock2:"strokeColor=none;shape=mxgraph.aws3.cloudsearch;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSCloudSearchMetadataBlock3:"strokeColor=none;shape=mxgraph.aws3.search_documents;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSElasticTranscoder3:"strokeColor=none;shape=mxgraph.aws3.elastic_transcoder;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAmazonAPIGateway:"strokeColor=none;shape=mxgraph.aws3.api_gateway;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAppStream2:"strokeColor=none;shape=mxgraph.aws3.appstream;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSCloudFormationBlock2:"strokeColor=none;shape=mxgraph.aws3.cloudformation;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSDataPipelineBlock3:"strokeColor=none;shape=mxgraph.aws3.data_pipeline;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSDataPipelineBlock2:"strokeColor=none;shape=mxgraph.aws3.data_pipeline;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSTemplageBlock2:"strokeColor=none;shape=mxgraph.aws3.template;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSStackBlock2:"strokeColor=none;shape=mxgraph.aws3.stack_aws_cloudformation;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSBeanStockBlock2:"strokeColor=none;shape=mxgraph.aws3.elastic_beanstalk;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSApplicationBlock2:"strokeColor=none;shape=mxgraph.aws3.application;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSBeanstalkDeploymentBlock3:"strokeColor=none;shape=mxgraph.aws3.deployment;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSIAMBlock3:"strokeColor=none;shape=mxgraph.aws3.iam;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSIAMSTSBlock3:"strokeColor=none;shape=mxgraph.aws3.sts;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSIAMAddonBlock2:"strokeColor=none;shape=mxgraph.aws3.add_on;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSCloudWatchBlock3:"strokeColor=none;shape=mxgraph.aws3.cloudwatch;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSCloudWatchAlarmBlock2:"strokeColor=none;shape=mxgraph.aws3.alarm;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSIAMSecurityTokenService2:"strokeColor=none;shape=mxgraph.aws3.sts_2;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSIAMDataEncryptionKey2:"strokeColor=none;shape=mxgraph.aws3.data_encryption_key;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSIAMEncryptedData2:"strokeColor=none;shape=mxgraph.aws3.encrypted_data;verticalLabelPosition=bottom;align=center;verticalAlign=top","AWSAWSIAM(long-termsecuritycredential)":"strokeColor=none;shape=mxgraph.aws3.long_term_security_credential;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSIAMMFAToken2:"strokeColor=none;shape=mxgraph.aws3.mfa_token;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSIAMPermissions2:"strokeColor=none;shape=mxgraph.aws3.permissions_2;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSIAMRoles2:"strokeColor=none;shape=mxgraph.aws3.role;verticalLabelPosition=bottom;align=center;verticalAlign=top","AWSAWSIAM(temporarysecuritycredential)":"strokeColor=none;shape=mxgraph.aws3.long_term_security_credential;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSCloudTrail2:"strokeColor=none;shape=mxgraph.aws3.cloudtrail;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSConfig2:"strokeColor=none;shape=mxgraph.aws3.config;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSOpsWorksBlock3:"strokeColor=none;shape=mxgraph.aws3.opsworks;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAWSServiceCatalog:"strokeColor=none;shape=mxgraph.aws3.service_catalog;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSTrustedAdvisor2:"strokeColor=none;shape=mxgraph.aws3.trusted_advisor;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSOpsWorksApps2:"strokeColor=none;shape=mxgraph.aws3.apps;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSOpsWorksDeployments2:"strokeColor=none;shape=mxgraph.aws3.deployments;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSOpsWorksInstances2:"strokeColor=none;shape=mxgraph.aws3.instances_2;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSOpsWorksLayers2:"strokeColor=none;shape=mxgraph.aws3.layers;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSOpsWorksMonitoring2:"strokeColor=none;shape=mxgraph.aws3.monitoring;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSOpsWorksPermissions2:"strokeColor=none;shape=mxgraph.aws3.permissions;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSOpsWorksResources2:"strokeColor=none;shape=mxgraph.aws3.resources;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSOpsWorksStack2:"strokeColor=none;shape=mxgraph.aws3.stack_aws_opsworks;verticalLabelPosition=bottom;align=center;verticalAlign=top",
AWSMechanicalTurkBlock3:"strokeColor=none;shape=mxgraph.aws3.mechanical_turk;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSHumanITBlock2:"strokeColor=none;shape=mxgraph.aws3.human_intelligence_tasks_hit;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSAssignmentTaskBlock2:"strokeColor=none;shape=mxgraph.aws3.requester;verticalLabelPosition=bottom;align=center;verticalAlign=top",AWSWorkersBlock2:"strokeColor=none;shape=mxgraph.aws3.users;verticalLabelPosition=bottom;align=center;verticalAlign=top",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,4 +1,4 @@
var mxClient={VERSION:"14.0.1",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE 6"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_QUIRKS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),IS_EM:"spellcheck"in document.createElement("textarea")&&
var mxClient={VERSION:"14.0.2",IS_IE:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE 6"),IS_IE11:null!=navigator.userAgent&&!!navigator.userAgent.match(/Trident\/7\./),IS_EDGE:null!=navigator.userAgent&&!!navigator.userAgent.match(/Edge\//),IS_QUIRKS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),IS_EM:"spellcheck"in document.createElement("textarea")&&
8==document.documentMode,VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Mozilla/")&&0>navigator.userAgent.indexOf("MSIE")&&0>navigator.userAgent.indexOf("Edge/"),IS_OP:null!=navigator.userAgent&&(0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("OPR/")),IS_OT:null!=navigator.userAgent&&0<=navigator.userAgent.indexOf("Presto/")&&0>navigator.userAgent.indexOf("Presto/2.4.")&&0>navigator.userAgent.indexOf("Presto/2.3.")&&0>navigator.userAgent.indexOf("Presto/2.2.")&&
0>navigator.userAgent.indexOf("Presto/2.1.")&&0>navigator.userAgent.indexOf("Presto/2.0.")&&0>navigator.userAgent.indexOf("Presto/1."),IS_SF:/Apple Computer, Inc/.test(navigator.vendor),IS_ANDROID:0<=navigator.appVersion.indexOf("Android"),IS_IOS:/iP(hone|od|ad)/.test(navigator.platform),IS_GC:/Google Inc/.test(navigator.vendor),IS_CHROMEAPP:null!=window.chrome&&null!=chrome.app&&null!=chrome.app.runtime,IS_FF:"undefined"!==typeof InstallTrigger,IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&0>
navigator.userAgent.indexOf("Firefox/1.")&&0>navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/")&&0>navigator.userAgent.indexOf("Iceweasel/1.")&&0>navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/")&&0>navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/")&&0>navigator.userAgent.indexOf("Iceape/1."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_SVG:"MICROSOFT INTERNET EXPLORER"!=

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -1071,7 +1071,7 @@ diagUrl=Diagram URL
showDiag=Show Diagram
diagPreview=Diagram Preview
csvFileUrl=CSV File URL
generate=
generate=Generate
selectDiag2Insert=Please select a diagram to insert it.
errShowingDiag=Unexpected error. Cannot show diagram
noRecentDiags=No recent diagrams found

View file

@ -6,11 +6,11 @@ if (workbox)
workbox.precaching.precacheAndRoute([
{
"url": "js/app.min.js",
"revision": "a910759041a203b2a6d19b7bc9da3b09"
"revision": "61d231a672b8c271a0ef6bc85ce70bf4"
},
{
"url": "js/extensions.min.js",
"revision": "381bc2dd0a645122ea0c4aa7f9a8be27"
"revision": "521912d0a99ae4b3bbc41951933feaab"
},
{
"url": "js/stencils.min.js",
@ -26,7 +26,7 @@ if (workbox)
},
{
"url": "index.html",
"revision": "c540e127498dbd3f828d71b206ffefe2"
"revision": "0d230ea924531724d0f5cd5f7c645993"
},
{
"url": "open.html",
@ -58,7 +58,7 @@ if (workbox)
},
{
"url": "js/viewer-static.min.js",
"revision": "4bed2100741e0b11e44ac4a87ecf77e8"
"revision": "6a5b7c33e5c10a125ef2d8ea073d4dcf"
},
{
"url": "connect/jira/editor-1-3-3.html",
@ -234,39 +234,39 @@ if (workbox)
},
{
"url": "resources/dia.txt",
"revision": "a95c98c307f11594448558c5e8df5763"
"revision": "8f69219c45dae79aba8f3c74f6e6513f"
},
{
"url": "resources/dia_am.txt",
"revision": "f78de26314c458a3ac9f1f9c8dcfdfae"
"revision": "8fcafd92ca4fd7ce46c75a8d890cefef"
},
{
"url": "resources/dia_ar.txt",
"revision": "925228735fd3a14d98c26ec419463548"
"revision": "ac572c22e5c53204e545d94c3fc5c2bd"
},
{
"url": "resources/dia_bg.txt",
"revision": "c7018616fce9d9bd6b8d1eb0837d761c"
"revision": "18b460c85ca598cdf39f57d8fd6a6bfb"
},
{
"url": "resources/dia_bn.txt",
"revision": "5a0a99df77e255f64ce48175791425da"
"revision": "f95e2752e5a76c461ae643dcc6247d27"
},
{
"url": "resources/dia_bs.txt",
"revision": "6b46cfc626af3aa58b3a9759f5237c41"
"revision": "5871ee838bf6ad5d2e8d7f2a1888ce08"
},
{
"url": "resources/dia_ca.txt",
"revision": "cb9dd2e0a4859a779d0f7ba6157f37e9"
"revision": "a1b680a782d23e6ec1333c1320c73628"
},
{
"url": "resources/dia_cs.txt",
"revision": "b441f4c304bb43f1fd5b3a5e95390c1d"
"revision": "114a9c659d9aabe41ff560fe12c1d665"
},
{
"url": "resources/dia_da.txt",
"revision": "82d839b04694ebe0881f7bf0cd394ae0"
"revision": "fc0fe232d0a8a00d5321be7b7b8c36fc"
},
{
"url": "resources/dia_de.txt",
@ -274,191 +274,191 @@ if (workbox)
},
{
"url": "resources/dia_el.txt",
"revision": "f034d30d71fd79edff3a7a9083221297"
"revision": "9b917b2f9a4c6a61147b9642e22dea05"
},
{
"url": "resources/dia_eo.txt",
"revision": "15029d4bf866c97a30c6ba82d74cc982"
"revision": "b708b8a4c53fd97c841607da962380ed"
},
{
"url": "resources/dia_es.txt",
"revision": "754338cbf8fa112aa62d84f8f9601268"
"revision": "96ebc09ad9ff72d39ac88676010b2839"
},
{
"url": "resources/dia_et.txt",
"revision": "624c3362fdeb19a89af69fcd3d2c32c3"
"revision": "590cdfed5b7c40e68d4b2dbcbfa0287e"
},
{
"url": "resources/dia_eu.txt",
"revision": "f9f0a0eacff8e2ea0cc4d8941fbf5080"
"revision": "d50548870690902740dd44c0b847982d"
},
{
"url": "resources/dia_fa.txt",
"revision": "086793dcbd435c7dd283c38d1589190c"
"revision": "4839a903fd0c39d7a2da6aaed33bf789"
},
{
"url": "resources/dia_fi.txt",
"revision": "2a642b81a44730a158836454ce57e076"
"revision": "124b28e12501ac04c18d78d3327499f6"
},
{
"url": "resources/dia_fil.txt",
"revision": "c672a11650c1e00da66e58bf049ee94a"
"revision": "69b1d4ddfc6ef3bf26dc58af320c3baa"
},
{
"url": "resources/dia_fr.txt",
"revision": "ff5fd39114a79ee480df1b352b5fe631"
"revision": "1b124dfb0f61ac2f38533596b5156ced"
},
{
"url": "resources/dia_gl.txt",
"revision": "e401d8dce5c6e2f0c8e3d7c467b61772"
"revision": "d9046507bfcb71bb5f75a035d6a70ce7"
},
{
"url": "resources/dia_gu.txt",
"revision": "fa00aa6a9d56ca6b97d8603de0bd7e17"
"revision": "4e99f6ab7b2f58ed56ca486b7a959ac8"
},
{
"url": "resources/dia_he.txt",
"revision": "724447e9cf78fe53606233c8c56427ea"
"revision": "a769cc1e8a1bd321b318b6f16c5e7d21"
},
{
"url": "resources/dia_hi.txt",
"revision": "79d637ae06b4fbc91b20d0ce3ed97c1f"
"revision": "84a7a4d6570e4ed3a5832663a409e7de"
},
{
"url": "resources/dia_hr.txt",
"revision": "c98fa89b8da637b77e17b5d5aebf64b4"
"revision": "01d90b53063d751beedd4f8c9fa52a7f"
},
{
"url": "resources/dia_hu.txt",
"revision": "df9124b5f8d69d57955afcb37ba77596"
"revision": "5a9f40eca7e2be0fb43c8dd4a4e9fb17"
},
{
"url": "resources/dia_id.txt",
"revision": "c31143b7a74b3027512b813c3dfb87c0"
"revision": "5ed8ac4a22808ce282b1c29593979ab1"
},
{
"url": "resources/dia_it.txt",
"revision": "980103dc0e777c77e5cf8cb1e1492121"
"revision": "e63e1dabb64dba1ee81b476f3eebe811"
},
{
"url": "resources/dia_ja.txt",
"revision": "7df9fdb2e949a997debf48b0f8894ad2"
"revision": "00e72975209f73ce276dfd7b0ea67439"
},
{
"url": "resources/dia_kn.txt",
"revision": "355f8e2592c8a47c8dc2fe636cb2ab26"
"revision": "d91afcaa8d86b2d2f4b2a97663b78882"
},
{
"url": "resources/dia_ko.txt",
"revision": "6ec5ea1397be947e618c93a85aa14aef"
"revision": "8b13aa1c79408761b9d00ab62642cdf5"
},
{
"url": "resources/dia_lt.txt",
"revision": "ce387f112fbc3721b6efa0ae4cc32364"
"revision": "2cba7d31cef3e35a48585929a41e055c"
},
{
"url": "resources/dia_lv.txt",
"revision": "97a2b4cd7d3f5376e6f3f08595c88086"
"revision": "128984149ef57f1fceabfdd7734f0adc"
},
{
"url": "resources/dia_ml.txt",
"revision": "c73787de7e331808228dd01072db2051"
"revision": "cdc579b42679a63324786e1415134828"
},
{
"url": "resources/dia_mr.txt",
"revision": "8d5a3c89c33551f098f491b6dca9f9ba"
"revision": "03434ce0cef6316448144b00607dbdc4"
},
{
"url": "resources/dia_ms.txt",
"revision": "a58f6e0df875901ee4caa693c73173c0"
"revision": "e79d0ef3382465dfd4a222253c1e6960"
},
{
"url": "resources/dia_my.txt",
"revision": "a95c98c307f11594448558c5e8df5763"
"revision": "8f69219c45dae79aba8f3c74f6e6513f"
},
{
"url": "resources/dia_nl.txt",
"revision": "ae4dc35bbc244e467266fdfa507cec11"
"revision": "a19417df08fb6630869f38f6cf054fa3"
},
{
"url": "resources/dia_no.txt",
"revision": "d7d8a03f4fb71242be03411bcbbc0ddb"
"revision": "14681d51c2b310150e20f13d869a0777"
},
{
"url": "resources/dia_pl.txt",
"revision": "f4948f04032f8e8a0805126d859bdccf"
"revision": "6893f874646899067baeeb6a833c7d9c"
},
{
"url": "resources/dia_pt-br.txt",
"revision": "60686f9fe926e6c5a7fd617e3ddf43ce"
"revision": "a2b80d029ae4549beb71c92115232618"
},
{
"url": "resources/dia_pt.txt",
"revision": "b5573e4f2edb8f274175de7e8e69ea20"
"revision": "b6fa7b9c041168cf29af7929e3910fa7"
},
{
"url": "resources/dia_ro.txt",
"revision": "52d0115cfb6c4f88f07cfaa3594ac605"
"revision": "4d5cd22faf78897c437c6e8c731883c9"
},
{
"url": "resources/dia_ru.txt",
"revision": "fc8ba64c382445c31a7757e3406fc19f"
"revision": "c140e9c4f64e433b66e81d98b4c44e15"
},
{
"url": "resources/dia_si.txt",
"revision": "a95c98c307f11594448558c5e8df5763"
"revision": "8f69219c45dae79aba8f3c74f6e6513f"
},
{
"url": "resources/dia_sk.txt",
"revision": "47ef313bd2fbb967bd6af1351ea365d6"
"revision": "ebe5de01a714397dcfb168ab1ff423de"
},
{
"url": "resources/dia_sl.txt",
"revision": "eaa415f455ae004efebb3d4d7d53e068"
"revision": "030ec83c580d23344286a5b850ca7f52"
},
{
"url": "resources/dia_sr.txt",
"revision": "c4aa45d8f068d7c84bcc731f5365cdd0"
"revision": "07691143eef799e6cba14037efeec6b0"
},
{
"url": "resources/dia_sv.txt",
"revision": "cad51fff8b9bc129813bed81b3559593"
"revision": "f668b2ce8439858fdf065063ab9ad704"
},
{
"url": "resources/dia_sw.txt",
"revision": "f9396f256b95faa9e4f47d97cf046fe4"
"revision": "738b771953dbb60fb591868944684d1e"
},
{
"url": "resources/dia_ta.txt",
"revision": "5c0878a78e5f192c903639e8be234d0f"
"revision": "48e4e2d4a0dbbcf800ff18de40c6c10f"
},
{
"url": "resources/dia_te.txt",
"revision": "a8f3172033814d33a98b28d07e481d41"
"revision": "54eee5e1c1b162413528cb4b5cd50b7e"
},
{
"url": "resources/dia_th.txt",
"revision": "8d5f01a0c3deba4513edcb2d6b99b61c"
"revision": "ddf78da2f04359e60092f61a21461866"
},
{
"url": "resources/dia_tr.txt",
"revision": "56cf92a42c7e80ec8e5fa2b85137ade3"
"revision": "cdf138005f7c6839edf11b7890d47bdc"
},
{
"url": "resources/dia_uk.txt",
"revision": "cd5d3bc9178fa28a0b116a7edce020c9"
"revision": "12f12bf3d1fb6b7227f94cac7b91a83a"
},
{
"url": "resources/dia_vi.txt",
"revision": "4f9fdc22d48c6e0cd0259a561384f4af"
"revision": "8e7ca1e99ecaaacece3df7a557ffd021"
},
{
"url": "resources/dia_zh-tw.txt",
"revision": "992bd40767c5573693081eb5b59a99c4"
"revision": "11577eaba44af8217de73aa9a7314370"
},
{
"url": "resources/dia_zh.txt",
"revision": "d7f0a7b5415df7aabc47d568a00ce312"
"revision": "2367ca64c09e909a80c0eba1b8c13eec"
},
{
"url": "favicon.ico",