jruby_activiti 1.2.5 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (317) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/.ruby-version +1 -1
  4. data/CHANGELOG +6 -0
  5. data/Jarfile +5 -0
  6. data/Jarfile.lock +52 -13
  7. data/README.md +21 -9
  8. data/java/build.md +3 -0
  9. data/java/mapping.md +20 -0
  10. data/java/pom.xml +30 -0
  11. data/java/src/main/java/jrubyactiviti/Modeler.java +95 -0
  12. data/java/src/main/java/jrubyactiviti/ProcessDiagram.java +491 -0
  13. data/java/src/main/java/jrubyactiviti/ProcessInstanceHighlights.java +237 -0
  14. data/java/src/main/java/jrubyactiviti/StencilsetResource.java +16 -0
  15. data/java/src/main/resources/stencilset.json +1339 -0
  16. data/jruby_activiti.gemspec +3 -2
  17. data/lib/generators/jruby_activiti/install_generator.rb +4 -0
  18. data/lib/jar/jrubyactiviti-2.0.jar +0 -0
  19. data/lib/jruby_activiti/version.rb +1 -1
  20. data/lib/jruby_activiti/web.rb +81 -0
  21. data/lib/jruby_activiti.rb +28 -20
  22. data/test/{base_test.rb → activiti_test.rb} +1 -3
  23. data/test/instance_hights_test.rb +18 -0
  24. data/test/modeler_test.rb +35 -0
  25. data/test/process_diagram_test.rb +33 -0
  26. data/test/resources/model_init_editor_source.json +1 -0
  27. data/test/resources/model_json_xml.json +278 -0
  28. data/test/resources/model_svg_xml.xml +66 -0
  29. data/test/stencilset_test.rb +7 -0
  30. data/test/test_helper.rb +2 -0
  31. data/web/public/diagram-viewer/images/bg.png +0 -0
  32. data/web/public/diagram-viewer/images/breadcrumbs.png +0 -0
  33. data/web/public/diagram-viewer/images/checker-bg.png +0 -0
  34. data/web/public/diagram-viewer/images/deployer/blue/message_catch.png +0 -0
  35. data/web/public/diagram-viewer/images/deployer/business_rule.png +0 -0
  36. data/web/public/diagram-viewer/images/deployer/error_catch.png +0 -0
  37. data/web/public/diagram-viewer/images/deployer/error_throw.png +0 -0
  38. data/web/public/diagram-viewer/images/deployer/manual.png +0 -0
  39. data/web/public/diagram-viewer/images/deployer/message_catch.png +0 -0
  40. data/web/public/diagram-viewer/images/deployer/message_throw.png +0 -0
  41. data/web/public/diagram-viewer/images/deployer/receive.png +0 -0
  42. data/web/public/diagram-viewer/images/deployer/script.png +0 -0
  43. data/web/public/diagram-viewer/images/deployer/send.png +0 -0
  44. data/web/public/diagram-viewer/images/deployer/service.png +0 -0
  45. data/web/public/diagram-viewer/images/deployer/signal_catch.png +0 -0
  46. data/web/public/diagram-viewer/images/deployer/signal_throw.png +0 -0
  47. data/web/public/diagram-viewer/images/deployer/timer.png +0 -0
  48. data/web/public/diagram-viewer/images/deployer/user.png +0 -0
  49. data/web/public/diagram-viewer/index.html +130 -0
  50. data/web/public/diagram-viewer/js/ActivitiRest.js +74 -0
  51. data/web/public/diagram-viewer/js/ActivityImpl.js +1 -0
  52. data/web/public/diagram-viewer/js/Color.js +603 -0
  53. data/web/public/diagram-viewer/js/LineBreakMeasurer.js +270 -0
  54. data/web/public/diagram-viewer/js/Polyline.js +387 -0
  55. data/web/public/diagram-viewer/js/ProcessDiagramCanvas.js +2172 -0
  56. data/web/public/diagram-viewer/js/ProcessDiagramGenerator.js +1087 -0
  57. data/web/public/diagram-viewer/js/jquery/jquery.asyncqueue.js +125 -0
  58. data/web/public/diagram-viewer/js/jquery/jquery.js +9266 -0
  59. data/web/public/diagram-viewer/js/jquery/jquery.progressbar.js +131 -0
  60. data/web/public/diagram-viewer/js/jstools.js +23 -0
  61. data/web/public/diagram-viewer/js/raphael.2.1.1.js +10 -0
  62. data/web/public/diagram-viewer/js/raphael.js +10 -0
  63. data/web/public/diagram-viewer/js/raphael_uncompressed.js +5815 -0
  64. data/web/public/diagram-viewer/js/textlayout.js +441 -0
  65. data/web/public/diagram-viewer/style.css +1 -0
  66. data/web/public/editor-app/app-cfg.js +25 -0
  67. data/web/public/editor-app/app.js +432 -0
  68. data/web/public/editor-app/configuration/properties/assignment-display-template.html +4 -0
  69. data/web/public/editor-app/configuration/properties/assignment-popup.html +44 -0
  70. data/web/public/editor-app/configuration/properties/assignment-write-template.html +4 -0
  71. data/web/public/editor-app/configuration/properties/boolean-property-template.html +4 -0
  72. data/web/public/editor-app/configuration/properties/condition-expression-display-template.html +2 -0
  73. data/web/public/editor-app/configuration/properties/condition-expression-popup.html +29 -0
  74. data/web/public/editor-app/configuration/properties/condition-expression-write-template.html +4 -0
  75. data/web/public/editor-app/configuration/properties/default-value-display-template.html +4 -0
  76. data/web/public/editor-app/configuration/properties/event-listeners-display-template.html +3 -0
  77. data/web/public/editor-app/configuration/properties/event-listeners-popup.html +115 -0
  78. data/web/public/editor-app/configuration/properties/event-listeners-write-template.html +4 -0
  79. data/web/public/editor-app/configuration/properties/execution-listeners-display-template.html +3 -0
  80. data/web/public/editor-app/configuration/properties/execution-listeners-popup.html +101 -0
  81. data/web/public/editor-app/configuration/properties/execution-listeners-write-template.html +4 -0
  82. data/web/public/editor-app/configuration/properties/feedback-popup.html +17 -0
  83. data/web/public/editor-app/configuration/properties/fields-display-template.html +3 -0
  84. data/web/public/editor-app/configuration/properties/fields-popup.html +61 -0
  85. data/web/public/editor-app/configuration/properties/fields-write-template.html +4 -0
  86. data/web/public/editor-app/configuration/properties/form-properties-display-template.html +3 -0
  87. data/web/public/editor-app/configuration/properties/form-properties-popup.html +93 -0
  88. data/web/public/editor-app/configuration/properties/form-properties-write-template.html +4 -0
  89. data/web/public/editor-app/configuration/properties/in-parameters-display-template.html +3 -0
  90. data/web/public/editor-app/configuration/properties/in-parameters-popup.html +53 -0
  91. data/web/public/editor-app/configuration/properties/in-parameters-write-template.html +4 -0
  92. data/web/public/editor-app/configuration/properties/message-definitions-display-template.html +2 -0
  93. data/web/public/editor-app/configuration/properties/message-definitions-popup.html +50 -0
  94. data/web/public/editor-app/configuration/properties/message-definitions-write-template.html +3 -0
  95. data/web/public/editor-app/configuration/properties/message-property-write-template.html +4 -0
  96. data/web/public/editor-app/configuration/properties/multiinstance-property-write-template.html +8 -0
  97. data/web/public/editor-app/configuration/properties/out-parameters-display-template.html +3 -0
  98. data/web/public/editor-app/configuration/properties/out-parameters-popup.html +53 -0
  99. data/web/public/editor-app/configuration/properties/out-parameters-write-template.html +4 -0
  100. data/web/public/editor-app/configuration/properties/sequenceflow-order-display-template.html +3 -0
  101. data/web/public/editor-app/configuration/properties/sequenceflow-order-popup.html +47 -0
  102. data/web/public/editor-app/configuration/properties/sequenceflow-order-write-template.html +4 -0
  103. data/web/public/editor-app/configuration/properties/signal-definitions-display-template.html +3 -0
  104. data/web/public/editor-app/configuration/properties/signal-definitions-popup.html +58 -0
  105. data/web/public/editor-app/configuration/properties/signal-definitions-write-template.html +4 -0
  106. data/web/public/editor-app/configuration/properties/signal-property-write-template.html +4 -0
  107. data/web/public/editor-app/configuration/properties/string-property-write-mode-template.html +8 -0
  108. data/web/public/editor-app/configuration/properties/subprocess-reference-display-template.html +3 -0
  109. data/web/public/editor-app/configuration/properties/subprocess-reference-popup.html +43 -0
  110. data/web/public/editor-app/configuration/properties/subprocess-reference-write-template.html +4 -0
  111. data/web/public/editor-app/configuration/properties/task-listeners-display-template.html +3 -0
  112. data/web/public/editor-app/configuration/properties/task-listeners-popup.html +102 -0
  113. data/web/public/editor-app/configuration/properties/task-listeners-write-template.html +4 -0
  114. data/web/public/editor-app/configuration/properties/text-popup.html +17 -0
  115. data/web/public/editor-app/configuration/properties/text-property-write-template.html +4 -0
  116. data/web/public/editor-app/configuration/properties-assignment-controller.js +150 -0
  117. data/web/public/editor-app/configuration/properties-condition-expression-controller.js +58 -0
  118. data/web/public/editor-app/configuration/properties-custom-controllers.js +18 -0
  119. data/web/public/editor-app/configuration/properties-default-controllers.js +115 -0
  120. data/web/public/editor-app/configuration/properties-event-listeners-controller.js +266 -0
  121. data/web/public/editor-app/configuration/properties-execution-listeners-controller.js +326 -0
  122. data/web/public/editor-app/configuration/properties-fields-controller.js +192 -0
  123. data/web/public/editor-app/configuration/properties-form-properties-controller.js +192 -0
  124. data/web/public/editor-app/configuration/properties-in-parameters-controller.js +158 -0
  125. data/web/public/editor-app/configuration/properties-message-definitions-controller.js +137 -0
  126. data/web/public/editor-app/configuration/properties-message-scope-controller.js +48 -0
  127. data/web/public/editor-app/configuration/properties-multiinstance-controller.js +34 -0
  128. data/web/public/editor-app/configuration/properties-out-parameters-controller.js +158 -0
  129. data/web/public/editor-app/configuration/properties-sequenceflow-order-controller.js +130 -0
  130. data/web/public/editor-app/configuration/properties-signal-definitions-controller.js +136 -0
  131. data/web/public/editor-app/configuration/properties-signal-scope-controller.js +47 -0
  132. data/web/public/editor-app/configuration/properties-task-listeners-controller.js +325 -0
  133. data/web/public/editor-app/configuration/properties.js +99 -0
  134. data/web/public/editor-app/configuration/toolbar-custom-actions.js +18 -0
  135. data/web/public/editor-app/configuration/toolbar-default-actions.js +429 -0
  136. data/web/public/editor-app/configuration/toolbar.js +175 -0
  137. data/web/public/editor-app/configuration/url-config.js +34 -0
  138. data/web/public/editor-app/css/style-common.css +1518 -0
  139. data/web/public/editor-app/css/style-editor.css +639 -0
  140. data/web/public/editor-app/css/style.css +471 -0
  141. data/web/public/editor-app/editor/css/editor.css +202 -0
  142. data/web/public/editor-app/editor/i18n/translation_de.js +383 -0
  143. data/web/public/editor-app/editor/i18n/translation_en_us.js +423 -0
  144. data/web/public/editor-app/editor/i18n/translation_signavio_de.js +106 -0
  145. data/web/public/editor-app/editor/i18n/translation_signavio_en_us.js +108 -0
  146. data/web/public/editor-app/editor/oryx.debug.js +24510 -0
  147. data/web/public/editor-app/editor/oryx.js +30 -0
  148. data/web/public/editor-app/editor-config.js +32 -0
  149. data/web/public/editor-app/editor-controller.js +65 -0
  150. data/web/public/editor-app/editor-utils.js +135 -0
  151. data/web/public/editor-app/editor.html +136 -0
  152. data/web/public/editor-app/eventbus.js +133 -0
  153. data/web/public/editor-app/fonts/activiti-admin-webfont.eot +0 -0
  154. data/web/public/editor-app/fonts/activiti-admin-webfont.svg +43 -0
  155. data/web/public/editor-app/fonts/activiti-admin-webfont.ttf +0 -0
  156. data/web/public/editor-app/fonts/activiti-admin-webfont.woff +0 -0
  157. data/web/public/editor-app/fonts/glyphicons-halflings-regular.eot +0 -0
  158. data/web/public/editor-app/fonts/glyphicons-halflings-regular.svg +229 -0
  159. data/web/public/editor-app/fonts/glyphicons-halflings-regular.ttf +0 -0
  160. data/web/public/editor-app/fonts/glyphicons-halflings-regular.woff +0 -0
  161. data/web/public/editor-app/header-controller.js +31 -0
  162. data/web/public/editor-app/i18n/en.json +286 -0
  163. data/web/public/editor-app/images/bpmn-error.png +0 -0
  164. data/web/public/editor-app/images/bpmn-warning.png +0 -0
  165. data/web/public/editor-app/images/datadefinition.png +0 -0
  166. data/web/public/editor-app/images/delete.png +0 -0
  167. data/web/public/editor-app/images/loading.gif +0 -0
  168. data/web/public/editor-app/images/logo-2x.png +0 -0
  169. data/web/public/editor-app/images/logo.png +0 -0
  170. data/web/public/editor-app/images/nw-handle-dark.gif +0 -0
  171. data/web/public/editor-app/images/se-handle-dark.gif +0 -0
  172. data/web/public/editor-app/images/shapemenu_highlight.png +0 -0
  173. data/web/public/editor-app/images/wrench.png +0 -0
  174. data/web/public/editor-app/libs/angular-cookies_1.2.13/angular-cookies.min.js +8 -0
  175. data/web/public/editor-app/libs/angular-cookies_1.2.13/angular-cookies.min.js.map +8 -0
  176. data/web/public/editor-app/libs/angular-dragdrop.min-1.0.3.js +9 -0
  177. data/web/public/editor-app/libs/angular-dragdrop_1.0.7/angular-dragdrop.min.js +29 -0
  178. data/web/public/editor-app/libs/angular-mocks_1.2.13/angular-mocks.js +2136 -0
  179. data/web/public/editor-app/libs/angular-resource_1.2.13/angular-resource.js +596 -0
  180. data/web/public/editor-app/libs/angular-resource_1.2.13/angular-resource.min.js +13 -0
  181. data/web/public/editor-app/libs/angular-resource_1.2.13/angular-resource.min.js.map +8 -0
  182. data/web/public/editor-app/libs/angular-route_1.2.13/angular-route.js +921 -0
  183. data/web/public/editor-app/libs/angular-route_1.2.13/angular-route.min.js +14 -0
  184. data/web/public/editor-app/libs/angular-route_1.2.13/angular-route.min.js.map +8 -0
  185. data/web/public/editor-app/libs/angular-sanitize_1.2.13/angular-sanitize.js +625 -0
  186. data/web/public/editor-app/libs/angular-sanitize_1.2.13/angular-sanitize.min.js +14 -0
  187. data/web/public/editor-app/libs/angular-sanitize_1.2.13/angular-sanitize.min.js.map +8 -0
  188. data/web/public/editor-app/libs/angular-scroll_0.5.7/angular-scroll.min.js +1 -0
  189. data/web/public/editor-app/libs/angular-strap_2.0.5/angular-strap.min.js +9 -0
  190. data/web/public/editor-app/libs/angular-strap_2.0.5/angular-strap.tpl.min.js +8 -0
  191. data/web/public/editor-app/libs/angular-translate-loader-static-files/.bower.json +19 -0
  192. data/web/public/editor-app/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.js +31 -0
  193. data/web/public/editor-app/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js +6 -0
  194. data/web/public/editor-app/libs/angular-translate-storage-cookie/.bower.json +20 -0
  195. data/web/public/editor-app/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.js +19 -0
  196. data/web/public/editor-app/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js +6 -0
  197. data/web/public/editor-app/libs/angular-translate_2.4.2/angular-translate.js +960 -0
  198. data/web/public/editor-app/libs/angular-translate_2.4.2/angular-translate.min.js +6 -0
  199. data/web/public/editor-app/libs/angular_1.2.13/angular-animate.min.js +27 -0
  200. data/web/public/editor-app/libs/angular_1.2.13/angular.min.js +204 -0
  201. data/web/public/editor-app/libs/bootstrap-daterangepicker_1.3.7/daterangepicker-bs3.css +267 -0
  202. data/web/public/editor-app/libs/bootstrap-daterangepicker_1.3.7/daterangepicker.js +1026 -0
  203. data/web/public/editor-app/libs/bootstrap_3.1.1/css/bootstrap-theme.css +347 -0
  204. data/web/public/editor-app/libs/bootstrap_3.1.1/css/bootstrap-theme.css.map +1 -0
  205. data/web/public/editor-app/libs/bootstrap_3.1.1/css/bootstrap-theme.min.css +7 -0
  206. data/web/public/editor-app/libs/bootstrap_3.1.1/css/bootstrap.css +5785 -0
  207. data/web/public/editor-app/libs/bootstrap_3.1.1/css/bootstrap.css.map +1 -0
  208. data/web/public/editor-app/libs/bootstrap_3.1.1/css/bootstrap.min.css +7 -0
  209. data/web/public/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.eot +0 -0
  210. data/web/public/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.svg +229 -0
  211. data/web/public/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.ttf +0 -0
  212. data/web/public/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.woff +0 -0
  213. data/web/public/editor-app/libs/bootstrap_3.1.1/js/bootstrap.js +1951 -0
  214. data/web/public/editor-app/libs/bootstrap_3.1.1/js/bootstrap.min.js +6 -0
  215. data/web/public/editor-app/libs/es5-shim-15.3.4.5/.bower.json +14 -0
  216. data/web/public/editor-app/libs/es5-shim-15.3.4.5/.gitignore +2 -0
  217. data/web/public/editor-app/libs/es5-shim-15.3.4.5/CHANGES +93 -0
  218. data/web/public/editor-app/libs/es5-shim-15.3.4.5/CONTRIBUTORS.md +25 -0
  219. data/web/public/editor-app/libs/es5-shim-15.3.4.5/LICENSE +19 -0
  220. data/web/public/editor-app/libs/es5-shim-15.3.4.5/README.md +161 -0
  221. data/web/public/editor-app/libs/es5-shim-15.3.4.5/es5-sham.js +444 -0
  222. data/web/public/editor-app/libs/es5-shim-15.3.4.5/es5-sham.map +1 -0
  223. data/web/public/editor-app/libs/es5-shim-15.3.4.5/es5-sham.min.js +4 -0
  224. data/web/public/editor-app/libs/es5-shim-15.3.4.5/es5-shim.js +1314 -0
  225. data/web/public/editor-app/libs/es5-shim-15.3.4.5/es5-shim.map +1 -0
  226. data/web/public/editor-app/libs/es5-shim-15.3.4.5/es5-shim.min.js +4 -0
  227. data/web/public/editor-app/libs/es5-shim-15.3.4.5/package.json +34 -0
  228. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/helpers/h-kill.js +64 -0
  229. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/helpers/h-matchers.js +34 -0
  230. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/helpers/h.js +3 -0
  231. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/index.html +64 -0
  232. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/index.min.html +63 -0
  233. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/lib/jasmine-html.js +190 -0
  234. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/lib/jasmine.css +166 -0
  235. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/lib/jasmine.js +2477 -0
  236. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/lib/jasmine_favicon.png +0 -0
  237. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/lib/json2.js +478 -0
  238. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-array.js +1223 -0
  239. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-date.js +152 -0
  240. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-function.js +147 -0
  241. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-number.js +14 -0
  242. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-object.js +181 -0
  243. data/web/public/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-string.js +204 -0
  244. data/web/public/editor-app/libs/jquery-ui-1.10.3.custom.min.js +6 -0
  245. data/web/public/editor-app/libs/jquery.autogrow-textarea.js +61 -0
  246. data/web/public/editor-app/libs/jquery_1.11.0/jquery.js +9789 -0
  247. data/web/public/editor-app/libs/jquery_1.11.0/jquery.min.js +4 -0
  248. data/web/public/editor-app/libs/jquery_1.11.0/jquery.min.map +1 -0
  249. data/web/public/editor-app/libs/json3_3.2.6/LICENSE +20 -0
  250. data/web/public/editor-app/libs/json3_3.2.6/lib/json3.js +861 -0
  251. data/web/public/editor-app/libs/json3_3.2.6/lib/json3.min.js +18 -0
  252. data/web/public/editor-app/libs/momentjs_2.5.1/momentjs.min.js +6 -0
  253. data/web/public/editor-app/libs/mousetrap-1.4.5.min.js +9 -0
  254. data/web/public/editor-app/libs/ng-grid-2.0.7-min.js +2 -0
  255. data/web/public/editor-app/libs/ng-grid-2.0.7.min.css +1 -0
  256. data/web/public/editor-app/libs/path_parser.js +30 -0
  257. data/web/public/editor-app/libs/prototype-1.5.1.js +3272 -0
  258. data/web/public/editor-app/libs/ui-utils.min-0.0.4.js +7 -0
  259. data/web/public/editor-app/partials/root-stencil-item-template.html +11 -0
  260. data/web/public/editor-app/partials/stencil-item-template.html +27 -0
  261. data/web/public/editor-app/plugins.xml +58 -0
  262. data/web/public/editor-app/popups/icon-template.html +3 -0
  263. data/web/public/editor-app/popups/save-model.html +41 -0
  264. data/web/public/editor-app/popups/select-shape.html +20 -0
  265. data/web/public/editor-app/popups/unsaved-changes.html +22 -0
  266. data/web/public/editor-app/select-shape-controller.js +314 -0
  267. data/web/public/editor-app/stencil-controller.js +1421 -0
  268. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/event.subprocess.collapsed.png +0 -0
  269. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/event.subprocess.png +0 -0
  270. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/expanded.subprocess.png +0 -0
  271. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.business.rule.png +0 -0
  272. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.camel.png +0 -0
  273. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.manual.png +0 -0
  274. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.mule.png +0 -0
  275. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.receive.png +0 -0
  276. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.script.png +0 -0
  277. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.send.png +0 -0
  278. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.service.png +0 -0
  279. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.shell.png +0 -0
  280. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.user.png +0 -0
  281. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/subprocess.png +0 -0
  282. data/web/public/editor-app/stencilsets/bpmn2.0/icons/activity/task.png +0 -0
  283. data/web/public/editor-app/stencilsets/bpmn2.0/icons/artifact/text.annotation.png +0 -0
  284. data/web/public/editor-app/stencilsets/bpmn2.0/icons/catching/cancel.png +0 -0
  285. data/web/public/editor-app/stencilsets/bpmn2.0/icons/catching/compensation.png +0 -0
  286. data/web/public/editor-app/stencilsets/bpmn2.0/icons/catching/error.png +0 -0
  287. data/web/public/editor-app/stencilsets/bpmn2.0/icons/catching/message.png +0 -0
  288. data/web/public/editor-app/stencilsets/bpmn2.0/icons/catching/signal.png +0 -0
  289. data/web/public/editor-app/stencilsets/bpmn2.0/icons/catching/timer.png +0 -0
  290. data/web/public/editor-app/stencilsets/bpmn2.0/icons/connector/association.undirected.png +0 -0
  291. data/web/public/editor-app/stencilsets/bpmn2.0/icons/connector/association.unidirectional.png +0 -0
  292. data/web/public/editor-app/stencilsets/bpmn2.0/icons/connector/messageflow.png +0 -0
  293. data/web/public/editor-app/stencilsets/bpmn2.0/icons/connector/sequenceflow.png +0 -0
  294. data/web/public/editor-app/stencilsets/bpmn2.0/icons/dataobject/data.store.png +0 -0
  295. data/web/public/editor-app/stencilsets/bpmn2.0/icons/diagram.png +0 -0
  296. data/web/public/editor-app/stencilsets/bpmn2.0/icons/endevent/cancel.png +0 -0
  297. data/web/public/editor-app/stencilsets/bpmn2.0/icons/endevent/error.png +0 -0
  298. data/web/public/editor-app/stencilsets/bpmn2.0/icons/endevent/none.png +0 -0
  299. data/web/public/editor-app/stencilsets/bpmn2.0/icons/endevent/terminate.png +0 -0
  300. data/web/public/editor-app/stencilsets/bpmn2.0/icons/gateway/eventbased.png +0 -0
  301. data/web/public/editor-app/stencilsets/bpmn2.0/icons/gateway/exclusive.databased.png +0 -0
  302. data/web/public/editor-app/stencilsets/bpmn2.0/icons/gateway/inclusive.png +0 -0
  303. data/web/public/editor-app/stencilsets/bpmn2.0/icons/gateway/parallel.png +0 -0
  304. data/web/public/editor-app/stencilsets/bpmn2.0/icons/startevent/error.png +0 -0
  305. data/web/public/editor-app/stencilsets/bpmn2.0/icons/startevent/message.png +0 -0
  306. data/web/public/editor-app/stencilsets/bpmn2.0/icons/startevent/none.png +0 -0
  307. data/web/public/editor-app/stencilsets/bpmn2.0/icons/startevent/signal.png +0 -0
  308. data/web/public/editor-app/stencilsets/bpmn2.0/icons/startevent/timer.png +0 -0
  309. data/web/public/editor-app/stencilsets/bpmn2.0/icons/swimlane/lane.png +0 -0
  310. data/web/public/editor-app/stencilsets/bpmn2.0/icons/swimlane/pool.png +0 -0
  311. data/web/public/editor-app/stencilsets/bpmn2.0/icons/throwing/none.png +0 -0
  312. data/web/public/editor-app/stencilsets/bpmn2.0/icons/throwing/signal.png +0 -0
  313. data/web/public/editor-app/toolbar-controller.js +162 -0
  314. data/web/public/modeler.html +140 -0
  315. data/web/views/models/index.erb +32 -0
  316. data/web/views/models/new.erb +15 -0
  317. metadata +334 -10
@@ -0,0 +1,432 @@
1
+ /*
2
+ * Activiti Modeler component part of the Activiti project
3
+ * Copyright 2005-2014 Alfresco Software, Ltd. All rights reserved.
4
+ *
5
+ * This library is free software; you can redistribute it and/or
6
+ * modify it under the terms of the GNU Lesser General Public
7
+ * License as published by the Free Software Foundation; either
8
+ * version 2.1 of the License, or (at your option) any later version.
9
+ *
10
+ * This library is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
+ * Lesser General Public License for more details.
14
+
15
+ * You should have received a copy of the GNU Lesser General Public
16
+ * License along with this library; if not, write to the Free Software
17
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
+ */
19
+ 'use strict';
20
+
21
+ var activitiModeler = angular.module('activitiModeler', [
22
+ 'ngCookies',
23
+ 'ngResource',
24
+ 'ngSanitize',
25
+ 'ngRoute',
26
+ 'ngDragDrop',
27
+ 'mgcrea.ngStrap',
28
+ 'ngGrid',
29
+ 'ngAnimate',
30
+ 'pascalprecht.translate',
31
+ 'duScroll'
32
+ ]);
33
+
34
+ var activitiModule = activitiModeler;
35
+
36
+ activitiModeler
37
+ // Initialize routes
38
+ .config(['$selectProvider', '$translateProvider', function ($selectProvider, $translateProvider) {
39
+
40
+ // Override caret for bs-select directive
41
+ angular.extend($selectProvider.defaults, {
42
+ caretHtml: '&nbsp;<i class="icon icon-caret-down"></i>'
43
+ });
44
+
45
+ // Initialize angular-translate
46
+ $translateProvider.useStaticFilesLoader({
47
+ prefix: './editor-app/i18n/',
48
+ suffix: '.json'
49
+ });
50
+
51
+ $translateProvider.preferredLanguage('en');
52
+
53
+ // remember language
54
+ $translateProvider.useCookieStorage();
55
+
56
+ }])
57
+ .run(['$rootScope', '$timeout', '$modal', '$translate', '$location', '$window', '$http', '$q',
58
+ function($rootScope, $timeout, $modal, $translate, $location, $window, $http, $q) {
59
+
60
+ $rootScope.config = ACTIVITI.CONFIG;
61
+
62
+ $rootScope.editorInitialized = false;
63
+
64
+ $rootScope.editorFactory = $q.defer();
65
+
66
+ $rootScope.forceSelectionRefresh = false;
67
+
68
+ $rootScope.ignoreChanges = false; // by default never ignore changes
69
+
70
+ $rootScope.validationErrors = [];
71
+
72
+ $rootScope.staticIncludeVersion = Date.now();
73
+
74
+ /**
75
+ * A 'safer' apply that avoids concurrent updates (which $apply allows).
76
+ */
77
+ $rootScope.safeApply = function(fn) {
78
+ var phase = this.$root.$$phase;
79
+ if(phase == '$apply' || phase == '$digest') {
80
+ if(fn && (typeof(fn) === 'function')) {
81
+ fn();
82
+ }
83
+ } else {
84
+ this.$apply(fn);
85
+ }
86
+ };
87
+
88
+
89
+ /**
90
+ * Initialize the event bus: couple all Oryx events with a dispatch of the
91
+ * event of the event bus. This way, it gets much easier to attach custom logic
92
+ * to any event.
93
+ */
94
+
95
+ /* Helper method to fetch model from server (always needed) */
96
+ function fetchModel(modelId) {
97
+
98
+ var modelUrl = KISBPM.URL.getModel(modelId);
99
+
100
+ $http({method: 'GET', url: modelUrl}).
101
+ success(function (data, status, headers, config) {
102
+ $rootScope.editor = new ORYX.Editor(data);
103
+ $rootScope.modelData = angular.fromJson(data);
104
+ $rootScope.editorFactory.resolve();
105
+ }).
106
+ error(function (data, status, headers, config) {
107
+ console.log('Error loading model with id ' + modelId + ' ' + data);
108
+ });
109
+ }
110
+
111
+
112
+ function initScrollHandling() {
113
+ var canvasSection = jQuery('#canvasSection');
114
+ canvasSection.scroll(function() {
115
+
116
+ // Hides the resizer and quick menu items during scrolling
117
+
118
+ var selectedElements = $rootScope.editor.selection;
119
+ var subSelectionElements = $rootScope.editor._subSelection;
120
+
121
+ $rootScope.selectedElements = selectedElements;
122
+ $rootScope.subSelectionElements = subSelectionElements;
123
+ if (selectedElements && selectedElements.length > 0) {
124
+ $rootScope.selectedElementBeforeScrolling = selectedElements[0];
125
+ }
126
+
127
+ jQuery('.Oryx_button').each(function(i, obj) {
128
+ $rootScope.orginalOryxButtonStyle = obj.style.display;
129
+ obj.style.display = 'none';
130
+ });
131
+
132
+ jQuery('.resizer_southeast').each(function(i, obj) {
133
+ $rootScope.orginalResizerSEStyle = obj.style.display;
134
+ obj.style.display = 'none';
135
+ });
136
+ jQuery('.resizer_northwest').each(function(i, obj) {
137
+ $rootScope.orginalResizerNWStyle = obj.style.display;
138
+ obj.style.display = 'none';
139
+ });
140
+ $rootScope.editor.handleEvents({type:ORYX.CONFIG.EVENT_CANVAS_SCROLL});
141
+ });
142
+
143
+ canvasSection.scrollStopped(function(){
144
+
145
+ // Puts the quick menu items and resizer back when scroll is stopped.
146
+
147
+ $rootScope.editor.setSelection([]); // needed cause it checks for element changes and does nothing if the elements are the same
148
+ $rootScope.editor.setSelection($rootScope.selectedElements, $rootScope.subSelectionElements);
149
+ $rootScope.selectedElements = undefined;
150
+ $rootScope.subSelectionElements = undefined;
151
+
152
+ function handleDisplayProperty(obj) {
153
+ if (jQuery(obj).position().top > 0) {
154
+ obj.style.display = 'block';
155
+ } else {
156
+ obj.style.display = 'none';
157
+ }
158
+ }
159
+
160
+ jQuery('.Oryx_button').each(function(i, obj) {
161
+ handleDisplayProperty(obj);
162
+ });
163
+
164
+ jQuery('.resizer_southeast').each(function(i, obj) {
165
+ handleDisplayProperty(obj);
166
+ });
167
+ jQuery('.resizer_northwest').each(function(i, obj) {
168
+ handleDisplayProperty(obj);
169
+ });
170
+
171
+ });
172
+ }
173
+
174
+ /**
175
+ * Initialize the Oryx Editor when the content has been loaded
176
+ */
177
+ $rootScope.$on('$includeContentLoaded', function (event) {
178
+ if (!$rootScope.editorInitialized) {
179
+
180
+ ORYX._loadPlugins();
181
+
182
+ var modelId = EDITOR.UTIL.getParameterByName('modelId');
183
+ fetchModel(modelId);
184
+
185
+ $rootScope.window = {};
186
+ var updateWindowSize = function() {
187
+ $rootScope.window.width = $window.innerWidth;
188
+ $rootScope.window.height = $window.innerHeight;
189
+ };
190
+
191
+ // Window resize hook
192
+ angular.element($window).bind('resize', function() {
193
+ $rootScope.safeApply(updateWindowSize());
194
+ });
195
+
196
+ $rootScope.$watch('window.forceRefresh', function(newValue) {
197
+ if(newValue) {
198
+ $timeout(function() {
199
+ updateWindowSize();
200
+ $rootScope.window.forceRefresh = false;
201
+ });
202
+ }
203
+ });
204
+
205
+ updateWindowSize();
206
+
207
+ // Hook in resizing of main panels when window resizes
208
+ // TODO: perhaps move to a separate JS-file?
209
+ jQuery(window).resize(function () {
210
+
211
+ // Calculate the offset based on the bottom of the module header
212
+ var offset = jQuery("#editor-header").offset();
213
+ var propSectionHeight = jQuery('#propertySection').height();
214
+ var canvas = jQuery('#canvasSection');
215
+ var mainHeader = jQuery('#main-header');
216
+
217
+ if (offset == undefined || offset === null
218
+ || propSectionHeight === undefined || propSectionHeight === null
219
+ || canvas === undefined || canvas === null || mainHeader === null) {
220
+ return;
221
+ }
222
+
223
+ if ($rootScope.editor)
224
+ {
225
+ var selectedElements = $rootScope.editor.selection;
226
+ var subSelectionElements = $rootScope.editor._subSelection;
227
+
228
+ $rootScope.selectedElements = selectedElements;
229
+ $rootScope.subSelectionElements = subSelectionElements;
230
+ if (selectedElements && selectedElements.length > 0)
231
+ {
232
+ $rootScope.selectedElementBeforeScrolling = selectedElements[0];
233
+
234
+ $rootScope.editor.setSelection([]); // needed cause it checks for element changes and does nothing if the elements are the same
235
+ $rootScope.editor.setSelection($rootScope.selectedElements, $rootScope.subSelectionElements);
236
+ $rootScope.selectedElements = undefined;
237
+ $rootScope.subSelectionElements = undefined;
238
+ }
239
+ }
240
+
241
+ var totalAvailable = jQuery(window).height() - offset.top - mainHeader.height() - 21;
242
+ canvas.height(totalAvailable - propSectionHeight);
243
+ jQuery('#paletteSection').height(totalAvailable);
244
+
245
+ // Update positions of the resize-markers, according to the canvas
246
+
247
+ var actualCanvas = null;
248
+ if (canvas && canvas[0].children[1]) {
249
+ actualCanvas = canvas[0].children[1];
250
+ }
251
+
252
+ var canvasTop = canvas.position().top;
253
+ var canvasLeft = canvas.position().left;
254
+ var canvasHeight = canvas[0].clientHeight;
255
+ var canvasWidth = canvas[0].clientWidth;
256
+ var iconCenterOffset = 8;
257
+ var widthDiff = 0;
258
+
259
+ var actualWidth = 0;
260
+ if(actualCanvas) {
261
+ // In some browsers, the SVG-element clientwidth isn't available, so we revert to the parent
262
+ actualWidth = actualCanvas.clientWidth || actualCanvas.parentNode.clientWidth;
263
+ }
264
+
265
+
266
+ if(actualWidth < canvas[0].clientWidth) {
267
+ widthDiff = actualWidth - canvas[0].clientWidth;
268
+ // In case the canvas is smaller than the actual viewport, the resizers should be moved
269
+ canvasLeft -= widthDiff / 2;
270
+ canvasWidth += widthDiff;
271
+ }
272
+
273
+ var iconWidth = 17;
274
+ var iconOffset = 20;
275
+
276
+ var north = jQuery('#canvas-grow-N');
277
+ north.css('top', canvasTop + iconOffset + 'px');
278
+ north.css('left', canvasLeft - 10 + (canvasWidth - iconWidth) / 2 + 'px');
279
+
280
+ var south = jQuery('#canvas-grow-S');
281
+ south.css('top', (canvasTop + canvasHeight - iconOffset - iconCenterOffset) + 'px');
282
+ south.css('left', canvasLeft - 10 + (canvasWidth - iconWidth) / 2 + 'px');
283
+
284
+ var east = jQuery('#canvas-grow-E');
285
+ east.css('top', canvasTop - 10 + (canvasHeight - iconWidth) / 2 + 'px');
286
+ east.css('left', (canvasLeft + canvasWidth - iconOffset - iconCenterOffset) + 'px');
287
+
288
+ var west = jQuery('#canvas-grow-W');
289
+ west.css('top', canvasTop -10 + (canvasHeight - iconWidth) / 2 + 'px');
290
+ west.css('left', canvasLeft + iconOffset + 'px');
291
+
292
+ north = jQuery('#canvas-shrink-N');
293
+ north.css('top', canvasTop + iconOffset + 'px');
294
+ north.css('left', canvasLeft + 10 + (canvasWidth - iconWidth) / 2 + 'px');
295
+
296
+ south = jQuery('#canvas-shrink-S');
297
+ south.css('top', (canvasTop + canvasHeight - iconOffset - iconCenterOffset) + 'px');
298
+ south.css('left', canvasLeft +10 + (canvasWidth - iconWidth) / 2 + 'px');
299
+
300
+ east = jQuery('#canvas-shrink-E');
301
+ east.css('top', canvasTop + 10 + (canvasHeight - iconWidth) / 2 + 'px');
302
+ east.css('left', (canvasLeft + canvasWidth - iconOffset - iconCenterOffset) + 'px');
303
+
304
+ west = jQuery('#canvas-shrink-W');
305
+ west.css('top', canvasTop + 10 + (canvasHeight - iconWidth) / 2 + 'px');
306
+ west.css('left', canvasLeft + iconOffset + 'px');
307
+ });
308
+
309
+ jQuery(window).trigger('resize');
310
+
311
+ jQuery.fn.scrollStopped = function(callback) {
312
+ jQuery(this).scroll(function(){
313
+ var self = this, $this = jQuery(self);
314
+ if ($this.data('scrollTimeout')) {
315
+ clearTimeout($this.data('scrollTimeout'));
316
+ }
317
+ $this.data('scrollTimeout', setTimeout(callback,50,self));
318
+ });
319
+ };
320
+
321
+ // Always needed, cause the DOM element on which the scroll event listeners are attached are changed for every new model
322
+ initScrollHandling();
323
+
324
+ $rootScope.editorInitialized = true;
325
+ }
326
+ });
327
+
328
+ /**
329
+ * Initialize the event bus: couple all Oryx events with a dispatch of the
330
+ * event of the event bus. This way, it gets much easier to attach custom logic
331
+ * to any event.
332
+ */
333
+
334
+ $rootScope.editorFactory.promise.then(function() {
335
+
336
+ KISBPM.eventBus.editor = $rootScope.editor;
337
+
338
+ var eventMappings = [
339
+ { oryxType : ORYX.CONFIG.EVENT_SELECTION_CHANGED, kisBpmType : KISBPM.eventBus.EVENT_TYPE_SELECTION_CHANGE },
340
+ { oryxType : ORYX.CONFIG.EVENT_DBLCLICK, kisBpmType : KISBPM.eventBus.EVENT_TYPE_DOUBLE_CLICK },
341
+ { oryxType : ORYX.CONFIG.EVENT_MOUSEOUT, kisBpmType : KISBPM.eventBus.EVENT_TYPE_MOUSE_OUT },
342
+ { oryxType : ORYX.CONFIG.EVENT_MOUSEOVER, kisBpmType : KISBPM.eventBus.EVENT_TYPE_MOUSE_OVER }
343
+
344
+ ];
345
+
346
+ eventMappings.forEach(function(eventMapping) {
347
+ $rootScope.editor.registerOnEvent(eventMapping.oryxType, function(event) {
348
+ KISBPM.eventBus.dispatch(eventMapping.kisBpmType, event);
349
+ });
350
+ });
351
+
352
+ $rootScope.editor.registerOnEvent(ORYX.CONFIG.EVENT_SHAPEREMOVED, function (event) {
353
+ var validateButton = document.getElementById(event.shape.resourceId + "-validate-button");
354
+ if (validateButton)
355
+ {
356
+ validateButton.style.display = 'none';
357
+ }
358
+ });
359
+
360
+ // The Oryx canvas is ready (we know since we're in this promise callback) and the
361
+ // event bus is ready. The editor is now ready for use
362
+ KISBPM.eventBus.dispatch(KISBPM.eventBus.EVENT_TYPE_EDITOR_READY, {type : KISBPM.eventBus.EVENT_TYPE_EDITOR_READY});
363
+
364
+ });
365
+
366
+ // Alerts
367
+ $rootScope.alerts = {
368
+ queue: []
369
+ };
370
+
371
+ $rootScope.showAlert = function(alert) {
372
+ if(alert.queue.length > 0) {
373
+ alert.current = alert.queue.shift();
374
+ // Start timout for message-pruning
375
+ alert.timeout = $timeout(function() {
376
+ if (alert.queue.length == 0) {
377
+ alert.current = undefined;
378
+ alert.timeout = undefined;
379
+ } else {
380
+ $rootScope.showAlert(alert);
381
+ }
382
+ }, (alert.current.type == 'error' ? 5000 : 1000));
383
+ } else {
384
+ $rootScope.alerts.current = undefined;
385
+ }
386
+ };
387
+
388
+ $rootScope.addAlert = function(message, type) {
389
+ var newAlert = {message: message, type: type};
390
+ if (!$rootScope.alerts.timeout) {
391
+ // Timeout for message queue is not running, start one
392
+ $rootScope.alerts.queue.push(newAlert);
393
+ $rootScope.showAlert($rootScope.alerts);
394
+ } else {
395
+ $rootScope.alerts.queue.push(newAlert);
396
+ }
397
+ };
398
+
399
+ $rootScope.dismissAlert = function() {
400
+ if (!$rootScope.alerts.timeout) {
401
+ $rootScope.alerts.current = undefined;
402
+ } else {
403
+ $timeout.cancel($rootScope.alerts.timeout);
404
+ $rootScope.alerts.timeout = undefined;
405
+ $rootScope.showAlert($rootScope.alerts);
406
+ }
407
+ };
408
+
409
+ $rootScope.addAlertPromise = function(promise, type) {
410
+ if (promise) {
411
+ promise.then(function(data) {
412
+ $rootScope.addAlert(data, type);
413
+ });
414
+ }
415
+ };
416
+
417
+ }
418
+ ])
419
+
420
+ // Moment-JS date-formatting filter
421
+ .filter('dateformat', function() {
422
+ return function(date, format) {
423
+ if (date) {
424
+ if (format) {
425
+ return moment(date).format(format);
426
+ } else {
427
+ return moment(date).calendar();
428
+ }
429
+ }
430
+ return '';
431
+ };
432
+ });
@@ -0,0 +1,4 @@
1
+ <span ng-if="property.value.assignment.assignee">{{'PROPERTY.ASSIGNMENT.ASSIGNEE_DISPLAY' | translate:property.value.assignment }} </span>
2
+ <span ng-if="property.value.assignment.candidateUsers.length > 0">{{'PROPERTY.ASSIGNMENT.CANDIDATE_USERS_DISPLAY' | translate:property.value.assignment.candidateUsers}} </span>
3
+ <span ng-if="property.value.assignment.candidateGroups.length > 0">{{'PROPERTY.ASSIGNMENT.CANDIDATE_GROUPS_DISPLAY' | translate:property.value.assignment.candidateGroups}} </span>
4
+ <span ng-if="!property.value.assignment.assignee && (!property.value.assignment.candidateUsers || property.value.assignment.candidateUsers.length == 0) && (!property.value.assignment.candidateGroups || property.value.assignment.candidateGroups.length == 0)" translate>PROPERTY.ASSIGNMENT.EMPTY</span>
@@ -0,0 +1,44 @@
1
+ <div class="modal" ng-controller="KisBpmAssignmentPopupCtrl">
2
+ <div class="modal-dialog">
3
+ <div class="modal-content">
4
+ <div class="modal-header">
5
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true" ng-click="close()">&times;</button>
6
+ <h2 translate>PROPERTY.ASSIGNMENT.TITLE</h2>
7
+ </div>
8
+ <div class="modal-body">
9
+
10
+ <div class="row row-no-gutter">
11
+ <div class="form-group">
12
+ <label for="assigneeField">{{'PROPERTY.ASSIGNMENT.ASSIGNEE' | translate}}</label>
13
+ <input type="text" id="assigneeField" class="form-control" ng-model="assignment.assignee" placeholder="{{'PROPERTY.ASSIGNMENT.ASSIGNEE_PLACEHOLDER' | translate}}" />
14
+ </div>
15
+ </div>
16
+
17
+ <div class="row row-no-gutter">
18
+ <div class="form-group">
19
+ <label for="userField">{{'PROPERTY.ASSIGNMENT.CANDIDATE_USERS' | translate}}</label>
20
+ <div ng-repeat="candidateUser in assignment.candidateUsers">
21
+ <input id="userField" class="form-control" type="text" ng-model="candidateUser.value" />
22
+ <i class="glyphicon glyphicon-minus clickable-property" ng-click="removeCandidateUserValue($index)"></i>
23
+ <i ng-if="$index == (assignment.candidateUsers.length - 1)" class="glyphicon glyphicon-plus clickable-property" ng-click="addCandidateUserValue($index)"></i>
24
+ </div>
25
+ </div>
26
+
27
+ <div class="form-group">
28
+ <label for="groupField">{{'PROPERTY.ASSIGNMENT.CANDIDATE_GROUPS' | translate}}</label>
29
+ <div ng-repeat="candidateGroup in assignment.candidateGroups">
30
+ <input id="groupField" class="form-control" type="text" ng-model="candidateGroup.value" />
31
+ <i class="glyphicon glyphicon-minus clickable-property" ng-click="removeCandidateGroupValue($index)"></i>
32
+ <i ng-if="$index == (assignment.candidateGroups.length - 1)" class="glyphicon glyphicon-plus clickable-property" ng-click="addCandidateGroupValue($index)"></i>
33
+ </div>
34
+ </div>
35
+ </div>
36
+
37
+ </div>
38
+ <div class="modal-footer">
39
+ <button ng-click="close()" class="btn btn-primary" translate>ACTION.CANCEL</button>
40
+ <button ng-click="save()" class="btn btn-primary" translate>ACTION.SAVE</button>
41
+ </div>
42
+ </div>
43
+ </div>
44
+ </div>
@@ -0,0 +1,4 @@
1
+
2
+ <!-- Just need to instantiate the controller, and it will take care of showing the modal dialog -->
3
+ <span ng-controller="KisBpmAssignmentCtrl">
4
+ </span>
@@ -0,0 +1,4 @@
1
+
2
+ <div ng-controller="KisBpmBooleanPropertyCtrl">
3
+ <input type="checkbox" ng-model="property.value" ng-change="changeValue()"/>
4
+ </div>
@@ -0,0 +1,2 @@
1
+ <span ng-if="property.value">{{property.value|limitTo:20}}</span>
2
+ <span ng-if="!property.value">{{'PROPERTY.SEQUENCEFLOW.CONDITION.NO-CONDITION-DISPLAY' | translate}}</span>
@@ -0,0 +1,29 @@
1
+
2
+ <div class="modal" ng-controller="KisBpmConditionExpressionPopupCtrl">
3
+ <div class="modal-dialog">
4
+ <div class="modal-content">
5
+ <div class="modal-header">
6
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true" ng-click="close()">&times;</button>
7
+ <h2 translate>PROPERTY.SEQUENCEFLOW.CONDITION.TITLE</h2>
8
+ </div>
9
+ <div class="modal-body">
10
+
11
+ <div class="detail-group clearfix">
12
+
13
+ <div class="form-group clearfix">
14
+ <div class="col-xs-12">
15
+ <label class="col-xs-3">{{'PROPERTY.SEQUENCEFLOW.CONDITION.STATIC' | translate}}</label>
16
+ <div class="col-xs-9">
17
+ <textarea class="form-control" ng-model="conditionExpression.value" style="width:90%; height:100%; max-width: 100%; max-height: 100%; min-height: 100px"/>
18
+ </div>
19
+ </div>
20
+ </div>
21
+
22
+ </div>
23
+ <div class="modal-footer">
24
+ <button ng-click="close()" class="btn btn-primary" translate>ACTION.CANCEL</button>
25
+ <button ng-click="save()" class="btn btn-primary" translate>ACTION.SAVE</button>
26
+ </div>
27
+ </div>
28
+ </div>
29
+ </div>
@@ -0,0 +1,4 @@
1
+
2
+ <!-- Just need to instantiate the controller, and it will take care of showing the modal dialog -->
3
+ <span ng-controller="KisBpmConditionExpressionCtrl">
4
+ </span>
@@ -0,0 +1,4 @@
1
+
2
+ <span ng-if="!property.noValue">{{property.value|limitTo:20}}</span>
3
+ <span ng-if="!property.noValue && property.value != null && property.value.length > 20">...</span>
4
+ <span ng-if="property.noValue" translate>PROPERTY.EMPTY</span>
@@ -0,0 +1,3 @@
1
+
2
+ <span ng-if="!property.noValue">{{'PROPERTY.EVENTLISTENERS.DISPLAY' | translate:property.value.eventListeners}}</span>
3
+ <span ng-if="property.noValue" translate>PROPERTY.EVENTLISTENERS.EMPTY</span>