Bladeren bron

11.2.5 release

David Benson [draw.io] 6 jaren geleden
bovenliggende
commit
2bfe99c0f4

+ 4 - 0
ChangeLog

@@ -1,3 +1,7 @@
+03-SEP-2019: 11.2.5
+
+- Updates MSCAE stencils
+
 29-AUG-2019: 11.2.4
 
 - Fixes segment connector rounding issue

+ 1 - 1
VERSION

@@ -1 +1 @@
-11.2.4
+11.2.5

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

@@ -1,7 +1,7 @@
 CACHE MANIFEST
 
 # THIS FILE WAS GENERATED. DO NOT MODIFY!
-# 08/29/2019 10:27 AM
+# 09/03/2019 04:46 PM
 
 app.html
 index.html?offline=1

File diff suppressed because it is too large
+ 55 - 0
src/main/webapp/img/lib/mscae/Cloud_Cycle.svg


+ 270 - 0
src/main/webapp/img/lib/mscae/DC_OS.svg

@@ -0,0 +1,270 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 20.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<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"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Layer_1"
+   x="0px"
+   y="0px"
+   width="40.081249"
+   height="50.001499"
+   viewBox="0 0 40.081249 50.001499"
+   enable-background="new 0 0 50 50"
+   xml:space="preserve"
+   sodipodi:docname="Logo-DC-OS.svg"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)"><metadata
+   id="metadata325"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+   id="defs323" /><sodipodi:namedview
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1"
+   objecttolerance="10"
+   gridtolerance="10"
+   guidetolerance="10"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="1920"
+   inkscape:window-height="1017"
+   id="namedview321"
+   showgrid="false"
+   fit-margin-top="0"
+   fit-margin-left="0"
+   fit-margin-right="0"
+   fit-margin-bottom="0"
+   inkscape:zoom="17"
+   inkscape:cx="20.0415"
+   inkscape:cy="25"
+   inkscape:window-x="1912"
+   inkscape:window-y="-8"
+   inkscape:window-maximized="1"
+   inkscape:current-layer="Layer_1" />
+<linearGradient
+   id="path-2_2_"
+   gradientUnits="userSpaceOnUse"
+   x1="1.0375"
+   y1="51.233601"
+   x2="1.0375"
+   y2="51.170898"
+   gradientTransform="matrix(640,0,0,-640,-639.0002,32799.398)">
+	<stop
+   offset="0"
+   style="stop-color:#7540B7"
+   id="stop260" />
+	<stop
+   offset="1"
+   style="stop-color:#9351E5"
+   id="stop262" />
+</linearGradient>
+<path
+   id="path-2_1_"
+   d="m 19.7585,49.8845 -19.64,-19.64 c -0.157,-0.157 -0.157,-0.41 0,-0.567 l 19.639,-19.639 c 0.157,-0.157 0.41,-0.157 0.567,0 l 19.639,19.639 c 0.157,0.157 0.157,0.41 0,0.567 l -19.639,19.64 c -0.156,0.156 -0.41,0.156 -0.566,0"
+   inkscape:connector-curvature="0"
+   style="fill:url(#path-2_2_)" />
+<linearGradient
+   id="Fill-11_2_"
+   gradientUnits="userSpaceOnUse"
+   x1="-0.072300002"
+   y1="53.336601"
+   x2="-0.072300002"
+   y2="53.3992"
+   gradientTransform="matrix(188.2576,0,0,-188.2592,38.6136,10082.997)">
+	<stop
+   offset="0"
+   style="stop-color:#E9DCF9"
+   id="stop266" />
+	<stop
+   offset="1"
+   style="stop-color:#FFFFFF"
+   id="stop268" />
+</linearGradient>
+<path
+   id="Fill-11_1_"
+   d="m 20.3275,30.2285 c -0.158,-0.158 -0.414,-0.158 -0.572,0 l -5.491,5.491 c -0.158,0.158 -0.158,0.414 0,0.572 l 5.491,5.491 c 0.158,0.158 0.414,0.158 0.572,0 l 5.491,-5.491 c 0.158,-0.158 0.158,-0.414 0,-0.572 z"
+   inkscape:connector-curvature="0"
+   style="fill:url(#Fill-11_2_)" />
+<linearGradient
+   id="Path_1_"
+   gradientUnits="userSpaceOnUse"
+   x1="-0.63459998"
+   y1="52.7743"
+   x2="-0.63459998"
+   y2="52.836899"
+   gradientTransform="matrix(188.2592,0,0,-188.2568,151.5472,9969.9434)">
+	<stop
+   offset="0"
+   style="stop-color:#DECBF7"
+   id="stop272" />
+	<stop
+   offset="1"
+   style="stop-color:#F4EDFC"
+   id="stop274" />
+</linearGradient>
+<path
+   id="Path_8_"
+   d="m 27.3995,23.1565 c -0.158,-0.158 -0.414,-0.158 -0.572,0 l -5.491,5.491 c -0.158,0.158 -0.158,0.414 0,0.572 l 5.491,5.491 c 0.158,0.158 0.414,0.158 0.572,0 l 5.491,-5.491 c 0.158,-0.158 0.158,-0.414 0,-0.572 z"
+   inkscape:connector-curvature="0"
+   style="fill:url(#Path_1_)" />
+<linearGradient
+   id="Path_2_"
+   gradientUnits="userSpaceOnUse"
+   x1="0.49000001"
+   y1="52.7743"
+   x2="0.49000001"
+   y2="52.836899"
+   gradientTransform="matrix(188.2592,0,0,-188.2568,-74.3248,9969.9434)">
+	<stop
+   offset="0"
+   style="stop-color:#DECBF7"
+   id="stop278" />
+	<stop
+   offset="1"
+   style="stop-color:#F4EDFC"
+   id="stop280" />
+</linearGradient>
+<path
+   id="Path_9_"
+   d="m 18.7455,28.6475 -5.491,-5.491 c -0.158,-0.158 -0.414,-0.158 -0.572,0 l -5.491,5.491 c -0.158,0.158 -0.158,0.414 0,0.572 l 5.491,5.491 c 0.158,0.158 0.414,0.158 0.572,0 l 5.491,-5.491 c 0.158,-0.159 0.158,-0.415 0,-0.572 z"
+   inkscape:connector-curvature="0"
+   style="fill:url(#Path_2_)" />
+<linearGradient
+   id="Path_3_"
+   gradientUnits="userSpaceOnUse"
+   x1="-1.197"
+   y1="52.274601"
+   x2="-1.197"
+   y2="52.212002"
+   gradientTransform="matrix(188.2568,0,0,-188.2568,264.4864,9857.0068)">
+	<stop
+   offset="0"
+   style="stop-color:#D3B9F4"
+   id="stop284" />
+	<stop
+   offset="1"
+   style="stop-color:#BE96EF"
+   id="stop286" />
+</linearGradient>
+<path
+   id="Path_10_"
+   d="m 39.9635,21.5745 -5.491,-5.491 c -0.158,-0.158 -0.414,-0.158 -0.572,0 l -5.491,5.491 c -0.158,0.158 -0.158,0.414 0,0.572 l 5.491,5.491 c 0.158,0.158 0.414,0.158 0.572,0 l 5.491,-5.491 c 0.157,-0.158 0.157,-0.414 0,-0.572 z"
+   inkscape:connector-curvature="0"
+   style="fill:url(#Path_3_)" />
+<linearGradient
+   id="Path_4_"
+   gradientUnits="userSpaceOnUse"
+   x1="-0.072300002"
+   y1="52.274601"
+   x2="-0.072300002"
+   y2="52.212002"
+   gradientTransform="matrix(188.2576,0,0,-188.2568,38.6136,9857.0068)">
+	<stop
+   offset="0"
+   style="stop-color:#D3B9F4"
+   id="stop290" />
+	<stop
+   offset="1"
+   style="stop-color:#BE96EF"
+   id="stop292" />
+</linearGradient>
+<path
+   id="Path_11_"
+   d="m 19.7555,16.0835 -5.491,5.491 c -0.158,0.158 -0.158,0.414 0,0.572 l 5.491,5.491 c 0.158,0.158 0.414,0.158 0.572,0 l 5.491,-5.491 c 0.158,-0.158 0.158,-0.414 0,-0.572 l -5.491,-5.491 c -0.158,-0.158 -0.414,-0.158 -0.572,0 z"
+   inkscape:connector-curvature="0"
+   style="fill:url(#Path_4_)" />
+<linearGradient
+   id="Path_5_"
+   gradientUnits="userSpaceOnUse"
+   x1="1.0523"
+   y1="52.274601"
+   x2="1.0523"
+   y2="52.212002"
+   gradientTransform="matrix(188.2568,0,0,-188.2568,-187.2568,9857.0068)">
+	<stop
+   offset="0"
+   style="stop-color:#D3B9F4"
+   id="stop296" />
+	<stop
+   offset="1"
+   style="stop-color:#BE96EF"
+   id="stop298" />
+</linearGradient>
+<path
+   id="Path_12_"
+   d="m 11.6725,22.1465 -5.491,5.491 c -0.158,0.158 -0.414,0.158 -0.572,0 l -5.491,-5.491 c -0.158,-0.158 -0.158,-0.414 0,-0.572 l 5.491,-5.491 c 0.158,-0.158 0.414,-0.158 0.572,0 l 5.491,5.491 c 0.158,0.158 0.158,0.414 0,0.572 z"
+   inkscape:connector-curvature="0"
+   style="fill:url(#Path_5_)" />
+<linearGradient
+   id="Path_6_"
+   gradientUnits="userSpaceOnUse"
+   x1="-0.63459998"
+   y1="51.648102"
+   x2="-0.63459998"
+   y2="51.585499"
+   gradientTransform="matrix(188.2592,0,0,-188.2592,151.5472,9731.3135)">
+	<stop
+   offset="0"
+   style="stop-color:#BE96EF"
+   id="stop302" />
+	<stop
+   offset="1"
+   style="stop-color:#A873EA"
+   id="stop304" />
+</linearGradient>
+<path
+   id="Path_13_"
+   d="m 21.3375,14.2665 5.491,5.491 c 0.158,0.158 0.414,0.158 0.572,0 l 5.491,-5.491 c 0.158,-0.158 0.158,-0.414 0,-0.572 l -5.491,-5.491 c -0.158,-0.158 -0.414,-0.158 -0.572,0 l -5.491,5.491 c -0.158,0.159 -0.158,0.414 0,0.572 z"
+   inkscape:connector-curvature="0"
+   style="fill:url(#Path_6_)" />
+<linearGradient
+   id="Path_7_"
+   gradientUnits="userSpaceOnUse"
+   x1="0.49000001"
+   y1="51.648102"
+   x2="0.49000001"
+   y2="51.585499"
+   gradientTransform="matrix(188.2592,0,0,-188.2592,-74.3248,9731.3135)">
+	<stop
+   offset="0"
+   style="stop-color:#BE96EF"
+   id="stop308" />
+	<stop
+   offset="1"
+   style="stop-color:#A873EA"
+   id="stop310" />
+</linearGradient>
+<path
+   id="Path_14_"
+   d="m 12.6835,19.7575 c 0.158,0.158 0.414,0.158 0.572,0 l 5.491,-5.491 c 0.158,-0.158 0.158,-0.414 0,-0.572 l -5.491,-5.491 c -0.158,-0.158 -0.414,-0.158 -0.572,0 l -5.491,5.491 c -0.158,0.158 -0.158,0.414 0,0.572 z"
+   inkscape:connector-curvature="0"
+   style="fill:url(#Path_7_)" />
+<linearGradient
+   id="Path_16_"
+   gradientUnits="userSpaceOnUse"
+   x1="-0.072300002"
+   y1="51.005299"
+   x2="-0.072300002"
+   y2="50.942699"
+   gradientTransform="matrix(188.2576,0,0,-188.2568,38.6136,9602.0957)">
+	<stop
+   offset="0"
+   style="stop-color:#A873EA"
+   id="stop314" />
+	<stop
+   offset="1"
+   style="stop-color:#9351E5"
+   id="stop316" />
+</linearGradient>
+<path
+   id="Path_15_"
+   d="m 19.7555,11.6725 c 0.158,0.158 0.414,0.158 0.572,0 l 5.491,-5.491 c 0.158,-0.158 0.158,-0.414 0,-0.572 l -5.491,-5.491 c -0.158,-0.158 -0.414,-0.158 -0.572,0 l -5.491,5.491 c -0.158,0.158 -0.158,0.414 0,0.572 z"
+   inkscape:connector-curvature="0"
+   style="fill:url(#Path_16_)" />
+</svg>

File diff suppressed because it is too large
+ 150 - 0
src/main/webapp/img/lib/mscae/Docker.svg


File diff suppressed because it is too large
+ 85 - 0
src/main/webapp/img/lib/mscae/Kubernetes.svg


+ 112 - 0
src/main/webapp/img/lib/mscae/OpenShift.svg

@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<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"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Layer_2_1_"
+   x="0px"
+   y="0px"
+   width="50.001999"
+   height="45.557266"
+   viewBox="0 0 50.001999 45.557266"
+   enable-background="new 0 0 50 50"
+   xml:space="preserve"
+   sodipodi:docname="Azure OpenShift.svg"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)"><metadata
+   id="metadata6595"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+   id="defs6593" /><sodipodi:namedview
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1"
+   objecttolerance="10"
+   gridtolerance="10"
+   guidetolerance="10"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="1920"
+   inkscape:window-height="1017"
+   id="namedview6591"
+   showgrid="false"
+   fit-margin-top="0"
+   fit-margin-left="0"
+   fit-margin-right="0"
+   fit-margin-bottom="0"
+   inkscape:zoom="12.020815"
+   inkscape:cx="22.481001"
+   inkscape:cy="15.81429"
+   inkscape:window-x="1912"
+   inkscape:window-y="-8"
+   inkscape:window-maximized="1"
+   inkscape:current-layer="Layer_2_1_" />
+<g
+   id="g6568"
+   transform="translate(-0.111,-2.2218527)">
+	<path
+   d="m 6.76,24.653 c 0.045,1.402 0.223,2.814 0.538,4.221 l 7.677,-2.632 c -0.237,-1.48 -0.242,-2.958 -0.036,-4.393 z"
+   id="path6564"
+   inkscape:connector-curvature="0"
+   style="fill:#ba141a" />
+	<path
+   d="m 47.948,10.534 -8.179,2.804 c 1.043,1.007 1.946,2.178 2.667,3.491 l 7.677,-2.632 c -0.616,-1.304 -1.341,-2.529 -2.165,-3.663 z"
+   id="path6566"
+   inkscape:connector-curvature="0"
+   style="fill:#ba141a" />
+</g>
+<g
+   id="g6574"
+   transform="translate(-0.111,-2.2218527)">
+	<path
+   d="m 36.279,21.614 c 0.668,1.95 0.903,3.944 0.757,5.877 l 8.019,-2.749 c -0.14,-1.911 -0.523,-3.836 -1.174,-5.734 -0.277,-0.809 -0.6,-1.591 -0.956,-2.347 l -7.677,2.632 c 0.403,0.731 0.751,1.505 1.031,2.321 z"
+   id="path6570"
+   inkscape:connector-curvature="0"
+   style="fill:#ba141a" />
+	<path
+   d="M 8.4,31.171 C 8.12,30.354 7.92,29.53 7.788,28.706 l -7.677,2.632 c 0.183,0.816 0.408,1.631 0.685,2.44 0.651,1.898 1.529,3.653 2.591,5.248 l 8.019,-2.749 C 10.107,34.839 9.069,33.121 8.4,31.171 Z"
+   id="path6572"
+   inkscape:connector-curvature="0"
+   style="fill:#ba141a" />
+</g>
+<path
+   d="m 40.883,23.876147 c -0.429,5.698 -4.17,10.87 -9.918,12.841 -5.748,1.971 -11.876,0.182 -15.71,-4.055 l -8.019,2.749 c 5.595,8.405 16.336,12.337 26.336,8.91 10,-3.427 16.07,-13.123 15.331,-23.193 z"
+   id="path6576"
+   inkscape:connector-curvature="0"
+   style="fill:#ba141a" />
+<path
+   d="m 11.601,20.697147 c 0.76,-5.303 4.391,-10.002 9.807,-11.8579997 5.416,-1.856 11.166,-0.374 15.019,3.3479997 l 8.178,-2.8029997 c -5.724,-7.877 -16.112,-11.47 -25.804,-8.148 C 9.109,4.5581473 3.11,13.768147 3.423,23.500147 Z"
+   id="path6578"
+   inkscape:connector-curvature="0"
+   style="fill:#ba141a" />
+<path
+   d="m 14.692,21.402147 c 0.012,-0.597 0.052,-1.19 0.136,-1.775 l -8.179,2.804 c 0.018,0.559 0.073,1.121 0.134,1.682 z"
+   id="path6580"
+   inkscape:connector-curvature="0"
+   style="opacity:0.4;fill:#1e1e1e" />
+<path
+   d="m 48.763,9.7231473 c -0.297,-0.481 -0.598,-0.958 -0.927,-1.411 l -8.179,2.8039997 c 0.425,0.411 0.82,0.855 1.196,1.319 z"
+   id="path6582"
+   inkscape:connector-curvature="0"
+   style="opacity:0.4;fill:#1e1e1e" />
+<g
+   id="g6588"
+   transform="translate(-0.111,-2.2218527)">
+	<path
+   d="m 49.037,25.922 c 0.035,-0.853 0.04,-1.71 -0.024,-2.573 l -8.02,2.749 c -0.071,0.938 -0.24,1.86 -0.484,2.758 z"
+   id="path6584"
+   inkscape:connector-curvature="0"
+   style="opacity:0.4;fill:#1e1e1e" />
+	<path
+   d="M 17.467,36.786 C 16.712,36.222 16.004,35.59 15.365,34.884 l -8.02,2.749 c 0.489,0.735 1.031,1.423 1.595,2.087 z"
+   id="path6586"
+   inkscape:connector-curvature="0"
+   style="opacity:0.4;fill:#1e1e1e" />
+</g>
+</svg>

+ 64 - 0
src/main/webapp/img/lib/mscae/PluralSight_mono.svg

@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+
+<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"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   id="Icons"
+   x="0px"
+   y="0px"
+   width="64px"
+   height="64px"
+   viewBox="0 0 64 64"
+   enable-background="new 0 0 64 64"
+   xml:space="preserve"
+   sodipodi:docname="logo_pluralsight_mono.svg"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)"><metadata
+   id="metadata667"><rdf:RDF><cc:Work
+       rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+         rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+   id="defs665" /><sodipodi:namedview
+   pagecolor="#ffffff"
+   bordercolor="#666666"
+   borderopacity="1"
+   objecttolerance="10"
+   gridtolerance="10"
+   guidetolerance="10"
+   inkscape:pageopacity="0"
+   inkscape:pageshadow="2"
+   inkscape:window-width="1920"
+   inkscape:window-height="1017"
+   id="namedview663"
+   showgrid="false"
+   inkscape:zoom="9.3912619"
+   inkscape:cx="44.324377"
+   inkscape:cy="26.548789"
+   inkscape:window-x="1912"
+   inkscape:window-y="-8"
+   inkscape:window-maximized="1"
+   inkscape:current-layer="Icons" />
+
+
+<g
+   id="g675"
+   transform="matrix(1.0309142,0,0,1.0309142,-0.98925178,-0.98925178)"><path
+     id="path654"
+     d="M 1,32 C 1,49.121 14.879,63 32,63 49.121,63 63,49.121 63,32 63,14.879 49.121,1 32,1 14.879,1 1,14.879 1,32"
+     inkscape:connector-curvature="0"
+     style="fill:#ec008c" /><path
+     id="path656"
+     d="M 1,32 C 1,49.121 14.879,63 32,63 49.121,63 63,49.121 63,32 63,14.879 49.121,1 32,1 14.879,1 1,14.879 1,32"
+     inkscape:connector-curvature="0"
+     style="opacity:0.4;fill:#f05a28" /><path
+     style="fill:#ffffff"
+     id="path658"
+     d="M 24,15 24.01563,22.554688 18,19 V 45 L 24.054688,41.421875 24.070312,49 51,32 Z M 27,20.439453 45.380859,32 27,43.570312 V 39.681641 L 40,32 27,24.318359 Z m -6,3.820313 3.023438,1.785156 0.02344,11.894531 L 21,39.740234 Z M 27,27.804688 34.099609,32 27,36.195312 Z"
+     inkscape:connector-curvature="0" /></g>
+
+</svg>

File diff suppressed because it is too large
+ 73 - 0
src/main/webapp/img/lib/mscae/WebAppUmbraco.svg


File diff suppressed because it is too large
+ 102 - 0
src/main/webapp/img/lib/mscae/WebAppWordPress.svg


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


+ 21 - 0
src/main/webapp/js/diagramly/App.js

@@ -1056,6 +1056,22 @@ App.prototype.initializeEmbedMode = function()
 	}
 };
 
+/**
+ * TODO: Define viewer protocol and implement new viewer style toolbar
+ */
+App.prototype.initializeViewerMode = function()
+{
+	var parent = window.opener || window.parent;
+
+	if (parent != null)
+	{
+		this.editor.graph.addListener(mxEvent.SIZE, mxUtils.bind(this, function()
+		{
+			parent.postMessage(JSON.stringify(this.createLoadMessage('size')), '*');
+		}));
+	}
+};
+
 /**
  * Translates this point by the given vector.
  * 
@@ -1489,6 +1505,11 @@ App.prototype.init = function()
 		
 		this.menubar.container.insertBefore(this.icon, this.menubar.container.firstChild);
 	}
+	
+	if (this.editor.graph.isViewer())
+	{
+		this.initializeViewerMode();
+	}
 };
 
 App.prototype.scheduleSanityCheck = function()

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

@@ -4498,7 +4498,7 @@ var ImageDialog = function(editorUi, title, initialValue, fn, ignoreExisting, co
 	    		linkInput.value = image;
 	    	});
 	    	
-	    	editorUi.showDialog(dlg.container, 200, 185, true, true);
+	    	editorUi.showDialog(dlg.container, 200, 200, true, true);
 			dlg.init();
 		});
 		

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

@@ -3783,6 +3783,14 @@
 		
 		return this.defaultStylesheet;
 	};
+	
+	/**
+	 * Overiddes function to use url parameter
+	 */
+	Graph.prototype.isViewer = function()
+	{
+		return urlParams['viewer'];
+	};
 
 	/**
 	 * Temporarily overrides stylesheet during image export in dark mode.

+ 8 - 2
src/main/webapp/js/diagramly/EditorUi.js

@@ -864,7 +864,7 @@
 			editLink = url;
 			redirect = editLink;
 		}
-			
+
 		if (node == null)
 		{
 			return '';
@@ -944,6 +944,10 @@
 			else
 			{
 				fileNode = fileNode.cloneNode(true);
+				fileNode.removeAttribute('modified');
+				fileNode.removeAttribute('host');
+				fileNode.removeAttribute('agent');
+				fileNode.removeAttribute('etag');
 				fileNode.removeAttribute('userAgent');
 				fileNode.removeAttribute('version');
 				fileNode.removeAttribute('editor');
@@ -8896,8 +8900,10 @@
 				mxSettings.setUnit(evt.getProperty('unit'));
 				mxSettings.save();		
 			});
+
+			var showRuler = urlParams['ruler'] == '1' || (mxSettings.isRulerOn() && urlParams['lightbox'] != '1');
 			
-			this.ruler = mxSettings.isRulerOn()? new mxDualRuler(this, view.unit) : null;
+			this.ruler = showRuler? new mxDualRuler(this, view.unit) : null;
 		}
 		
 		// Adds an element to edit the style in the footer in test mode

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

@@ -326,7 +326,7 @@
 					mxEvent.addListener(allPages, 'change', cropEnableFn);
 					mxEvent.addListener(currentPage, 'change', cropEnableFn);
 					mxEvent.addListener(selection, 'change', cropEnableFn);
-					dlgH = 231;
+					dlgH = 240;
 				}
 				else
 				{

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

@@ -615,7 +615,7 @@ Graph.prototype.setViewState = function(state)
 		this.foldingEnabled = state.foldingEnabled;
 		this.setShadowVisible(state.shadowVisible, false);
 		this.scrollbars = state.scrollbars;
-		this.pageVisible = state.pageVisible;
+		this.pageVisible = !this.isViewer() && state.pageVisible;
 		this.background = state.background;
 		this.backgroundImage = state.backgroundImage;
 		this.pageScale = state.pageScale;

+ 368 - 0
src/main/webapp/js/diagramly/sidebar/Sidebar-MSCAE.js

@@ -3,6 +3,9 @@
 	// Adds MSCAE shapes
 	Sidebar.prototype.addMSCAEPalette = function()
 	{
+		this.addMSCAECompaniesPalette();
+		this.addMSCAEEnterpriseFlatPalette();
+		
 		this.addMSCAEGeneralPalette();
 		this.addMSCAECloudPalette();
 		this.addMSCAEEnterprisePalette();
@@ -18,6 +21,371 @@
 		this.addMSCAEDeprecatedColorPalette();
 	};
 
+	Sidebar.prototype.addMSCAECompaniesPalette = function()
+	{
+		var s = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#0079D6;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.';
+		var s2 = 'shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.cloud.';
+
+		// Space savers
+		var sb = this;
+		var gn = 'mxgraph.mscae.cloud';
+		var dt = 'ms microsoft cloud enterprise company companies';
+		var r = 100;
+		
+		var fns =
+		[
+			this.createVertexTemplateEntry('aspect=fixed;html=1;perimeter=none;align=center;shadow=0;dashed=0;image;fontSize=12;image=img/lib/mscae/Cache_Redis_Product.svg;',
+					r * 0.5, r * 0.42, '', 'Cache Redis Product Icon', null, null, this.getTagsForStencil(gn, 'azure cache redis product icon', dt).join(' ')),
+			this.createVertexTemplateEntry('aspect=fixed;html=1;perimeter=none;align=center;shadow=0;dashed=0;image;fontSize=12;image=img/lib/mscae/Databricks.svg;',
+					r * 0.5, r * 0.48, '', 'Databricks', null, null, this.getTagsForStencil(gn, 'azure databricks', dt).join(' ')),
+			this.createVertexTemplateEntry('aspect=fixed;html=1;perimeter=none;align=center;shadow=0;dashed=0;image;fontSize=12;image=img/lib/mscae/HDInsight.svg;',
+					r * 0.5, r * 0.48, '', 'HDInsight', null, null, this.getTagsForStencil(gn, 'azure hdinsight', dt).join(' ')),
+			this.createVertexTemplateEntry('shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.cloud.hockeyapp;fillColor=#0079D6;pointerEvents=1;',
+					r * 0.5, r * 0.38, '', 'HockeyApp', null, null, this.getTagsForStencil(gn, 'azure hockey app hockeyapp', dt).join(' ')),
+			this.createVertexTemplateEntry('aspect=fixed;html=1;perimeter=none;align=center;shadow=0;dashed=0;image;fontSize=12;image=img/lib/mscae/OpenShift.svg;',	
+					r * 0.5, r * 0.46, '', 'OpenShift', null, null, this.getTagsForStencil(gn, 'azure open shift openshift', dt).join(' ')),
+			this.createVertexTemplateEntry('aspect=fixed;html=1;perimeter=none;align=center;shadow=0;dashed=0;image;fontSize=12;image=img/lib/mscae/Cloud_Cycle.svg;',	
+					r * 0.5, r * 0.46, '', 'Cloud Cycle', null, null, this.getTagsForStencil(gn, 'cloud cycle', dt).join(' ')),
+			this.createVertexTemplateEntry('aspect=fixed;html=1;perimeter=none;align=center;shadow=0;dashed=0;image;fontSize=12;image=img/lib/mscae/Kubernetes.svg;',	
+					r * 0.5, r * 0.48, '', 'Kubernetes', null, null, this.getTagsForStencil(gn, 'kubernetes', dt).join(' ')),
+			this.createVertexTemplateEntry('aspect=fixed;html=1;perimeter=none;align=center;shadow=0;dashed=0;image;fontSize=12;image=img/lib/mscae/PluralSight_mono.svg;',	
+					r * 0.5, r * 0.5, '', 'PluralSight Mono', null, null, this.getTagsForStencil(gn, 'pluralsight mono', dt).join(' ')),
+			this.createVertexTemplateEntry('aspect=fixed;html=1;perimeter=none;align=center;shadow=0;dashed=0;image;fontSize=12;image=img/lib/mscae/DC_OS.svg;',	
+					r * 0.4, r * 0.5, '', 'DC OS', null, null, this.getTagsForStencil(gn, 'dc os', dt).join(' ')),
+			this.createVertexTemplateEntry('aspect=fixed;html=1;perimeter=none;align=center;shadow=0;dashed=0;image;fontSize=12;image=img/lib/mscae/Docker.svg;',	
+					r * 0.5, r * 0.41, '', 'Docker', null, null, this.getTagsForStencil(gn, 'docker', dt).join(' ')),
+			this.createVertexTemplateEntry('aspect=fixed;html=1;perimeter=none;align=center;shadow=0;dashed=0;image;fontSize=12;image=img/lib/mscae/StackOverflow.svg;',	
+					r * 0.4, r * 0.5, '', 'StackOverflow', null, null, this.getTagsForStencil(gn, 'stack overflow stackoverflow so', dt).join(' ')),
+			this.createVertexTemplateEntry('aspect=fixed;html=1;perimeter=none;align=center;shadow=0;dashed=0;image;fontSize=12;image=img/lib/mscae/WebAppUmbraco.svg;',	
+					r * 0.49, r * 0.5, '', 'WebAppUmbraco', null, null, this.getTagsForStencil(gn, 'webappumbraco webapp umbraco', dt).join(' ')),
+			this.createVertexTemplateEntry('aspect=fixed;html=1;perimeter=none;align=center;shadow=0;dashed=0;image;fontSize=12;image=img/lib/mscae/WebAppWordPress.svg;',	
+					r * 0.49, r * 0.5, '', 'WebAppWordPress', null, null, this.getTagsForStencil(gn, 'webappwordpress webapp wordpress', dt).join(' ')),
+		];
+			
+		this.addPalette('mscaeCompanies', 'CAE / Companies', false, mxUtils.bind(this, function(content)
+				{
+					for (var i = 0; i < fns.length; i++)
+					{
+						content.appendChild(fns[i](content));
+					}
+		}));
+	};
+
+	Sidebar.prototype.addMSCAEEnterpriseFlatPalette = function()
+	{
+		var s = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#0079D6;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.';
+		var s2 = 'shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.cloud.';
+
+		// Space savers
+		var sb = this;
+		var gn = 'mxgraph.mscae.cloud';
+		var dt = 'ms microsoft cloud enterprise flat';
+		var r = 100;
+		
+		var fns =
+		[
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.d;fillColor=#00188D;',
+					r * 0.4, r * 0.5, '', 'Federation Services Proxy', null, null, this.getTagsForStencil(gn, 'active directory ad fs federation services proxy', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.ad_fs;fillColor=#00188D;',
+					r * 0.4, r * 0.5, '', 'Federation Services', null, null, this.getTagsForStencil(gn, 'active directory ad fs federation services', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.android_phone;fillColor=#00188D;',
+					r * 0.3, r * 0.5, '', 'Android Phone', null, null, this.getTagsForStencil(gn, 'android phone', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.application;fillColor=#00188D;',
+					r * 0.5, r * 0.34, '', 'Application', null, null, this.getTagsForStencil(gn, 'application', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.application_blank;fillColor=#00188D;',
+					r * 0.5, r * 0.43, '', 'Application (blank)', null, null, this.getTagsForStencil(gn, 'application blank', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.app_generic;fillColor=#00188D;',
+					r * 0.5, r * 0.39, '', 'Application (generic)', null, null, this.getTagsForStencil(gn, 'application generic', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.application_server;fillColor=#00188D;',
+					r * 0.43, r * 0.5, '', 'Application Server', null, null, this.getTagsForStencil(gn, 'application server', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.application_server2;fillColor=#00188D;',
+					r * 0.43, r * 0.5, '', 'Application Server', null, null, this.getTagsForStencil(gn, 'application server', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.pack;fillColor=#00188D;',
+					r * 0.5, r * 0.45, '', 'Pack', null, null, this.getTagsForStencil(gn, 'pack', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.backup_local;fillColor=#00188D;',
+					r * 0.49, r * 0.5, '', 'Backup (local)', null, null, this.getTagsForStencil(gn, 'backup local', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.backup_online;fillColor=#00188D;',
+					r * 0.5, r * 0.4, '', 'Backup (local)', null, null, this.getTagsForStencil(gn, 'backup local', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.calendar;fillColor=#00188D;',
+					r * 0.5, r * 0.41, '', 'Calendar', null, null, this.getTagsForStencil(gn, 'calendar', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.certificate;fillColor=#00188D;',
+					r * 0.5, r * 0.4, '', 'Certificate', null, null, this.getTagsForStencil(gn, 'certificate', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.client_application;fillColor=#00188D;',
+					r * 0.5, r * 0.32, '', 'Client Application', null, null, this.getTagsForStencil(gn, 'client application', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.cloud;fillColor=#00188D;',
+					r * 0.5, r * 0.32, '', 'Cloud', null, null, this.getTagsForStencil(gn, 'cloud', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.internet;fillColor=#00188D;',
+					r * 0.5, r * 0.31, '', 'Cloud', null, null, this.getTagsForStencil(gn, 'cloud', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.cluster_server;fillColor=#00188D;',
+					r * 0.4, r * 0.5, '', 'Cluster Server', null, null, this.getTagsForStencil(gn, 'cluster server', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.code_file;fillColor=#00188D;',
+					r * 0.49, r * 0.5, '', 'Code File', null, null, this.getTagsForStencil(gn, 'code file', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.connectors;fillColor=#00188D;',
+					r * 0.5, r * 0.34, '', 'Connectors', null, null, this.getTagsForStencil(gn, 'connectors', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.database_generic;fillColor=#00188D;',
+					r * 0.37, r * 0.5, '', 'Database (generic)', null, null, this.getTagsForStencil(gn, 'database generic', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.database_server;fillColor=#00188D;',
+					r * 0.38, r * 0.5, '', 'Database (server)', null, null, this.getTagsForStencil(gn, 'database server', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.database_synchronization;fillColor=#00188D;',
+					r * 0.39, r * 0.5, '', 'Database (synchronization)', null, null, this.getTagsForStencil(gn, 'database synchronization', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.device;fillColor=#00188D;',
+					r * 0.5, r * 0.26, '', 'Device', null, null, this.getTagsForStencil(gn, 'device', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.direct_access_feature;fillColor=#00188D;',
+					r * 0.5, r * 0.44, '', 'Direct Access (feature)', null, null, this.getTagsForStencil(gn, 'direct access feature', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.code_file;fillColor=#00188D;',
+					r * 0.47, r * 0.5, '', 'Document DB file', null, null, this.getTagsForStencil(gn, 'documentdb document db database file', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.document;fillColor=#00188D;',
+					r * 0.4, r * 0.5, '', 'Document', null, null, this.getTagsForStencil(gn, 'document', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.domain_controller;fillColor=#00188D;',
+					r * 0.36, r * 0.5, '', 'Domain Controller', null, null, this.getTagsForStencil(gn, 'domain controller', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.enterprise;fillColor=#00188D;',
+					r * 0.3, r * 0.5, '', 'Enterprise Building', null, null, this.getTagsForStencil(gn, 'enterprise building', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.file;fillColor=#00188D;',
+					r * 0.47, r * 0.5, '', 'File (general)', null, null, this.getTagsForStencil(gn, 'file', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.filter;fillColor=#00188D;',
+					r * 0.5, r * 0.45, '', 'Filter', null, null, this.getTagsForStencil(gn, 'filter', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.firewall;fillColor=#00188D;',
+					r * 0.5, r * 0.44, '', 'Firewall', null, null, this.getTagsForStencil(gn, 'firewall', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.folder;fillColor=#00188D;',
+					r * 0.5, r * 0.43, '', 'Folder', null, null, this.getTagsForStencil(gn, 'folder', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.gateway;fillColor=#00188D;',
+					r * 0.5, r * 0.5, '', 'Gateway', null, null, this.getTagsForStencil(gn, 'gateway', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.general.graph;fillColor=#00188D;',
+					r * 0.5, r * 0.5, '', 'Graph', null, null, this.getTagsForStencil(gn, 'graph', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.health_monitoring;fillColor=#00188D;',
+					r * 0.5, r * 0.42, '', 'Health Monitoring', null, null, this.getTagsForStencil(gn, 'health monitoring', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.healthy;fillColor=#00188D;',
+					r * 0.5, r * 0.45, '', 'Healthy', null, null, this.getTagsForStencil(gn, 'healthy', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.import_generic;fillColor=#00188D;',
+					r * 0.4, r * 0.5, '', 'Import (generic)', null, null, this.getTagsForStencil(gn, 'import generic', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.internet_hollow;fillColor=#00188D;',
+					r * 0.5, r * 0.31, '', 'Internet (hollow)', null, null, this.getTagsForStencil(gn, 'internet hollow', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.internet;fillColor=#00188D;',
+					r * 0.5, r * 0.31, '', 'Internet', null, null, this.getTagsForStencil(gn, 'internet', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.key_permissions;fillColor=#00188D;',
+					r * 0.26, r * 0.5, '', 'Key, Permissions', null, null, this.getTagsForStencil(gn, 'key permissions', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.keyboard;fillColor=#00188D;',
+					r * 0.5, r * 0.3, '', 'Keyboard', null, null, this.getTagsForStencil(gn, 'keyboard', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.laptop;fillColor=#00188D;',
+					r * 0.5, r * 0.3, '', 'Laptop', null, null, this.getTagsForStencil(gn, 'laptop', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.load_balancer_generic;fillColor=#00188D;',
+					r * 0.37, r * 0.5, '', 'Load Balancer (generic)', null, null, this.getTagsForStencil(gn, 'load balancer generic', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.load_testing;fillColor=#00188D;',
+					r * 0.48, r * 0.5, '', 'Load Testing', null, null, this.getTagsForStencil(gn, 'load testing', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.lock_unlocked;fillColor=#00188D;',
+					r * 0.37, r * 0.5, '', 'Lock (unlocked)', null, null, this.getTagsForStencil(gn, 'lock unlocked unprotected accessible', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.lock;fillColor=#00188D;',
+					r * 0.39, r * 0.5, '', 'Lock, protected', null, null, this.getTagsForStencil(gn, 'lock protected', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.maintenance;fillColor=#00188D;',
+					r * 0.39, r * 0.5, '', 'Maintenance', null, null, this.getTagsForStencil(gn, 'maintenance', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.management_console;fillColor=#00188D;',
+					r * 0.5, r * 0.34, '', 'Management Console', null, null, this.getTagsForStencil(gn, 'management console', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.message2;fillColor=#00188D;',
+					r * 0.5, r * 0.37, '', 'Message', null, null, this.getTagsForStencil(gn, 'message', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.monitor_running_apps;fillColor=#00188D;',
+					r * 0.5, r * 0.39, '', 'Monitor Running Apps', null, null, this.getTagsForStencil(gn, 'monitor running apps', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.computer;fillColor=#00188D;',
+					r * 0.5, r * 0.45, '', 'Monitor', null, null, this.getTagsForStencil(gn, 'monitor computer', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.mouse;fillColor=#00188D;',
+					r * 0.3, r * 0.5, '', 'Mouse', null, null, this.getTagsForStencil(gn, 'mouse', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.network_card;fillColor=#00188D;',
+					r * 0.5, r * 0.35, '', 'Network Card', null, null, this.getTagsForStencil(gn, 'network card', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.not_allowed;fillColor=#EA1C24;',
+					r * 0.5, r * 0.5, '', 'Not Allowed', null, null, this.getTagsForStencil(gn, 'not allowed', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.performance_monitor;fillColor=#00188D;',
+					r * 0.5, r * 0.36, '', 'Performance Monitor', null, null, this.getTagsForStencil(gn, 'performance monitor', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.performance;fillColor=#00188D;',
+					r * 0.5, r * 0.5, '', 'Performance', null, null, this.getTagsForStencil(gn, 'performance', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.mobile;fillColor=#00188D;',
+					r * 0.35, r * 0.5, '', 'Mobile', null, null, this.getTagsForStencil(gn, 'mobile', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.plug_and_play;fillColor=#00188D;',
+					r * 0.4, r * 0.5, '', 'Plug and Play', null, null, this.getTagsForStencil(gn, 'plug and play', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.other.powerpoint;fillColor=#DE5D24;',
+					r * 0.5, r * 0.5, '', 'PowerPoint', null, null, this.getTagsForStencil(gn, 'powerpoint', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.powershell_file;fillColor=#00188D;',
+					r * 0.47, r * 0.5, '', 'PowerShell file', null, null, this.getTagsForStencil(gn, 'powershell file', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.protocol_stack;fillColor=#00188D;',
+					r * 0.5, r * 0.34, '', 'Protocol Stack', null, null, this.getTagsForStencil(gn, 'protocol stack', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.queue_generic;fillColor=#00188D;',
+					r * 0.5, r * 0.15, '', 'Queue Generic', null, null, this.getTagsForStencil(gn, 'queue generic', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.rms_connector;fillColor=#00188D;',
+					r * 0.38, r * 0.5, '', 'RMS Connector', null, null, this.getTagsForStencil(gn, 'rms connector', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.router;fillColor=#00188D;',
+					r * 0.5, r * 0.39, '', 'Router', null, null, this.getTagsForStencil(gn, 'router', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.router;fillColor=#00188D;',
+					r * 0.5, r * 0.39, '', 'Router', null, null, this.getTagsForStencil(gn, 'router', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.rdp_remoting_file;fillColor=#0078D7;',
+					r * 0.48, r * 0.5, '', 'RPD Remoting file', null, null, this.getTagsForStencil(gn, 'rpd remoting file', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.script_file;fillColor=#00188D;',
+					r * 0.47, r * 0.5, '', 'Script file', null, null, this.getTagsForStencil(gn, 'script file', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.secure_virtual_machine;fillColor=#00188D;',
+					r * 0.5, r * 0.38, '', 'Secure Virtual Machine', null, null, this.getTagsForStencil(gn, 'secure virtual machine', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.server;fillColor=#00188D;',
+					r * 0.5, r * 0.15, '', 'Server (blade)', null, null, this.getTagsForStencil(gn, 'server', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.server_generic;fillColor=#00188D;',
+					r * 0.24, r * 0.5, '', 'Server (generic)', null, null, this.getTagsForStencil(gn, 'server generic', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.server_directory;fillColor=#00188D;',
+					r * 0.36, r * 0.5, '', 'Server Directory', null, null, this.getTagsForStencil(gn, 'server directory', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.server_farm;fillColor=#00188D;',
+					r * 0.5, r * 0.32, '', 'Server Farm', null, null, this.getTagsForStencil(gn, 'server farm', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.server_rack;fillColor=#00188D;',
+					r * 0.5, r * 0.5, '', 'Server Rack', null, null, this.getTagsForStencil(gn, 'server rack', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.settings;fillColor=#00188D;',
+					r * 0.5, r * 0.5, '', 'Settings', null, null, this.getTagsForStencil(gn, 'settings', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.shared_folder;fillColor=#00188D;',
+					r * 0.43, r * 0.5, '', 'Shared Folder', null, null, this.getTagsForStencil(gn, 'shared folder', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.smartcard;fillColor=#00188D;',
+					r * 0.5, r * 0.32, '', 'Smartcard', null, null, this.getTagsForStencil(gn, 'smartcard', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.startup_task;fillColor=#0078D7;',
+					r * 0.48, r * 0.5, '', 'Startup Task', null, null, this.getTagsForStencil(gn, 'startup task', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.storage;fillColor=#00188D;',
+					r * 0.5, r * 0.41, '', 'Storage', null, null, this.getTagsForStencil(gn, 'storage', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.table;fillColor=#00188D;',
+					r * 0.5, r * 0.5, '', 'Table', null, null, this.getTagsForStencil(gn, 'table', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.tablet;fillColor=#00188D;',
+					r * 0.5, r * 0.37, '', 'Tablet', null, null, this.getTagsForStencil(gn, 'tablet', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.tool;fillColor=#00188D;',
+					r * 0.5, r * 0.45, '', 'Tool', null, null, this.getTagsForStencil(gn, 'tool', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.triggers;fillColor=#0078D7;',
+					r * 0.47, r * 0.5, '', 'Triggers', null, null, this.getTagsForStencil(gn, 'triggers', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.general.tunnel;fillColor=#00188D;',
+					r * 0.5, r * 0.09, '', 'Tunnel', null, null, this.getTagsForStencil(gn, 'tunnel', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.udf_function;fillColor=#0078D7;',
+					r * 0.47, r * 0.5, '', 'UDF Function', null, null, this.getTagsForStencil(gn, 'udf function', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.unhealthy;fillColor=#0078D7;',
+					r * 0.5, r * 0.41, '', 'Unhealthy', null, null, this.getTagsForStencil(gn, 'unhealthy', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.unhealthy;fillColor=#00188D;',
+					r * 0.5, r * 0.41, '', 'Unhealthy', null, null, this.getTagsForStencil(gn, 'unhealthy', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.usb;fillColor=#00188D;',
+					r * 0.5, r * 0.23, '', 'USB', null, null, this.getTagsForStencil(gn, 'usb', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.user;fillColor=#00188D;',
+					r * 0.47, r * 0.5, '', 'User (enterprise)', null, null, this.getTagsForStencil(gn, 'user', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.user_permissions;fillColor=#0078D7;',
+					r * 0.47, r * 0.5, '', 'User permissions', null, null, this.getTagsForStencil(gn, 'user permissions', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.general.video;fillColor=#00188D;',
+					r * 0.49, r * 0.5, '', 'Video', null, null, this.getTagsForStencil(gn, 'video', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.virtual_machine_feature;fillColor=#00188D;',
+					r * 0.5, r * 0.45, '', 'Virtual Machine', null, null, this.getTagsForStencil(gn, 'virtual machine', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.web_server;fillColor=#00188D;',
+					r * 0.38, r * 0.5, '', 'Web Server', null, null, this.getTagsForStencil(gn, 'web server', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.website_generic;fillColor=#7D7D7D;',
+					r * 0.5, r * 0.44, '', 'Website (generic)', null, null, this.getTagsForStencil(gn, 'website generic', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.windows_server;fillColor=#00188D;',
+					r * 0.39, r * 0.5, '', 'Windows Server', null, null, this.getTagsForStencil(gn, 'windows server', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.wireless_connection;fillColor=#00188D;',
+					r * 0.42, r * 0.5, '', 'Wireless Connection', null, null, this.getTagsForStencil(gn, 'wireless connection', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.workstation_client;fillColor=#00188D;',
+					r * 0.5, r * 0.5, '', 'Workstation Client', null, null, this.getTagsForStencil(gn, 'workstation client', dt).join(' ')),
+			this.createVertexTemplateEntry(
+					'aspect=fixed;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.mscae.enterprise.xml_web_service;fillColor=#00188D;',
+					r * 0.5, r * 0.5, '', 'XML Web Service', null, null, this.getTagsForStencil(gn, 'xml web service', dt).join(' ')),
+		];
+			
+		this.addPalette('mscaeEnterpriseFlat', 'CAE / Enterprise (flat)', false, mxUtils.bind(this, function(content)
+				{
+					for (var i = 0; i < fns.length; i++)
+					{
+						content.appendChild(fns[i](content));
+					}
+		}));
+	};
+
 	Sidebar.prototype.addMSCAECloudPalette = function()
 	{
 		var s = 'shadow=0;dashed=0;html=1;strokeColor=none;fillColor=#0079D6;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;align=center;shape=mxgraph.azure.';

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

@@ -106,7 +106,7 @@
 	                                   {id: 'android', prefix: 'android', libs: [''/*prefix is library*/]}, {id: 'aws3d'},
 	                                   {id: 'flowchart'}, {id: 'basic'}, {id: 'infographic'}, {id: 'arrows'}, {id: 'arrows2'}, {id: 'lean_mapping'}, {id: 'citrix'}, {id: 'azure'}, {id: 'network'}, {id: 'vvd'}, 
 	                                   {id: 'sitemap'}, {id: 'dfd'},
-	                                   {id: 'mscae', prefix: 'mscae', libs: ['Cloud', 'Enterprise', 'General', 'General Symbols', 'Intune', 'OMS', 'OpsManager', 'Other', 'System Center', 'Virtual Machine', 'Deprecated', 'Cloud Color', 'Deprecated Color']},
+	                                   {id: 'mscae', prefix: 'mscae', libs: ['Companies', 'EnterpriseFlat', 'Cloud', 'Enterprise', 'General', 'General Symbols', 'Intune', 'OMS', 'OpsManager', 'Other', 'System Center', 'Virtual Machine', 'Deprecated', 'Cloud Color', 'Deprecated Color']},
 	                                   {id: 'active_directory'},
 	                                   {id: 'bpmn', prefix: 'bpmn', libs: [''/*prefix is library*/, 'Gateways', 'Events']},
 	                                   {id: 'clipart', prefix: null, libs: ['computer', 'finance', 'clipart', 'networking', 'people', 'telco']},

+ 1 - 1
src/main/webapp/js/mxgraph/Editor.js

@@ -441,7 +441,7 @@ Editor.prototype.readGraphState = function(node)
 		this.graph.pageScale = mxGraph.prototype.pageScale;
 	}
 
-	if (!this.graph.isLightboxView())
+	if (!this.graph.isLightboxView() && !this.graph.isViewer())
 	{
 		var pv = node.getAttribute('page');
 	

+ 71 - 54
src/main/webapp/js/mxgraph/EditorUi.js

@@ -1423,7 +1423,7 @@ EditorUi.prototype.initCanvas = function()
 	{
         resize = mxUtils.bind(this, function(autoscale, maxScale, cx, cy)
         {
-            if (graph.container != null)
+            if (graph.container != null && !graph.isViewer())
             {
                 cx = (cx != null) ? cx : 0;
                 cy = (cy != null) ? cy : 0;
@@ -1527,7 +1527,7 @@ EditorUi.prototype.initCanvas = function()
 			this.chromelessToolbar.style.whiteSpace = 'nowrap';
 			this.chromelessToolbar.style.backgroundColor = '#000000';
 			this.chromelessToolbar.style.padding = '10px 10px 8px 10px';
-			this.chromelessToolbar.style.left = '50%';
+			this.chromelessToolbar.style.left = (graph.isViewer()) ? '0' : '50%';
 			
 			if (!mxClient.IS_VML)
 			{
@@ -1538,8 +1538,16 @@ EditorUi.prototype.initCanvas = function()
 			var updateChromelessToolbarPosition = mxUtils.bind(this, function()
 			{
 				var css = mxUtils.getCurrentStyle(graph.container);
-			 	this.chromelessToolbar.style.bottom = ((css != null) ? parseInt(css['margin-bottom'] || 0) : 0) +
-			 		((this.tabContainer != null) ? (20 + parseInt(this.tabContainer.style.height)) : 20) + 'px';
+				
+				if (graph.isViewer())
+				{
+					this.chromelessToolbar.style.top = '0';
+				}
+				else
+				{
+				 	this.chromelessToolbar.style.bottom = ((css != null) ? parseInt(css['margin-bottom'] || 0) : 0) +
+				 		((this.tabContainer != null) ? (20 + parseInt(this.tabContainer.style.height)) : 20) + 'px';
+				} 
 			});
 			
 			this.editor.addListener('resetGraphView', updateChromelessToolbarPosition);
@@ -1861,7 +1869,12 @@ EditorUi.prototype.initCanvas = function()
 	
 			// Initial state invisible
 			this.chromelessToolbar.style.display = 'none';
-			mxUtils.setPrefixedStyle(this.chromelessToolbar.style, 'transform', 'translate(-50%,0)');
+			
+			if (!graph.isViewer())
+			{
+				mxUtils.setPrefixedStyle(this.chromelessToolbar.style, 'transform', 'translate(-50%,0)');
+			}
+			
 			graph.container.appendChild(this.chromelessToolbar);
 			
 			mxEvent.addListener(graph.container, (mxClient.IS_POINTER) ? 'pointermove' : 'mousemove', mxUtils.bind(this, function(evt)
@@ -1988,62 +2001,66 @@ EditorUi.prototype.initCanvas = function()
 			graphViewValidate.apply(this, arguments);
 		};
 		
-		var graphSizeDidChange = graph.sizeDidChange;
-		graph.sizeDidChange = function()
+		if (!graph.isViewer())
 		{
-			if (this.container != null && mxUtils.hasScrollbars(this.container))
+			var graphSizeDidChange = graph.sizeDidChange;
+			
+			graph.sizeDidChange = function()
 			{
-				var pages = this.getPageLayout();
-				var pad = this.getPagePadding();
-				var size = this.getPageSize();
-				
-				// Updates the minimum graph size
-				var minw = Math.ceil(2 * pad.x + pages.width * size.width);
-				var minh = Math.ceil(2 * pad.y + pages.height * size.height);
-				
-				var min = graph.minimumGraphSize;
-				
-				// LATER: Fix flicker of scrollbar size in IE quirks mode
-				// after delayed call in window.resize event handler
-				if (min == null || min.width != minw || min.height != minh)
-				{
-					graph.minimumGraphSize = new mxRectangle(0, 0, minw, minh);
-				}
-				
-				// Updates auto-translate to include padding and graph size
-				var dx = pad.x - pages.x * size.width;
-				var dy = pad.y - pages.y * size.height;
-				
-				if (!this.autoTranslate && (this.view.translate.x != dx || this.view.translate.y != dy))
+				if (this.container != null && mxUtils.hasScrollbars(this.container))
 				{
-					this.autoTranslate = true;
-					this.view.x0 = pages.x;
-					this.view.y0 = pages.y;
-
-					// NOTE: THIS INVOKES THIS METHOD AGAIN. UNFORTUNATELY THERE IS NO WAY AROUND THIS SINCE THE
-					// BOUNDS ARE KNOWN AFTER THE VALIDATION AND SETTING THE TRANSLATE TRIGGERS A REVALIDATION.
-					// SHOULD MOVE TRANSLATE/SCALE TO VIEW.
-					var tx = graph.view.translate.x;
-					var ty = graph.view.translate.y;
-					graph.view.setTranslate(dx, dy);
+					var pages = this.getPageLayout();
+					var pad = this.getPagePadding();
+					var size = this.getPageSize();
 					
-					// LATER: Fix rounding errors for small zoom
-					graph.container.scrollLeft += Math.round((dx - tx) * graph.view.scale);
-					graph.container.scrollTop += Math.round((dy - ty) * graph.view.scale);
+					// Updates the minimum graph size
+					var minw = Math.ceil(2 * pad.x + pages.width * size.width);
+					var minh = Math.ceil(2 * pad.y + pages.height * size.height);
 					
-					this.autoTranslate = false;
+					var min = graph.minimumGraphSize;
 					
-					return;
+					// LATER: Fix flicker of scrollbar size in IE quirks mode
+					// after delayed call in window.resize event handler
+					if (min == null || min.width != minw || min.height != minh)
+					{
+						graph.minimumGraphSize = new mxRectangle(0, 0, minw, minh);
+					}
+					
+					// Updates auto-translate to include padding and graph size
+					var dx = pad.x - pages.x * size.width;
+					var dy = pad.y - pages.y * size.height;
+					
+					if (!this.autoTranslate && (this.view.translate.x != dx || this.view.translate.y != dy))
+					{
+						this.autoTranslate = true;
+						this.view.x0 = pages.x;
+						this.view.y0 = pages.y;
+	
+						// NOTE: THIS INVOKES THIS METHOD AGAIN. UNFORTUNATELY THERE IS NO WAY AROUND THIS SINCE THE
+						// BOUNDS ARE KNOWN AFTER THE VALIDATION AND SETTING THE TRANSLATE TRIGGERS A REVALIDATION.
+						// SHOULD MOVE TRANSLATE/SCALE TO VIEW.
+						var tx = graph.view.translate.x;
+						var ty = graph.view.translate.y;
+						graph.view.setTranslate(dx, dy);
+						
+						// LATER: Fix rounding errors for small zoom
+						graph.container.scrollLeft += Math.round((dx - tx) * graph.view.scale);
+						graph.container.scrollTop += Math.round((dy - ty) * graph.view.scale);
+						
+						this.autoTranslate = false;
+						
+						return;
+					}
+	
+					graphSizeDidChange.apply(this, arguments);
 				}
-
-				graphSizeDidChange.apply(this, arguments);
-			}
-			else
-			{
-				// Fires event but does not invoke superclass
-				this.fireEvent(new mxEventObject(mxEvent.SIZE, 'bounds', this.getGraphBounds()));
-			}
-		};
+				else
+				{
+					// Fires event but does not invoke superclass
+					this.fireEvent(new mxEventObject(mxEvent.SIZE, 'bounds', this.getGraphBounds()));
+				}
+			};
+		}
 	}
 	
 	// Accumulates the zoom factor while the rendering is taking place

+ 8 - 0
src/main/webapp/js/mxgraph/Graph.js

@@ -1620,6 +1620,14 @@ Graph.prototype.isLightboxView = function()
 	return this.lightbox;
 };
 
+/**
+ * Sets the XML node for the current diagram.
+ */
+Graph.prototype.isViewer = function()
+{
+	return false;
+};
+
 /**
  * Installs automatic layout via styles
  */

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


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


+ 38 - 0
src/main/webapp/stencils/azure.xml

@@ -2353,6 +2353,44 @@
         <fillstroke/>
     </foreground>
 </shape>
+<shape aspect="variable" h="76.4" name="Message2" strokewidth="inherit" w="99.6">
+    <connections>
+        <constraint name="N" perimeter="0" x="0.5" y="0"/>
+        <constraint name="S" perimeter="0" x="0.5" y="1"/>
+        <constraint name="W" perimeter="0" x="0" y="0.5"/>
+        <constraint name="E" perimeter="0" x="1" y="0.5"/>
+        <constraint name="NE" perimeter="0" x="0.98" y="0.02"/>
+        <constraint name="NW" perimeter="0" x="0.02" y="0.02"/>
+        <constraint name="SE" perimeter="0" x="0.98" y="0.98"/>
+        <constraint name="SW" perimeter="0" x="0.02" y="0.98"/>
+    </connections>
+    <foreground>
+        <path>
+            <move x="0.3" y="5.4"/>
+            <arc large-arc-flag="0" rx="5" ry="5" sweep-flag="1" x="4.8" x-axis-rotation="0" y="0"/>
+            <line x="94.5" y="0"/>
+            <arc large-arc-flag="0" rx="5" ry="5" sweep-flag="1" x="99.3" x-axis-rotation="0" y="5"/>
+            <line x="99.3" y="70.9"/>
+            <arc large-arc-flag="0" rx="5" ry="5" sweep-flag="1" x="95.05" x-axis-rotation="0" y="76.4"/>
+            <line x="4.55" y="76.4"/>
+            <arc large-arc-flag="0" rx="5" ry="5" sweep-flag="1" x="0.3" x-axis-rotation="0" y="70.9"/>
+            <close/>
+            <move x="11.3" y="10.1"/>
+            <line x="49.1" y="39.6"/>
+            <line x="87" y="10.1"/>
+            <close/>
+            <move x="45.6" y="49.5"/>
+            <line x="10.3" y="22.1"/>
+            <line x="10.3" y="66.4"/>
+            <line x="89.4" y="66.6"/>
+            <line x="89.4" y="21.4"/>
+            <line x="52.4" y="49.7"/>
+            <arc large-arc-flag="0" rx="5.5" ry="5.5" sweep-flag="1" x="45.6" x-axis-rotation="0" y="49.5"/>
+            <close/>
+        </path>
+        <fillstroke/>
+    </foreground>
+</shape>
 <shape aspect="variable" h="99.42" name="Mobile" strokewidth="inherit" w="67.28">
     <connections>
         <constraint name="N" perimeter="0" x="0.5" y="0"/>