Browse Source

12.2.1 release

David Benson [draw.io] 5 years ago
parent
commit
05b910c689
87 changed files with 2511 additions and 1893 deletions
  1. 7 0
      ChangeLog
  2. 1 1
      VERSION
  3. 1 1
      etc/mxgraph/mxClient.js
  4. 1 1
      src/main/webapp/cache.manifest
  5. 1 1
      src/main/webapp/electron.js
  6. BIN
      src/main/webapp/images/draw-search.png
  7. 121 0
      src/main/webapp/images/draw-search.svg
  8. 50 0
      src/main/webapp/images/drawlogo-color.svg
  9. BIN
      src/main/webapp/images/google-drive-connector-atlas.png
  10. 121 0
      src/main/webapp/images/google-drive-connector-atlas.svg
  11. BIN
      src/main/webapp/images/onedrive-connector-atlas.png
  12. 248 0
      src/main/webapp/images/onedrive-connector-atlas.svg
  13. 681 688
      src/main/webapp/js/app.min.js
  14. 82 32
      src/main/webapp/js/diagramly/DriveClient.js
  15. 7 0
      src/main/webapp/js/diagramly/Editor.js
  16. 67 31
      src/main/webapp/js/diagramly/EditorUi.js
  17. 1 1
      src/main/webapp/js/diagramly/Extensions.js
  18. 3 1
      src/main/webapp/js/diagramly/GitLabClient.js
  19. 9 0
      src/main/webapp/js/diagramly/OneDriveClient.js
  20. 11 11
      src/main/webapp/js/diagramly/sidebar/Sidebar-AWS.js
  21. 9 9
      src/main/webapp/js/diagramly/sidebar/Sidebar-AWS3.js
  22. 4 4
      src/main/webapp/js/diagramly/sidebar/Sidebar-AWS3D.js
  23. 6 6
      src/main/webapp/js/diagramly/sidebar/Sidebar-Android.js
  24. 14 20
      src/main/webapp/js/diagramly/sidebar/Sidebar-ArchiMate3.js
  25. 21 21
      src/main/webapp/js/diagramly/sidebar/Sidebar-Atlassian.js
  26. 1 1
      src/main/webapp/js/diagramly/sidebar/Sidebar-Basic.js
  27. 78 78
      src/main/webapp/js/diagramly/sidebar/Sidebar-Bootstrap.js
  28. 29 29
      src/main/webapp/js/diagramly/sidebar/Sidebar-EIP.js
  29. 1 1
      src/main/webapp/js/diagramly/sidebar/Sidebar-ER.js
  30. 32 32
      src/main/webapp/js/diagramly/sidebar/Sidebar-Electrical.js
  31. 1 1
      src/main/webapp/js/extensions.min.js
  32. 798 796
      src/main/webapp/js/viewer.min.js
  33. 51 31
      src/main/webapp/plugins/number.js
  34. 1 2
      src/main/webapp/templates/business/archimate.xml
  35. 1 2
      src/main/webapp/templates/business/ishikawa_1.xml
  36. 1 2
      src/main/webapp/templates/business/pert_1.xml
  37. 1 2
      src/main/webapp/templates/business/pert_2.xml
  38. 1 1
      src/main/webapp/templates/business/timeline_4.xml
  39. 1 1
      src/main/webapp/templates/charts/bar_chart_1.xml
  40. 1 2
      src/main/webapp/templates/charts/org_chart_2.xml
  41. 1 1
      src/main/webapp/templates/cloud/aws_1.xml
  42. 1 1
      src/main/webapp/templates/cloud/aws_10.xml
  43. 1 1
      src/main/webapp/templates/cloud/aws_2.xml
  44. 1 2
      src/main/webapp/templates/cloud/aws_3d.xml
  45. 1 1
      src/main/webapp/templates/cloud/aws_5.xml
  46. 1 1
      src/main/webapp/templates/cloud/aws_8.xml
  47. 1 1
      src/main/webapp/templates/cloud/ibm_vpc_architecture.xml
  48. 1 1
      src/main/webapp/templates/engineering/cabinet.xml
  49. 1 2
      src/main/webapp/templates/engineering/electrical_1.xml
  50. 1 2
      src/main/webapp/templates/engineering/electrical_2.xml
  51. 1 2
      src/main/webapp/templates/flowcharts/cross_functional_flowchart_1.xml
  52. 1 2
      src/main/webapp/templates/flowcharts/cross_functional_flowchart_2.xml
  53. 1 2
      src/main/webapp/templates/flowcharts/data_flow_1.xml
  54. 1 2
      src/main/webapp/templates/flowcharts/data_flow_2.xml
  55. 1 2
      src/main/webapp/templates/flowcharts/epc.xml
  56. 1 1
      src/main/webapp/templates/flowcharts/flowchart_2.xml
  57. 1 2
      src/main/webapp/templates/flowcharts/workflow_1.xml
  58. 1 2
      src/main/webapp/templates/layout/bootstrap.xml
  59. 1 2
      src/main/webapp/templates/layout/wireframe_1.xml
  60. 1 2
      src/main/webapp/templates/layout/wireframe_2.xml
  61. 1 2
      src/main/webapp/templates/maps/concept_map_1.xml
  62. 1 2
      src/main/webapp/templates/maps/concept_map_2.xml
  63. 1 2
      src/main/webapp/templates/network/active_directory.xml
  64. 1 2
      src/main/webapp/templates/network/cisco_2.xml
  65. 1 2
      src/main/webapp/templates/network/wireless_home_network.xml
  66. 1 2
      src/main/webapp/templates/other/decision_tree.xml
  67. 1 2
      src/main/webapp/templates/other/floor_plan.xml
  68. 1 2
      src/main/webapp/templates/other/infographic_1.xml
  69. 1 2
      src/main/webapp/templates/other/lan_plan.xml
  70. 1 2
      src/main/webapp/templates/software/class_1.xml
  71. 1 2
      src/main/webapp/templates/software/class_2.xml
  72. 1 2
      src/main/webapp/templates/software/component.xml
  73. 1 2
      src/main/webapp/templates/software/data_flow_1.xml
  74. 1 2
      src/main/webapp/templates/software/database_2.xml
  75. 1 2
      src/main/webapp/templates/software/database_3.xml
  76. 1 2
      src/main/webapp/templates/software/eip.xml
  77. 1 2
      src/main/webapp/templates/software/entity_relationship.xml
  78. 1 2
      src/main/webapp/templates/tables/authority_matrix.xml
  79. 1 1
      src/main/webapp/templates/tables/gantt_2.xml
  80. 1 2
      src/main/webapp/templates/tables/gantt_3.xml
  81. 1 2
      src/main/webapp/templates/uml/activity_diagram_2.xml
  82. 1 2
      src/main/webapp/templates/uml/sequence_1.xml
  83. 1 2
      src/main/webapp/templates/uml/state_machine.xml
  84. 1 2
      src/main/webapp/templates/uml/sysml.xml
  85. 1 2
      src/main/webapp/templates/uml/uml_1.xml
  86. 1 1
      src/main/webapp/templates/uml/uml_2.xml
  87. 1 2
      src/main/webapp/templates/venn/spider_1.xml

+ 7 - 0
ChangeLog

@@ -1,3 +1,10 @@
+06-NOV-2019: 12.2.1
+
+- Fixes slow paste from clipboard in modern browsers
+- Improves handling of timeouts in Google Drive
+- Fixes event handling on iOS
+- Uses mxGraph 4.0.6 beta 4
+
 04-NOV-2019: 12.2.0
 
 - Fixes Google auth after hibernate on Windows

+ 1 - 1
VERSION

@@ -1 +1 @@
-12.2.0
+12.2.1

+ 1 - 1
etc/mxgraph/mxClient.js

@@ -109,7 +109,7 @@ function mxEventObject(a){this.name=a;this.properties=[];for(var b=1;b<arguments
 mxEventObject.prototype.isConsumed=function(){return this.consumed};mxEventObject.prototype.consume=function(){this.consumed=!0};function mxMouseEvent(a,b){this.evt=a;this.sourceState=this.state=b}mxMouseEvent.prototype.consumed=!1;mxMouseEvent.prototype.evt=null;mxMouseEvent.prototype.graphX=null;mxMouseEvent.prototype.graphY=null;mxMouseEvent.prototype.state=null;mxMouseEvent.prototype.sourceState=null;mxMouseEvent.prototype.getEvent=function(){return this.evt};
 mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)};mxMouseEvent.prototype.isSource=function(a){return null!=a?mxUtils.isAncestorNode(a.node,this.getSource()):!1};mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())};mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())};mxMouseEvent.prototype.getGraphX=function(){return this.graphX};mxMouseEvent.prototype.getGraphY=function(){return this.graphY};
 mxMouseEvent.prototype.getState=function(){return this.state};mxMouseEvent.prototype.getCell=function(){var a=this.getState();return null!=a?a.cell:null};mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())};mxMouseEvent.prototype.isConsumed=function(){return this.consumed};
-mxMouseEvent.prototype.consume=function(a){(a=null!=a?a:mxEvent.isMouseEvent(this.evt))&&this.evt.preventDefault&&this.evt.preventDefault();mxClient.IS_IE&&(this.evt.returnValue=!0);this.consumed=!0};function mxEventSource(a){this.setEventSource(a)}mxEventSource.prototype.eventListeners=null;mxEventSource.prototype.eventsEnabled=!0;mxEventSource.prototype.eventSource=null;mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled};
+mxMouseEvent.prototype.consume=function(a){(a=null!=a?a:null!=this.evt.touches||mxEvent.isMouseEvent(this.evt))&&this.evt.preventDefault&&this.evt.preventDefault();mxClient.IS_IE&&(this.evt.returnValue=!0);this.consumed=!0};function mxEventSource(a){this.setEventSource(a)}mxEventSource.prototype.eventListeners=null;mxEventSource.prototype.eventsEnabled=!0;mxEventSource.prototype.eventSource=null;mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled};
 mxEventSource.prototype.setEventsEnabled=function(a){this.eventsEnabled=a};mxEventSource.prototype.getEventSource=function(){return this.eventSource};mxEventSource.prototype.setEventSource=function(a){this.eventSource=a};mxEventSource.prototype.addListener=function(a,b){null==this.eventListeners&&(this.eventListeners=[]);this.eventListeners.push(a);this.eventListeners.push(b)};
 mxEventSource.prototype.removeListener=function(a){if(null!=this.eventListeners)for(var b=0;b<this.eventListeners.length;)this.eventListeners[b+1]==a?this.eventListeners.splice(b,2):b+=2};
 mxEventSource.prototype.fireEvent=function(a,b){if(null!=this.eventListeners&&this.isEventsEnabled()){null==a&&(a=new mxEventObject);null==b&&(b=this.getEventSource());null==b&&(b=this);for(var c=[b,a],d=0;d<this.eventListeners.length;d+=2){var e=this.eventListeners[d];null!=e&&e!=a.getName()||this.eventListeners[d+1].apply(this,c)}}};

+ 1 - 1
src/main/webapp/cache.manifest

@@ -1,7 +1,7 @@
 CACHE MANIFEST
 
 # THIS FILE WAS GENERATED. DO NOT MODIFY!
-# 11/04/2019 12:15 PM
+# 11/06/2019 04:08 PM
 
 app.html
 index.html?offline=1

+ 1 - 1
src/main/webapp/electron.js

@@ -22,7 +22,7 @@ autoUpdater.logger = log
 autoUpdater.logger.transports.file.level = 'info'
 autoUpdater.autoDownload = false
 
-const __DEV__ = process.env.NODE_ENV === 'development'
+const __DEV__ = process.env.DRAWIO_ENV === 'dev'
 		
 let windowsRegistry = []
 let cmdQPressed = false

BIN
src/main/webapp/images/draw-search.png


File diff suppressed because it is too large
+ 121 - 0
src/main/webapp/images/draw-search.svg


+ 50 - 0
src/main/webapp/images/drawlogo-color.svg

@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xml:space="preserve"
+   style="enable-background:new 0 0 161.6 217.4;"
+   viewBox="0 0 161.6 217.4"
+   y="0px"
+   x="0px"
+   id="Ebene_1"
+   version="1.1"><metadata
+   id="metadata43">
+</metadata>
+<defs
+   id="defs41">
+</defs>
+
+<style
+   id="style10"
+   type="text/css">
+	.st0{fill:#F08705;}
+	.st1{fill:#DF6C0C;}
+	.st2{fill:#FFFFFF;}
+	.st3{fill:#333333;}
+</style>
+
+<path
+   class="st0"
+   d="m 161.6,154.7 c 0,3.9 -3.2,6.9 -6.9,6.9 H 6.9 C 3,161.6 0,158.4 0,154.7 V 6.9 C 0,3 3.2,0 6.9,0 h 147.8 c 3.9,0 6.9,3.2 6.9,6.9 z"
+   id="path12"
+   style="opacity:1;stop-opacity:1" />
+<g
+   id="g16"
+   style="opacity:1;stop-opacity:1">
+		<path
+   class="st1"
+   d="m 161.6,154.7 c 0,3.9 -3.2,6.9 -6.9,6.9 H 55.3 l -32.2,-32.7 20,-32.7 59.4,-73.8 58.9,60.7 z"
+   id="path14" />
+
+	</g>
+<path
+   class="st2"
+   d="m 132.7,90.3 h -17 l -18,-30.6 c 4,-0.8 7,-4.4 7,-8.6 V 28 c 0,-4.9 -3.9,-8.8 -8.8,-8.8 h -30 c -4.9,0 -8.8,3.9 -8.8,8.8 v 23.1 c 0,4.3 3,7.8 6.9,8.6 L 46,90.4 H 29 c -4.9,0 -8.8,3.9 -8.8,8.8 v 23.1 c 0,4.9 3.9,8.8 8.8,8.8 h 30 c 4.9,0 8.8,-3.9 8.8,-8.8 V 99.2 c 0,-4.9 -3.9,-8.8 -8.8,-8.8 H 56.1 L 73.9,60 h 13.9 l 17.9,30.4 h -3 c -4.9,0 -8.8,3.9 -8.8,8.8 v 23.1 c 0,4.9 3.9,8.8 8.8,8.8 h 30 c 4.9,0 8.8,-3.9 8.8,-8.8 V 99.2 c 0,-4.9 -3.9,-8.9 -8.8,-8.9 z"
+   id="path18"
+   style="opacity:1;stop-opacity:1" />
+
+</svg>

BIN
src/main/webapp/images/google-drive-connector-atlas.png


+ 121 - 0
src/main/webapp/images/google-drive-connector-atlas.svg

@@ -0,0 +1,121 @@
+<?xml version="1.0" standalone="no"?>
+<svg contentScriptType="text/ecmascript" zoomAndPan="magnify" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+    xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" baseProfile="full"
+    contentStyleType="text/css" id="svg285" sodipodi:docname="driveconnector.svg" version="1.1" width="210mm"
+    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+    xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" preserveAspectRatio="xMidYMid meet"
+    inkscape:version="1.0beta1 (32d4812, 2019-09-19)" viewBox="0 0 210 297" height="297mm" xmlns="http://www.w3.org/2000/svg">
+    <defs id="defs279">
+        <clipPath clipPathUnits="userSpaceOnUse" id="clipPath433">
+            <path d="M 0,144 H 144 V 0 H 0 Z" id="path431" inkscape:connector-curvature="0"/>
+        </clipPath>
+        <clipPath clipPathUnits="userSpaceOnUse" id="clipPath449">
+            <path d="M 0,0 H 144 V 144 H 0 Z" id="path447" inkscape:connector-curvature="0"/>
+        </clipPath>
+        <clipPath clipPathUnits="userSpaceOnUse" id="clipPath457">
+            <path d="M 34.3896,108.648 H 144.05 V 0.0267944 H 34.3896 Z" id="path455" inkscape:connector-curvature="0"/>
+        </clipPath>
+        <clipPath clipPathUnits="userSpaceOnUse" id="clipPath461">
+            <path d="M 34.39,0.027 H 144.05 V 108.648 H 34.39 Z" id="path459" inkscape:connector-curvature="0"/>
+        </clipPath>
+        <clipPath clipPathUnits="userSpaceOnUse" id="clipPath485">
+            <path d="M 0,0 H 144 V 144 H 0 Z" id="path483" inkscape:connector-curvature="0"/>
+        </clipPath>
+    </defs>
+    <sodipodi:namedview bordercolor="#666666" inkscape:window-height="1395" inkscape:zoom="2.8" id="base"
+        inkscape:current-layer="layer1" inkscape:window-y="23" inkscape:cy="474.13703" inkscape:window-x="0"
+        inkscape:cx="274.3506" showgrid="false" inkscape:document-rotation="0" inkscape:pageopacity="0.0"
+        inkscape:object-nodes="true" inkscape:document-units="mm" inkscape:pageshadow="2" inkscape:snap-nodes="true"
+        inkscape:window-width="2234" inkscape:window-maximized="0" borderopacity="1.0" pagecolor="#ffffff"/>
+    <metadata id="metadata282">
+        <rdf:RDF>
+            <cc:Work rdf:about="">
+                <dc:format>image/svg+xml</dc:format>
+                <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+            </cc:Work>
+        </rdf:RDF>
+    </metadata>
+    <g inkscape:groupmode="layer" inkscape:label="Layer 1" id="layer1">
+        <g style="opacity:1;stop-opacity:1;fill:#f08705;fill-opacity:1" id="g427" transform="matrix(0.35277777,0,0,-0.35277777,46.228234,128.83331)">
+            <g style="fill:#f08705;fill-opacity:1" id="g429" clip-path="url(#clipPath433)">
+                <g style="fill:#f08705;fill-opacity:1" id="g435" transform="translate(144,5)">
+                    <path inkscape:connector-curvature="0" d="m 0,0 c 0,-2.762 -2.239,-5 -5,-5 h -134 c -2.762,0 
+                        -5,2.238 -5,5 v 134 c 0,2.762 2.238,5 5,5 H -5 c 2.761,0 5,-2.238 5,-5 z" id="path437" style=
+                        "fill:#f08705;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
+                </g>
+            </g>
+        </g>
+        <g style="opacity:1;stop-opacity:1" id="g443" transform="matrix(0.39467541,0,0,-0.40021116,40.194973,128.95978)">
+            <g id="g445" clip-path="url(#clipPath449)">
+                <g id="g451">
+                    <g id="g453"/>
+                    <g id="g473">
+                        <g id="g471" opacity="0.300003" clip-path="url(#clipPath457)">
+                            <g id="g469">
+                                <g id="g467" clip-path="url(#clipPath461)">
+                                    <g id="g465" transform="translate(34.3896,78.1763)">
+                                        <path inkscape:connector-curvature="0" d="m 0.0 0.0 l 1.535 -47.371 l 33.208 
+                                            -31.0 h 67.766 c 5.053 0.0 7.151 1.142 7.151 6.0 c 0.0 5.547 -0.056 47.189 
+                                            -0.056 49.189 L 79.489 5.0 L 54.015 30.0 L 33.16 29.158 L 22.184 24.449 L 
+                                            16.827 12.24 L 5.149 7.415 z" id="path463" style=
+                                            "fill:#DF6C0C;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
+                                    </g>
+                                </g>
+                            </g>
+                        </g>
+                    </g>
+                </g>
+            </g>
+        </g>
+        <g style="opacity:1;stop-opacity:1" id="g475" transform="matrix(0.35277777,0,0,-0.35277777,62.073555,104.96561)">
+            <path inkscape:connector-curvature="0" d="m 0,0 -10.563,-18.299 6.157,-10.665 10.562,18.299 z M 
+                26.628,-13.275 16.062,5.03 H 3.749 L 14.315,-13.275 Z M 8.005,-18.299 1.85,-28.964 h 20.367 l 
+                6.156,10.665 z" id="path477" style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
+        </g>
+        <g style="opacity:1;stop-opacity:1" id="g479" transform="matrix(0.35277777,0,0,-0.35277777,43.336716,124.56217)">
+            <g id="g481" clip-path="url(#clipPath485)">
+                <g id="g487" transform="translate(69.2168,88.5005)">
+                    <path inkscape:connector-curvature="0" d="m 0,0 23.166,-22.5 v -31.834 c 0,0 1.75,-18 -14.166,-18 h 
+                        -32.334 c 0,0 -12.833,-0.666 -12.833,17.667 v 39.333 c 0,0 -1.5,15.334 18.333,15.334 z" id="path489"
+                        style=
+                        "fill:none;stroke:#ffffff;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"/>
+                </g>
+                <g id="g491" transform="translate(70.3828,86.1665)">
+                    <path inkscape:connector-curvature="0" d="M 0,0 V -19 H 20" id="path493" style=
+                        "fill:none;stroke:#ffffff;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"/>
+                </g>
+                <g id="g495" transform="translate(52.0498,89.0005)">
+                    <path inkscape:connector-curvature="0" d="M 0,0 V 4.166 C 0,4.166 -1.5,19.5 18.333,19.5 H 35.167 L 
+                        59.333,-4 v -30.834 c 0,0 1.584,-18 -14.166,-18 H 41.75" id="path497" style=
+                        "fill:none;stroke:#ffffff;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"/>
+                </g>
+                <g id="g499" transform="translate(88.3828,106.1665)">
+                    <path inkscape:connector-curvature="0" d="M 0,0 V -20 H 22" id="path501" style=
+                        "fill:none;stroke:#ffffff;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"/>
+                </g>
+                <g id="g503" transform="translate(131.9463,30.1675)">
+                    <path inkscape:connector-curvature="0" d="M 0,0 C 0,4.648 -1.884,8.856 -4.931,11.902 L 0,16.833 H 
+                        -12.625 V 4.208 l 4.719,4.718 c 2.285,-2.285 3.698,-5.442 3.698,-8.927 0,-6.972 -5.652,-12.625 
+                        -12.625,-12.625 -3.771,0 -7.155,1.654 -9.469,4.274 l -3.156,-2.783 c 3.085,-3.495 7.598,-5.699 
+                        12.625,-5.699 9.297,0 16.833,7.536 16.833,16.833 z" id="path505" style=
+                        "fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"/>
+                </g>
+            </g>
+        </g>
+        <path inkscape:connector-curvature="0" d="m 46.472771,80.676567 c 0,-1.553617 0.08324,-1.986187 
+            0.419994,-2.182622 0.375682,-0.219139 2.99484,-0.244989 24.82334,-0.244989 22.352122,0 24.434178,0.02162 
+            24.770159,0.257254 0.254956,0.178806 0.393835,0.844389 0.455428,2.182623 l 0.08861,1.925369 H 71.751538 
+            46.472771 Z" id="path578" style="fill:#f08705;fill-opacity:1;stroke:none;stroke-width:0.202075"/>
+        <path inkscape:connector-curvature="0" d="m 174.8888,312.04543 0.0745,-12.18496 0.73521,-1.32692 c 
+            0.77754,-1.40333 1.81083,-2.33651 3.36863,-3.04229 0.88532,-0.40111 6.84481,-0.42902 91.60811,-0.42902 
+            86.4344,0 90.71567,0.021 91.82982,0.45102 0.64275,0.24806 1.38142,0.69349 1.6415,0.98984 0.46375,0.52843 
+            0.46324,0.53529 -0.0266,0.35558 -2.85495,-1.04739 -18.77745,-1.21625 -102.16332,-1.08343 -81.43144,0.12971 
+            -83.16894,0.16117 -84.76601,1.53492 -1.30824,1.1253 -1.42301,2.25635 -1.53365,15.11407 -0.0874,10.16237 
+            -0.15318,11.80616 -0.47211,11.80616 -0.32156,0 -0.36067,-1.60965 -0.29605,-12.18497 z" id="path582" style=
+            "fill:#F08705;fill-opacity:1;stroke:none" transform="scale(0.26458333)"/>
+        <path inkscape:connector-curvature="0" d="m 366.30132,306.47964 c -0.059,-2.50499 -0.52226,-6.33544 
+            -0.92996,-7.69012 -0.46311,-1.5388 -0.29848,-1.6474 0.42346,-0.27935 0.50302,0.95321 0.59134,1.54666 
+            0.67071,4.50702 0.0503,1.8751 0.043,3.80701 -0.0162,4.29315 -0.063,0.51716 -0.12437,0.1725 -0.14802,-0.8307 
+            z" id="path600" style="fill:#F08705;fill-opacity:1;stroke: none" transform="scale(0.26458333)"/>
+    </g>
+</svg>

BIN
src/main/webapp/images/onedrive-connector-atlas.png


File diff suppressed because it is too large
+ 248 - 0
src/main/webapp/images/onedrive-connector-atlas.svg


File diff suppressed because it is too large
+ 681 - 688
src/main/webapp/js/app.min.js


+ 82 - 32
src/main/webapp/js/diagramly/DriveClient.js

@@ -1175,7 +1175,7 @@ DriveClient.prototype.saveFile = function(file, revision, success, errFn, noChec
 		
 		var error = mxUtils.bind(this, function(e)
 		{
-			file.saveLevel = null;
+			file.saveLevel = 11;
 			
 			if (errFn != null)
 			{
@@ -1219,6 +1219,7 @@ DriveClient.prototype.saveFile = function(file, revision, success, errFn, noChec
 		var criticalError = mxUtils.bind(this, function(e)
 		{
 			error(e);
+			file.saveLevel = 12;
 	
 			try
 			{
@@ -1481,12 +1482,12 @@ DriveClient.prototype.saveFile = function(file, revision, success, errFn, noChec
 										file.desc.mimeType != this.libraryMimeType;
 									var acceptResponse = true;
 									
-									// Allow for re-auth flow with 4x timeout
+									// Allow for re-auth flow with 3x timeout
 									var timeoutThread = window.setTimeout(mxUtils.bind(this, function()
 									{
 										acceptResponse = false;
 										error({code: App.ERROR_TIMEOUT, message: mxResources.get('timeout')});
-									}), 4 * this.ui.timeout);
+									}), 3 * this.ui.timeout);
 									
 									this.executeRequest(this.createUploadRequest(file.getId(), meta,
 										data, revision || realOverwrite || unknown, binary,
@@ -1602,40 +1603,61 @@ DriveClient.prototype.saveFile = function(file, revision, success, errFn, noChec
 								}
 								else
 								{
+									var acceptResponse = true;
+									
+									// Allow for re-auth flow with 3x timeout
+									var timeoutThread = window.setTimeout(mxUtils.bind(this, function()
+									{
+										acceptResponse = false;
+										error({code: App.ERROR_TIMEOUT, message: mxResources.get('timeout')});
+									}), 3 * this.ui.timeout);
+									
 									this.executeRequest({
 										url: '/files/' + file.getId() + '?supportsTeamDrives=true&fields=' + this.catchupFields
-									}, 
+									},
 									mxUtils.bind(this, function(desc2)
 									{
-										try
+										window.clearTimeout(timeoutThread);
+										
+										if (acceptResponse)
 										{
-											// Checks head revision ID and updates etag or returns conflict
-											if (desc2 != null && desc2.headRevisionId == head0)
+											file.saveLevel = 13;
+											
+											try
 											{
-												if (urlParams['test'] == '1' && etag != desc2.etag)
+												// Checks head revision ID and updates etag or returns conflict
+												if (desc2 != null && desc2.headRevisionId == head0)
 												{
-													EditorUi.debug('DriveClient: Preflight Etag Update',
-														'from', etag, 'to', desc2.etag,
-														'rev', file.desc.headRevisionId,
-														'response', [desc2], 'file', [file]);
+													if (urlParams['test'] == '1' && etag != desc2.etag)
+													{
+														EditorUi.debug('DriveClient: Preflight Etag Update',
+															'from', etag, 'to', desc2.etag,
+															'rev', file.desc.headRevisionId,
+															'response', [desc2], 'file', [file]);
+													}
+													
+													etag = desc2.etag;
+													doExecuteSave(realOverwrite);
+												}
+												else
+												{
+													error({error: {code: 412}}, desc2);
 												}
-												
-												etag = desc2.etag;
-												doExecuteSave(realOverwrite);
 											}
-											else
+											catch (e)
 											{
-												error({error: {code: 412}}, desc2);
+												criticalError(e);
 											}
 										}
-										catch (e)
-										{
-											criticalError(e);
-										}
 									}), mxUtils.bind(this, function(err)
 									{
 										// Simulated 
-										error(err);
+										window.clearTimeout(timeoutThread);
+										
+										if (acceptResponse)
+										{
+											error(err);
+										}
 									}));
 								}
 							});
@@ -1820,30 +1842,58 @@ DriveClient.prototype.verifyMimeType = function(fileId, fn, force, error)
 		{
 			this.checkingMimeType = true;
 			
-			this.executeRequest({
-				url: '/files/' + fileId + '?supportsTeamDrives=true&fields=mimeType'
-			}, mxUtils.bind(this, function(resp)
+			var acceptResponse = true;
+			
+			// Allow for re-auth flow with 3x timeout
+			var timeoutThread = window.setTimeout(mxUtils.bind(this, function()
 			{
+				acceptResponse = false;
 				this.checkingMimeType = false;
 				
-				if (resp != null && resp.mimeType == 'application/vnd.jgraph.mxfile.realtime')
+				if (error != null)
 				{
-					this.redirectToNewApp(error, fileId);
+					error({code: App.ERROR_TIMEOUT, message: mxResources.get('timeout')});
 				}
-				else if (fn != null)
+			}), 3 * this.ui.timeout);
+			
+			this.executeRequest({
+				url: '/files/' + fileId + '?supportsTeamDrives=true&fields=mimeType'
+			}, mxUtils.bind(this, function(resp)
+			{
+				window.clearTimeout(timeoutThread);
+				
+				if (acceptResponse)
 				{
-					fn();
+					this.checkingMimeType = false;
+					
+					if (resp != null && resp.mimeType == 'application/vnd.jgraph.mxfile.realtime')
+					{
+						this.redirectToNewApp(error, fileId);
+					}
+					else if (fn != null)
+					{
+						fn();
+					}
 				}
 			}), mxUtils.bind(this, function(err)
 			{
-				this.checkingMimeType = false;
+				window.clearTimeout(timeoutThread);
 				
-				if (error != null)
+				if (acceptResponse)
 				{
-					error(err);
+					this.checkingMimeType = false;
+					
+					if (error != null)
+					{
+						error(err);
+					}
 				}
 			}));
 		}
+		else if (fn != null)
+		{
+			fn();
+		}
 	}
 	else if (fn != null)
 	{

+ 7 - 0
src/main/webapp/js/diagramly/Editor.js

@@ -1190,6 +1190,13 @@
 	 */
 	Editor.prototype.isCorsEnabledForUrl = function(url)
 	{
+		//Disable proxy for electron since it doesn't exist (it is served locally) and it works with most of the sites
+		//The same with Chrome App, never use proxy
+		if (mxClient.IS_CHROMEAPP || EditorUi.isElectronApp)
+		{
+			return true;
+		}
+		
 		if (urlParams['cors'] != null && this.corsRegExp == null)
 		{
 			this.corsRegExp = new RegExp(decodeURIComponent(urlParams['cors']));

+ 67 - 31
src/main/webapp/js/diagramly/EditorUi.js

@@ -9595,15 +9595,20 @@
 		textInput.setAttribute('autocapitalize', 'off');
 		textInput.setAttribute('spellcheck', 'false');
 		textInput.style.textRendering = 'optimizeSpeed';
+		textInput.style.background = 'transparent';
+		textInput.style.color = 'transparent';
 		textInput.style.position = 'absolute';
 		textInput.style.whiteSpace = 'nowrap';
 		textInput.style.overflow = 'hidden';
 		textInput.style.display = 'block';
-		textInput.style.fontSize = '0px';
-		textInput.contentEditable = true;
-		mxUtils.setOpacity(textInput, 0);
+		textInput.style.fontSize = '1';
+		textInput.style.zIndex = '-1';
+		textInput.style.resize = 'none';
+		textInput.style.outline = 'none';
 		textInput.style.width = '1px';
 		textInput.style.height = '1px';
+		mxUtils.setOpacity(textInput, 0);
+		textInput.contentEditable = true;
 		textInput.innerHTML = '&nbsp;';
 
 		var restoreFocus = false;
@@ -9737,11 +9742,18 @@
 				textInput.innerHTML = '&nbsp;';
 				textInput.focus();
 				
-				window.setTimeout(mxUtils.bind(this, function()
+				if (evt.clipboardData != null)
 				{
-					this.pasteCells(evt, textInput);
-					textInput.innerHTML = '&nbsp;';
-				}), 0);
+					this.pasteCells(evt, textInput, true);
+				}
+
+				if (!mxEvent.isConsumed(evt))
+				{
+					window.setTimeout(mxUtils.bind(this, function()
+					{
+						this.pasteCells(evt, textInput, false);
+					}), 0);
+				}
 			}
 		}), true);
 		
@@ -9960,14 +9972,8 @@
 		
 		if (!graph.isSelectionEmpty())
 		{
-			var cells = mxUtils.sortCells(graph.model.getTopmostCells(graph.getSelectionCells()));
-			
-			// LATER: Add span with XML in data attribute
-			// var span = document.createElement('span');
-			// span.setAttribute('data-jgraph-type', 'application/vnd.jgraph.xml');
-			// span.setAttribute('data-jgraph-content', mxUtils.getXml(graph.encodeCells(clones)));
-			
 			// Fixes cross-platform clipboard UTF8 issues by encoding as URI
+			var cells = mxUtils.sortCells(graph.model.getTopmostCells(graph.getSelectionCells()));
 			var xml = mxUtils.getXml(this.editor.graph.encodeCells(cells));
 			mxUtils.setTextContent(elt, encodeURIComponent(xml));
 			
@@ -9995,10 +10001,20 @@
 	/**
 	 * Creates the format panel and adds overrides.
 	 */
-	EditorUi.prototype.pasteCells = function(evt, elt)
+	EditorUi.prototype.pasteCells = function(evt, realElt, useEvent)
 	{
 		if (!mxEvent.isConsumed(evt))
 		{
+			var elt = realElt;
+			
+			if (useEvent && evt.clipboardData != null)
+			{
+				// Creates a dummy element and parses the HTML to get
+				// consistent behaviour for system paste HTML into elt
+				elt = document.createElement('div');
+				elt.innerHTML = evt.clipboardData.getData('text/html');
+			}
+			
 			var spans = elt.getElementsByTagName('span');
 		
 			if (spans != null && spans.length > 0 && spans[0].getAttribute('data-lucid-type') ===
@@ -10011,7 +10027,19 @@
 					this.convertLucidChart(content, mxUtils.bind(this, function(xml)
 					{
 						var graph = this.editor.graph;
-						graph.setSelectionCells(this.importXml(xml, 0, 0));
+						
+						if (graph.lastPasteXml == xml)
+						{
+							graph.pasteCounter++;
+						}
+						else
+						{
+							graph.lastPasteXml = xml;
+							graph.pasteCounter = 0;
+						}
+						
+						var dx = graph.pasteCounter * graph.gridSize;
+						graph.setSelectionCells(this.importXml(xml, dx, dx));
 						graph.scrollCellToVisible(graph.getSelectionCell());
 					}), mxUtils.bind(this, function(e)
 					{
@@ -10023,11 +10051,10 @@
 			}
 			else
 			{
-				var graph = this.editor.graph;
 				var xml = mxUtils.trim((mxClient.IS_QUIRKS || document.documentMode == 8) ?
 					mxUtils.getTextContent(elt) : elt.textContent);
 				var compat = false;
-	
+				
 				// Workaround for junk after XML in VM
 				try
 				{
@@ -10061,21 +10088,23 @@
 				{
 					// ignore
 				}
-				
-				if (graph.lastPasteXml == xml)
-				{
-					graph.pasteCounter++;
-				}
-				else
-				{
-					graph.lastPasteXml = xml;
-					graph.pasteCounter = 0;
-				}
-				
-				var dx = graph.pasteCounter * graph.gridSize;
-				
+
 				if (xml != null && xml.length > 0)
 				{
+					var graph = this.editor.graph;
+					
+					if (graph.lastPasteXml == xml)
+					{
+						graph.pasteCounter++;
+					}
+					else
+					{
+						graph.lastPasteXml = xml;
+						graph.pasteCounter = 0;
+					}
+
+					var dx = graph.pasteCounter * graph.gridSize;
+										
 					if (compat || this.isCompatibleString(xml))
 					{
 						graph.setSelectionCells(this.importXml(xml, dx, dx));
@@ -10117,8 +10146,15 @@
 						}
 					}
 				}
+				else if (!useEvent)
+				{
+					graph.lastPasteXml = null;
+					graph.pasteCounter = 0;
+				}
 			}
 		}
+		
+		realElt.innerHTML = '&nbsp;';
 	};
 
 	/**

+ 1 - 1
src/main/webapp/js/diagramly/Extensions.js

@@ -3128,7 +3128,7 @@ LucidImporter = {};
 	{
 		var s = '';
 		
-		if (style != null && style != '' && !style.endsWith(';'))
+		if (style != null && style != '' && style.charAt(style.length - 1) != ';')
 		{
 			s = ';';
 		}

+ 3 - 1
src/main/webapp/js/diagramly/GitLabClient.js

@@ -39,7 +39,9 @@ GitLabClient.prototype.authenticate = function(success, error)
 			this.ui.showAuthDialog(this, true, mxUtils.bind(this, function(remember, authSuccess)
 			{
 				var state = '123';
-				var redirectUri = encodeURIComponent(window.location.origin + '/gitlab.html');
+				var href = window.location.href;
+				var dir = href.substring(0, href.lastIndexOf('/'));
+				var redirectUri = encodeURIComponent(dir + '/gitlab.html');
 				var win = window.open(DRAWIO_GITLAB_URL + '/oauth/authorize?client_id=' +
 					this.clientId + '&scope=' + this.scope + '&redirect_uri=' + redirectUri +
 					'&response_type=token&state=' + state, 'gitlabauth');

+ 9 - 0
src/main/webapp/js/diagramly/OneDriveClient.js

@@ -895,6 +895,15 @@ OneDriveClient.prototype.writeFile = function(url, data, method, contentType, su
 	{
 		if (url != null && data != null)
 		{
+			//OneDrive has a limit on PUT API of 4MB, larger files needs to use the upload session method
+			if (data.length >= 4000000 /*4MB*/)
+			{
+				error({message: mxResources.get('drawingTooLarge') + ' (' +
+					this.ui.formatFileSize(data.length) + ' / 4 MB)'});
+				
+				return;
+			}
+			
 			var doExecute = mxUtils.bind(this, function(failOnAuth)
 			{
 				try

+ 11 - 11
src/main/webapp/js/diagramly/sidebar/Sidebar-AWS.js

@@ -682,14 +682,14 @@
 		
 		this.addPaletteFunctions('aws2Groups', 'AWS / Groups', false,
 		[
-			this.createVertexTemplateEntry(s + 'auto_scaling_group;fillColor=none;strokeColor=#000000;gradientColor=none;', 
+			this.createVertexTemplateEntry(s + 'auto_scaling_group;fillColor=none;gradientColor=none;', 
 					200, 200, '', 'Auto Scaling Group', null, null, this.getTagsForStencil(gn, 'auto_scaling_group', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'availability_zone;strokeColor=#f69721;fillColor=none;gradientColor=none;', 
 					200, 200, '', 'Availability Zone', null, null, this.getTagsForStencil(gn, 'availability_zone', dt).join(' ')),
 					
 			this.addEntry(dt + 'cloud', function()
 			{
-				var bg1 = new mxCell('', new mxGeometry(0, 30, 200, 200), s + 'rrect;fillColor=none;strokeColor=#000000;gradientColor=none;');
+				var bg1 = new mxCell('', new mxGeometry(0, 30, 200, 200), s + 'rrect;fillColor=none;gradientColor=none;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(10, 0, 70, 40), s + 'aws_cloud_icon;strokeColor=none;fillColor=#F69721;gradientColor=none;');
 				bg2.vertex = true;
@@ -699,7 +699,7 @@
 									
 			this.addEntry(dt + 'corporate data center', function()
 			{
-				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), s + 'rrect;fillColor=none;strokeColor=#000000;gradientColor=none;');
+				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), s + 'rrect;fillColor=none;gradientColor=none;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(20, 0, 30, 40), s + 'corporate_data_center_icon;strokeColor=none;fillColor=#6D6F70;gradientColor=none;');
 				bg2.vertex = true;
@@ -709,7 +709,7 @@
 													
 			this.addEntry(dt + 'ec2 instance content', function()
 			{
-				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), s + 'rrect;fillColor=none;strokeColor=#000000;gradientColor=none;');
+				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), s + 'rrect;fillColor=none;gradientColor=none;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(20, 0, 40, 40), s + 'rrect;strokeColor=none;fillColor=#F69721;gradientColor=none;');
 				bg2.vertex = true;
@@ -719,7 +719,7 @@
 															
 			this.addEntry(dt + 'EC2 Spot Fleet', function()
 			{
-				var bg1 = new mxCell('', new mxGeometry(0, 30, 200, 200), s + 'rrect;fillColor=none;strokeColor=#000000;gradientColor=none;');
+				var bg1 = new mxCell('', new mxGeometry(0, 30, 200, 200), s + 'rrect;fillColor=none;gradientColor=none;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(20, 0, 43, 40), s + 'ec2_spot_instance;strokeColor=none;gradientColor=none;');
 				bg2.vertex = true;
@@ -729,7 +729,7 @@
 
 			this.addEntry(dt + 'elastic beanstalk container', function()
 			{
-				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), s + 'rrect;fillColor=none;strokeColor=#000000;gradientColor=none;');
+				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), s + 'rrect;fillColor=none;gradientColor=none;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(20, 0, 40, 40), s + 'elastic_beanstalk_container_icon;strokeColor=none;fillColor=#2A6A35;gradientColor=none;');
 				bg2.vertex = true;
@@ -737,16 +737,16 @@
 			   	return sb.createVertexTemplateFromCells([bg1, bg2], 200, 220, 'Elastic Beanstalk Container');
 			}),
 																	
-			this.createVertexTemplateEntry(s + 'region;strokeColor=#000000;fillColor=none;gradientColor=none;', 
+			this.createVertexTemplateEntry(s + 'region;fillColor=none;gradientColor=none;', 
 					200, 200, '', 'Region', null, null, this.getTagsForStencil(gn, 'region', dt).join(' ')),
-			this.createVertexTemplateEntry(s + 'rrect;fillColor=none;strokeColor=#000000;gradientColor=none;', 
+			this.createVertexTemplateEntry(s + 'rrect;fillColor=none;gradientColor=none;', 
 					200, 200, '', 'Security Group', null, null, this.getTagsForStencil(gn, 'security', dt).join(' ')),
-			this.createVertexTemplateEntry(s + 'rrect;fillColor=#F2F2F2;strokeColor=#000000;gradientColor=none;', 
+			this.createVertexTemplateEntry(s + 'rrect;fillColor=#F2F2F2;gradientColor=none;', 
 					200, 200, '', 'Server Contents', null, null, this.getTagsForStencil(gn, 'server content', dt).join(' ')),
 
 			this.addEntry(dt + 'virtual private cloud', function()
 			{
-				var bg1 = new mxCell('', new mxGeometry(0, 30, 200, 200), s + 'rrect;fillColor=none;strokeColor=#000000;gradientColor=none;');
+				var bg1 = new mxCell('', new mxGeometry(0, 30, 200, 200), s + 'rrect;fillColor=none;gradientColor=none;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(10, 0, 70, 40), s + 'virtual_private_cloud_icon;strokeColor=none;fillColor=#282560;gradientColor=none;');
 				bg2.vertex = true;
@@ -756,7 +756,7 @@
 										
 			this.addEntry(dt + 'virtual private cloud subnet vpc', function()
 			{
-				var bg1 = new mxCell('', new mxGeometry(0, 30, 200, 200), s + 'rrect;fillColor=none;strokeColor=#000000;gradientColor=none;');
+				var bg1 = new mxCell('', new mxGeometry(0, 30, 200, 200), s + 'rrect;fillColor=none;gradientColor=none;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(20, 0, 40, 40), s + 'vpc_subnet_icon;strokeColor=none;fillColor=#282560;gradientColor=none;');
 				bg2.vertex = true;

+ 9 - 9
src/main/webapp/js/diagramly/sidebar/Sidebar-AWS3.js

@@ -207,7 +207,7 @@
 					 
 			 this.addEntry(dt + 'Spot Fleet', function()
              {
-				var bg1 = new mxCell('', new mxGeometry(0, 30, 200, 200), 'rounded=1;fillColor=none;strokeColor=#000000;gradientColor=none;arcSize=10;dashed=1;');
+				var bg1 = new mxCell('', new mxGeometry(0, 30, 200, 200), 'rounded=1;fillColor=none;gradientColor=none;arcSize=10;dashed=1;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(20, 0, 43, 40), n + 'spot_instance;fillColor=#F58534;strokeColor=none;gradientColor=none;');
 				bg2.vertex = true;
@@ -466,18 +466,18 @@
 		
 		this.addPaletteFunctions('aws3Groups', 'AWS17 / Groups', false,
 		[
-			 this.createVertexTemplateEntry('rounded=1;arcSize=10;dashed=1;strokeColor=#000000;fillColor=none;gradientColor=none;dashPattern=8 3 1 3;strokeWidth=2;',
+			 this.createVertexTemplateEntry('rounded=1;arcSize=10;dashed=1;fillColor=none;gradientColor=none;dashPattern=8 3 1 3;strokeWidth=2;',
 					 s * 133, s * 133, '', 'Auto Scaling Group', null, null, this.getTagsForStencil(gn, 'auto scaling group', dt).join(' ')),
 			 this.createVertexTemplateEntry('rounded=1;arcSize=10;dashed=1;strokeColor=#F59D56;fillColor=none;gradientColor=none;dashPattern=8 4;strokeWidth=2;',
 					 s * 133, s * 133, '', 'Availability Zone', null, null, this.getTagsForStencil(gn, 'availability zone', dt).join(' ')),
-			 this.createVertexTemplateEntry('rounded=1;arcSize=10;dashed=1;strokeColor=#000000;fillColor=none;gradientColor=none;dashPattern=1 1;strokeWidth=2;',
+			 this.createVertexTemplateEntry('rounded=1;arcSize=10;dashed=1;fillColor=none;gradientColor=none;dashPattern=1 1;strokeWidth=2;',
 					 s * 133, s * 133, '', 'Region', null, null, this.getTagsForStencil(gn, 'region', dt).join(' ')),
 			 this.createVertexTemplateEntry('rounded=1;arcSize=10;dashed=1;strokeColor=#ff0000;fillColor=none;gradientColor=none;dashPattern=8 4;strokeWidth=2;',
 					 s * 133, s * 133, '', 'Security Group', null, null, this.getTagsForStencil(gn, 'security group', dt).join(' ')),
 					 
 				 this.addEntry(dt + 'elastic beanstalk container', function()
 			 {
-				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), 'rounded=1;arcSize=10;dashed=0;strokeColor=#000000;fillColor=none;gradientColor=none;strokeWidth=2;');
+				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), 'rounded=1;arcSize=10;dashed=0;fillColor=none;gradientColor=none;strokeWidth=2;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(20, 0, 30, 41), n + 'elastic_beanstalk;fillColor=#F58536;gradientColor=none;dashed=0;');
 				bg2.vertex = true;
@@ -487,7 +487,7 @@
 			 
 				 this.addEntry(dt + 'ec2 instance container', function()
 			 {
-				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), 'rounded=1;arcSize=10;dashed=0;strokeColor=#000000;fillColor=none;gradientColor=none;strokeWidth=2;');
+				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), 'rounded=1;arcSize=10;dashed=0;fillColor=none;gradientColor=none;strokeWidth=2;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(20, 0, 40, 41), n + 'instance;fillColor=#F58536;gradientColor=none;dashed=0;');
 				bg2.vertex = true;
@@ -497,7 +497,7 @@
 	
 				 this.addEntry(dt + 'vpc subnet', function()
 			 {
-				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), 'rounded=1;arcSize=10;dashed=0;strokeColor=#000000;fillColor=none;gradientColor=none;strokeWidth=2;');
+				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), 'rounded=1;arcSize=10;dashed=0;fillColor=none;gradientColor=none;strokeWidth=2;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(20, 0, 30, 35), n + 'permissions;fillColor=#D9A741;gradientColor=none;dashed=0;');
 				bg2.vertex = true;
@@ -510,7 +510,7 @@
 			 
 			 this.addEntry(dt + 'virtual private cloud', function()
 			 {
-				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), 'rounded=1;arcSize=10;dashed=0;strokeColor=#000000;fillColor=none;gradientColor=none;strokeWidth=2;');
+				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), 'rounded=1;arcSize=10;dashed=0;fillColor=none;gradientColor=none;strokeWidth=2;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(20, 0, 52, 36), n + 'virtual_private_cloud;fillColor=#F58536;gradientColor=none;dashed=0;');
 				bg2.vertex = true;
@@ -520,7 +520,7 @@
 	
 			 this.addEntry(dt + 'cloud', function()
 			 {
-				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), 'rounded=1;arcSize=10;dashed=0;strokeColor=#000000;fillColor=none;gradientColor=none;strokeWidth=2;');
+				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), 'rounded=1;arcSize=10;dashed=0;fillColor=none;gradientColor=none;strokeWidth=2;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(20, 0, 52, 36), n + 'cloud;fillColor=#F58536;gradientColor=none;dashed=0;');
 				bg2.vertex = true;
@@ -530,7 +530,7 @@
 			 
 			 this.addEntry(dt + 'corporate data center', function()
 			 {
-				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), 'rounded=1;arcSize=10;dashed=0;strokeColor=#000000;fillColor=none;gradientColor=none;strokeWidth=2;');
+				var bg1 = new mxCell('', new mxGeometry(0, 20, 200, 200), 'rounded=1;arcSize=10;dashed=0;fillColor=none;gradientColor=none;strokeWidth=2;');
 				bg1.vertex = true;
 				var bg2 = new mxCell('', new mxGeometry(20, 0, 30, 42), n + 'corporate_data_center;fillColor=#7D7C7C;gradientColor=none;dashed=0;');
 				bg2.vertex = true;

+ 4 - 4
src/main/webapp/js/diagramly/sidebar/Sidebar-AWS3D.js

@@ -29,9 +29,9 @@
 					w * 0.308, h * 0.706, '', 'Content', null, null, this.getTagsForStencil(gn, 'content', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'customerGateway;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;', 
 					w * 1.167, h * 1.028, '', 'Customer Gateway', null, null, this.getTagsForStencil(gn, 'customer gateway', dt).join(' ')),
-			this.createVertexTemplateEntry(s + 'dataCenter;fillColor=#ffffff;strokeColor=#5E5E5E;aspect=fixed;', 
+			this.createVertexTemplateEntry(s + 'dataCenter;strokeColor=#5E5E5E;aspect=fixed;', 
 					w * 1.23, h * 1.42, '', 'Data Center', null, null, this.getTagsForStencil(gn, 'data center', dt).join(' ')),
-			this.createVertexTemplateEntry(s + 'dataServer;fillColor=#ffffff;strokeColor=#5E5E5E;aspect=fixed;', 
+			this.createVertexTemplateEntry(s + 'dataServer;strokeColor=#5E5E5E;aspect=fixed;', 
 					w * 1.23, h * 1.06, '', 'Data Server', null, null, this.getTagsForStencil(gn, 'data server', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'decider;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;', 
 					w * 0.74, h * 0.5, '', 'Decider', null, null, this.getTagsForStencil(gn, 'decider', dt).join(' ')),
@@ -62,11 +62,11 @@
 		   		return sb.createVertexTemplateFromCells([bg1, bg2, bg3, bg4], 264, 204, 'Elasticache');
 			}),
 	
-			this.createVertexTemplateEntry(s + 'email;aspect=fixed;strokeColor=#292929;fillColor=#ffffff;', 
+			this.createVertexTemplateEntry(s + 'email;aspect=fixed;strokeColor=#292929;', 
 					w * 0.43, h * 0.57, '', 'Email', null, null, this.getTagsForStencil(gn, 'email', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'email_service;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;', 
 					w * 1.51, h * 1.92, '', 'Email Service', null, null, this.getTagsForStencil(gn, 'email service', dt).join(' ')),
-			this.createVertexTemplateEntry(s + 'file;aspect=fixed;strokeColor=#292929;fillColor=#ffffff;', 
+			this.createVertexTemplateEntry(s + 'file;aspect=fixed;strokeColor=#292929;', 
 					w * 0.308, h * 0.706, '', 'File', null, null, this.getTagsForStencil(gn, 'file', dt).join(' ')),
 			this.createVertexTemplateEntry(s + 'glacier;fillColor=#ECECEC;strokeColor=#5E5E5E;aspect=fixed;', 
 					w * 1.81, h * 1.92, '', 'Glacier', null, null, this.getTagsForStencil(gn, 'glacier', dt).join(' ')),

+ 6 - 6
src/main/webapp/js/diagramly/sidebar/Sidebar-Android.js

@@ -22,13 +22,13 @@
 
 		var fns =
 		[
-			this.createVertexTemplateEntry(s2 + 'phone2;fillColor=#ffffff;strokeColor=#c0c0c0;', 
+			this.createVertexTemplateEntry(s2 + 'phone2;strokeColor=#c0c0c0;', 
 					200, 390, '', 'Phone', null, null, dt + 'phone mobile portrait'),
-			this.createVertexTemplateEntry(s2 + 'phone2;fillColor=#ffffff;strokeColor=#c0c0c0;direction=south;', 
+			this.createVertexTemplateEntry(s2 + 'phone2;strokeColor=#c0c0c0;direction=south;', 
 					390, 200, '', 'Phone (landscape)', null, null, dt + 'phone mobile landscape'),
-			this.createVertexTemplateEntry(s2 + 'tab2;fillColor=#ffffff;strokeColor=#c0c0c0;', 
+			this.createVertexTemplateEntry(s2 + 'tab2;strokeColor=#c0c0c0;', 
 					472, 686, '', 'Tab', null, null, dt + 'tab tablet portrait'),
-			this.createVertexTemplateEntry(s2 + 'tab2;fillColor=#ffffff;strokeColor=#c0c0c0;direction=north;', 
+			this.createVertexTemplateEntry(s2 + 'tab2;strokeColor=#c0c0c0;direction=north;', 
 					686, 472, '', 'Tab (landscape)', null, null, dt + 'tab tablet landscape'),
 			this.createVertexTemplateEntry(s + 'action_bar;fillColor=#1A1A1A;strokeColor=#c0c0c0;strokeWidth=2;fontColor=#FFFFFF;', 
 					185, 30, '', 'Action Bar', null, null, dt + 'action bar dark portrait'),
@@ -61,7 +61,7 @@
 					
 			this.addEntry(dt + 'checkboxes checkbox', function()
 			{
-			   	var bg = new mxCell('', new mxGeometry(0, 0, 165, 50), s7 + 'transparent;strokeColor=#33b5e5;fillColor=#ffffff');
+			   	var bg = new mxCell('', new mxGeometry(0, 0, 165, 50), s7 + 'transparent;strokeColor=#33b5e5');
 			   	bg.vertex = true;
 			   	var button1 = new mxCell('Setting 1', new mxGeometry(0, 0, 165, 12.5), inh + 'shape=transparent;align=left;spacingLeft=10;fontSize=8;fontColor=#33b5e5;');
 			   	button1.vertex = true;
@@ -105,7 +105,7 @@
 				
 			this.addEntry(dt + 'radiobuttons radiobutton', function()
 			{
-			   	var bg = new mxCell('', new mxGeometry(0, 0, 165, 50), s7 + 'transparent;strokeColor=#33b5e5;fillColor=#ffffff;');
+			   	var bg = new mxCell('', new mxGeometry(0, 0, 165, 50), s7 + 'transparent;strokeColor=#33b5e5');
 			   	bg.vertex = true;
 			   	var button1 = new mxCell('Option 1', new mxGeometry(0, 0, 165, 12.5), inh + 'shape=transparent;align=left;spacingLeft=10;fontSize=8;fontColor=#33b5e5;');
 			   	button1.vertex = true;

+ 14 - 20
src/main/webapp/js/diagramly/sidebar/Sidebar-ArchiMate3.js

@@ -16,7 +16,7 @@
 	
 	Sidebar.prototype.addArchimate3ApplicationPalette = function()
 	{
-		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;strokeColor=#000000;shape=mxgraph.archimate3.';
+		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#99ffff;shape=mxgraph.archimate3.';
 
 		// Space savers
 		var sb = this;
@@ -76,8 +76,8 @@
 
 	Sidebar.prototype.addArchimate3BusinessPalette = function()
 	{
-		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;shape=mxgraph.archimate3.';
-		var am3 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;strokeColor=#000000;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.archimate3.';
+		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;shape=mxgraph.archimate3.';
+		var am3 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#ffff99;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.archimate3.';
 
 		// Space savers
 		var sb = this;
@@ -147,7 +147,7 @@
 
 	Sidebar.prototype.addArchimate3CompositePalette = function()
 	{
-		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#FFB973;strokeColor=#000000;shape=mxgraph.archimate3.';
+		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#FFB973;shape=mxgraph.archimate3.';
 
 		// Space savers
 		var sb = this;
@@ -176,8 +176,8 @@
 	
 	Sidebar.prototype.addArchimate3ImplementationAndMigrationPalette = function()
 	{
-		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#FFE0E0;strokeColor=#000000;shape=mxgraph.archimate3.';
-		var am3 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#E0FFE0;strokeColor=#000000;shape=mxgraph.archimate3.';
+		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#FFE0E0;shape=mxgraph.archimate3.';
+		var am3 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#E0FFE0;shape=mxgraph.archimate3.';
 
 		// Space savers
 		var sb = this;
@@ -214,7 +214,7 @@
 	
 	Sidebar.prototype.addArchimate3MotivationPalette = function()
 	{
-		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;shape=mxgraph.archimate3.';
+		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#CCCCFF;shape=mxgraph.archimate3.';
 
 		// Space savers
 		var sb = this;
@@ -232,9 +232,9 @@
 					w * 150, h * 75, '', 'Driver', null, null, this.getTagsForStencil(gn, '', dt + 'driver').join(' ')),
 			this.createVertexTemplateEntry(am2 + 'application;appType=assess;archiType=oct;', 
 					w * 150, h * 75, '', 'Assesment', null, null, this.getTagsForStencil(gn, '', dt + 'assessment').join(' ')),
-			this.createVertexTemplateEntry('shape=ellipse;html=1;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;perimeter=ellipsePerimeter;', 
+			this.createVertexTemplateEntry('shape=ellipse;html=1;whiteSpace=wrap;fillColor=#CCCCFF;perimeter=ellipsePerimeter;', 
 					w * 150, h * 75, '', 'Value', null, null, this.getTagsForStencil(gn, '', dt + 'value').join(' ')),
-			this.createVertexTemplateEntry('shape=cloud;html=1;whiteSpace=wrap;fillColor=#CCCCFF;strokeColor=#000000;', 
+			this.createVertexTemplateEntry('shape=cloud;html=1;whiteSpace=wrap;fillColor=#CCCCFF;', 
 					w * 150, h * 75, '', 'Meaning', null, null, this.getTagsForStencil(gn, '', dt + 'meaning').join(' ')),
 			this.createVertexTemplateEntry(am2 + 'application;appType=goal;archiType=oct;', 
 					w * 150, h * 75, '', 'Goal', null, null, this.getTagsForStencil(gn, '', dt + 'goal').join(' ')),
@@ -263,7 +263,7 @@
 	
 	Sidebar.prototype.addArchimate3PhysicalPalette = function()
 	{
-		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.';
+		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.';
 
 		// Space savers
 		var sb = this;
@@ -346,9 +346,9 @@
 					w * 160, 0, '', 'Specialization', null, this.getTagsForStencil(gn, '', dt + 'specialization').join(' ')),
 			this.createEdgeTemplateEntry('edgeStyle=elbowEdgeStyle;html=1;endArrow=none;elbow=vertical;',
 					w * 160, 0, '', 'Association', null, this.getTagsForStencil(gn, '', dt + 'association').join(' ')),
-			this.createVertexTemplateEntry('ellipse;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;fillColor=#000000;strokeColor=#000000;', 
+			this.createVertexTemplateEntry('ellipse;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;fillColor=#000000', 
 					10, 10, '', 'And Junction', null, this.getTagsForStencil(gn, '', dt + 'junction').join(' ')),
-			this.createVertexTemplateEntry('ellipse;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;fillColor=#ffffff;strokeColor=#000000;', 
+			this.createVertexTemplateEntry('ellipse;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;fillColor=#ffffff', 
 					10, 10, '', 'Or Junction', null, this.getTagsForStencil(gn, '', dt + 'junction').join(' '))
 		];
 			
@@ -363,7 +363,7 @@
 	
 	Sidebar.prototype.addArchimate3StrategyPalette = function()
 	{
-		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#F5DEAA;strokeColor=#000000;shape=mxgraph.archimate3.';
+		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#F5DEAA;shape=mxgraph.archimate3.';
 
 		// Space savers
 		var sb = this;
@@ -394,7 +394,7 @@
 	
 	Sidebar.prototype.addArchimate3TechnologyPalette = function()
 	{
-		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;strokeColor=#000000;shape=mxgraph.archimate3.';
+		var am2 = 'html=1;outlineConnect=0;whiteSpace=wrap;fillColor=#AFFFAF;shape=mxgraph.archimate3.';
 
 		// Space savers
 		var sb = this;
@@ -468,10 +468,4 @@
 					}
 		}));
 	};
-	
-	
-	
-	
-	
-	
 })();

File diff suppressed because it is too large
+ 21 - 21
src/main/webapp/js/diagramly/sidebar/Sidebar-Atlassian.js


+ 1 - 1
src/main/webapp/js/diagramly/sidebar/Sidebar-Basic.js

@@ -12,7 +12,7 @@
 		
 		this.addPaletteFunctions('basic', mxResources.get('basic'), false,
 		[
-			this.createVertexTemplateEntry(s2 + 'rect;fillColor=#ffffff;fillColor2=none;strokeColor=#000000;strokeWidth=1;size=20;indent=5;', 120, 60, '', 'Partial Rectangle'),
+			this.createVertexTemplateEntry(s2 + 'rect;fillColor2=none;strokeWidth=1;size=20;indent=5;', 120, 60, '', 'Partial Rectangle'),
 			this.createVertexTemplateEntry('shape=partialRectangle;whiteSpace=wrap;html=1;top=0;bottom=0;fillColor=none;', 120, 60, '', 'Partial Rectangle'),
 			this.createVertexTemplateEntry('shape=partialRectangle;whiteSpace=wrap;html=1;right=0;top=0;bottom=0;fillColor=none;routingCenterX=-0.5;', 120, 60, '', 'Partial Rectangle'),
 			this.createVertexTemplateEntry('shape=partialRectangle;whiteSpace=wrap;html=1;bottom=0;right=0;fillColor=none;', 120, 60, '', 'Partial Rectangle'),

File diff suppressed because it is too large
+ 78 - 78
src/main/webapp/js/diagramly/sidebar/Sidebar-Bootstrap.js


File diff suppressed because it is too large
+ 29 - 29
src/main/webapp/js/diagramly/sidebar/Sidebar-EIP.js


+ 1 - 1
src/main/webapp/js/diagramly/sidebar/Sidebar-ER.js

@@ -142,7 +142,7 @@
 				
 				return sb.createVertexTemplateFromCells([cell.clone()], cell.geometry.width, cell.geometry.height, 'Spacer');
 			}),
-			this.createVertexTemplateEntry('text;align=center;verticalAlign=middle;spacingLeft=4;spacingRight=4;strokeColor=#000000;fillColor=#e0e0e0;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=14;',
+			this.createVertexTemplateEntry('text;align=center;verticalAlign=middle;spacingLeft=4;spacingRight=4;fillColor=#e0e0e0;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;fontSize=14;',
 				80, 26, 'Title', 'Title', null, null, 'er entity relation table title label'),
 	   		this.addEntry(dt + 'table', function()
 			{

+ 32 - 32
src/main/webapp/js/diagramly/sidebar/Sidebar-Electrical.js

@@ -3,7 +3,7 @@
 	// Adds electrical stencils
 	Sidebar.prototype.addElectricalPalette = function()
 	{
-		var s = mxConstants.STYLE_VERTICAL_LABEL_POSITION + '=bottom;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;' + mxConstants.STYLE_VERTICAL_ALIGN + '=top;strokeWidth=1;' + mxConstants.STYLE_SHAPE;
+		var s = mxConstants.STYLE_VERTICAL_LABEL_POSITION + '=bottom;shadow=0;dashed=0;align=center;html=1;' + mxConstants.STYLE_VERTICAL_ALIGN + '=top;' + mxConstants.STYLE_SHAPE;
 		var mea = s + '=mxgraph.electrical.abstract.';
 		var mec = 'pointerEvents=1;' + s + '=mxgraph.electrical.capacitors.';
 		var med = 'pointerEvents=1;fillColor=#000000;' + s + '=mxgraph.electrical.diodes.';
@@ -92,10 +92,10 @@
 			this.createVertexTemplateEntry(meiecl + 'not;', 66, 80, '', 'NOT (IEC)', null, null, this.getTagsForStencil(gnmeiecl, 'xor', dtmeiecl).join(' ')),
 			this.createVertexTemplateEntry(meiecl + 'xor;', 60, 80, '', 'XOR (IEC)', null, null, this.getTagsForStencil(gnmeiecl, 'xor', dtmeiecl).join(' ')),
 			this.createVertexTemplateEntry(
-					'shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;strokeWidth=1;shape=mxgraph.electrical.logic_gates.dual_inline_ic;labelNames=a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;', 
+					'shadow=0;dashed=0;align=center;html=1;strokeWidth=1;shape=mxgraph.electrical.logic_gates.dual_inline_ic;labelNames=a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t;', 
 					100, 200, 'IC', 'Dual In-Line IC', null, null, this.getTagsForStencil(gnmel, 'dual inline in line ic integrated circuit', dtmel).join(' ')),
 			this.createVertexTemplateEntry(
-					'shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;strokeWidth=1;shape=mxgraph.electrical.logic_gates.qfp_ic;' + 
+					'shadow=0;dashed=0;align=center;html=1;strokeWidth=1;shape=mxgraph.electrical.logic_gates.qfp_ic;' + 
 					'labelNames=a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1;', 
 					200, 200, 'IC', 'Quad Flat Package IC', null, null, this.getTagsForStencil(gnmel, 'quad flat package qfp ic integrated circuit', dtmel).join(' '))
 		]);
@@ -210,7 +210,7 @@
 					100, 42, '', 'Inductor', null, null, this.getTagsForStencil(gnmei, 'inductor', dtmei).join(' ')),
 			this.createVertexTemplateEntry(mei + 'choke;', 
 					100, 200, '', 'Choke', null, null, this.getTagsForStencil(gnmei, 'choke', dtmei).join(' ')),
-			this.createVertexTemplateEntry('verticalLabelPosition=top;shadow=0;dashed=0;align=center;fillColor=#000000;strokeColor=#000000;html=1;verticalAlign=bottom;strokeWidth=1;shape=mxgraph.electrical.inductors.variometer;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=top;shadow=0;dashed=0;align=center;fillColor=#000000;html=1;verticalAlign=bottom;strokeWidth=1;shape=mxgraph.electrical.inductors.variometer;', 
 					150, 88, '', 'Variometer', null, null, this.getTagsForStencil(gnmei, 'variometer', dtmei).join(' ')),
 			this.createVertexTemplateEntry(mei + 'coaxial_choke;', 
 					300, 50, '', 'Coaxial Choke', null, null, this.getTagsForStencil(gnmei, 'coaxial choke', dtmei).join(' ')),
@@ -222,7 +222,7 @@
 					92, 40, '', 'Potential Transformer', null, null, this.getTagsForStencil(gnmei, 'potential transformer', dtmei).join(' ')),
 			this.createVertexTemplateEntry(mei + 'pot_trans_3_windings;', 
 					67, 96, '', 'Pot. Trans. 3 Windings', null, null, this.getTagsForStencil(gnmei, 'potential transformer 3 three windings', dtmei).join(' ')),
-			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#ffffff;strokeColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.signal_sources.current_source;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.signal_sources.current_source;', 
 					40, 60, '', 'Transformer', null, null, this.getTagsForStencil(gnmei, '', dtmei).join(' ')),
 			this.createVertexTemplateEntry(mei + 'adjustable_transformer;', 
 					46, 60, '', 'Adjustable Transformer', null, null, this.getTagsForStencil(gnmei, 'adjustable_transformer', dtmei).join(' ')),
@@ -276,7 +276,7 @@
 					75, 37, '', 'Safety Interlock', null, null, this.getTagsForStencil(gnmeem, 'safety interlock', dtmeem).join(' ')),
 			this.createVertexTemplateEntry(meem + 'temperature_switch;', 
 					75, 18, '', 'Temperature Switch', null, null, this.getTagsForStencil(gnmeem, 'temperature switch', dtmeem).join(' ')),
-			this.createVertexTemplateEntry('verticalLabelPosition=top;shadow=0;dashed=0;align=center;fillColor=#ffffff;strokeColor=#000000;html=1;verticalAlign=bottom;strokeWidth=1;shape=mxgraph.electrical.electro-mechanical.thermostat;fontColor=#000000;fontSize=10;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=top;shadow=0;dashed=0;align=center;html=1;verticalAlign=bottom;strokeWidth=1;shape=mxgraph.electrical.electro-mechanical.thermostat;fontSize=10;', 
 					75, 7, 'tº', 'Thermostat', null, null, this.getTagsForStencil(gnmeem, 'thermostat', dtmeem).join(' ')),
 			this.createVertexTemplateEntry(meem + 'limit_switch;', 
 					75, 16, '', 'Limit Switch', null, null, this.getTagsForStencil(gnmeem, 'limit switch', dtmeem).join(' ')),
@@ -412,11 +412,11 @@
 					60, 60, '', 'Ideal Source', null, null, this.getTagsForStencil(gnmess, 'ideal source', dtmess).join(' ')),
 			this.createVertexTemplateEntry(mess + 'explosive_squib', 
 					60, 60, '', 'Explosive Squib', null, null, this.getTagsForStencil(gnmess, 'explosive squib', dtmem).join(' ')),
-			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#000000;strokeColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.miscellaneous.monocell_battery;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.miscellaneous.monocell_battery;', 
 					100, 60, '', 'Accumulator / Monocell Battery', null, null, this.getTagsForStencil(gnmess, 'accumulator monocell battery single cell', dtmem).join(' ')),
 			this.createVertexTemplateEntry(mem + 'batteryStack;', 
 					100, 60, '', 'Battery Stack', null, null, this.getTagsForStencil(gnmess, 'battery stack', dtmess).join(' ')),
-			this.createVertexTemplateEntry('pointerEvents=1;verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#000000;strokeColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.miscellaneous.multicell_battery_tapped;', 
+			this.createVertexTemplateEntry('pointerEvents=1;verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.miscellaneous.multicell_battery_tapped;', 
 					100, 70, '', 'Multicell Battery Tapped', null, null, this.getTagsForStencil(gnmess, 'accumulator multicell battery tapped multi multiple cell', dtmem).join(' '))
 		]);
 		
@@ -454,7 +454,7 @@
 
 		this.addPaletteFunctions('electrical\Instruments', 'Electrical / Instruments', false,
 		[
-			this.createVertexTemplateEntry('verticalLabelPosition=middle;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;aspect=fixed;fontSize=50;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=middle;shadow=0;dashed=0;align=center;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;aspect=fixed;fontSize=50;', 
 					90, 90, 'A', 'Ammeter', null, null, this.getTagsForStencil(gnmein, 'ampermeter ammeter', dtmein).join(' ')),
 			this.createVertexTemplateEntry(mein + 'galvanometer;', 
 					90, 90, '', 'Galvanometer', null, null, this.getTagsForStencil(gnmein, 'galvanometer', dtmein).join(' ')),
@@ -462,7 +462,7 @@
 					90, 90, '', 'Oscilloscope', null, null, this.getTagsForStencil(gnmein, 'oscilloscope', dtmein).join(' ')),
 			this.createVertexTemplateEntry(mein + 'signal_generator;', 
 					90, 90, '', 'Signal Generator', null, null, this.getTagsForStencil(gnmein, 'signal_generator', dtmein).join(' ')),
-			this.createVertexTemplateEntry('verticalLabelPosition=middle;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;aspect=fixed;fontSize=50;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=middle;shadow=0;dashed=0;align=center;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;aspect=fixed;fontSize=50;', 
 					90, 90, 'V', 'Voltmeter', null, null, this.getTagsForStencil(gnmein, 'ampermeter ammeter', dtmein).join(' '))
 		]);
 
@@ -476,9 +476,9 @@
 					64.8, 69.78, '', 'Loop Antenna', null, null, this.getTagsForStencil(gnmer, 'loop_antenna', dtmer).join(' ')),
 			this.createVertexTemplateEntry(mem + 'loop_antenna', 
 					100, 100, '', 'Loop Antenna', null, null, this.getTagsForStencil(gnmess, 'loop antenna', dtmem).join(' ')),
-			this.createVertexTemplateEntry('verticalLabelPosition=middle;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;aspect=fixed;fontSize=35;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=middle;shadow=0;dashed=0;align=center;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;aspect=fixed;fontSize=35;', 
 					60, 60, 'M', 'Electrical Motor', null, null, this.getTagsForStencil(gnmeem, 'motor_1', dtmeem).join(' ')),
-			this.createVertexTemplateEntry(mxConstants.STYLE_SHAPE + '=mxgraph.electrical.electro-mechanical.motor_2;html=1;shadow=0;dashed=0;fillColor=#ffffff;align=center;fontSize=30;strokeColor=#000000;strokeWidth=1;', 
+			this.createVertexTemplateEntry(mxConstants.STYLE_SHAPE + '=mxgraph.electrical.electro-mechanical.motor_2;html=1;shadow=0;dashed=0;align=center;fontSize=30;strokeWidth=1;', 
 					100, 60, '', 'Motor Armature', null, null, this.getTagsForStencil(gnmeem, 'motor_2', dtmeem).join(' ')),
 			this.createVertexTemplateEntry(mem + 'co-ax;', 
 					40, 60, '', 'Co-Ax', null, null, this.getTagsForStencil(gnmem, 'co-ax', dtmem).join(' ')),
@@ -513,10 +513,10 @@
 			this.createVertexTemplateEntry(mea + 'dac;', 
 					70, 46, '', 'DAC', null, null, this.getTagsForStencil(gnmea, 'dac', dtmea).join(' ')),
 			this.createVertexTemplateEntry(
-					'shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;strokeWidth=1;shape=mxgraph.electrical.abstract.mux2;',
+					'shadow=0;dashed=0;align=center;html=1;strokeWidth=1;shape=mxgraph.electrical.abstract.mux2;',
 					80, 120, 'Mux', 'Mux', null, null, this.getTagsForStencil(gnmea, 'mux', dtmea).join(' ')),
 			this.createVertexTemplateEntry(
-					'shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;strokeWidth=1;shape=mxgraph.electrical.abstract.mux2;operation=demux;',
+					'shadow=0;dashed=0;align=center;html=1;strokeWidth=1;shape=mxgraph.electrical.abstract.mux2;operation=demux;',
 					80, 120, 'Demux', 'Demux', null, null, this.getTagsForStencil(gnmea, 'mux', dtmea).join(' ')),
 			this.createVertexTemplateEntry(mea + 'operational_amp_1;', 
 					98, 90, '', 'Operational Amp', null, null, this.getTagsForStencil(gnmea, 'operational_amp_1', dtmea).join(' ')),
@@ -532,7 +532,7 @@
 					52, 46, '', 'Quantizer', null, null, this.getTagsForStencil(gnmea, 'quantizer', dtmea).join(' ')),
 			this.createVertexTemplateEntry(mea + 'delta;', 
 					50, 50, '', 'Delta', null, null, this.getTagsForStencil(gnmea, 'delta', dtmea).join(' ')),
-			this.createVertexTemplateEntry(mxConstants.STYLE_SHAPE + '=mxgraph.electrical.abstract.function;html=1;shadow=0;dashed=0;fillColor=#ffffff;align=center;strokeColor=#000000;strokeWidth=1;fontSize=24', 
+			this.createVertexTemplateEntry(mxConstants.STYLE_SHAPE + '=mxgraph.electrical.abstract.function;html=1;shadow=0;dashed=0;align=center;strokeWidth=1;fontSize=24', 
 					50, 50, 'fn', 'Function', null, null, this.getTagsForStencil(gnmea, 'function', dtmea).join(' ')),
 			this.createVertexTemplateEntry(mea + 'integrator;', 
 					50, 50, '', 'Integrator', null, null, this.getTagsForStencil(gnmea, 'integrator', dtmea).join(' ')),
@@ -550,7 +550,7 @@
 					52, 46, '', 'Highpass Filter', null, null, this.getTagsForStencil('mxgraph.electrical.logic_gates', 'highpass_filter', '').join(' ')),
 			this.createVertexTemplateEntry(s + '=mxgraph.electrical.logic_gates.lowpass_filter;', 
 					52, 46, '', 'Lowpass Filter', null, null, this.getTagsForStencil('mxgraph.electrical.logic_gates', 'lowpass_filter', '').join(' ')),
-			this.createVertexTemplateEntry(mxConstants.STYLE_SHAPE + '=mxgraph.electrical.abstract.thermistor_with_independent_integral_heater;html=1;shadow=0;dashed=0;fillColor=#ffffff;strokeColor=#000000;strokeWidth=1;align=center;overflow=fill;fontSize=12;', 
+			this.createVertexTemplateEntry(mxConstants.STYLE_SHAPE + '=mxgraph.electrical.abstract.thermistor_with_independent_integral_heater;html=1;shadow=0;dashed=0;strokeWidth=1;align=center;overflow=fill;fontSize=12;', 
 					100, 94.25, 
 					'<table cellpadding="0" cellspacing="0" style="width:100%;height:100%;">' +
 					'<tr height="45%">' +
@@ -566,13 +566,13 @@
 			this.createVertexTemplateEntry(mess + 'vdd;fontSize=24;', 
 					60, 40, 
 					'V<sub>dd</sub>', 'Vdd', null, null, this.getTagsForStencil(gnmess, 'vdd', dtmess).join(' ')),
-			this.createVertexTemplateEntry(mxConstants.STYLE_VERTICAL_LABEL_POSITION + '=top;' + mxConstants.STYLE_VERTICAL_ALIGN + '=bottom;' + mxConstants.STYLE_SHAPE + '=mxgraph.electrical.signal_sources.vss2;shadow=0;dashed=0;fillColor=#ffffff;align=center;strokeColor=#000000;strokeWidth=1;fontSize=24;html=1;', 
+			this.createVertexTemplateEntry(mxConstants.STYLE_VERTICAL_LABEL_POSITION + '=top;' + mxConstants.STYLE_VERTICAL_ALIGN + '=bottom;' + mxConstants.STYLE_SHAPE + '=mxgraph.electrical.signal_sources.vss2;shadow=0;dashed=0;align=center;strokeWidth=1;fontSize=24;html=1;', 
 					60, 40, 
 					'V<sub>ss</sub>', 'Vss', null, null, this.getTagsForStencil(gnmess, 'vss2', dtmess).join(' ')),
-			this.createVertexTemplateEntry(mxConstants.STYLE_VERTICAL_LABEL_POSITION + '=top;' + mxConstants.STYLE_VERTICAL_ALIGN + '=bottom;' + mxConstants.STYLE_SHAPE + '=mxgraph.electrical.signal_sources.current_flow;shadow=0;dashed=0;fillColor=#ffffff;align=center;strokeColor=#000000;strokeWidth=1;fontSize=10;html=1;', 
+			this.createVertexTemplateEntry(mxConstants.STYLE_VERTICAL_LABEL_POSITION + '=top;' + mxConstants.STYLE_VERTICAL_ALIGN + '=bottom;' + mxConstants.STYLE_SHAPE + '=mxgraph.electrical.signal_sources.current_flow;shadow=0;dashed=0;align=center;strokeWidth=1;fontSize=10;html=1;', 
 					70, 10, 
 					'5 mA',	'Current Flow', null, null, this.getTagsForStencil(gnmess, 'current_flow', dtmess).join(' ')),
-			this.createVertexTemplateEntry(mxConstants.STYLE_LABEL_POSITION + '=right;' + mxConstants.STYLE_ALIGN + '=left;' + mxConstants.STYLE_SHAPE + '=mxgraph.electrical.signal_sources.voltage;shadow=0;dashed=0;fillColor=#ffffff;strokeColor=#000000;strokeWidth=1;fontSize=10;html=1;', 
+			this.createVertexTemplateEntry(mxConstants.STYLE_LABEL_POSITION + '=right;' + mxConstants.STYLE_ALIGN + '=left;' + mxConstants.STYLE_SHAPE + '=mxgraph.electrical.signal_sources.voltage;shadow=0;dashed=0;strokeWidth=1;fontSize=10;html=1;', 
 					10, 70, 
 					'1.2 V', 'Voltage', null, null, this.getTagsForStencil(gnmess, 'voltage', dtmess).join(' ')),
 			this.createVertexTemplateEntry(mess + 'equipotential;', 
@@ -593,7 +593,7 @@
 					100, 32, '', 'Thermal Element', null, null, this.getTagsForStencil(gnmess, 'thermal element', dtmem).join(' ')),
 			this.createVertexTemplateEntry(mem + 'igniter_plug', 
 					72, 39, '', 'Igniter Plug', null, null, this.getTagsForStencil(gnmess, 'igniter plug', dtmem).join(' ')),
-			this.createVertexTemplateEntry('shape=mxgraph.arrows2.arrow;verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;verticalAlign=top;strokeWidth=1;dy=0;dx=10;notch=0;', 
+			this.createVertexTemplateEntry('shape=mxgraph.arrows2.arrow;verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;html=1;verticalAlign=top;strokeWidth=1;dy=0;dx=10;notch=0;', 
 					100, 30, '', 'Pickup Head', null, null, this.getTagsForStencil(gnmess, 'pickup head', dtmem).join(' ')),
 			this.createVertexTemplateEntry(mem + 'squib_ignitor', 
 					100, 100, '', 'Squib Ignitor', null, null, this.getTagsForStencil(gnmess, 'squib ignitor', dtmem).join(' ')),
@@ -609,7 +609,7 @@
 					70, 20, '', 'Surge Protector', null, null, this.getTagsForStencil(gnmess, 'surge protector', dtmem).join(' ')),
 			this.createVertexTemplateEntry(mem + 'surge_protector_2;', 
 					70, 24, '', 'Surge Protector', null, null, this.getTagsForStencil(gnmess, 'surge protector', dtmem).join(' ')),
-			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;verticalAlign=top;strokeWidth=1;shape=rect;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;html=1;verticalAlign=top;strokeWidth=1;shape=rect;', 
 					130, 50, '', 'Material', null, null, this.getTagsForStencil(gnmess, 'material', dtmem).join(' ')),
 			this.createVertexTemplateEntry(mem + 'sensing_link_squib', 
 					130, 40, '', 'Sensing Link Squib', null, null, this.getTagsForStencil(gnmess, 'sensing link squib', dtmem).join(' ')),
@@ -619,11 +619,11 @@
 					80, 50, '', 'Buzzer', null, null, this.getTagsForStencil(gnmess, 'buzzer', dtmer).join(' ')),
 			this.createVertexTemplateEntry(mem + 'adapter', 
 					100, 40, '', 'Adapter', null, null, this.getTagsForStencil(gnmess, 'adapter', dtmer).join(' ')),
-			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;verticalAlign=top;strokeWidth=1;shape=ellipse;perimeter=ellipsePerimeter;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;html=1;verticalAlign=top;strokeWidth=1;shape=ellipse;perimeter=ellipsePerimeter;', 
 					15, 15, '', 'Circuit Terminal', null, null, this.getTagsForStencil(gnmess, 'circuit terminal', dtmer).join(' ')),
-			this.createEdgeTemplateEntry('endArrow=open;html=1;strokeColor=#000000;strokeWidth=1;endFill=0;endSize=20;',
+			this.createEdgeTemplateEntry('endArrow=open;html=1;strokeWidth=1;endFill=0;endSize=20;',
 					100, 0, '', 'M/F Contact', null, this.getTagsForStencil(gnmess, '', 'mf contact').join(' ')),
-			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#000000;strokeColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.miscellaneous.mf_contact_2', 
+			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=mxgraph.electrical.miscellaneous.mf_contact_2', 
 					100, 10, '', 'MF Contact 2', null, null, this.getTagsForStencil(gnmess, 'mf contact', dtmer).join(' ')),
 			this.createVertexTemplateEntry(mem + 'terminal_board', 
 					75, 150, '', 'Terminal Board', null, null, this.getTagsForStencil(gnmess, 'terminal board', dtmer).join(' ')),
@@ -785,7 +785,7 @@
 		
 		this.addPaletteFunctions('electrical\RotMech', 'Electrical / Rotating Equipment & Mechanical Functions', false,
 		[
-			this.createVertexTemplateEntry('verticalLabelPosition=middle;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;fontSize=32;fontColor=#000000;perimeter=ellipsePerimeter;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=middle;shadow=0;dashed=0;align=center;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;fontSize=32;perimeter=ellipsePerimeter;', 
 					100, 100, 'M', 'Rotating Machine', null, null, this.getTagsForStencil(gnmerm, 'rotating machine', dtmerm).join(' ')),
 			this.createVertexTemplateEntry(merm + 'armature;pointerEvents=1;', 
 					100, 100, '', 'Armature', null, null, this.getTagsForStencil(gnmerm, 'armature', dtmerm).join(' ')),
@@ -797,7 +797,7 @@
 					100, 100, '', 'Winding Connection', null, null, this.getTagsForStencil(gnmerm, 'winding connection', dtmerm).join(' ')),
 			this.createVertexTemplateEntry(merm + 'synchro;', 
 					80, 100, '', 'Synchro', null, null, this.getTagsForStencil(gnmerm, 'synchro', dtmerm).join(' ')),
-			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#ffffff;html=1;verticalAlign=top;strokeWidth=1;shape=trapezoid;perimeter=none;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;html=1;verticalAlign=top;strokeWidth=1;shape=trapezoid;perimeter=none;', 
 					75, 25, '', 'Brake', null, null, this.getTagsForStencil(gnmerm, 'brake', dtmerm).join(' ')),
 			this.createVertexTemplateEntry(merm + 'gearing;pointerEvents=1;', 
 					100, 64, '', 'Gearing', null, null, this.getTagsForStencil(gnmerm, 'gearing', dtmerm).join(' ')),
@@ -837,11 +837,11 @@
 					130, 136, '', 'Overground Enclosure', null, null, this.getTagsForStencil(gnmetr, 'overground enclosure', dtmetr).join(' ')),
 			this.createVertexTemplateEntry(metr + 'optical_fiber;', 
 					130, 80, '', 'Optical Fiber', null, null, this.getTagsForStencil(gnmetr, 'optical fiber', dtmetr).join(' ')),
-			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;fillColor=#ffffff;strokeColor=#000000;html=1;verticalAlign=top;strokeWidth=1;shape=ellipse;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=bottom;shadow=0;dashed=0;align=center;html=1;verticalAlign=top;strokeWidth=1;shape=ellipse;', 
 					10, 10, '', 'Terminal', null, null, this.getTagsForStencil(gnmetr, 'terminal', dtmetr).join(' ')),
 			this.createVertexTemplateEntry(metr + 'terminal_3_phase;pointerEvents=1;', 
 					43, 10, '', 'Terminal 3 Phase', null, null, this.getTagsForStencil(gnmetr, 'Terminal 3 Phase', dtmetr).join(' ')),
-			this.createVertexTemplateEntry('verticalLabelPosition=middle;shadow=0;dashed=0;align=center;fillColor=#ffffff;strokeColor=#000000;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;fontColor=#000000;fontSize=50;fontStyle=1;perimeter=ellipsePerimeter;', 
+			this.createVertexTemplateEntry('verticalLabelPosition=middle;shadow=0;dashed=0;align=center;html=1;verticalAlign=middle;strokeWidth=1;shape=ellipse;fontSize=50;fontStyle=1;perimeter=ellipsePerimeter;', 
 					130, 130, 'T', 'Terminal', null, null, this.getTagsForStencil(gnmetr, 'terminal', dtmetr).join(' ')),
 			this.createVertexTemplateEntry(metr + 'line_cable;', 
 					130, 60, '', 'Line/Cable', null, null, this.getTagsForStencil(gnmetr, 'line cable', dtmetr).join(' ')),
@@ -849,15 +849,15 @@
 					130, 88, '', 'Anticreepage Device', null, null, this.getTagsForStencil(gnmetr, 'anticreepage device', dtmetr).join(' ')),
 			this.createVertexTemplateEntry(metr + 'testPoint;', 
 					60, 130, '', 'Test Point', null, null, this.getTagsForStencil(gnmetr, 'test point', dtmetr).join(' ')),
-			this.createEdgeTemplateEntry('endArrow=none;html=1;strokeColor=#000000;strokeWidth=1;',
+			this.createEdgeTemplateEntry('endArrow=none;html=1;strokeWidth=1;',
 					100, 0, '', 'Transmission Path', null, this.getTagsForStencil(gnmess, '', 'transmission path').join(' ')),
-			this.createEdgeTemplateEntry('endArrow=classicThin;html=1;strokeColor=#000000;strokeWidth=1;endSize=20;',
+			this.createEdgeTemplateEntry('endArrow=classicThin;html=1;strokeWidth=1;endSize=20;',
 					100, 0, '', 'Direction of Flow', null, this.getTagsForStencil(gnmess, '', 'direction flow').join(' ')),
 			this.createVertexTemplateEntry(metr + 'straightBus;', 
 					90, 130, '', 'Straight Bus', null, null, this.getTagsForStencil(gnmetr, 'straight bus', dtmetr).join(' ')),
-			this.createVertexTemplateEntry('html=1;shadow=0;dashed=0;align=center;verticalAlign=middle;shape=mxgraph.arrows2.bendArrow;dy=15;dx=38;notch=0;arrowHead=55;rounded=0;strokeColor=#000000;strokeWidth=1;fillColor=#FFFFFF;', 
+			this.createVertexTemplateEntry('html=1;shadow=0;dashed=0;align=center;verticalAlign=middle;shape=mxgraph.arrows2.bendArrow;dy=15;dx=38;notch=0;arrowHead=55;rounded=0;strokeWidth=1', 
 					130, 130, '', 'Elbow Bus', null, null, this.getTagsForStencil(gnmetr, 'elbow bus', dtmetr).join(' ')),
-			this.createVertexTemplateEntry('html=1;shadow=0;dashed=0;align=center;verticalAlign=middle;shape=mxgraph.arrows2.bendArrow;dy=15;dx=38;notch=0;arrowHead=55;rounded=0;strokeColor=#000000;strokeWidth=1;fillColor=#FFFFFF;flipH=1;', 
+			this.createVertexTemplateEntry('html=1;shadow=0;dashed=0;align=center;verticalAlign=middle;shape=mxgraph.arrows2.bendArrow;dy=15;dx=38;notch=0;arrowHead=55;rounded=0;strokeWidth=1;flipH=1;', 
 					130, 130, '', 'Elbow Bus', null, null, this.getTagsForStencil(gnmetr, 'elbow bus', dtmetr).join(' ')),
 			this.createVertexTemplateEntry(metr + '2_line_bus;', 
 					130, 25, '', '2-Line Bus', null, null, this.getTagsForStencil(gnmetr, '2 two line bus', dtmetr).join(' ')),

File diff suppressed because it is too large
+ 1 - 1
src/main/webapp/js/extensions.min.js


File diff suppressed because it is too large
+ 798 - 796
src/main/webapp/js/viewer.min.js


+ 51 - 31
src/main/webapp/plugins/number.js

@@ -7,39 +7,66 @@ Draw.loadPlugin(function(ui) {
 	var enabled = true;
 	var counter = 0;
 	
-	// Creates the shape for the shape number and puts it into the draw pane
-	var redrawShape = graph.cellRenderer.redrawShape;
-	graph.cellRenderer.redrawShape = function(state, force, rendering)
+	var graphViewResetValidationState = graph.view.resetValidationState;
+	
+	graph.view.resetValidationState = function()
+	{
+		graphViewResetValidationState.apply(this, arguments);
+		this.numberCounter = 0;
+	};
+	
+	var graphViewValidateCellState = graph.view.validateCellState;
+	
+	graph.view.validateCellState = function(cell, recurse)
+	{
+		var state = graphViewValidateCellState.apply(this, arguments);
+		recurse = (recurse != null) ? recurse : true;
+		
+		if (recurse && state != null && graph.model.isVertex(state.cell) &&
+			mxUtils.getValue(state.style, 'numbered', 1) == 1)
+		{
+			this.numberCounter++;
+			this.redrawNumberShape(state);
+		}
+	};
+	
+	graph.view.redrawNumberShape = function(state)
 	{
-		var result = redrawShape.apply(this, arguments);
+		var numbered = mxUtils.getValue(state.style, 'numbered', 1) == 1;
+		var value = '<div style="padding:2px;border:1px solid gray;background:yellow;border-radius:2px;">' +
+			(this.numberCounter) + '</div>';
 
-		if (result && enabled && graph.model.isVertex(state.cell))
+		if (enabled && numbered && graph.model.isVertex(state.cell) &&
+			state.shape != null && state.secondLabel == null)
 		{
-			if (state.shape != null && state.secondLabel == null)
-			{
-				var value = '<div style="padding:2px;border:1px solid gray;background:yellow;border-radius:2px;">' + (++counter) + '</div>';
-				state.secondLabel = new mxText(value, new mxRectangle(),
-						mxConstants.ALIGN_LEFT, mxConstants.ALIGN_BOTTOM);
+			state.secondLabel = new mxText(value, new mxRectangle(),
+					mxConstants.ALIGN_LEFT, mxConstants.ALIGN_BOTTOM);
 
-				// Styles the label
-				state.secondLabel.size = 12;
-				state.secondLabel.dialect = state.shape.dialect;
-				state.secondLabel.dialect = mxConstants.DIALECT_STRICTHTML;
-				graph.cellRenderer.initializeLabel(state, state.secondLabel);
-			}
+			// Styles the label
+			state.secondLabel.size = 12;
+			state.secondLabel.dialect = mxConstants.DIALECT_STRICTHTML;
+			graph.cellRenderer.initializeLabel(state, state.secondLabel);
 		}
 		
 		if (state.secondLabel != null)
 		{
-			var scale = graph.getView().getScale();
-			var bounds = new mxRectangle(state.x + state.width - 4 * scale, state.y + 4 * scale, 0, 0);
-			state.secondLabel.state = state;
-			state.secondLabel.scale = scale;
-			state.secondLabel.bounds = bounds;
-			state.secondLabel.redraw();
+			if (!numbered)
+			{
+				state.secondLabel.destroy();
+				state.secondLabel = null;
+			}
+			else
+			{
+				var scale = graph.getView().getScale();
+				var bounds = new mxRectangle(state.x + state.width - 4 * scale, state.y + 4 * scale, 0, 0);
+				state.secondLabel.value = value;
+				state.secondLabel.state = state;
+				state.secondLabel.scale = scale;
+				state.secondLabel.bounds = bounds;
+				state.secondLabel.redraw();
+				console.log('redraw', state, this.numberCounter, value);
+			}	
 		}
-		
-		return result;
 	};
 
 	// Destroys the shape number
@@ -60,13 +87,6 @@ Draw.loadPlugin(function(ui) {
 		return [state.shape, state.text, state.secondLabel, state.control];
 	};
 	
-	var validate = graph.view.validate;
-	graph.view.validate = function()
-	{
-		counter = 0;
-		validate.apply(this, arguments);
-	};
-	
 	// Extends View menu
 	mxResources.parse('number=Number');
 

File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/business/archimate.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/business/ishikawa_1.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/business/pert_1.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/business/pert_2.xml


File diff suppressed because it is too large
+ 1 - 1
src/main/webapp/templates/business/timeline_4.xml


File diff suppressed because it is too large
+ 1 - 1
src/main/webapp/templates/charts/bar_chart_1.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/charts/org_chart_2.xml


File diff suppressed because it is too large
+ 1 - 1
src/main/webapp/templates/cloud/aws_1.xml


File diff suppressed because it is too large
+ 1 - 1
src/main/webapp/templates/cloud/aws_10.xml


File diff suppressed because it is too large
+ 1 - 1
src/main/webapp/templates/cloud/aws_2.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/cloud/aws_3d.xml


File diff suppressed because it is too large
+ 1 - 1
src/main/webapp/templates/cloud/aws_5.xml


File diff suppressed because it is too large
+ 1 - 1
src/main/webapp/templates/cloud/aws_8.xml


File diff suppressed because it is too large
+ 1 - 1
src/main/webapp/templates/cloud/ibm_vpc_architecture.xml


File diff suppressed because it is too large
+ 1 - 1
src/main/webapp/templates/engineering/cabinet.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/engineering/electrical_1.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/engineering/electrical_2.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/flowcharts/cross_functional_flowchart_1.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/flowcharts/cross_functional_flowchart_2.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/flowcharts/data_flow_1.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/flowcharts/data_flow_2.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/flowcharts/epc.xml


File diff suppressed because it is too large
+ 1 - 1
src/main/webapp/templates/flowcharts/flowchart_2.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/flowcharts/workflow_1.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/layout/bootstrap.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/layout/wireframe_1.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/layout/wireframe_2.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/maps/concept_map_1.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/maps/concept_map_2.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/network/active_directory.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/network/cisco_2.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/network/wireless_home_network.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/other/decision_tree.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/other/floor_plan.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/other/infographic_1.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/other/lan_plan.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/software/class_1.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/software/class_2.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/software/component.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/software/data_flow_1.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/software/database_2.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/software/database_3.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/software/eip.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/software/entity_relationship.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/tables/authority_matrix.xml


File diff suppressed because it is too large
+ 1 - 1
src/main/webapp/templates/tables/gantt_2.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/tables/gantt_3.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/uml/activity_diagram_2.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/uml/sequence_1.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/uml/state_machine.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/uml/sysml.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/uml/uml_1.xml


File diff suppressed because it is too large
+ 1 - 1
src/main/webapp/templates/uml/uml_2.xml


File diff suppressed because it is too large
+ 1 - 2
src/main/webapp/templates/venn/spider_1.xml