Browse Source

7.7.2 release

Former-commit-id: 60c3579382cb955d0f876a63ea234adf453aa37c
Gaudenz Alder 7 years ago
parent
commit
7c34cf72fe
97 changed files with 5581 additions and 4950 deletions
  1. 5 0
      ChangeLog
  2. 1 1
      VERSION
  3. 7 7
      etc/mxgraph/mxClient.js
  4. 1 1
      war/cache.manifest
  5. 38 0
      war/img/lib/ibm/data/cloud.svg
  6. 23 0
      war/img/lib/ibm/devops/provision.svg
  7. 15 0
      war/img/lib/ibm/infrastructure/dashboard.svg
  8. 28 0
      war/img/lib/ibm/infrastructure/microservices_mesh.svg
  9. 17 0
      war/img/lib/ibm/infrastructure/monitoring.svg
  10. 24 0
      war/img/lib/ibm/management/cloud_management.svg
  11. 69 0
      war/img/lib/ibm/miscellaneous/scalable.svg
  12. 1 0
      war/img/lib/ibm/miscellaneous/text_to_speech.svg
  13. 1828 1824
      war/js/app.min.js
  14. 509 505
      war/js/atlas-viewer.min.js
  15. 1649 1644
      war/js/atlas.min.js
  16. 13 5
      war/js/diagramly/Dialogs.js
  17. 9 31
      war/js/diagramly/DriveRealtime.js
  18. 33 0
      war/js/diagramly/Editor.js
  19. 0 2
      war/js/diagramly/EditorUi.js
  20. 406 192
      war/js/diagramly/graphml/mxGraphMlCodec.js
  21. 21 5
      war/js/diagramly/sidebar/Sidebar-IBM.js
  22. 107 106
      war/js/embed-static.min.js
  23. 18 4
      war/js/mxgraph/Editor.js
  24. 1 1
      war/js/mxgraph/EditorUi.js
  25. 2 0
      war/js/mxgraph/Graph.js
  26. 18 11
      war/js/mxgraph/Shapes.js
  27. 107 106
      war/js/reader.min.js
  28. 509 505
      war/js/viewer.min.js
  29. 2 0
      war/resources/dia.txt
  30. 2 0
      war/resources/dia_am.txt
  31. 2 0
      war/resources/dia_ar.txt
  32. 2 0
      war/resources/dia_bg.txt
  33. 2 0
      war/resources/dia_bn.txt
  34. 2 0
      war/resources/dia_bs.txt
  35. 2 0
      war/resources/dia_ca.txt
  36. 2 0
      war/resources/dia_cs.txt
  37. 2 0
      war/resources/dia_da.txt
  38. 2 0
      war/resources/dia_de.txt
  39. 2 0
      war/resources/dia_el.txt
  40. 2 0
      war/resources/dia_eo.txt
  41. 2 0
      war/resources/dia_es.txt
  42. 2 0
      war/resources/dia_et.txt
  43. 2 0
      war/resources/dia_fa.txt
  44. 2 0
      war/resources/dia_fi.txt
  45. 2 0
      war/resources/dia_fil.txt
  46. 2 0
      war/resources/dia_fr.txt
  47. 2 0
      war/resources/dia_gu.txt
  48. 2 0
      war/resources/dia_he.txt
  49. 2 0
      war/resources/dia_hi.txt
  50. 2 0
      war/resources/dia_hr.txt
  51. 2 0
      war/resources/dia_hu.txt
  52. 2 0
      war/resources/dia_i18n.txt
  53. 2 0
      war/resources/dia_id.txt
  54. 2 0
      war/resources/dia_it.txt
  55. 2 0
      war/resources/dia_ja.txt
  56. 2 0
      war/resources/dia_kn.txt
  57. 2 0
      war/resources/dia_ko.txt
  58. 2 0
      war/resources/dia_lt.txt
  59. 2 0
      war/resources/dia_lv.txt
  60. 2 0
      war/resources/dia_ml.txt
  61. 2 0
      war/resources/dia_mr.txt
  62. 2 0
      war/resources/dia_ms.txt
  63. 2 0
      war/resources/dia_nl.txt
  64. 2 0
      war/resources/dia_no.txt
  65. 2 0
      war/resources/dia_pl.txt
  66. 2 0
      war/resources/dia_pt-br.txt
  67. 2 0
      war/resources/dia_pt.txt
  68. 2 0
      war/resources/dia_ro.txt
  69. 2 0
      war/resources/dia_ru.txt
  70. 2 0
      war/resources/dia_sk.txt
  71. 2 0
      war/resources/dia_sl.txt
  72. 2 0
      war/resources/dia_sr.txt
  73. 2 0
      war/resources/dia_sv.txt
  74. 2 0
      war/resources/dia_sw.txt
  75. 2 0
      war/resources/dia_ta.txt
  76. 2 0
      war/resources/dia_te.txt
  77. 2 0
      war/resources/dia_th.txt
  78. 2 0
      war/resources/dia_tr.txt
  79. 2 0
      war/resources/dia_uk.txt
  80. 2 0
      war/resources/dia_vi.txt
  81. 2 0
      war/resources/dia_zh-tw.txt
  82. 2 0
      war/resources/dia_zh.txt
  83. 7 0
      war/templates/index.xml
  84. BIN
      war/templates/network/ibm_bda_reference_architecture.png
  85. 1 0
      war/templates/network/ibm_bda_reference_architecture.xml
  86. BIN
      war/templates/network/ibm_cognitive_conversation.png
  87. 1 0
      war/templates/network/ibm_cognitive_conversation.xml
  88. BIN
      war/templates/network/ibm_cognitive_discovery.png
  89. 1 0
      war/templates/network/ibm_cognitive_discovery.xml
  90. BIN
      war/templates/network/ibm_iot_architecture.png
  91. 1 0
      war/templates/network/ibm_iot_architecture.xml
  92. BIN
      war/templates/network/ibm_microservices.png
  93. 1 0
      war/templates/network/ibm_microservices.xml
  94. BIN
      war/templates/network/ibm_private_cloud.png
  95. 1 0
      war/templates/network/ibm_private_cloud.xml
  96. BIN
      war/templates/network/ibm_vcenter_server_platform.png
  97. 1 0
      war/templates/network/ibm_vcenter_server_platform.xml

+ 5 - 0
ChangeLog

@@ -1,3 +1,8 @@
+20-NOV-2017: 7.7.2
+
+- Fixes stack layout and adds styles
+- Uses mxGraph 3.7.6 beta 10
+
 16-NOV-2017: 7.7.1
 
 - Adds switches for SVG shadow

+ 1 - 1
VERSION

@@ -1 +1 @@
-7.7.1
+7.7.2

File diff suppressed because it is too large
+ 7 - 7
etc/mxgraph/mxClient.js


+ 1 - 1
war/cache.manifest

@@ -1,7 +1,7 @@
 CACHE MANIFEST
 
 # THIS FILE WAS GENERATED. DO NOT MODIFY!
-# 11/16/2017 05:29 PM
+# 11/20/2017 02:32 PM
 
 app.html
 index.html?offline=1

+ 38 - 0
war/img/lib/ibm/data/cloud.svg

@@ -0,0 +1,38 @@
+<?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="svg2" sodipodi:docname="cloud.svg" version="1.1" width="84.5093mm" 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="0.91 r13725" viewBox="0 0 299.4424 299.63588" height="84.563904mm"
+    xmlns="http://www.w3.org/2000/svg">
+    <metadata id="metadata4160">
+        <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/>
+            </cc:Work>
+        </rdf:RDF>
+    </metadata>
+    <defs id="defs4158"/>
+    <sodipodi:namedview fit-margin-left="0" objecttolerance="10" bordercolor="#666666" inkscape:window-height="1018"
+        inkscape:zoom="0.35477743" gridtolerance="10" id="namedview4156" inkscape:current-layer="svg2" fit-margin-top="0"
+        inkscape:window-y="-8" inkscape:cy="320.94562" inkscape:window-x="-8" inkscape:cx="-736.87547"
+        fit-margin-bottom="0" showgrid="false" fit-margin-right="0" guidetolerance="10" inkscape:pageopacity="0"
+        inkscape:pageshadow="2" inkscape:window-width="1920" inkscape:window-maximized="1" borderopacity="1" pagecolor="#ffffff"/>
+    <path fill="#325c80" d="M 150.38549,299.63588 C 64.714,299.63588 0,228.69174 0,150.45007 0,60.68903 74.63158,0 
+        149.23083,0 238.43725,0 299.44241,73.66153 299.44241,148.63703 299.44241,240.27503 224.1838,299.63588 
+        150.38549,299.63588 Z" id="path4152" inkscape:connector-curvature="0"/>
+    <path d="M 200.45602,206.55699 C 218.03164,206.11714 233.44933,195.17201 239.45379,175.15087 244.28232,159.64735 
+        238.50953,145.7238 227.23075,134.32514 223.44781,130.92838 218.30401,127.64503 209.79086,124.64246 
+        209.35035,115.33228 207.96035,109.10966 204.8753,102.06652 196.29179,83.43817 175.30774,73.69022 
+        161.63217,74.15514 149.60509,75.32986 129.57713,80.11902 118.65173,100.6628 115.60656,106.59441 
+        113.47354,112.68576 112.17964,126.00397 105.15847,124.97873 98.11922,123.89919 91.48259,124.02755 
+        78.11096,124.46339 52.64331,137.46023 53.35005,166.77078 54.89185,186.40902 72.68571,205.36887 
+        94.40939,206.55699 Z M 89.818,218.33688 C 71.7926,218.33688 41.95184,200.5554 41.95184,166.90175 
+        41.95184,138.81762 54.44285,124.3586 75.12225,115.46661 85.97008,111.28071 87.90104,110.49704 
+        101.86096,111.99515 107.68985,83.61372 129.14456,64.90603 160.10985,62.55136 177.27031,61.8292 
+        194.46074,69.56693 205.44362,81.14463 216.26639,93.747 219.71961,105.62546 220.83068,115.50263 
+        241.0718,127.27013 253.70371,140.73363 252.72037,167.75824 252.72037,187.48901 237.45507,214.21741 
+        208.43372,218.33688 Z" id="path4154" inkscape:connector-curvature="0" style="fill:#ffffff"/>
+</svg>

+ 23 - 0
war/img/lib/ibm/devops/provision.svg

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 65 65" style="enable-background:new 0 0 65 65;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#F37738;}
+	.st1{fill:#FFFFFF;}
+</style>
+<title>IBM Cloud Private Ref Arch</title>
+<circle class="st0" cx="32.5" cy="32.5" r="32.5"/>
+<path class="st1" d="M17.6,45.4c-2.8,0-5.1-2.3-5.1-5.1c0-2.8,2.3-5.1,5.1-5.1s5.1,2.3,5.1,5.1S20.4,45.4,17.6,45.4
+	C17.6,45.4,17.6,45.4,17.6,45.4z M17.6,36.2c-2.3,0-4.1,1.8-4.1,4.1c0,2.3,1.8,4.1,4.1,4.1s4.1-1.8,4.1-4.1
+	C21.7,38,19.9,36.2,17.6,36.2C17.6,36.2,17.6,36.2,17.6,36.2L17.6,36.2z"/>
+<path class="st1" d="M32.2,45.4c-2.8,0-5.1-2.3-5.1-5.1s2.3-5.1,5.1-5.1s5.1,2.3,5.1,5.1S35,45.4,32.2,45.4L32.2,45.4z M32.2,36.2
+	c-2.3,0-4.1,1.8-4.1,4.1s1.8,4.1,4.1,4.1c2.3,0,4.1-1.8,4.1-4.1C36.2,38,34.4,36.2,32.2,36.2C32.2,36.2,32.2,36.2,32.2,36.2
+	L32.2,36.2z"/>
+<circle class="st1" cx="32.2" cy="19" r="4.6"/>
+<path class="st1" d="M46.7,45.4c-2.8,0-5.1-2.3-5.1-5.1s2.3-5.1,5.1-5.1s5.1,2.3,5.1,5.1S49.5,45.4,46.7,45.4L46.7,45.4z M46.7,36.2
+	c-2.3,0-4.1,1.8-4.1,4.1s1.8,4.1,4.1,4.1c2.3,0,4.1-1.8,4.1-4.1C50.8,38,49,36.2,46.7,36.2C46.7,36.2,46.7,36.2,46.7,36.2L46.7,36.2
+	z"/>
+<rect x="31.7" y="23.6" class="st1" width="1" height="10.2"/>
+<path class="st1" d="M47.2,33.8h-1v-4.2H18.1v4.2h-1v-4.7c0-0.3,0.2-0.5,0.5-0.5l0,0h29.1c0.3,0,0.5,0.2,0.5,0.5l0,0L47.2,33.8z"/>
+</svg>

+ 15 - 0
war/img/lib/ibm/infrastructure/dashboard.svg

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 65 64.7" style="enable-background:new 0 0 65 64.7;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#7DBD31;}
+	.st1{fill:#FFFFFF;}
+</style>
+<title>IBM Cloud Private Ref Arch</title>
+<ellipse class="st0" cx="32.5" cy="32.4" rx="32.5" ry="32.4"/>
+<path class="st1" d="M27.2,40.6c-2.9-2.9-2.9-7.6,0-10.6s7.6-2.9,10.6,0c2.9,2.9,2.9,7.6,0,10.6c0,0,0,0,0,0l2.1,2.1
+	C44,38.7,44,32,39.9,28s-10.7-4.1-14.8,0s-4.1,10.7,0,14.8c0,0,0,0,0,0L27.2,40.6z"/>
+<polygon class="st1" points="31,45.8 34,45.8 32.5,32.4 "/>
+<path class="st1" d="M10.1,14.4v35.9h44.8V14.4H10.1z M53.4,48.8H11.6V21.9h41.8V48.8z"/>
+</svg>

+ 28 - 0
war/img/lib/ibm/infrastructure/microservices_mesh.svg

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 64.5 64.5" style="enable-background:new 0 0 64.5 64.5;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#7DBD31;}
+	.st1{fill:#FFFFFF;}
+</style>
+<title>IBM Cloud Private Ref Arch</title>
+<circle class="st0" cx="32.3" cy="32.3" r="32.3"/>
+<path class="st1" d="M9.7,40.1v-1.6c0.4-0.5,0.7-1.2,1.2-1.4c0.9-0.5,1.6-1.3,2-2.2c0.3-0.5,0.6-1,1-1.5c2.5-3.2,5.7-5.8,9.3-7.7
+	c0.6-0.3,1-0.8,1.2-1.5c0.2-1.4,1.6-2.3,3-2.1c0.1,0,0.2,0.1,0.4,0.1c0.3,0.1,0.7,0.1,0.9,0c3.3-2.7,7.1-3.9,11.2-4.8
+	c0.3-0.1,0.6-0.3,0.8-0.5c0.6-0.7,1.3-1.4,1.9-2.1h1.3c1.2,0.4,2,1.6,2,2.9c0,0.3,0.2,0.6,0.4,0.9c3.5,5.9,5.8,12.4,6.7,19.2
+	c0.3,2.2,0,4.7,2,6.4v1.6c-0.2,0.3-0.4,0.5-0.6,0.8c-1.2,1.6-3.8,1.5-4.3-0.3c-0.5-1.4-1.3-1.3-2.3-1.4c-0.8,0-1.5-0.1-2.3-0.1
+	c-4.4-0.3-8.7,0.4-12.8,2c-0.4,0.2-0.8,0.5-1.2,0.8c-0.7,0.7-1.2,1.4-1.9,2.1h-1.3c-1.8-0.9-2.1-1.6-1.9-3.5c0-0.3,0-0.6-0.2-0.8
+	c-1.9-2.2-4.1-4-7-4.7c-1.9-0.4-3.8-1-5.5,0.8C12.5,42.6,10.9,41.9,9.7,40.1z M31.1,33.6c1,3.5,0.9,7.2-0.4,10.7
+	c-0.2,0.4,0,0.8,0.4,0.9c0.2,0.1,0.4,0.1,0.6,0c3.6-1.5,7.4-2.2,11.2-2.1c2.1,0,4.3,0.2,6.4,0.3c0.8,0,1.5-0.2,1-1
+	c-1-2.1-2.2-4.2-3.4-6.2c0-0.2-0.5-0.2-0.9-0.2c-0.8-0.1-1.9,0.1-2.3-0.4c-0.8-0.8-1.9-1.2-3-1.2C37.7,34.1,34.5,33.9,31.1,33.6
+	L31.1,33.6z M29.7,24.6c6.1-0.8,11,1.4,14.7,6.3c0.5-3.4,0.2-6.9-0.8-10.3c-0.1-0.2-0.3-0.4-0.5-0.5c-0.7-0.4-1.4-0.8-2.1-1.1
+	C40.7,19,40.5,19,40.3,19c-3.7,0.8-7.3,1.8-10.3,4.2C29.5,23.6,29.1,24,29.7,24.6L29.7,24.6z M14.8,38.6c3.9-0.4,7.7,0.9,10.5,3.6
+	c0.7,0.6,1.3,1.3,2,1.9c0.5,0.4,1.3,0.4,1.7-0.1c0.1-0.1,0.1-0.1,0.1-0.2c1.2-3.2,1.3-6.6,0.3-9.9C24.3,34,18.4,35.9,14.8,38.6
+	L14.8,38.6z M31.3,26.3c-0.6,0-1.3,0-1.9,0c-0.7,0.1-1,0.4-0.6,1.1c0.6,1.4,1.2,2.8,1.8,4.1c0.2,0.3,0.4,0.5,0.8,0.6
+	c3.6,0.3,7.3,0.5,10.9,0.7c0.8,0,0.9-0.3,0.6-0.9c-0.1-0.3-0.3-0.5-0.5-0.7C39.4,27.7,35.6,26.5,31.3,26.3z M24.7,26.7
+	c-4.5,2.5-8.6,5.4-10.9,10.3c4.6-2.8,9.8-4.5,15.2-4.8c-0.7-1.6-1.3-2.9-2-4.3c-0.2-0.2-0.4-0.4-0.6-0.5
+	C25.9,27.2,25.4,27,24.7,26.7L24.7,26.7z M45.7,21.2c0.2,2.8,0.3,5.9,0.5,9c0,0.3,0.4,0.6,0.6,0.9c0.4,0.7,1.2,1.5,1.1,2.2
+	c-0.1,0.8,0.3,1.7,0.8,2.3c0.3,0.4,0.6,0.8,0.9,1.3c0.3,0.5,0.6,1,0.9,1.5s0.5,0.9,0.7,1.4C50.7,33.2,48.9,26.9,45.7,21.2L45.7,21.2
+	z"/>
+</svg>

+ 17 - 0
war/img/lib/ibm/infrastructure/monitoring.svg

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 64.5 64.2" style="enable-background:new 0 0 64.5 64.2;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#7DBD31;}
+	.st1{fill:#FFFFFF;}
+</style>
+<title>IBM Cloud Private Ref Arch</title>
+<ellipse class="st0" cx="32.3" cy="32.1" rx="32.3" ry="32.1"/>
+<path class="st1" d="M10,14.3v35.5h44.4V14.3H10z M53,48.4H11.5V21.8H53V48.4z"/>
+<path class="st1" d="M32.3,44c6.6,0,11.7-3.6,14.8-8.9c-3.1-5.3-8.2-8.9-14.8-8.9s-11.7,3.6-14.8,8.9C20.6,40.4,25.6,44,32.3,44z
+	 M32.3,27.7c5.4,0,10.3,2.8,13.1,7.4c-4.3,7.2-13.7,9.6-20.9,5.2c-2.1-1.3-3.9-3.1-5.2-5.2C21.9,30.5,26.9,27.7,32.3,27.7z"/>
+<path class="st1" d="M32.3,40.3c2.9,0,5.2-2.3,5.1-5.2c0-2.9-2.3-5.2-5.2-5.1c-2.8,0-5.1,2.3-5.1,5.2C27,37.9,29.3,40.3,32.3,40.3
+	C32.2,40.3,32.2,40.3,32.3,40.3z M32.3,33.3c1,0,1.7,0.8,1.7,1.7s-0.8,1.7-1.7,1.7s-1.7-0.8-1.7-1.7l0,0
+	C30.5,34.1,31.3,33.4,32.3,33.3C32.2,33.3,32.2,33.3,32.3,33.3z"/>
+</svg>

+ 24 - 0
war/img/lib/ibm/management/cloud_management.svg

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 64 64" style="enable-background:new 0 0 64 64;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#14A38A;}
+	.st1{fill:#FFFFFF;stroke:#FFFFFF;stroke-width:0.22;stroke-miterlimit:10;}
+	.st2{fill:#FFFFFF;}
+</style>
+<title>IBM Cloud Private Ref Arch</title>
+<ellipse class="st0" cx="32" cy="32" rx="32" ry="32"/>
+<path class="st1" d="M48,26.8c-0.9-7.1-7.4-12.2-14.5-11.3c-5.6,0.7-10.1,5-11.2,10.5c-6.2-1-12.1,3.3-13.1,9.5s3.3,12.1,9.5,13.1
+	c0.6,0.1,1.2,0.1,1.9,0.1h22.9c6.3,0,11.4-5.1,11.5-11.4C54.9,32.8,52.2,28.6,48,26.8L48,26.8z M43.5,45.7H20.6
+	c-4.6,0.2-8.5-3.5-8.7-8.1C11.7,33,15.4,29.1,20,29c0.2,0,0.4,0,0.6,0c0.4,0,0.8,0,1.3,0.1l3,0.5l0.5-3c0.9-5.4,6-9,11.4-8.1
+	c4.4,0.7,7.8,4.3,8.2,8.7l0.2,1.8l1.7,0.7c4.3,1.8,6.2,6.7,4.4,11C49.9,43.7,46.9,45.7,43.5,45.7L43.5,45.7z"/>
+<path class="st2" d="M27.9,37.6c2.2,0,4-1.8,4-4s-1.8-4-4-4s-4,1.8-4,4S25.7,37.6,27.9,37.6z M27.9,30.4c1.8,0,3.2,1.4,3.2,3.2
+	c0,1.8-1.4,3.2-3.2,3.2s-3.2-1.4-3.2-3.2l0,0C24.8,31.9,26.2,30.4,27.9,30.4L27.9,30.4z"/>
+<path class="st2" d="M36.7,33.6c0,2.2,1.8,4,4,4s4-1.8,4-4s-1.8-4-4-4S36.7,31.4,36.7,33.6z M40.7,30.4c1.8,0,3.2,1.4,3.2,3.2
+	s-1.4,3.2-3.2,3.2s-3.2-1.4-3.2-3.2v0C37.5,31.9,39,30.5,40.7,30.4L40.7,30.4z"/>
+<path class="st2" d="M38.3,24.8c0-2.2-1.8-4-4-4s-4,1.8-4,4s1.8,4,4,4S38.3,27,38.3,24.8z M34.3,28c-1.8,0-3.2-1.4-3.2-3.2
+	s1.4-3.2,3.2-3.2c1.8,0,3.2,1.4,3.2,3.2c0,0,0,0,0,0C37.5,26.6,36.1,28,34.3,28L34.3,28z"/>
+<path class="st2" d="M31.1,39.2h-6.4c-0.9,0-1.6,0.7-1.6,1.6v2.4h9.6v-2.4C32.7,39.9,32,39.2,31.1,39.2z"/>
+<path class="st2" d="M43.9,39.2h-6.4c-0.9,0-1.6,0.7-1.6,1.6v2.4h9.6v-2.4C45.5,39.9,44.8,39.2,43.9,39.2z"/>
+</svg>

+ 69 - 0
war/img/lib/ibm/miscellaneous/scalable.svg

@@ -0,0 +1,69 @@
+<?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"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   contentScriptType="text/ecmascript"
+   zoomAndPan="magnify"
+   contentStyleType="text/css"
+   id="svg2"
+   sodipodi:docname="scalable.svg"
+   version="1.1"
+   width="40.063866mm"
+   preserveAspectRatio="xMidYMid meet"
+   inkscape:version="0.91 r13725"
+   viewBox="0 0 141.95858 138.75573"
+   height="39.15995mm">
+  <metadata
+     id="metadata4184">
+    <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="defs4182" />
+  <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="1018"
+     id="namedview4180"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="0.54131261"
+     inkscape:cx="-377.79372"
+     inkscape:cy="366.01501"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2" />
+  <path
+     style="opacity:1;fill:#e7e8e8;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     d="M 11.16819,138.75573 C 5.21797,138.75573 0,134.40094 0,127.66549 L 0,12.40281 C 0,4.57526 5.38744,0 11.78308,0 L 129.334,0 C 138.46574,0 141.95858,6.64787 141.95858,12.91402 L 141.95858,125.50024 C 141.95858,132.85013 137.48994,138.75573 130.59364,138.75573 Z"
+     id="path4176"
+     inkscape:connector-curvature="0" />
+  <path
+     style="opacity:1;fill:#999999;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+     d="M 97.84624,16.96564 129.22003,16.96564 129.22003,48.57483 122.35996,48.57483 122.35996,24.17663 97.84624,24.17663 Z M 42.23016,96.37712 42.23016,64.02567 48.65387,64.02567 48.65387,85.26296 86.14575,48.78477 64.69697,48.78477 64.69697,42.66695 96.99002,42.66695 96.99002,74.80846 89.72655,74.80846 89.93339,54.83827 53.23781,90.73758 75.3928,90.73758 75.3928,96.37712 Z M 17.8214,124.34712 17.8214,93.6631 25.10443,93.6631 25.10443,118.20075 50.00948,118.20075 50.00948,124.34712 Z"
+     id="path4178"
+     inkscape:connector-curvature="0" />
+</svg>

File diff suppressed because it is too large
+ 1 - 0
war/img/lib/ibm/miscellaneous/text_to_speech.svg


File diff suppressed because it is too large
+ 1828 - 1824
war/js/app.min.js


File diff suppressed because it is too large
+ 509 - 505
war/js/atlas-viewer.min.js


File diff suppressed because it is too large
+ 1649 - 1644
war/js/atlas.min.js


+ 13 - 5
war/js/diagramly/Dialogs.js

@@ -788,7 +788,7 @@ var ConfirmDialog = function(editorUi, message, okFn, cancelFn, okLabel, cancelL
 	var p2 = document.createElement('div');
 	p2.style.padding = '6px';
 	p2.style.overflow = 'auto';
-	p2.style.maxHeight = '40px';
+	p2.style.maxHeight = '44px';
 	
 	if (mxClient.IS_QUIRKS)
 	{
@@ -5606,7 +5606,7 @@ var FindWindow = function(ui, x, y, w, h)
 
 		var active = lastFound == null;
 		
-		if (graph.isEnabled() && search.length > 0)
+		if (search.length > 0)
 		{
 			for (var i = 0; i < cells.length; i++)
 			{
@@ -5650,15 +5650,23 @@ var FindWindow = function(ui, x, y, w, h)
 		if (firstMatch != null)
 		{
 			lastFound = firstMatch;
-			graph.setSelectionCell(lastFound.cell);
 			graph.scrollCellToVisible(lastFound.cell);
+			
+			if (graph.isEnabled())
+			{
+				graph.setSelectionCell(lastFound.cell);
+			}
+			else
+			{
+				graph.highlightCell(lastFound.cell);
+			}
 		}
-		else
+		else if (graph.isEnabled())
 		{
 			graph.clearSelection();
 		}
 		
-		return !graph.isEnabled() || search.length == 0 || firstMatch != null;
+		return search.length == 0 || firstMatch != null;
 	};
 
 	mxUtils.br(div);

+ 9 - 31
war/js/diagramly/DriveRealtime.js

@@ -1479,43 +1479,21 @@ DriveRealtime.prototype.createPrefix = function()
 
 DriveRealtime.prototype.highlight = function(cell, sessionId)
 {
-	var state = this.graph.view.getState(cell);
+	var color = 'red'; // session not found
 	
-	if (state != null)
+	for (var i = 0; i < this.doc.getCollaborators().length; i = i + 1)
 	{
-		var color = 'red'; // session not found
-		
-		for (var i = 0; i < this.doc.getCollaborators().length; i = i + 1)
-		{
-			var collaborator = this.doc.getCollaborators()[i];
-
-			if (collaborator.sessionId == sessionId)
-			{
-				color = collaborator.color;
-				
-				break;
-			}      
-		}
+		var collaborator = this.doc.getCollaborators()[i];
 
-		var sw = Math.max(5, mxUtils.getValue(state.style, mxConstants.STYLE_STROKEWIDTH, 1) + 4);
-		var hl = new mxCellHighlight(this.graph, color, sw, false);
-		hl.highlight(state);
-		
-		// Fades out the highlight after a delay
-		window.setTimeout(function()
+		if (collaborator.sessionId == sessionId)
 		{
-			if (hl.shape != null)
-			{
-			 	mxUtils.setPrefixedStyle(hl.shape.node.style, 'transition', 'all 1200ms ease-in-out');
-				hl.shape.node.style.opacity = 0;
-			}
+			color = collaborator.color;
 			
-			window.setTimeout(function()
-			{
-				hl.destroy();
-			}, 2000);
-		}, 1000);
+			break;
+		}      
 	}
+	
+	this.graph.highlightCell(cell, color);
 };
 
 /**

+ 33 - 0
war/js/diagramly/Editor.js

@@ -1265,6 +1265,39 @@
 	{
 		return href != null && href.substring(0, 10) == 'data:page/';
 	};
+	
+	/**
+	 * Highlights the given cell.
+	 */
+	Graph.prototype.highlightCell = function(cell, color, duration)
+	{
+		color = (color != null) ? color : mxConstants.DEFAULT_VALID_COLOR;
+		duration = (duration != null) ? duration : 1000;
+		var state = this.view.getState(cell);
+		
+		if (state != null)
+		{
+			var sw = Math.max(5, mxUtils.getValue(state.style, mxConstants.STYLE_STROKEWIDTH, 1) + 4);
+			var hl = new mxCellHighlight(this, color, sw, false);
+			hl.highlight(state);
+			
+			// Fades out the highlight after a duration
+			window.setTimeout(function()
+			{
+				if (hl.shape != null)
+				{
+				 	mxUtils.setPrefixedStyle(hl.shape.node.style, 'transition', 'all 1200ms ease-in-out');
+					hl.shape.node.style.opacity = 0;
+				}
+				
+				// Destroys the highlight after the fade
+				window.setTimeout(function()
+				{
+					hl.destroy();
+				}, 1200);
+			}, duration);
+		}
+	};
 
 	/**
 	 * Adds a shadow filter to the given svg root.

+ 0 - 2
war/js/diagramly/EditorUi.js

@@ -1444,7 +1444,6 @@
 					}
 					
 					this.loadLibrary(new StorageLibrary(this, xml, '.scratchpad'));
-					
 				}));
 			}
 			else
@@ -4269,7 +4268,6 @@
 	EditorUi.prototype.timeSince = function(date)
 	{
 	    var seconds = Math.floor((new Date() - date) / 1000);
-		
 	    var interval = Math.floor(seconds / 31536000);
 
 	    if (interval > 1)

+ 406 - 192
war/js/diagramly/graphml/mxGraphMlCodec.js

@@ -167,7 +167,23 @@ mxGraphMlCodec.prototype.dataElem2Obj = function (elem)
 	if (elem.childNodes.length == 1)
 	{
 		if (elem.childNodes[0].nodeType != 1)
-			return elem.childNodes[0].textContent;
+		{
+			//TODO handle this similar case better
+			//cache referenced objects
+			if (refKey)
+			{
+				var tmpObj = {};
+				//parse all attributes before following the reference
+				this.parseAttributes(origElem, tmpObj);
+				tmpObj[this.sharedData[refKey].nodeName] = elem.childNodes[0].textContent; 
+				this.cachedRefObj[refKey] = tmpObj;
+				return tmpObj;
+			}
+			else 
+			{
+				return elem.childNodes[0].textContent;
+			}
+		}
 	}
 	
 	for (var i = 0; i < elem.childNodes.length; i++)
@@ -202,7 +218,7 @@ mxGraphMlCodec.prototype.dataElem2Obj = function (elem)
 			{
 				var dotPos = attName.lastIndexOf(".");
 				
-				if (dotPos)
+				if (dotPos > 0)
 				{
 					attName = attName.substr(dotPos + 1);
 				}
@@ -393,11 +409,15 @@ mxGraphMlCodec.prototype.importNode = function (nodeElement, graph, nodesMap, pa
 	
 	var node = new mxCell();
 	node.vertex = true;
+	node.geometry = new mxGeometry(0,0,0,0);
 
 	graph.addCell(node, parent);
 
 	var style = {graphMlID: id};
 	var mlStyleObj = null;
+	var mlTemplate = null;
+	var lblObj = null;
+	var lbls = null;
 	
 	for (var i = 0; i < data.length; i++)
 	{
@@ -411,183 +431,191 @@ mxGraphMlCodec.prototype.importNode = function (nodeElement, graph, nodesMap, pa
 		else if (dataObj.key == this.nodesKeys[mxGraphMlConstants.NODE_STYLE].key) 
 		{
 //			console.log(JSON.stringify(dataObj));
+			//TODO move these static mapping objects outside such that they are defined once only
 			mlStyleObj = dataObj;
-			var dashStyleFn = function(val, map)
+			if (dataObj["yjs:StringTemplateNodeStyle"])
 			{
-				map["dashed"] = 1;
-				//map["fixDash"] = 1;
-				var pattern = null;
-				switch(val)
+				mlTemplate = dataObj["yjs:StringTemplateNodeStyle"];
+			} 
+			else
+			{
+				var dashStyleFn = function(val, map)
 				{
-					case "DashDot":
-						pattern = "3 1 1 1";
-					break;
-					case "Dot":
-						pattern = "1 1";
-					break;
-					case "DashDotDot":
-						pattern = "3 1 1 1 1 1";
-					break;
-					default:
-						pattern = val;
-				}
+					map["dashed"] = 1;
+					//map["fixDash"] = 1;
+					var pattern = null;
+					switch(val)
+					{
+						case "DashDot":
+							pattern = "3 1 1 1";
+						break;
+						case "Dot":
+							pattern = "1 1";
+						break;
+						case "DashDotDot":
+							pattern = "3 1 1 1 1 1";
+						break;
+						default:
+							pattern = val;
+					}
+					
+					if (pattern)
+						map["dashPattern"] = pattern;
+				};
 				
-				if (pattern)
-					map["dashPattern"] = pattern;
-			};
-			
-			var styleCommonMap = 
-			{
-				"shape": {key: "shape", mod: "shape"},
-				"type": {key: "shape", mod: "shape"},
-				"assetName": {key: "shape", mod: "shape"},
-				"activityType": {key: "shape", mod: "shape"},
-				"fill": {key: "fillColor", mod: "color"},
-				"fill.yjs:SolidColorFill.color": {key: "fillColor", mod: "color"},
-				"fill.yjs:SolidColorFill.color.yjs:Color.value": {key: "fillColor", mod: "color"},
-				"stroke": {key: "strokeColor", mod: "color"},
-				"stroke.yjs:Stroke":
+				var styleCommonMap = 
 				{
-					"dashStyle": dashStyleFn,
-					"dashStyle.yjs:DashStyle.dashes": dashStyleFn,
-					"fill": {key: "strokeColor", mod: "color"},
-					"fill.yjs:SolidColorFill.color": {key: "strokeColor", mod: "color"},
-					//"lineCap": "", //??
-					"thickness.sys:Double": "strokeWidth",
-					"thickness": "strokeWidth"
-				}
-			};
-
-			var assetNodesStyle = mxUtils.clone(styleCommonMap);
-			assetNodesStyle["defaults"] = {
-				"fillColor": "#CCCCCC",
-				"strokeColor": "#6881B3"
-			};
-			
-			var bpmnActivityStyle = mxUtils.clone(styleCommonMap);
-			bpmnActivityStyle["defaults"] = {
-				"shape": "ext;rounded=1",
-				"fillColor": "#FFFFFF",
-				"strokeColor": "#000090"
-			};
-			
-			var bpmnGatewayStyle = mxUtils.clone(styleCommonMap);
-			bpmnGatewayStyle["defaults"] = {
-				"shape": "rhombus;fillColor=#FFFFFF;strokeColor=#FFCD28"
-			};
-			
-			var bpmnConversationStyle = mxUtils.clone(styleCommonMap);
-			bpmnConversationStyle["defaults"] = {
-				"shape": "hexagon",
-				"strokeColor": "#007000"
-			};
-			
-			var bpmnEventStyle = mxUtils.clone(styleCommonMap);
-			bpmnEventStyle["defaults"] = {
-				"shape": "mxgraph.bpmn.shape;perimeter=ellipsePerimeter;symbol=general",
-				"outline": "standard"
-			};
-			bpmnEventStyle["characteristic"] = {key: "outline", mod: "bpmnOutline"};
-			
-			var bpmnDataObjectStyle = mxUtils.clone(styleCommonMap);
-			bpmnDataObjectStyle["defaults"] = {
-				"shape": "js:bpmnDataObject"
-			};
-			
-			var bpmnDataStoreStyle = mxUtils.clone(styleCommonMap);
-			bpmnDataStoreStyle["defaults"] = {
-				"shape": "datastore"
-			};
-			
-			var bpmnGroupNodeStyle = mxUtils.clone(styleCommonMap);
-			bpmnGroupNodeStyle["defaults"] = {
-				"shape": "swimlane;swimlaneLine=0;startSize=20;dashed=1;dashPattern=3 1 1 1;collapsible=0;rounded=1"
-			};
-			
-			var bpmnChoreographyNodeStyle = mxUtils.clone(styleCommonMap);
-			bpmnChoreographyNodeStyle["defaults"] = {
-				"shape": "swimlane;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;startSize=20;rounded=1;collapsible=0"
-			};
-			
-			//approximation to GraphML shapes TODO improve them
-			var bevelNodeStyle = mxUtils.clone(styleCommonMap);
-			bevelNodeStyle["defaults"] = {
-				"rounded": "1",
-				"glass": "1",
-				"strokeColor": "#FFFFFF"
-			};
-			bevelNodeStyle["inset"] = "strokeWidth";
-			bevelNodeStyle["radius"] = "arcSize";
-			bevelNodeStyle["drawShadow"] = {key:"shadow", mod:"bool"};
-			bevelNodeStyle["color"] = {key:"fillColor", mod:"color", addGradient: "north"};
-			bevelNodeStyle["color.yjs:Color.value"] = bevelNodeStyle["color"];
-			
-			var shinyPlateNodeStyle = mxUtils.clone(styleCommonMap);
-			shinyPlateNodeStyle["defaults"] = {
-				"rounded": "1",
-				"arcSize": 10,
-				"glass": "1",
-				"shadow": "1",
-				"strokeColor": "none",
-				"rotation": -90 //TODO requires rotation!
-			};
-			shinyPlateNodeStyle["drawShadow"] = {key:"shadow", mod:"bool"};
-			
-			var demoGroupStyle = mxUtils.clone(styleCommonMap);
-			demoGroupStyle["defaults"] = {
-				"shape": "swimlane",
-				"startSize": 20,
-				"strokeWidth": 4,
-				"spacingLeft": 10 //TODO can we change collapse icon to be in right side?
-			};
-			demoGroupStyle["isCollapsible"] = {key:"collapsible", mod:"bool"};
-			demoGroupStyle["borderColor"] = {key:"strokeColor", mod:"color"};
-			demoGroupStyle["folderFrontColor"] = {key:"fillColor", mod:"color"}; //TODO fillColor always match strokeColor!
-//			demoGroupStyle["folderBackColor"] = {key:"fillColor", mod:"color"}; //??
-			
-			var collapsibleNodeStyle = mxUtils.clone(styleCommonMap);
-			collapsibleNodeStyle["defaults"] = {
-				"shape": "swimlane",
-				"startSize": 20,
-				"spacingLeft": 10 //TODO can we change collapse icon to be in right side?
-			};
-			collapsibleNodeStyle["yjs:PanelNodeStyle"] = {
-				"color": {key:"swimlaneFillColor", mod:"color"},
-				"color.yjs:Color.value": {key:"swimlaneFillColor", mod:"color"},
-				"labelInsetsColor": {key:"fillColor", mod:"color"},
-				"labelInsetsColor.yjs:Color.value": {key:"fillColor", mod:"color"}
-			};
-			
-			var tableStyle = mxUtils.clone(styleCommonMap);
-			tableStyle["defaults"] = {
-				"shape": "js:table"
-			};
-			
-			this.mapObject(dataObj, {
-				"yjs:ShapeNodeStyle": styleCommonMap,
-				"demostyle:FlowchartNodeStyle": styleCommonMap,
-				"demostyle:AssetNodeStyle": assetNodesStyle,
-				"demostyle:DemoGroupStyle": styleCommonMap,
-				"bpmn:ActivityNodeStyle": bpmnActivityStyle,
-				"bpmn:GatewayNodeStyle": bpmnGatewayStyle,
-				"bpmn:ConversationNodeStyle": bpmnConversationStyle,
-				"bpmn:EventNodeStyle": bpmnEventStyle,
-				"bpmn:DataObjectNodeStyle": bpmnDataObjectStyle,
-				"bpmn:DataStoreNodeStyle": bpmnDataStoreStyle,
-				"bpmn:GroupNodeStyle": bpmnGroupNodeStyle,
-				"bpmn:ChoreographyNodeStyle": bpmnChoreographyNodeStyle,
-				"yjs:BevelNodeStyle": bevelNodeStyle,
-				"yjs:ShinyPlateNodeStyle": shinyPlateNodeStyle,
-				"demostyle:DemoGroupStyle": demoGroupStyle,
-				"yjs:CollapsibleNodeStyleDecorator": collapsibleNodeStyle,
-				"bpmn:PoolNodeStyle": tableStyle,
-				"yjs:TableNodeStyle": tableStyle,
-				"demotablestyle:DemoTableStyle": tableStyle
-			}, style);
+					"shape": {key: "shape", mod: "shape"},
+					"type": {key: "shape", mod: "shape"},
+					"assetName": {key: "shape", mod: "shape"},
+					"activityType": {key: "shape", mod: "shape"},
+					"fill": {key: "fillColor", mod: "color"},
+					"fill.yjs:SolidColorFill.color": {key: "fillColor", mod: "color"},
+					"fill.yjs:SolidColorFill.color.yjs:Color.value": {key: "fillColor", mod: "color"},
+					"stroke": {key: "strokeColor", mod: "color"},
+					"stroke.yjs:Stroke":
+					{
+						"dashStyle": dashStyleFn,
+						"dashStyle.yjs:DashStyle.dashes": dashStyleFn,
+						"fill": {key: "strokeColor", mod: "color"},
+						"fill.yjs:SolidColorFill.color": {key: "strokeColor", mod: "color"},
+						//"lineCap": "", //??
+						"thickness.sys:Double": "strokeWidth",
+						"thickness": "strokeWidth"
+					}
+				};
+	
+				var assetNodesStyle = mxUtils.clone(styleCommonMap);
+				assetNodesStyle["defaults"] = {
+					"fillColor": "#CCCCCC",
+					"strokeColor": "#6881B3"
+				};
+				
+				var bpmnActivityStyle = mxUtils.clone(styleCommonMap);
+				bpmnActivityStyle["defaults"] = {
+					"shape": "ext;rounded=1",
+					"fillColor": "#FFFFFF",
+					"strokeColor": "#000090"
+				};
+				
+				var bpmnGatewayStyle = mxUtils.clone(styleCommonMap);
+				bpmnGatewayStyle["defaults"] = {
+					"shape": "rhombus;fillColor=#FFFFFF;strokeColor=#FFCD28"
+				};
+				
+				var bpmnConversationStyle = mxUtils.clone(styleCommonMap);
+				bpmnConversationStyle["defaults"] = {
+					"shape": "hexagon",
+					"strokeColor": "#007000"
+				};
+				
+				var bpmnEventStyle = mxUtils.clone(styleCommonMap);
+				bpmnEventStyle["defaults"] = {
+					"shape": "mxgraph.bpmn.shape;perimeter=ellipsePerimeter;symbol=general",
+					"outline": "standard"
+				};
+				bpmnEventStyle["characteristic"] = {key: "outline", mod: "bpmnOutline"};
+				
+				var bpmnDataObjectStyle = mxUtils.clone(styleCommonMap);
+				bpmnDataObjectStyle["defaults"] = {
+					"shape": "js:bpmnDataObject"
+				};
+				
+				var bpmnDataStoreStyle = mxUtils.clone(styleCommonMap);
+				bpmnDataStoreStyle["defaults"] = {
+					"shape": "datastore"
+				};
+				
+				var bpmnGroupNodeStyle = mxUtils.clone(styleCommonMap);
+				bpmnGroupNodeStyle["defaults"] = {
+					"shape": "swimlane;swimlaneLine=0;startSize=20;dashed=1;dashPattern=3 1 1 1;collapsible=0;rounded=1"
+				};
+				
+				var bpmnChoreographyNodeStyle = mxUtils.clone(styleCommonMap);
+				bpmnChoreographyNodeStyle["defaults"] = {
+					"shape": "js:BpmnChoreography"//"swimlane;childLayout=stackLayout;horizontal=1;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;startSize=20;rounded=1;collapsible=0"
+				};
+				
+				//approximation to GraphML shapes TODO improve them
+				var bevelNodeStyle = mxUtils.clone(styleCommonMap);
+				bevelNodeStyle["defaults"] = {
+					"rounded": "1",
+					"glass": "1",
+					"strokeColor": "#FFFFFF"
+				};
+				bevelNodeStyle["inset"] = "strokeWidth";
+				bevelNodeStyle["radius"] = "arcSize";
+				bevelNodeStyle["drawShadow"] = {key:"shadow", mod:"bool"};
+				bevelNodeStyle["color"] = {key:"fillColor", mod:"color", addGradient: "north"};
+				bevelNodeStyle["color.yjs:Color.value"] = bevelNodeStyle["color"];
+				
+				var shinyPlateNodeStyle = mxUtils.clone(styleCommonMap);
+				shinyPlateNodeStyle["defaults"] = {
+					"rounded": "1",
+					"arcSize": 10,
+					"glass": "1",
+					"shadow": "1",
+					"strokeColor": "none",
+					"rotation": -90 //TODO requires rotation!
+				};
+				shinyPlateNodeStyle["drawShadow"] = {key:"shadow", mod:"bool"};
+				
+				var demoGroupStyle = mxUtils.clone(styleCommonMap);
+				demoGroupStyle["defaults"] = {
+					"shape": "swimlane",
+					"startSize": 20,
+					"strokeWidth": 4,
+					"spacingLeft": 10 //TODO can we change collapse icon to be in right side?
+				};
+				demoGroupStyle["isCollapsible"] = {key:"collapsible", mod:"bool"};
+				demoGroupStyle["borderColor"] = {key:"strokeColor", mod:"color"};
+				demoGroupStyle["folderFrontColor"] = {key:"fillColor", mod:"color"}; //TODO fillColor always match strokeColor!
+	//			demoGroupStyle["folderBackColor"] = {key:"fillColor", mod:"color"}; //??
+				
+				var collapsibleNodeStyle = mxUtils.clone(styleCommonMap);
+				collapsibleNodeStyle["defaults"] = {
+					"shape": "swimlane",
+					"startSize": 20,
+					"spacingLeft": 10 //TODO can we change collapse icon to be in right side?
+				};
+				collapsibleNodeStyle["yjs:PanelNodeStyle"] = {
+					"color": {key:"swimlaneFillColor", mod:"color"},
+					"color.yjs:Color.value": {key:"swimlaneFillColor", mod:"color"},
+					"labelInsetsColor": {key:"fillColor", mod:"color"},
+					"labelInsetsColor.yjs:Color.value": {key:"fillColor", mod:"color"}
+				};
+				
+				var tableStyle = mxUtils.clone(styleCommonMap);
+				tableStyle["defaults"] = {
+					"shape": "js:table"
+				};
+				
+				this.mapObject(dataObj, {
+					"yjs:ShapeNodeStyle": styleCommonMap,
+					"demostyle:FlowchartNodeStyle": styleCommonMap,
+					"demostyle:AssetNodeStyle": assetNodesStyle,
+					"demostyle:DemoGroupStyle": styleCommonMap,
+					"bpmn:ActivityNodeStyle": bpmnActivityStyle,
+					"bpmn:GatewayNodeStyle": bpmnGatewayStyle,
+					"bpmn:ConversationNodeStyle": bpmnConversationStyle,
+					"bpmn:EventNodeStyle": bpmnEventStyle,
+					"bpmn:DataObjectNodeStyle": bpmnDataObjectStyle,
+					"bpmn:DataStoreNodeStyle": bpmnDataStoreStyle,
+					"bpmn:GroupNodeStyle": bpmnGroupNodeStyle,
+					"bpmn:ChoreographyNodeStyle": bpmnChoreographyNodeStyle,
+					"yjs:BevelNodeStyle": bevelNodeStyle,
+					"yjs:ShinyPlateNodeStyle": shinyPlateNodeStyle,
+					"demostyle:DemoGroupStyle": demoGroupStyle,
+					"yjs:CollapsibleNodeStyleDecorator": collapsibleNodeStyle,
+					"bpmn:PoolNodeStyle": tableStyle,
+					"yjs:TableNodeStyle": tableStyle,
+					"demotablestyle:DemoTableStyle": tableStyle
+				}, style);
+			}
 		}
 		else if (dataObj.key == this.nodesKeys[mxGraphMlConstants.NODE_LABELS].key) 
 		{
-			this.addLabels(node, dataObj, style);
+			lblObj = dataObj;
 		}
 	}
 	
@@ -599,10 +627,19 @@ mxGraphMlCodec.prototype.importNode = function (nodeElement, graph, nodesMap, pa
 		this.importPort(ports[i], portsMap);
 	}
 	
+	if (mlTemplate)
+	{
+		this.handleTemplates(mlTemplate, node, style);
+	}
+	
 	this.handleFixedRatio(node, style);
 
+	//handle labels after node geometry is determined
+	if (lblObj)
+		lbls = this.addLabels(node, lblObj, style);
+	
 	//handle special compound shapes
-	this.handleCompoundShape(node, style, mlStyleObj);
+	this.handleCompoundShape(node, style, mlStyleObj, lbls);
 	
 	node.style = this.styleMap2Str(style);
 	
@@ -616,7 +653,19 @@ mxGraphMlCodec.prototype.importNode = function (nodeElement, graph, nodesMap, pa
 	nodesMap[id] = {node: node, ports: portsMap};
 };
 
-mxGraphMlCodec.prototype.handleCompoundShape = function (node, styleMap, mlStyleObj)
+
+mxGraphMlCodec.prototype.handleTemplates = function (template, node, styleMap)
+{
+	var svg = template.match(/\<svg(\s|\S)+\<\/svg\>/);
+	if (svg)
+	{
+		svg = svg[0];
+		styleMap["shape"] = "image";
+		styleMap["image"] = "data:image/svg+xml," + ((window.btoa) ? btoa(svg) : Base64.encode(svg));
+	}
+};
+
+mxGraphMlCodec.prototype.handleCompoundShape = function (node, styleMap, mlStyleObj, lbls)
 {
 	var shape = styleMap["shape"];
 	
@@ -653,7 +702,34 @@ mxGraphMlCodec.prototype.handleCompoundShape = function (node, styleMap, mlStyle
 					node.insert(cell1);
 				}
 			break;
+			case "js:BpmnChoreography":
+				this.mapObject(mlStyleObj, {
+					"defaults": {
+						"shape": "swimlane;collapsible=0;rounded=1",
+						"startSize": "20",
+						"strokeColor": "#006000",
+						"fillColor": "#CCCCCC"
+					}
+				}, styleMap);
+				
+				//TODO the shape should be clipped by parent borders. It should also be resized relative to its parent
+				var pGeo = node.geometry;
+				var cell1 = new mxCell('', new mxGeometry(0, pGeo.height - 20, pGeo.width, 20), 'strokeColor=#006000;fillColor=#777777;rounded=1');
+				cell1.vertex = true;
+				node.insert(cell1);
+				
+				//TODO handle labels accurately
+				if (lbls && lbls.lblTxts)
+				{
+//					console.log(lbls);
+					node.value = lbls.lblTxts[0];
+					cell1.value = lbls.lblTxts[1];
+				}
+			break;
 			case "js:table":
+				//TODO we need 2 passes to find the exact shift of columns/rows especially when there is rows inside rows
+				//TODO Internal table strokes needs to match table strokeWidth and only be on one side
+				//TODO code optimization
 				styleMap["shape"] = "swimlane;collapsible=0;swimlaneLine=0";
 				var tableObj = mlStyleObj["yjs:TableNodeStyle"] || mlStyleObj["demotablestyle:DemoTableStyle"];
 				
@@ -662,7 +738,7 @@ mxGraphMlCodec.prototype.handleCompoundShape = function (node, styleMap, mlStyle
 					tableObj = mlStyleObj["bpmn:PoolNodeStyle"]["yjs:TableNodeStyle"];
 				}
 				
-				console.log(tableObj);
+//				console.log(tableObj);
 				
 				this.mapObject(tableObj, {
 					"backgroundStyle.demotablestyle:TableBackgroundStyle": {
@@ -968,16 +1044,16 @@ mxGraphMlCodec.prototype.addNodeGeo = function (node, geoObj, parentGeo)
 			dy = parentGeo.y;
 		}
 		
-		var geo = new mxGeometry( 
-				parseFloat(geoRect[mxGraphMlConstants.X]) - dx,
-				parseFloat(geoRect[mxGraphMlConstants.Y]) - dy,
-				parseFloat(geoRect[mxGraphMlConstants.WIDTH]),
-				parseFloat(geoRect[mxGraphMlConstants.HEIGHT])
-		);
-		node.geometry = geo;
+		var geo = node.geometry;
+		 
+		geo.x = parseFloat(geoRect[mxGraphMlConstants.X]) - dx;
+		geo.y = parseFloat(geoRect[mxGraphMlConstants.Y]) - dy;
+		geo.width = parseFloat(geoRect[mxGraphMlConstants.WIDTH]);
+		geo.height = parseFloat(geoRect[mxGraphMlConstants.HEIGHT]);
 	}
 };
 
+//TODO handle ports
 mxGraphMlCodec.prototype.importEdge = function (edgeElement, graph, nodesMap, parent)
 {
 	var data = this.getDirectChildNamedElements(edgeElement, mxGraphMlConstants.DATA);
@@ -1117,12 +1193,14 @@ mxGraphMlCodec.prototype.addEdgeStyle = function (edge, styleObj, styleMap)
 	}, styleMap);
 };
 
+//TODO label offset
 mxGraphMlCodec.prototype.addLabels = function (node, LblObj, nodeStyle) 
 {
 	var lblList = LblObj[mxGraphMlConstants.Y_LABEL];
 	
-	lblTxts = [];
-	lblStyles = [];
+	var lblTxts = [];
+	var lblStyles = [];
+	var lblLayouts = [];
 	
 	if (lblList)
 	{
@@ -1192,22 +1270,158 @@ mxGraphMlCodec.prototype.addLabels = function (node, LblObj, nodeStyle)
 
 			lblTxts.push(txt);
 			lblStyles.push(styleMap);
+			lblLayouts.push(layout);
 		}
 	}
 	
-	if (lblTxts.length == 1)
+	//TODO Use the style map with defaults to change the style
+	for (var i = 0; i < lblTxts.length; i++)
 	{
-		node.value = lblTxts[0];
-		
-		for (var key in lblStyles[0])
+		if (lblTxts[i])
 		{
-			nodeStyle[key] = lblStyles[0][key];
+			if (lblLayouts[i] && lblLayouts[i]["bpmn:ParticipantParameter"])
+				continue;
+			
+			lblTxts[i] = mxUtils.htmlEntities(lblTxts[i], false).replace(/\n/g, '<br/>');
+			var geo = node.geometry;
+
+			var lblCell = new mxCell(lblTxts[i], new mxGeometry(0, 0, geo.width, geo.height), 'text;html=1;spacing=0;' + this.styleMap2Str(lblStyles[i]));
+			lblCell.vertex = true;
+			node.insert(lblCell, 0);
+			var lGeo = lblCell.geometry;
+
+			console.log(lblTxts[i]);
+			console.log(lblLayouts[i]);
+			
+			if (lblLayouts[i]["y:RatioAnchoredLabelModelParameter"])
+			{
+				var strSize = mxUtils.getSizeForString(lblTxts[i], lblStyles[i]["fontSize"], lblStyles[i]["fontFamily"]);
+				var offsetStr = lblLayouts[i]["y:RatioAnchoredLabelModelParameter"]["LayoutOffset"];
+				
+				if (offsetStr)
+				{
+					var parts = offsetStr.split(',');
+					lGeo.x = parseFloat(parts[0]);
+					lGeo.y = parseFloat(parts[1]);
+					lGeo.width = strSize.width;
+					lGeo.height = strSize.height;
+					lblCell.style += ";spacingTop=-4;";
+				}
+				else
+				{
+					//TODO map there?
+					var lblRatio = lblLayouts[i]["y:RatioAnchoredLabelModelParameter"]["LabelRatio"];
+					var layoutRatio = lblLayouts[i]["y:RatioAnchoredLabelModelParameter"]["LayoutRatio"];
+					
+					lblCell.style += ";align=center;";
+				}
+			}
+			else if (lblLayouts[i]["y:InteriorLabelModel"]) //TODO this is probably can be done by setting the value?
+			{
+				//TODO merge with next one if they are identical in all cases!
+				switch (lblLayouts[i]["y:InteriorLabelModel"])
+				{
+					case "Center":
+						lblCell.style += ";verticalAlign=middle;";
+					break;
+					case "North":
+						lGeo.height = 1;
+					break;
+					case "West":
+						lGeo.width = geo.height;
+						lGeo.height = geo.width;
+						//-90 rotation of origin
+						lGeo.y = geo.height /2 - geo.width /2;
+						lGeo.x = -lGeo.y;
+						lblCell.style += ";rotation=-90";
+					break;
+				}
+				lblCell.style += ";align=center;";
+			}
+			//TODO Spacing still need to be adjusted
+			else if (lblLayouts[i]["y:StretchStripeLabelModel"])
+			{
+				switch (lblLayouts[i]["y:StretchStripeLabelModel"])
+				{
+					case "North":
+						lGeo.height = 1;
+					break;
+					case "West":
+						lGeo.width = geo.height;
+						lGeo.height = geo.width;
+						//-90 rotation of origin
+						lGeo.y = geo.height /2 - geo.width /2;
+						lGeo.x = -lGeo.y;
+						lblCell.style += ";rotation=-90;";
+					break;
+				}
+			}
+			else if (lblLayouts[i]["bpmn:PoolHeaderLabelModel"])
+			{
+				//TODO merge with previous one if they are identical in all cases!
+				switch (lblLayouts[i]["bpmn:PoolHeaderLabelModel"])
+				{
+					case "NORTH":
+						lGeo.height = 1;
+					break;
+					case "WEST":
+						lGeo.width = geo.height;
+						lGeo.height = geo.width;
+						//-90 rotation of origin
+						lGeo.y = geo.height /2 - geo.width /2;
+						lGeo.x = -lGeo.y;
+						lblCell.style += ";rotation=-90;";
+					break;
+				}
+				lblCell.style += ";align=center;";
+			}
+			else if (lblLayouts[i]["y:InteriorStretchLabelModelParameter"])
+			{
+				//TODO probably mapObject is needed in this method in general
+				try {
+					var insets = lblLayouts[i]["y:InteriorStretchLabelModelParameter"]["Model"]["y:InteriorStretchLabelModel"]["Insets"];
+					//TODO how to map it?
+				} catch(e) {
+					//Ignore
+				}
+				lblCell.style += ";align=center;";
+			}
+			else if (lblLayouts[i]["y:FreeEdgeLabelModelParameter"])
+			{
+				lGeo.relative = true;
+				var layout = lblLayouts[i]["y:FreeEdgeLabelModelParameter"];
+				var ratio = layout["Ratio"];
+				var distance = layout["Distance"];
+				var angle = layout["Angle"];
+				
+				if (angle)
+				{
+					lblCell.style += ";rotation=" + (parseFloat(angle) * (180 / Math.PI));
+				}
+				//TODO what is the formula?
+			}
+			else if (lblLayouts[i]["y:ExteriorLabelModel"])
+			{
+				var lblPos;
+				switch (lblLayouts[i]["y:ExteriorLabelModel"])
+				{
+					case "East":
+						lblCell.style += ";labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;";
+					break;
+					case "South":
+						lblCell.style += ";labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;";
+					break;
+					case "North":
+						lblCell.style += ";labelPosition=center;verticalLabelPosition=top;align=center;verticalAlign=bottom;"
+					break;
+					case "West":
+						lblCell.style += ";labelPosition=left;verticalLabelPosition=middle;align=right;verticalAlign=middle;";
+					break;
+				}
+			}
 		}
 	}
-	else
-	{
-	
-	}
+	return {lblTxts: lblTxts, lblStyles: lblStyles};
 };
 
 

+ 21 - 5
war/js/diagramly/sidebar/Sidebar-IBM.js

@@ -75,7 +75,7 @@
 			 this.createVertexTemplateEntry(s + 'iot_application.svg;',
 					 d, d, '', 'IoT Application', false, null, this.getTagsForStencil(gn, 'iot application', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'microservice.svg;',
-					 d, d, '', 'Microservice', false, null, this.getTagsForStencil(gn, 'microservice', dt).join(' ')),
+					 d * 1.37, d, '', 'Microservice', false, null, this.getTagsForStencil(gn, 'microservice', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'mobile_app.svg;',
 					 d, d, '', 'Mobile App', false, null, this.getTagsForStencil(gn, 'mobile app', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'ontology.svg;',
@@ -156,6 +156,8 @@
 					 d, d, '', 'Caches', false, null, this.getTagsForStencil(gn, 'caches', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'conversation_trained_deployed.svg;',
 					 d, d, '', 'Conversation (Trained \& Deployed)', false, null, this.getTagsForStencil(gn, 'conversation trained deployed', dt).join(' ')),
+			 this.createVertexTemplateEntry(s + 'cloud.svg;',
+					 d, d, '', 'Cloud', false, null, this.getTagsForStencil(gn, 'cloud', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'data_services.svg;',
 					 d, d, '', 'Data Services', false, null, this.getTagsForStencil(gn, 'data services', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'data_sources.svg;',
@@ -209,6 +211,8 @@
 					 d, d, '', 'Continuous Testing', false, null, this.getTagsForStencil(gn, 'continuous testing', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'devops.svg;',
 					 d, d, '', 'DevOps', false, null, this.getTagsForStencil(gn, 'devops', dt).join(' ')),
+			 this.createVertexTemplateEntry(s + 'provision.svg;',
+					 d, d, '', 'Provision', false, null, this.getTagsForStencil(gn, 'provision', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'release_management.svg;',
 					 d, d, '', 'Release Management', false, null, this.getTagsForStencil(gn, 'release management', dt).join(' '))
 		];
@@ -232,6 +236,8 @@
 					 d, d, '', 'Channels', false, null, this.getTagsForStencil(gn, 'channels', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'cloud_messaging.svg;',
 					 d, d, '', 'Cloud Messaging', false, null, this.getTagsForStencil(gn, 'cloud messaging', dt).join(' ')),
+			 this.createVertexTemplateEntry(s + 'dashboard.svg;',
+					 d, d, '', 'Dashboard', false, null, this.getTagsForStencil(gn, 'dashboard', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'diagnostics.svg;',
 					 d, d, '', 'Diagnostics', false, null, this.getTagsForStencil(gn, 'diagnostics', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'edge_services.svg;',
@@ -246,10 +252,14 @@
 					 d, d, '', 'Interservice Communication', false, null, this.getTagsForStencil(gn, 'interservice communication', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'load_balancing_routing.svg;',
 					 d, d, '', 'Load Balancing / Routing', false, null, this.getTagsForStencil(gn, 'load balancing routing', dt).join(' ')),
+			 this.createVertexTemplateEntry(s + 'microservices_mesh.svg;',
+					 d, d, '', 'Microservices Mesh', false, null, this.getTagsForStencil(gn, 'microservices mesh', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'mobile_backend.svg;',
 					 d, d, '', 'Mobile Backend', false, null, this.getTagsForStencil(gn, 'mobile backend', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'mobile_provider_network.svg;',
 					 d, d, '', 'Mobile Provider Network', false, null, this.getTagsForStencil(gn, 'mobile provider network', dt).join(' ')),
+			 this.createVertexTemplateEntry(s + 'monitoring.svg;',
+					 d, d, '', 'Monitoring', false, null, this.getTagsForStencil(gn, 'monitoring', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'monitoring_logging.svg;',
 					 d, d, '', 'Monitoring \& Logging', false, null, this.getTagsForStencil(gn, 'monitoring logging', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'peer_services.svg;',
@@ -279,6 +289,8 @@
 					 d, d, '', 'Alert Notification', false, null, this.getTagsForStencil(gn, 'alert notification', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'api_management.svg;',
 					 d, d, '', 'API Management', false, null, this.getTagsForStencil(gn, 'api management', dt).join(' ')),
+			 this.createVertexTemplateEntry(s + 'cloud_management.svg;',
+					 d, d, '', 'Cloud Management', false, null, this.getTagsForStencil(gn, 'cloud management', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'cluster_management.svg;',
 					 d, d, '', 'Cluster Management', false, null, this.getTagsForStencil(gn, 'cluster management', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'content_management.svg;',
@@ -329,9 +341,9 @@
 			 this.createVertexTemplateEntry(s + 'ibm_containers.svg;',
 					 d, d, '', 'IBM Containers', false, null, this.getTagsForStencil(gn, 'ibm containers', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'ibm_public_cloud.svg;',
-					 d, d, '', 'IBM Public Cloud', false, null, this.getTagsForStencil(gn, 'ibm public cloud', dt).join(' ')),
+					 d, d * 0.77, '', 'IBM Public Cloud', false, null, this.getTagsForStencil(gn, 'ibm public cloud', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'iot_cloud.svg;',
-					 d, d, '', 'IoT Cloud', false, null, this.getTagsForStencil(gn, 'iot cloud internet of things', dt).join(' ')),
+					 d, d * 0.77, '', 'IoT Cloud', false, null, this.getTagsForStencil(gn, 'iot cloud internet of things', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'microservices_application.svg;',
 					 d, d, '', 'Microservices Application', false, null, this.getTagsForStencil(gn, 'microservices application', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'object_storage.svg;',
@@ -341,9 +353,13 @@
 			 this.createVertexTemplateEntry(s + 'openwhisk.svg;',
 					 d, d, '', 'Openwhisk', false, null, this.getTagsForStencil(gn, 'openwhisk', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'peer_cloud.svg;',
-					 d, d, '', 'Peer Cloud', false, null, this.getTagsForStencil(gn, 'peer cloud', dt).join(' ')),
+					 d, d * 0.77, '', 'Peer Cloud', false, null, this.getTagsForStencil(gn, 'peer cloud', dt).join(' ')),
 			 this.createVertexTemplateEntry(s + 'retrieve_rank.svg;',
-					 d, d, '', 'Retrieve Rank', false, null, this.getTagsForStencil(gn, 'retrieve rank', dt).join(' '))
+					 d, d, '', 'Retrieve Rank', false, null, this.getTagsForStencil(gn, 'retrieve rank', dt).join(' ')),
+			 this.createVertexTemplateEntry(s + 'scalable.svg;',
+					 d * 0.25, d * 0.25, '', 'Scalable', false, null, this.getTagsForStencil(gn, 'scalable', dt).join(' ')),
+			 this.createVertexTemplateEntry(s + 'text_to_speech.svg;',
+					 d, d, '', 'Text to Speech', false, null, this.getTagsForStencil(gn, 'text to speech', dt).join(' '))
 		];
 			   	
    		this.addPalette('ibmMiscellaneous', 'IBM / Miscellaneous', false, mxUtils.bind(this, function(content)

File diff suppressed because it is too large
+ 107 - 106
war/js/embed-static.min.js


+ 18 - 4
war/js/mxgraph/Editor.js

@@ -769,6 +769,10 @@ function Dialog(editorUi, elt, w, h, modal, closable, onClose)
 	}
 	
 	var div = editorUi.createDiv('geDialog');
+	var pos = this.getPosition(left, top, w, h);
+	left = pos.x;
+	top = pos.y;
+	
 	div.style.width = w + 'px';
 	div.style.height = h + 'px';
 	div.style.left = left + 'px';
@@ -810,13 +814,15 @@ function Dialog(editorUi, elt, w, h, modal, closable, onClose)
 		
 		left = Math.max(1, Math.round((document.body.clientWidth - w - 64) / 2));
 		top = Math.max(1, Math.round((dh - h - editorUi.footerHeight) / 3));
-	
-		div.style.left = left + 'px';
-		div.style.top = top + 'px';
-		
 		w = Math.min(w0, document.body.scrollWidth - 64);
 		h = Math.min(h0, dh - 64);
 		
+		var pos = this.getPosition(left, top, w, h);
+		left = pos.x;
+		top = pos.y;
+		
+		div.style.left = left + 'px';
+		div.style.top = top + 'px';
 		div.style.width = w + 'px';
 		div.style.height = h + 'px';
 		
@@ -879,6 +885,14 @@ Dialog.prototype.unlockedImage = (!mxClient.IS_SVG) ? IMAGE_PATH + '/unlocked.pn
  */
 Dialog.prototype.bgOpacity = 80;
 
+/**
+ * Removes the dialog from the DOM.
+ */
+Dialog.prototype.getPosition = function(left, top)
+{
+	return new mxPoint(left, top);
+};
+
 /**
  * Removes the dialog from the DOM.
  */

+ 1 - 1
war/js/mxgraph/EditorUi.js

@@ -2755,7 +2755,7 @@ EditorUi.prototype.updateActionStates = function()
     this.actions.get('home').setEnabled(graph.view.currentRoot != null);
     this.actions.get('exitGroup').setEnabled(graph.view.currentRoot != null);
     this.actions.get('enterGroup').setEnabled(graph.getSelectionCount() == 1 && graph.isValidRoot(graph.getSelectionCell()));
-    var foldable = graph.getSelectionCount() == 1 && graph.isCellFoldable(graph.getSelectionCell())
+    var foldable = graph.getSelectionCount() == 1 && graph.isCellFoldable(graph.getSelectionCell());
     this.actions.get('expand').setEnabled(foldable);
     this.actions.get('collapse').setEnabled(foldable);
     this.actions.get('editLink').setEnabled(graph.getSelectionCount() == 1);

+ 2 - 0
war/js/mxgraph/Graph.js

@@ -1157,6 +1157,8 @@ Graph.prototype.initLayoutManager = function()
 			stackLayout.horizontal = mxUtils.getValue(style, 'horizontalStack', '1') == '1';
 			stackLayout.resizeParent = mxUtils.getValue(style, 'resizeParent', '1') == '1';
 			stackLayout.resizeLast = mxUtils.getValue(style, 'resizeLast', '0') == '1';
+			stackLayout.spacing = style['stackSpacing'] || stackLayout.spacing;
+			stackLayout.border = style['stackBorder'] || stackLayout.border;
 			stackLayout.marginLeft = style['marginLeft'] || 0;
 			stackLayout.marginRight = style['marginRight'] || 0;
 			stackLayout.marginTop = style['marginTop'] || 0;

+ 18 - 11
war/js/mxgraph/Shapes.js

@@ -861,9 +861,12 @@
 	};
 	mxUtils.extend(StepShape, mxActor);
 	StepShape.prototype.size = 0.2;
+	StepShape.prototype.fixedSize = 20;
 	StepShape.prototype.redrawPath = function(c, x, y, w, h)
 	{
-		var s =  w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size))));
+		var fixed = mxUtils.getValue(this.style, 'fixedSize', '0') != '0';
+		var s = (fixed) ? Math.max(0, Math.min(w, parseFloat(mxUtils.getValue(this.style, 'size', this.fixedSize)))) :
+			w * Math.max(0, Math.min(1, parseFloat(mxUtils.getValue(this.style, 'size', this.size))));
 		var arcSize = mxUtils.getValue(this.style, mxConstants.STYLE_ARCSIZE, mxConstants.LINE_ARCSIZE) / 2;
 		this.addPoints(c, [new mxPoint(0, 0), new mxPoint(w - s, 0), new mxPoint(w, h / 2), new mxPoint(w - s, h),
 		                   new mxPoint(0, h), new mxPoint(s, h / 2)], this.isRounded, arcSize, true);
@@ -1559,7 +1562,8 @@
 	// Step Perimeter
 	mxPerimeter.StepPerimeter = function (bounds, vertex, next, orthogonal)
 	{
-		var size = StepShape.prototype.size;
+		var fixed = mxUtils.getValue(vertex.style, 'fixedSize', '0') != '0';
+		var size = (fixed) ? StepShape.prototype.fixedSize : StepShape.prototype.size;
 		
 		if (vertex != null)
 		{
@@ -1581,28 +1585,28 @@
 		
 		if (direction == mxConstants.DIRECTION_EAST)
 		{
-			var dx = w * Math.max(0, Math.min(1, size));
+			var dx = (fixed) ? Math.max(0, Math.min(w, size)) : w * Math.max(0, Math.min(1, size));
 			points = [new mxPoint(x, y), new mxPoint(x + w - dx, y), new mxPoint(x + w, cy),
 							new mxPoint(x + w - dx, y + h), new mxPoint(x, y + h),
 							new mxPoint(x + dx, cy), new mxPoint(x, y)];
 		}
 		else if (direction == mxConstants.DIRECTION_WEST)
 		{
-			var dx = w * Math.max(0, Math.min(1, size));
+			var dx = (fixed) ? Math.max(0, Math.min(w, size)) : w * Math.max(0, Math.min(1, size));
 			points = [new mxPoint(x + dx, y), new mxPoint(x + w, y), new mxPoint(x + w - dx, cy),
 							new mxPoint(x + w, y + h), new mxPoint(x + dx, y + h),
 							new mxPoint(x, cy), new mxPoint(x + dx, y)];
 		}
 		else if (direction == mxConstants.DIRECTION_NORTH)
 		{
-			var dy = h * Math.max(0, Math.min(1, size));
+			var dy = (fixed) ? Math.max(0, Math.min(h, size)) : h * Math.max(0, Math.min(1, size));
 			points = [new mxPoint(x, y + dy), new mxPoint(cx, y), new mxPoint(x + w, y + dy),
 							new mxPoint(x + w, y + h), new mxPoint(cx, y + h - dy),
 							new mxPoint(x, y + h), new mxPoint(x, y + dy)];
 		}
 		else
 		{
-			var dy = h * Math.max(0, Math.min(1, size));
+			var dy = (fixed) ? Math.max(0, Math.min(h, size)) : h * Math.max(0, Math.min(1, size));
 			points = [new mxPoint(x, y), new mxPoint(cx, y + dy), new mxPoint(x + w, y),
 							new mxPoint(x + w, y + h - dy), new mxPoint(cx, y + h),
 							new mxPoint(x, y + h - dy), new mxPoint(x, y)];
@@ -2828,7 +2832,7 @@
 			};
 		};
 		
-		function createDisplayHandleFunction(defaultValue, allowArcHandle, max, redrawEdges)
+		function createDisplayHandleFunction(defaultValue, allowArcHandle, max, redrawEdges, fixedDefaultValue)
 		{
 			max = (max != null) ? max : 1;
 			
@@ -2836,12 +2840,15 @@
 			{
 				var handles = [createHandle(state, ['size'], function(bounds)
 				{
-					var size = parseFloat(mxUtils.getValue(this.state.style, 'size', defaultValue));
+					var fixed = (fixedDefaultValue != null) ? mxUtils.getValue(this.state.style, 'fixedSize', '0') != '0' : null;
+					var size = parseFloat(mxUtils.getValue(this.state.style, 'size', (fixed) ? fixedDefaultValue : defaultValue));
 	
-					return new mxPoint(bounds.x + size * bounds.width, bounds.getCenterY());
+					return new mxPoint(bounds.x + Math.max(0, Math.min(bounds.width, size * ((fixed) ? 1 : bounds.width))), bounds.getCenterY());
 				}, function(bounds, pt)
 				{
-					this.state.style['size'] = Math.max(0, Math.min(max, (pt.x - bounds.x) / bounds.width));
+					var fixed = (fixedDefaultValue != null) ? mxUtils.getValue(this.state.style, 'fixedSize', '0') != '0' : null;
+					
+					this.state.style['size'] = (fixed) ? (pt.x - bounds.x) : Math.max(0, Math.min(max, (pt.x - bounds.x) / bounds.width));
 				}, null, redrawEdges)];
 				
 				if (allowArcHandle && mxUtils.getValue(state.style, mxConstants.STYLE_ROUNDED, false))
@@ -3400,7 +3407,7 @@
 					this.state.style['size'] = Math.max(0, Math.min(1, (bounds.y + bounds.height - pt.y) / bounds.height));
 				})];
 			},
-			'step': createDisplayHandleFunction(StepShape.prototype.size, true, null, true),
+			'step': createDisplayHandleFunction(StepShape.prototype.size, true, null, true, StepShape.prototype.fixedSize),
 			'hexagon': createDisplayHandleFunction(HexagonShape.prototype.size, true, 0.5, true),
 			'curlyBracket': createDisplayHandleFunction(CurlyBracketShape.prototype.size, false),
 			'display': createDisplayHandleFunction(DisplayShape.prototype.size, false),

File diff suppressed because it is too large
+ 107 - 106
war/js/reader.min.js


File diff suppressed because it is too large
+ 509 - 505
war/js/viewer.min.js


+ 2 - 0
war/resources/dia.txt

@@ -149,6 +149,7 @@ device=Device
 diagram=Diagram
 diagramContent=Diagram Content
 diagramLocked=Diagram has been locked to prevent further data loss.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Diagram Name
 diagramIsPublic=Diagram is public
 diagramIsNotPublic=Diagram is not public
@@ -630,6 +631,7 @@ support=Support
 sysml=SysML
 tags=Tags
 table=Table
+takeOver=Take Over
 targetSpacing=Target Spacing
 template=Template
 templates=Templates

+ 2 - 0
war/resources/dia_am.txt

@@ -149,6 +149,7 @@ device=Device
 diagram=Diagram
 diagramContent=Diagram Content
 diagramLocked=Diagram has been locked to prevent further data loss.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Diagram Name
 diagramIsPublic=Diagram is public
 diagramIsNotPublic=Diagram is not public
@@ -630,6 +631,7 @@ support=Support
 sysml=SysML
 tags=Tags
 table=Table
+takeOver=Take Over
 targetSpacing=Target Spacing
 template=Template
 templates=Templates

+ 2 - 0
war/resources/dia_ar.txt

@@ -149,6 +149,7 @@ device=‫جهاز تخزين‬
 diagram=‫رسم‬
 diagramContent=Diagram Content
 diagramLocked=‫تم قفل المخطط لتفادي فقدان البيانات.‬
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=‫إسم المخطط‬
 diagramIsPublic=Diagram is public
 diagramIsNotPublic=Diagram is not public
@@ -630,6 +631,7 @@ support=‫مساعدة‬
 sysml=SysML
 tags=Tags
 table=‫جدول‬
+takeOver=Take Over
 targetSpacing=‫تباعد الهدف‬
 template=‫قالب‬
 templates=‫قوالب‬

+ 2 - 0
war/resources/dia_bg.txt

@@ -149,6 +149,7 @@ device=Устройство
 diagram=Диаграма
 diagramContent=Съдържание на диаграмата
 diagramLocked=Диаграмата е заключена, за да се предотврати загубата на данни.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Име на диаграмата
 diagramIsPublic=Диаграмата е публична
 diagramIsNotPublic=Диаграмата не е публична
@@ -630,6 +631,7 @@ support=Поддръжка
 sysml=SysML
 tags=Тагове
 table=Таблица
+takeOver=Take Over
 targetSpacing=Target Spacing
 template=Шаблон
 templates=Шаблони

+ 2 - 0
war/resources/dia_bn.txt

@@ -149,6 +149,7 @@ device=Device
 diagram=Diagram
 diagramContent=Diagram Content
 diagramLocked=Diagram has been locked to prevent further data loss.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Diagram Name
 diagramIsPublic=Diagram is public
 diagramIsNotPublic=Diagram is not public
@@ -630,6 +631,7 @@ support=Support
 sysml=SysML
 tags=Tags
 table=Table
+takeOver=Take Over
 targetSpacing=Target Spacing
 template=Template
 templates=Templates

+ 2 - 0
war/resources/dia_bs.txt

@@ -149,6 +149,7 @@ device=Uređaj
 diagram=Dijagram
 diagramContent=Sadržaj dijagrama
 diagramLocked=Dijagram je zaključan kako bi se spriječio dalji gubitak podataka.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Naziv dijagrama
 diagramIsPublic=Dijagram je javan
 diagramIsNotPublic=Dijagram nije javan
@@ -630,6 +631,7 @@ support=Podrška
 sysml=SysML
 tags=Oznake
 table=Tabela
+takeOver=Take Over
 targetSpacing=Ciljani prored
 template=Šablon
 templates=Šabloni

+ 2 - 0
war/resources/dia_ca.txt

@@ -149,6 +149,7 @@ device=Dispositiu
 diagram=Diagrama
 diagramContent=Contingut del diagrama
 diagramLocked=El diagrama s'ha bloquejat per evitar la pèrdua de dades.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Nom del diagrama
 diagramIsPublic=El diagrama és públic
 diagramIsNotPublic=El diagrama no és públic
@@ -630,6 +631,7 @@ support=Ajuda
 sysml=SysML
 tags=Etiquetes
 table=Taula
+takeOver=Take Over
 targetSpacing=Espaiat de l'objectiu
 template=Plantilla
 templates=Plantilles

+ 2 - 0
war/resources/dia_cs.txt

@@ -149,6 +149,7 @@ device=Zařízení
 diagram=Diagram
 diagramContent=Diagram Content
 diagramLocked=Diagram byl uzamčen, aby se zabránilo další ztrátě dat.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Jméno diagramu
 diagramIsPublic=Diagram je veřejný
 diagramIsNotPublic=Diagram není veřejný
@@ -630,6 +631,7 @@ support=Podpora
 sysml=SysML
 tags=Štítky
 table=Tabulka
+takeOver=Take Over
 targetSpacing=Odsazení cíle
 template=Šablona
 templates=Šablony

+ 2 - 0
war/resources/dia_da.txt

@@ -149,6 +149,7 @@ device=Computer
 diagram=Diagram
 diagramContent=Diagramindhold
 diagramLocked=Diagrammet blev låst for at undgå yderligere datatab
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Diagramnavn
 diagramIsPublic=Diagram er offentligt
 diagramIsNotPublic=Diagram er ikke offentligt
@@ -630,6 +631,7 @@ support=Support
 sysml=SysML
 tags=Tags
 table=Tabel
+takeOver=Take Over
 targetSpacing=Målafstand
 template=Skabelon
 templates=Skabeloner

+ 2 - 0
war/resources/dia_de.txt

@@ -149,6 +149,7 @@ device=Gerät
 diagram=Diagramm
 diagramContent=Diagram Content
 diagramLocked=Diagram has been locked to prevent further data loss.
+diagramLockedBySince=Diagramm ist seit {2} von {1} gesperrt
 diagramName=Diagrammname
 diagramIsPublic=Diagramm ist öffentlich
 diagramIsNotPublic=Diagramm ist nicht öffentlich
@@ -630,6 +631,7 @@ support=Support
 sysml=SysML
 tags=Tags
 table=Tabelle
+takeOver=Übernehmen
 targetSpacing=Endabstand
 template=Vorlage
 templates=Vorlagen

+ 2 - 0
war/resources/dia_el.txt

@@ -149,6 +149,7 @@ device=Συσκευή
 diagram=Διάγραμμα
 diagramContent=Περιεχόμενο διαγράμματος
 diagramLocked=Το διάγραμμα έχει κλειδωθεί, ώστε να αποφευχθεί η περαιτέρω απώλεια δεδομένων.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Όνομα διαγράμματος
 diagramIsPublic=Το διάγραμμα έχει δημοσιευτεί
 diagramIsNotPublic=Το διάγραμμα δεν έχει δημοσιευτεί
@@ -630,6 +631,7 @@ support=Υποστήριξη
 sysml=SysML
 tags=Ετικέτες
 table=Πίνακας
+takeOver=Take Over
 targetSpacing=Απόσταση Στόχου
 template=Πρότυπο
 templates=Πρότυπα

+ 2 - 0
war/resources/dia_eo.txt

@@ -149,6 +149,7 @@ device=Aparato
 diagram=Diagramo
 diagramContent=Diagram Content
 diagramLocked=Diagram has been locked to prevent further data loss.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Diagram Name
 diagramIsPublic=Diagram is public
 diagramIsNotPublic=Diagram is not public
@@ -630,6 +631,7 @@ support=Support
 sysml=SysML
 tags=Tags
 table=Table
+takeOver=Take Over
 targetSpacing=Target Spacing
 template=Ŝablono
 templates=Templates

+ 2 - 0
war/resources/dia_es.txt

@@ -149,6 +149,7 @@ device=Dispositivo
 diagram=Diagrama
 diagramContent=Contenido del diagrama
 diagramLocked=El diagrama ha sido bloqueado para evitar la pérdida de datos.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Nombre del diagrama
 diagramIsPublic=El diagrama es público
 diagramIsNotPublic=El diagrama no es público
@@ -630,6 +631,7 @@ support=Soporte
 sysml=SysML
 tags=Etiquetas
 table=Tabla
+takeOver=Take Over
 targetSpacing=Espaciado del objetivo
 template=Plantilla
 templates=Plantillas

+ 2 - 0
war/resources/dia_et.txt

@@ -149,6 +149,7 @@ device=Seade
 diagram=Diagramm
 diagramContent=Diagrammi sisu
 diagramLocked=Diagramm on lukustatud edasise andmekadu vältimiseks
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Diagrammi nimi
 diagramIsPublic=Diagramm on avalik
 diagramIsNotPublic=Diagramm pole avalik
@@ -630,6 +631,7 @@ support=Tugi
 sysml=SysML
 tags=Sildid
 table=Tabel
+takeOver=Take Over
 targetSpacing=Eesmärgi vahekaugus
 template=Mall
 templates=Mallid

+ 2 - 0
war/resources/dia_fa.txt

@@ -149,6 +149,7 @@ device=‫دستگاه‬
 diagram=‫دیاگرام‬
 diagramContent=‫محتوای نمودار‬
 diagramLocked=‫نمودار به منظور از دست ندادن اطلاعات قفل شده است.‬
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=‫نام دیاگرام‬
 diagramIsPublic=‫نمودار عمومی است.‬
 diagramIsNotPublic=‫نمودار عمومی نیست.‬
@@ -630,6 +631,7 @@ support=‫پشتیبانی‬
 sysml=SysML
 tags=‫برچسب ها‬
 table=‫جدول‬
+takeOver=Take Over
 targetSpacing=‫فاصله بندی هدف‬
 template=‫الگو‬
 templates=‫الگوها‬

+ 2 - 0
war/resources/dia_fi.txt

@@ -149,6 +149,7 @@ device=Laite
 diagram=Kaavio
 diagramContent=Kaavion sisältö
 diagramLocked=Kaavio on lukittu tietojen menetyksen estämiseksi.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Kaavion nimi
 diagramIsPublic=Kaavio on julkinen
 diagramIsNotPublic=Kaavio ei ole julkinen
@@ -630,6 +631,7 @@ support=Tuki
 sysml=SysML
 tags=Tägit
 table=Taulukko
+takeOver=Take Over
 targetSpacing=Tavoiteriviväli
 template=Mallipohja
 templates=Mallipohjat

+ 2 - 0
war/resources/dia_fil.txt

@@ -149,6 +149,7 @@ device=Kagamitan
 diagram=Dayagram
 diagramContent=Nilalaman ng Dayagram
 diagramLocked=Ang dayagram ay isinara upang maiwasan ang dagdag na pagkawala ng datos.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Pangalan ng dayagram
 diagramIsPublic=Ang Diagram ay Pampubliko
 diagramIsNotPublic=Ang Diagram ay Hindi Pampubliko
@@ -630,6 +631,7 @@ support=Suporta
 sysml=SysML
 tags=Mga Tag
 table=Talahanayan
+takeOver=Take Over
 targetSpacing=Target na pageespasyo
 template=Template
 templates=Mga template

+ 2 - 0
war/resources/dia_fr.txt

@@ -149,6 +149,7 @@ device=Périphérique
 diagram=Diagramme
 diagramContent=Contenu du diagramme
 diagramLocked=Le diagramme a éte verrouillé pour éviter des pertes de données.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Nom du diagramme
 diagramIsPublic=Le diagramme est public
 diagramIsNotPublic=Le diagramme n'est pas public
@@ -630,6 +631,7 @@ support=Support
 sysml=SysML
 tags=Tags
 table=Tableau
+takeOver=Take Over
 targetSpacing=Espacement de la cible
 template=Modèle
 templates=Modèles

+ 2 - 0
war/resources/dia_gu.txt

@@ -149,6 +149,7 @@ device=Device
 diagram=Diagram
 diagramContent=Diagram Content
 diagramLocked=Diagram has been locked to prevent further data loss.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Diagram Name
 diagramIsPublic=Diagram is public
 diagramIsNotPublic=Diagram is not public
@@ -630,6 +631,7 @@ support=Support
 sysml=SysML
 tags=Tags
 table=Table
+takeOver=Take Over
 targetSpacing=Target Spacing
 template=Template
 templates=Templates

+ 2 - 0
war/resources/dia_he.txt

@@ -149,6 +149,7 @@ device=‫מכשיר‬
 diagram=‫דיאגרמה ‬
 diagramContent=‫תוכן הדיאגרמה‬
 diagramLocked=‫דיאגרמה ננעלה כדי למנוע אובדן נתונים.‬
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=‫שם הדיאגרמה ‬
 diagramIsPublic=‫הדיאגרמה ציבורית‬
 diagramIsNotPublic=‫הדיאגרמה אינה ציבורית‬
@@ -630,6 +631,7 @@ support=‫תמיכה‬
 sysml=SysML
 tags=‫תגיות‬
 table=‫טבלה‬
+takeOver=Take Over
 targetSpacing=‫מרווח יעד‬
 template=‫תבנית‬
 templates=‫תבניות‬

+ 2 - 0
war/resources/dia_hi.txt

@@ -149,6 +149,7 @@ device=Device
 diagram=Diagram
 diagramContent=Diagram Content
 diagramLocked=Diagram has been locked to prevent further data loss.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Diagram Name
 diagramIsPublic=Diagram is public
 diagramIsNotPublic=Diagram is not public
@@ -630,6 +631,7 @@ support=Support
 sysml=SysML
 tags=Tags
 table=Table
+takeOver=Take Over
 targetSpacing=Target Spacing
 template=Template
 templates=Templates

+ 2 - 0
war/resources/dia_hr.txt

@@ -149,6 +149,7 @@ device=Device
 diagram=Diagram
 diagramContent=Diagram Content
 diagramLocked=Diagram has been locked to prevent further data loss.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Diagram Name
 diagramIsPublic=Diagram is public
 diagramIsNotPublic=Diagram is not public
@@ -630,6 +631,7 @@ support=Support
 sysml=SysML
 tags=Tags
 table=Table
+takeOver=Take Over
 targetSpacing=Target Spacing
 template=Template
 templates=Templates

+ 2 - 0
war/resources/dia_hu.txt

@@ -149,6 +149,7 @@ device=Eszköz
 diagram=Diagram
 diagramContent=Diagram tartalma
 diagramLocked=A diagram zárva van, adatvesztés megelőzésként
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Diagram neve
 diagramIsPublic=A diagram nyilvános
 diagramIsNotPublic=A diagram nem nyilvános
@@ -630,6 +631,7 @@ support=Támogatás
 sysml=SysML
 tags=Címke
 table=Tábázat
+takeOver=Take Over
 targetSpacing=Cél térköz
 template=Sablon
 templates=Sablonok

+ 2 - 0
war/resources/dia_i18n.txt

@@ -149,6 +149,7 @@ device=device
 diagram=diagram
 diagramContent=diagramContent
 diagramLocked=diagramLocked
+diagramLockedBySince=diagramLockedBySince
 diagramName=diagramName
 diagramIsPublic=diagramIsPublic
 diagramIsNotPublic=diagramIsNotPublic
@@ -630,6 +631,7 @@ support=support
 sysml=sysml
 tags=tags
 table=table
+takeOver=takeOver
 targetSpacing=targetSpacing
 template=template
 templates=templates

+ 2 - 0
war/resources/dia_id.txt

@@ -149,6 +149,7 @@ device=Peranti
 diagram=Diagram
 diagramContent=Konten Diagram
 diagramLocked=Diagram dikunci untuk mencegah data hilang lebih banyak.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Nama Diagram
 diagramIsPublic=Diagram publik
 diagramIsNotPublic=Diagram tidak publik
@@ -630,6 +631,7 @@ support=Dukungan
 sysml=SysML
 tags=Tag
 table=Tabel
+takeOver=Take Over
 targetSpacing=Spasi Target
 template=Templat
 templates=Templat

+ 2 - 0
war/resources/dia_it.txt

@@ -149,6 +149,7 @@ device=Periferica
 diagram=Diagramma  
 diagramContent=Contenuto del diagramma
 diagramLocked=Il diagramma è stato bloccato per prevenire ulteriori perdite di informazioni
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Nome del diagramma
 diagramIsPublic=Il diagramma è pubblico
 diagramIsNotPublic=Il diagramma non è pubblico
@@ -630,6 +631,7 @@ support=Supporto
 sysml=SysML
 tags=Tags
 table=Tavola
+takeOver=Take Over
 targetSpacing=Spaziatura dell'obiettivo
 template=Modello
 templates=Modelli

+ 2 - 0
war/resources/dia_ja.txt

@@ -149,6 +149,7 @@ device=デバイス
 diagram=ダイアグラム
 diagramContent=ダイアグラム コンテンツ
 diagramLocked=ダイアグラムはデータ損失を防ぐためにロックされました。
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=ダイアグラム名
 diagramIsPublic=ダイアグラムが公開されています
 diagramIsNotPublic=図は公開されていません
@@ -630,6 +631,7 @@ support=サポート
 sysml=SysML
 tags=タグ
 table=テーブル
+takeOver=Take Over
 targetSpacing=終点の間隔
 template=テンプレート
 templates=テンプレート

+ 2 - 0
war/resources/dia_kn.txt

@@ -149,6 +149,7 @@ device=Device
 diagram=Diagram
 diagramContent=Diagram Content
 diagramLocked=Diagram has been locked to prevent further data loss.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Diagram Name
 diagramIsPublic=Diagram is public
 diagramIsNotPublic=Diagram is not public
@@ -630,6 +631,7 @@ support=Support
 sysml=SysML
 tags=Tags
 table=Table
+takeOver=Take Over
 targetSpacing=Target Spacing
 template=Template
 templates=Templates

+ 2 - 0
war/resources/dia_ko.txt

@@ -149,6 +149,7 @@ device=사용자 기기
 diagram=다이어그램
 diagramContent=다이어그램 내용
 diagramLocked=추가 데이터 손실을 막기 위해 다이어그램이 잠겼습니다.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=다이어그램 이름
 diagramIsPublic=다이어그램은 공개상태입니다.
 diagramIsNotPublic=다이어그램이 공개되지 않습니다.
@@ -630,6 +631,7 @@ support=고객지원
 sysml=SysML
 tags=태그
 table=표
+takeOver=Take Over
 targetSpacing=객체 간격
 template=탬플릿
 templates=탬플릿

+ 2 - 0
war/resources/dia_lt.txt

@@ -149,6 +149,7 @@ device=Device
 diagram=Diagram
 diagramContent=Diagram Content
 diagramLocked=Diagram has been locked to prevent further data loss.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Diagram Name
 diagramIsPublic=Diagram is public
 diagramIsNotPublic=Diagram is not public
@@ -630,6 +631,7 @@ support=Support
 sysml=SysML
 tags=Tags
 table=Table
+takeOver=Take Over
 targetSpacing=Target Spacing
 template=Template
 templates=Templates

+ 2 - 0
war/resources/dia_lv.txt

@@ -149,6 +149,7 @@ device=Device
 diagram=Diagram
 diagramContent=Diagram Content
 diagramLocked=Diagram has been locked to prevent further data loss.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Diagram Name
 diagramIsPublic=Diagram is public
 diagramIsNotPublic=Diagram is not public
@@ -630,6 +631,7 @@ support=Support
 sysml=SysML
 tags=Tags
 table=Table
+takeOver=Take Over
 targetSpacing=Target Spacing
 template=Template
 templates=Templates

+ 2 - 0
war/resources/dia_ml.txt

@@ -149,6 +149,7 @@ device=Device
 diagram=Diagram
 diagramContent=Diagram Content
 diagramLocked=Diagram has been locked to prevent further data loss.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Diagram Name
 diagramIsPublic=Diagram is public
 diagramIsNotPublic=Diagram is not public
@@ -630,6 +631,7 @@ support=Support
 sysml=SysML
 tags=Tags
 table=Table
+takeOver=Take Over
 targetSpacing=Target Spacing
 template=Template
 templates=Templates

+ 2 - 0
war/resources/dia_mr.txt

@@ -149,6 +149,7 @@ device=Device
 diagram=Diagram
 diagramContent=Diagram Content
 diagramLocked=Diagram has been locked to prevent further data loss.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Diagram Name
 diagramIsPublic=Diagram is public
 diagramIsNotPublic=Diagram is not public
@@ -630,6 +631,7 @@ support=Support
 sysml=SysML
 tags=Tags
 table=Table
+takeOver=Take Over
 targetSpacing=Target Spacing
 template=Template
 templates=Templates

+ 2 - 0
war/resources/dia_ms.txt

@@ -149,6 +149,7 @@ device=Peranti
 diagram=Gambarajah
 diagramContent=Kandungan Gambarajah
 diagramLocked=Gambarajah telah dikunci untuk mengelakkan lebih banyak kehilangan data.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Nama Gambarajah
 diagramIsPublic=Gambarajah umum
 diagramIsNotPublic=Gambarajah tidak umum
@@ -630,6 +631,7 @@ support=Sokongan
 sysml=SysML
 tags=Tag
 table=Jadual
+takeOver=Take Over
 targetSpacing=Jarak Sasaran
 template=Templat
 templates=Templat

+ 2 - 0
war/resources/dia_nl.txt

@@ -149,6 +149,7 @@ device=Apparaat
 diagram=Diagram
 diagramContent=Inhoud diagram
 diagramLocked=Diagram is vergrendeld om verder gegevensverlies te voorkomen.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Naam diagram
 diagramIsPublic=Diagram is openbaar
 diagramIsNotPublic=Diagram is niet openbaar
@@ -630,6 +631,7 @@ support=Ondersteuning
 sysml=SysML
 tags=Tags
 table=Tabel
+takeOver=Take Over
 targetSpacing=Doelafstand
 template=Sjabloon
 templates=Sjablonen

+ 2 - 0
war/resources/dia_no.txt

@@ -149,6 +149,7 @@ device=Enhet
 diagram=Diagram
 diagramContent=Diagram innhold
 diagramLocked=Diagrammet har blitt låst for å forhindre ytterligere tap av data.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Diagramnavn
 diagramIsPublic=Diagrammet er offentlig
 diagramIsNotPublic=Diagrammet er ikke offentlig
@@ -630,6 +631,7 @@ support=Støtte
 sysml=SysML
 tags=Tags
 table=Tabell
+takeOver=Take Over
 targetSpacing=Målavstand
 template=Mal
 templates=Maler

+ 2 - 0
war/resources/dia_pl.txt

@@ -149,6 +149,7 @@ device=Urządzenie
 diagram=Diagram
 diagramContent=Zawartość diagramu
 diagramLocked=Diagram został zablokowany w celu zabezpieczenia go przed dalszą utratą danych.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Nazwa diagramu
 diagramIsPublic=Diagram jest publiczny
 diagramIsNotPublic=Diagram nie jest publiczny
@@ -630,6 +631,7 @@ support=Wsparcie
 sysml=SysML
 tags=Znaczniki
 table=Tabela
+takeOver=Take Over
 targetSpacing=Rozmieszczenie celu
 template=Szablon
 templates=Szablony

+ 2 - 0
war/resources/dia_pt-br.txt

@@ -149,6 +149,7 @@ device=Dispositivo
 diagram=Diagrama
 diagramContent=Conteúdo do diagrama
 diagramLocked=Diagrama foi travado para prevenir futura perda de dados.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Nome do diagrama
 diagramIsPublic=Diagrama é público
 diagramIsNotPublic=Diagrama não é público
@@ -630,6 +631,7 @@ support=Ajuda
 sysml=SysML
 tags=Etiquetas
 table=Tabela
+takeOver=Take Over
 targetSpacing=Espaçamento do objeto
 template=Modelo
 templates=Modelos

+ 2 - 0
war/resources/dia_pt.txt

@@ -149,6 +149,7 @@ device=Aparelho
 diagram=Diagrama
 diagramContent=Conteúdo do diagrama
 diagramLocked=O diagrama foi bloqueado para a prevenção de perda de dados 
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Nome do diagrama
 diagramIsPublic=Diagrama é público
 diagramIsNotPublic=Diagrama não é público
@@ -630,6 +631,7 @@ support=Ajuda
 sysml=SysML
 tags=Marcadores
 table=Tabela
+takeOver=Take Over
 targetSpacing=Espaçamento do objetivo
 template=Modelo
 templates=Modelos

+ 2 - 0
war/resources/dia_ro.txt

@@ -149,6 +149,7 @@ device=Dispozitiv
 diagram=Diagramă
 diagramContent=Conținutul diagramei
 diagramLocked= Diagrama a fost blocată pentru a preveni alte pierderi de date.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Denumire diagramă
 diagramIsPublic=Diagrama este publică
 diagramIsNotPublic=Diagrama nu este publică
@@ -630,6 +631,7 @@ support=Suport
 sysml=SysML
 tags=Tag-uri
 table=Tabel
+takeOver=Take Over
 targetSpacing=Spațierea țintei
 template=Template
 templates=Template-uri

+ 2 - 0
war/resources/dia_ru.txt

@@ -149,6 +149,7 @@ device=Устройство
 diagram=Диаграмма
 diagramContent=Содержимое диаграммы
 diagramLocked=Диаграмма была заблокирована для предотвращения потери данных.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Название диаграммы
 diagramIsPublic=Диаграмма является публичной
 diagramIsNotPublic=Диаграмма не является публичной
@@ -630,6 +631,7 @@ support=Поддержка
 sysml=SysML
 tags=Метки
 table=Таблица
+takeOver=Take Over
 targetSpacing=Отступ от конечного узла
 template=Шаблон
 templates=Шаблоны

+ 2 - 0
war/resources/dia_sk.txt

@@ -149,6 +149,7 @@ device=Device
 diagram=Diagram
 diagramContent=Diagram Content
 diagramLocked=Diagram has been locked to prevent further data loss.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Diagram Name
 diagramIsPublic=Diagram is public
 diagramIsNotPublic=Diagram is not public
@@ -630,6 +631,7 @@ support=Support
 sysml=SysML
 tags=Tags
 table=Table
+takeOver=Take Over
 targetSpacing=Target Spacing
 template=Template
 templates=Templates

+ 2 - 0
war/resources/dia_sl.txt

@@ -149,6 +149,7 @@ device=Device
 diagram=Diagram
 diagramContent=Diagram Content
 diagramLocked=Diagram has been locked to prevent further data loss.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Diagram Name
 diagramIsPublic=Diagram is public
 diagramIsNotPublic=Diagram is not public
@@ -630,6 +631,7 @@ support=Support
 sysml=SysML
 tags=Tags
 table=Table
+takeOver=Take Over
 targetSpacing=Target Spacing
 template=Template
 templates=Templates

+ 2 - 0
war/resources/dia_sr.txt

@@ -149,6 +149,7 @@ device=Uređaj
 diagram=Dijagram
 diagramContent=Sadržak dijagrama
 diagramLocked=Dijagram je zaključan da bi se sprečio dalji gubitak podataka.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Ime dijagrama
 diagramIsPublic=Dijagram je javan
 diagramIsNotPublic=Dijagram nije javan
@@ -630,6 +631,7 @@ support=Podrška
 sysml=SysML
 tags=Tags
 table=Tabela
+takeOver=Take Over
 targetSpacing=Proređivanje odredišta
 template=Šablon
 templates=Šabloni

+ 2 - 0
war/resources/dia_sv.txt

@@ -149,6 +149,7 @@ device=Enhet
 diagram=Diagram
 diagramContent=Diagram innehåll
 diagramLocked=Diagrammet har låsts för att undvika ytterligare dataförlust
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Diagramnamn
 diagramIsPublic=Diagrammet är offentligt
 diagramIsNotPublic=Diagrammet är inte offentligt
@@ -630,6 +631,7 @@ support=Support
 sysml=SysML
 tags=Taggar
 table=Tabell
+takeOver=Take Over
 targetSpacing=Målavstånd
 template=Mall
 templates=Mallar

+ 2 - 0
war/resources/dia_sw.txt

@@ -149,6 +149,7 @@ device=Device
 diagram=Diagram
 diagramContent=Diagram Content
 diagramLocked=Diagram has been locked to prevent further data loss.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Diagram Name
 diagramIsPublic=Diagram is public
 diagramIsNotPublic=Diagram is not public
@@ -630,6 +631,7 @@ support=Support
 sysml=SysML
 tags=Tags
 table=Table
+takeOver=Take Over
 targetSpacing=Target Spacing
 template=Template
 templates=Templates

+ 2 - 0
war/resources/dia_ta.txt

@@ -149,6 +149,7 @@ device=Device
 diagram=Diagram
 diagramContent=Diagram Content
 diagramLocked=Diagram has been locked to prevent further data loss.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Diagram Name
 diagramIsPublic=Diagram is public
 diagramIsNotPublic=Diagram is not public
@@ -630,6 +631,7 @@ support=Support
 sysml=SysML
 tags=Tags
 table=Table
+takeOver=Take Over
 targetSpacing=Target Spacing
 template=Template
 templates=Templates

+ 2 - 0
war/resources/dia_te.txt

@@ -149,6 +149,7 @@ device=Device
 diagram=Diagram
 diagramContent=Diagram Content
 diagramLocked=Diagram has been locked to prevent further data loss.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Diagram Name
 diagramIsPublic=Diagram is public
 diagramIsNotPublic=Diagram is not public
@@ -630,6 +631,7 @@ support=Support
 sysml=SysML
 tags=Tags
 table=Table
+takeOver=Take Over
 targetSpacing=Target Spacing
 template=Template
 templates=Templates

+ 2 - 0
war/resources/dia_th.txt

@@ -149,6 +149,7 @@ device=อุปกรณ์
 diagram=แผนภาพ
 diagramContent=เนื้อหาแผนภาพ
 diagramLocked=แผนภาพถูกล็อคไว้เพื่อป้องกันการสูญเสียข้อมูล
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=ชื่อแผนภาพ
 diagramIsPublic=แผนภาพเป็นสาธารณะ
 diagramIsNotPublic=แผนภาพไม่เป็นสาธารณะ
@@ -630,6 +631,7 @@ support=ช่วยเหลือ
 sysml=SysML
 tags=แท็ก
 table=ตาราง
+takeOver=Take Over
 targetSpacing=การเว้นวรรคเป้าหมาย
 template=แบบร่าง
 templates=แบบร่าง

+ 2 - 0
war/resources/dia_tr.txt

@@ -149,6 +149,7 @@ device=Cihaz
 diagram=Diyagram
 diagramContent=Diyagram içeriği
 diagramLocked=Daha fazla veri kaybını engellemek amacıyla diyagram kilitlendi.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Diyagram adı
 diagramIsPublic=Diyagram herkese açık
 diagramIsNotPublic=Diyagram herkese açık değil
@@ -630,6 +631,7 @@ support=Destek
 sysml=SysML
 tags=Etiketler
 table=Tablo
+takeOver=Take Over
 targetSpacing=Hedef boşluğu
 template=Şablon 
 templates=Şablonlar 

+ 2 - 0
war/resources/dia_uk.txt

@@ -149,6 +149,7 @@ device=Пристрій
 diagram=Діаграма
 diagramContent=Зміст діаграми
 diagramLocked=Діаграму було заблоковано, щоб запобігти втраті даних.
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Назва діаграми
 diagramIsPublic=Діаграма є публічною
 diagramIsNotPublic=Діаграма не є публічною
@@ -630,6 +631,7 @@ support=Підтримка
 sysml=SysML
 tags=Теги
 table=Таблиця
+takeOver=Take Over
 targetSpacing=Від кінцевого вузла
 template=Шаблон
 templates=Шаблони

+ 2 - 0
war/resources/dia_vi.txt

@@ -149,6 +149,7 @@ device=Thiết bị
 diagram=Biểu đồ
 diagramContent=Nội dung biểu đồ
 diagramLocked=Biểu đồ đã bị khóa nhằm ngăn chặn việc mất dữ liệu
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=Tên biểu đồ
 diagramIsPublic=Biểu đồ được công khai
 diagramIsNotPublic=Biểu đồ không được công khai
@@ -630,6 +631,7 @@ support=Hỗ trợ
 sysml=SysML
 tags=Tags
 table=Bảng
+takeOver=Take Over
 targetSpacing=Khoảng cách mục tiêu
 template=Bản mẫu
 templates=Bản mẫu

+ 2 - 0
war/resources/dia_zh-tw.txt

@@ -149,6 +149,7 @@ device=裝置
 diagram=圖表
 diagramContent=圖表内容
 diagramLocked=圖表已鎖住,以避免進一步的資料損失。
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=圖表名稱
 diagramIsPublic=圖表是公開的
 diagramIsNotPublic=圖表未公開
@@ -630,6 +631,7 @@ support=支援
 sysml=SysML
 tags=標籤
 table=表格
+takeOver=Take Over
 targetSpacing=目標間距
 template=樣板
 templates=樣板

+ 2 - 0
war/resources/dia_zh.txt

@@ -149,6 +149,7 @@ device=电脑或手机设备
 diagram=图表
 diagramContent=图表内容
 diagramLocked=图表已加锁以避免进一步的数据丢失。
+diagramLockedBySince=The diagram is locked by {1} since {2} ago
 diagramName=图表名称
 diagramIsPublic=图表为公开状态
 diagramIsNotPublic=图表为未公开状态
@@ -630,6 +631,7 @@ support=支持
 sysml=SysML
 tags=标签
 table=表格
+takeOver=Take Over
 targetSpacing=目标间距
 template=模板
 templates=模板

+ 7 - 0
war/templates/index.xml

@@ -32,6 +32,13 @@
 <template url="network/azure.xml" libs="general;azure;mscae"/>
 <template url="network/cisco.xml" libs="general;cisco"/>
 <template url="network/citrix.xml" libs="general;citrix"/>
+<template url="network/ibm_bda_reference_architecture.xml" libs="general;ibm"/>
+<template url="network/ibm_cognitive_conversation.xml" libs="general;ibm"/>
+<template url="network/ibm_cognitive_discovery.xml" libs="general;ibm"/>
+<template url="network/ibm_iot_architecture.xml" libs="general;ibm"/>
+<template url="network/ibm_microservices.xml" libs="general;ibm"/>
+<template url="network/ibm_private_cloud.xml" libs="general;ibm"/>
+<template url="network/ibm_vcenter_server_platform.xml" libs="general;ibm"/>
 <template url="network/internet.xml" libs="general;network"/>
 <template url="network/lan.xml" libs="general;network"/>
 <template url="network/telecomm.xml" libs="general;network"/>

BIN
war/templates/network/ibm_bda_reference_architecture.png


File diff suppressed because it is too large
+ 1 - 0
war/templates/network/ibm_bda_reference_architecture.xml


BIN
war/templates/network/ibm_cognitive_conversation.png


File diff suppressed because it is too large
+ 1 - 0
war/templates/network/ibm_cognitive_conversation.xml


BIN
war/templates/network/ibm_cognitive_discovery.png


File diff suppressed because it is too large
+ 1 - 0
war/templates/network/ibm_cognitive_discovery.xml


BIN
war/templates/network/ibm_iot_architecture.png


File diff suppressed because it is too large
+ 1 - 0
war/templates/network/ibm_iot_architecture.xml


BIN
war/templates/network/ibm_microservices.png


File diff suppressed because it is too large
+ 1 - 0
war/templates/network/ibm_microservices.xml


BIN
war/templates/network/ibm_private_cloud.png


File diff suppressed because it is too large
+ 1 - 0
war/templates/network/ibm_private_cloud.xml


BIN
war/templates/network/ibm_vcenter_server_platform.png


File diff suppressed because it is too large
+ 1 - 0
war/templates/network/ibm_vcenter_server_platform.xml