method_draw 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (389) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +148 -0
  4. data/Rakefile +23 -0
  5. data/app/assets/javascripts/method_draw.js +9 -0
  6. data/app/assets/javascripts/method_draw/base64.js +95 -0
  7. data/app/assets/javascripts/method_draw_embed.js +76 -0
  8. data/app/assets/stylesheets/sketchily.css +6 -0
  9. data/app/helpers/method_draw_helper.rb +35 -0
  10. data/app/views/method_draw/_embed.html.erb +51 -0
  11. data/app/views/method_draw/_method_draw.html.erb +19 -0
  12. data/app/views/method_draw/_method_draw_tag.html.erb +14 -0
  13. data/lib/method_draw.rb +16 -0
  14. data/lib/method_draw/engine.rb +4 -0
  15. data/lib/method_draw/method_draw.rb +37 -0
  16. data/lib/method_draw/method_draw_tag.rb +20 -0
  17. data/lib/method_draw/version.rb +3 -0
  18. data/spec/app/helpers/method_draw_helper_spec.rb +8 -0
  19. data/spec/dummy/README.md +3 -0
  20. data/spec/dummy/Rakefile +7 -0
  21. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  22. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  23. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  24. data/spec/dummy/app/controllers/drawings_controller.rb +18 -0
  25. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  26. data/spec/dummy/app/models/drawing.rb +2 -0
  27. data/spec/dummy/app/views/drawings/method_draw.html.erb +3 -0
  28. data/spec/dummy/app/views/drawings/method_draw_tag.html.erb +3 -0
  29. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  30. data/spec/dummy/config.ru +4 -0
  31. data/spec/dummy/config/application.rb +27 -0
  32. data/spec/dummy/config/boot.rb +5 -0
  33. data/spec/dummy/config/database.yml +25 -0
  34. data/spec/dummy/config/environment.rb +5 -0
  35. data/spec/dummy/config/environments/development.rb +29 -0
  36. data/spec/dummy/config/environments/production.rb +80 -0
  37. data/spec/dummy/config/environments/test.rb +36 -0
  38. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  39. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  40. data/spec/dummy/config/initializers/inflections.rb +16 -0
  41. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  42. data/spec/dummy/config/initializers/secret_token.rb +12 -0
  43. data/spec/dummy/config/initializers/session_store.rb +3 -0
  44. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  45. data/spec/dummy/config/locales/en.yml +23 -0
  46. data/spec/dummy/config/routes.rb +8 -0
  47. data/spec/dummy/db/development.sqlite3 +0 -0
  48. data/spec/dummy/db/migrate/0_create_drawings.rb +7 -0
  49. data/spec/dummy/db/schema.rb +20 -0
  50. data/spec/dummy/db/test.sqlite3 +0 -0
  51. data/spec/dummy/log/development.log +922 -0
  52. data/spec/dummy/log/test.log +181 -0
  53. data/spec/dummy/public/404.html +26 -0
  54. data/spec/dummy/public/422.html +26 -0
  55. data/spec/dummy/public/500.html +25 -0
  56. data/spec/dummy/public/favicon.ico +0 -0
  57. data/spec/dummy/script/rails +6 -0
  58. data/spec/dummy/tmp/cache/assets/development/sprockets/01e63791dcd008779246d1eeeace9408 +0 -0
  59. data/spec/dummy/tmp/cache/assets/development/sprockets/061f36c32f08daef6eca93b74eaf74fd +0 -0
  60. data/spec/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  61. data/spec/dummy/tmp/cache/assets/development/sprockets/1dbfe77fba798ba3dc24571c3b6d7eed +0 -0
  62. data/spec/dummy/tmp/cache/assets/development/sprockets/1fd7477d83ec1798c2bc740be42bd6b2 +0 -0
  63. data/spec/dummy/tmp/cache/assets/development/sprockets/203471220004cb0cc667b886fb87dc46 +0 -0
  64. data/spec/dummy/tmp/cache/assets/development/sprockets/213e12fc648032455ca0b118e987cca6 +0 -0
  65. data/spec/dummy/tmp/cache/assets/development/sprockets/296bbe63b0505bc5be472fc1c8a1a5fd +0 -0
  66. data/spec/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  67. data/spec/dummy/tmp/cache/assets/development/sprockets/3239b44c026d7c1646c17a10c72905bf +0 -0
  68. data/spec/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  69. data/spec/dummy/tmp/cache/assets/development/sprockets/38c8fbf05056bbe66399b6923521dc20 +0 -0
  70. data/spec/dummy/tmp/cache/assets/development/sprockets/3e30c8cfdf7deeda4607e4a8298f09a5 +0 -0
  71. data/spec/dummy/tmp/cache/assets/development/sprockets/4bdd61ba53e8d9b7c19afea13c6e8985 +0 -0
  72. data/spec/dummy/tmp/cache/assets/development/sprockets/52b0b11efea48f1fe5e46eeb4aa20193 +0 -0
  73. data/spec/dummy/tmp/cache/assets/development/sprockets/5ef314d6f1af1570631d60b7f9a96d6c +0 -0
  74. data/spec/dummy/tmp/cache/assets/development/sprockets/6215f00c593e1789ef865a545b17fc14 +0 -0
  75. data/spec/dummy/tmp/cache/assets/development/sprockets/624fdd5478edd235a86af4b6168d0f75 +0 -0
  76. data/spec/dummy/tmp/cache/assets/development/sprockets/6299190ac3952cf7eee042e60c9aee89 +0 -0
  77. data/spec/dummy/tmp/cache/assets/development/sprockets/62a95a2d67ec78570de6d0b31436206a +0 -0
  78. data/spec/dummy/tmp/cache/assets/development/sprockets/65ed942dea29700b739c2292791eb65e +0 -0
  79. data/spec/dummy/tmp/cache/assets/development/sprockets/66eb709561f77a29885af4423a3eb193 +0 -0
  80. data/spec/dummy/tmp/cache/assets/development/sprockets/6f8f2c21bc49ae5ebad6e8a96cea4fe6 +0 -0
  81. data/spec/dummy/tmp/cache/assets/development/sprockets/85dab60ed9ec9625b7ee22d4342fe26c +0 -0
  82. data/spec/dummy/tmp/cache/assets/development/sprockets/86358bce0bfd5de6ac8afb1bfa9d675b +0 -0
  83. data/spec/dummy/tmp/cache/assets/development/sprockets/8b835ce894c1218dea1e7c83a9109d2d +0 -0
  84. data/spec/dummy/tmp/cache/assets/development/sprockets/8e177cc7106653a1e053bb2444bb43a5 +0 -0
  85. data/spec/dummy/tmp/cache/assets/development/sprockets/8f41435d82ae4df55ae7dfdc1e99b0bb +0 -0
  86. data/spec/dummy/tmp/cache/assets/development/sprockets/94be0a0bca76437d0766c265a9cdecda +0 -0
  87. data/spec/dummy/tmp/cache/assets/development/sprockets/9a093e6973aa150a0a4388167364593d +0 -0
  88. data/spec/dummy/tmp/cache/assets/development/sprockets/a280ac195f56a87267d2ec5d3e22ebcd +0 -0
  89. data/spec/dummy/tmp/cache/assets/development/sprockets/b13cddebc9106da6cfaf949ab3856d1f +0 -0
  90. data/spec/dummy/tmp/cache/assets/development/sprockets/b29ac216cb03ce2f30655a0d9bed77d4 +0 -0
  91. data/spec/dummy/tmp/cache/assets/development/sprockets/c39d32e3ef6cc89f9c522212e65c49e1 +0 -0
  92. data/spec/dummy/tmp/cache/assets/development/sprockets/c9910a0652952be02900dc71594d4384 +0 -0
  93. data/spec/dummy/tmp/cache/assets/development/sprockets/cb14e22baac3ab2cc947628f283e117b +0 -0
  94. data/spec/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  95. data/spec/dummy/tmp/cache/assets/development/sprockets/d1475c156face9f06092c9cf89905372 +0 -0
  96. data/spec/dummy/tmp/cache/assets/development/sprockets/d22aa5a4d864d00cced2437352fe8fe4 +0 -0
  97. data/spec/dummy/tmp/cache/assets/development/sprockets/d46cc5e60d1b2a20d622cdf9bab35fad +0 -0
  98. data/spec/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  99. data/spec/dummy/tmp/cache/assets/development/sprockets/d7f27a7f35278e87c69668a65683360a +0 -0
  100. data/spec/dummy/tmp/cache/assets/development/sprockets/e0080336bb31d78e9efab59b234e0d85 +0 -0
  101. data/spec/dummy/tmp/cache/assets/development/sprockets/e06104d99b055e792effca7bd66ad384 +0 -0
  102. data/spec/dummy/tmp/cache/assets/development/sprockets/e095df19da361d5f53d90f6749a38ea6 +0 -0
  103. data/spec/dummy/tmp/cache/assets/development/sprockets/e5fb97d39fdd2e383e61115ef06079fd +0 -0
  104. data/spec/dummy/tmp/cache/assets/development/sprockets/e6d1ec9817258cfda7c68499a841a9d2 +0 -0
  105. data/spec/dummy/tmp/cache/assets/development/sprockets/edec019e8f1d7e758eb45524a913fd47 +0 -0
  106. data/spec/dummy/tmp/cache/assets/development/sprockets/f37cf330dccb15bee2a195f643f3ba29 +0 -0
  107. data/spec/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  108. data/spec/dummy/tmp/cache/assets/development/sprockets/fc84011813992cacde5880c6b21701de +0 -0
  109. data/spec/dummy/tmp/cache/assets/test/sprockets/061f36c32f08daef6eca93b74eaf74fd +0 -0
  110. data/spec/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  111. data/spec/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  112. data/spec/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  113. data/spec/dummy/tmp/cache/assets/test/sprockets/38c8fbf05056bbe66399b6923521dc20 +0 -0
  114. data/spec/dummy/tmp/cache/assets/test/sprockets/3e30c8cfdf7deeda4607e4a8298f09a5 +0 -0
  115. data/spec/dummy/tmp/cache/assets/test/sprockets/52b0b11efea48f1fe5e46eeb4aa20193 +0 -0
  116. data/spec/dummy/tmp/cache/assets/test/sprockets/5ef314d6f1af1570631d60b7f9a96d6c +0 -0
  117. data/spec/dummy/tmp/cache/assets/test/sprockets/6299190ac3952cf7eee042e60c9aee89 +0 -0
  118. data/spec/dummy/tmp/cache/assets/test/sprockets/62a95a2d67ec78570de6d0b31436206a +0 -0
  119. data/spec/dummy/tmp/cache/assets/test/sprockets/65ed942dea29700b739c2292791eb65e +0 -0
  120. data/spec/dummy/tmp/cache/assets/test/sprockets/85dab60ed9ec9625b7ee22d4342fe26c +0 -0
  121. data/spec/dummy/tmp/cache/assets/test/sprockets/a280ac195f56a87267d2ec5d3e22ebcd +0 -0
  122. data/spec/dummy/tmp/cache/assets/test/sprockets/cb14e22baac3ab2cc947628f283e117b +0 -0
  123. data/spec/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  124. data/spec/dummy/tmp/cache/assets/test/sprockets/d1475c156face9f06092c9cf89905372 +0 -0
  125. data/spec/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  126. data/spec/dummy/tmp/cache/assets/test/sprockets/e0080336bb31d78e9efab59b234e0d85 +0 -0
  127. data/spec/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  128. data/spec/dummy/tmp/pids/server.pid +1 -0
  129. data/spec/features/method_draw_spec.rb +10 -0
  130. data/spec/features/method_draw_tag_spec.rb +11 -0
  131. data/spec/lib/method_draw/method_draw_spec.rb +27 -0
  132. data/spec/lib/method_draw/method_draw_tag_spec.rb +19 -0
  133. data/spec/lib/method_draw_spec.rb +11 -0
  134. data/spec/test_helper.rb +24 -0
  135. data/vendor/assets/javascripts/method-draw-js/browser-not-supported.html +27 -0
  136. data/vendor/assets/javascripts/method-draw-js/css/font-files/Anivers-webfont.eot +0 -0
  137. data/vendor/assets/javascripts/method-draw-js/css/font-files/Anivers-webfont.ttf +0 -0
  138. data/vendor/assets/javascripts/method-draw-js/css/font-files/Anivers-webfont.woff +0 -0
  139. data/vendor/assets/javascripts/method-draw-js/css/font-files/Arvo-Regular-webfont.svg +145 -0
  140. data/vendor/assets/javascripts/method-draw-js/css/font-files/Arvo-Regular-webfont.ttf +0 -0
  141. data/vendor/assets/javascripts/method-draw-js/css/font-files/Junction-webfont.eot +0 -0
  142. data/vendor/assets/javascripts/method-draw-js/css/font-files/Junction-webfont.svg +133 -0
  143. data/vendor/assets/javascripts/method-draw-js/css/font-files/Junction-webfont.ttf +0 -0
  144. data/vendor/assets/javascripts/method-draw-js/css/font-files/Junction-webfont.woff +0 -0
  145. data/vendor/assets/javascripts/method-draw-js/css/font-files/League_Gothic-webfont.eot +0 -0
  146. data/vendor/assets/javascripts/method-draw-js/css/font-files/League_Gothic-webfont.svg +235 -0
  147. data/vendor/assets/javascripts/method-draw-js/css/font-files/League_Gothic-webfont.ttf +0 -0
  148. data/vendor/assets/javascripts/method-draw-js/css/font-files/League_Gothic-webfont.woff +0 -0
  149. data/vendor/assets/javascripts/method-draw-js/css/font-files/Museo_Slab-webfont.eot +0 -0
  150. data/vendor/assets/javascripts/method-draw-js/css/font-files/Museo_Slab-webfont.ttf +0 -0
  151. data/vendor/assets/javascripts/method-draw-js/css/font-files/Museo_Slab-webfont.woff +0 -0
  152. data/vendor/assets/javascripts/method-draw-js/css/font-files/Museo_Slab_Italic-webfont.eot +0 -0
  153. data/vendor/assets/javascripts/method-draw-js/css/font-files/Museo_Slab_Italic-webfont.ttf +0 -0
  154. data/vendor/assets/javascripts/method-draw-js/css/font-files/Museo_Slab_Italic-webfont.woff +0 -0
  155. data/vendor/assets/javascripts/method-draw-js/css/font-files/arvo-bold-webfont.woff +0 -0
  156. data/vendor/assets/javascripts/method-draw-js/css/font-files/arvo-bolditalic-webfont.woff +0 -0
  157. data/vendor/assets/javascripts/method-draw-js/css/font-files/arvo-italic-webfont.woff +0 -0
  158. data/vendor/assets/javascripts/method-draw-js/css/font-files/arvo-regular-webfont.woff +0 -0
  159. data/vendor/assets/javascripts/method-draw-js/css/font-files/euphoriascript-regular-webfont.woff +0 -0
  160. data/vendor/assets/javascripts/method-draw-js/css/font-files/fanwood-webfont.eot +0 -0
  161. data/vendor/assets/javascripts/method-draw-js/css/font-files/fanwood-webfont.svg +939 -0
  162. data/vendor/assets/javascripts/method-draw-js/css/font-files/fanwood-webfont.ttf +0 -0
  163. data/vendor/assets/javascripts/method-draw-js/css/font-files/fanwood-webfont.woff +0 -0
  164. data/vendor/assets/javascripts/method-draw-js/css/font-files/fanwood_italic-webfont.eot +0 -0
  165. data/vendor/assets/javascripts/method-draw-js/css/font-files/fanwood_italic-webfont.svg +682 -0
  166. data/vendor/assets/javascripts/method-draw-js/css/font-files/fanwood_italic-webfont.ttf +0 -0
  167. data/vendor/assets/javascripts/method-draw-js/css/font-files/fanwood_italic-webfont.woff +0 -0
  168. data/vendor/assets/javascripts/method-draw-js/css/font-files/fertigo-webfont.eot +0 -0
  169. data/vendor/assets/javascripts/method-draw-js/css/font-files/fertigo-webfont.ttf +0 -0
  170. data/vendor/assets/javascripts/method-draw-js/css/font-files/fertigo-webfont.woff +0 -0
  171. data/vendor/assets/javascripts/method-draw-js/css/font-files/oswald-bold-webfont.woff +0 -0
  172. data/vendor/assets/javascripts/method-draw-js/css/font-files/oswald-light-webfont.woff +0 -0
  173. data/vendor/assets/javascripts/method-draw-js/css/font-files/shadowsintolight-webfont.woff +0 -0
  174. data/vendor/assets/javascripts/method-draw-js/css/font-files/simonetta-black-webfont.woff +0 -0
  175. data/vendor/assets/javascripts/method-draw-js/css/font-files/simonetta-blackitalic-webfont.woff +0 -0
  176. data/vendor/assets/javascripts/method-draw-js/css/font-files/simonetta-italic-webfont.ttf +0 -0
  177. data/vendor/assets/javascripts/method-draw-js/css/font-files/simonetta-regular-webfont.woff +0 -0
  178. data/vendor/assets/javascripts/method-draw-js/css/font-files/test.html +62 -0
  179. data/vendor/assets/javascripts/method-draw-js/css/font-files/test.svg +15 -0
  180. data/vendor/assets/javascripts/method-draw-js/css/font-files/test_ff.svg +16 -0
  181. data/vendor/assets/javascripts/method-draw-js/css/font-files/test_ffsvg.svg +13 -0
  182. data/vendor/assets/javascripts/method-draw-js/css/fonts.css +72 -0
  183. data/vendor/assets/javascripts/method-draw-js/css/method-draw.compiled.css +417 -0
  184. data/vendor/assets/javascripts/method-draw-js/css/method-draw.css +2083 -0
  185. data/vendor/assets/javascripts/method-draw-js/embedapi.html +56 -0
  186. data/vendor/assets/javascripts/method-draw-js/extensions/closepath_icons.svg +41 -0
  187. data/vendor/assets/javascripts/method-draw-js/extensions/ext-arrows.js +298 -0
  188. data/vendor/assets/javascripts/method-draw-js/extensions/ext-closepath.js +92 -0
  189. data/vendor/assets/javascripts/method-draw-js/extensions/ext-connector.js +587 -0
  190. data/vendor/assets/javascripts/method-draw-js/extensions/ext-eyedropper.js +135 -0
  191. data/vendor/assets/javascripts/method-draw-js/extensions/ext-foreignobject.js +277 -0
  192. data/vendor/assets/javascripts/method-draw-js/extensions/ext-grid.js +186 -0
  193. data/vendor/assets/javascripts/method-draw-js/extensions/ext-helloworld.js +78 -0
  194. data/vendor/assets/javascripts/method-draw-js/extensions/ext-imagelib.js +444 -0
  195. data/vendor/assets/javascripts/method-draw-js/extensions/ext-imagelib.xml +14 -0
  196. data/vendor/assets/javascripts/method-draw-js/extensions/ext-markers.js +576 -0
  197. data/vendor/assets/javascripts/method-draw-js/extensions/ext-server_moinsave.js +56 -0
  198. data/vendor/assets/javascripts/method-draw-js/extensions/ext-server_opensave.js +180 -0
  199. data/vendor/assets/javascripts/method-draw-js/extensions/ext-shapes.js +358 -0
  200. data/vendor/assets/javascripts/method-draw-js/extensions/ext-shapes.png +0 -0
  201. data/vendor/assets/javascripts/method-draw-js/extensions/ext-shapes.xml +8 -0
  202. data/vendor/assets/javascripts/method-draw-js/extensions/eyedropper-icon.xml +17 -0
  203. data/vendor/assets/javascripts/method-draw-js/extensions/eyedropper.png +0 -0
  204. data/vendor/assets/javascripts/method-draw-js/extensions/eyedropper.svg +15 -0
  205. data/vendor/assets/javascripts/method-draw-js/extensions/fileopen.php +31 -0
  206. data/vendor/assets/javascripts/method-draw-js/extensions/filesave.php +44 -0
  207. data/vendor/assets/javascripts/method-draw-js/extensions/foreignobject-icons.xml +96 -0
  208. data/vendor/assets/javascripts/method-draw-js/extensions/grid-icon.xml +30 -0
  209. data/vendor/assets/javascripts/method-draw-js/extensions/helloworld-icon.xml +21 -0
  210. data/vendor/assets/javascripts/method-draw-js/extensions/imagelib/index.html +64 -0
  211. data/vendor/assets/javascripts/method-draw-js/extensions/imagelib/smiley.svg +12 -0
  212. data/vendor/assets/javascripts/method-draw-js/extensions/markers-icons.xml +115 -0
  213. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib.png +0 -0
  214. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib.svg +10 -0
  215. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/arrow.json +40 -0
  216. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/dialog_balloon.json +14 -0
  217. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/flowchart.json +20 -0
  218. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/game.json +13 -0
  219. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/math.json +8 -0
  220. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/misc.json +6 -0
  221. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/music.json +21 -0
  222. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/nature.json +36 -0
  223. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/object.json +30 -0
  224. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/raphael.txt +12 -0
  225. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/raphael_1.json +7 -0
  226. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/social.json +21 -0
  227. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/symbol.json +35 -0
  228. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/ui.json +57 -0
  229. data/vendor/assets/javascripts/method-draw-js/extensions/shapelib/weather.json +26 -0
  230. data/vendor/assets/javascripts/method-draw-js/icons/jquery.svgicons.js +471 -0
  231. data/vendor/assets/javascripts/method-draw-js/images/AlphaBar.png +0 -0
  232. data/vendor/assets/javascripts/method-draw-js/images/Bars.png +0 -0
  233. data/vendor/assets/javascripts/method-draw-js/images/Maps.png +0 -0
  234. data/vendor/assets/javascripts/method-draw-js/images/NoColor.png +0 -0
  235. data/vendor/assets/javascripts/method-draw-js/images/README.txt +61 -0
  236. data/vendor/assets/javascripts/method-draw-js/images/align-bottom.png +0 -0
  237. data/vendor/assets/javascripts/method-draw-js/images/align-bottom.svg +1 -0
  238. data/vendor/assets/javascripts/method-draw-js/images/align-center.png +0 -0
  239. data/vendor/assets/javascripts/method-draw-js/images/align-center.svg +1 -0
  240. data/vendor/assets/javascripts/method-draw-js/images/align-left.png +0 -0
  241. data/vendor/assets/javascripts/method-draw-js/images/align-left.svg +1 -0
  242. data/vendor/assets/javascripts/method-draw-js/images/align-middle.png +0 -0
  243. data/vendor/assets/javascripts/method-draw-js/images/align-middle.svg +1 -0
  244. data/vendor/assets/javascripts/method-draw-js/images/align-right.png +0 -0
  245. data/vendor/assets/javascripts/method-draw-js/images/align-right.svg +1 -0
  246. data/vendor/assets/javascripts/method-draw-js/images/align-top.png +0 -0
  247. data/vendor/assets/javascripts/method-draw-js/images/align-top.svg +1 -0
  248. data/vendor/assets/javascripts/method-draw-js/images/bar-opacity.png +0 -0
  249. data/vendor/assets/javascripts/method-draw-js/images/bold.png +0 -0
  250. data/vendor/assets/javascripts/method-draw-js/images/cancel.png +0 -0
  251. data/vendor/assets/javascripts/method-draw-js/images/circle.png +0 -0
  252. data/vendor/assets/javascripts/method-draw-js/images/clear.png +0 -0
  253. data/vendor/assets/javascripts/method-draw-js/images/clone.png +0 -0
  254. data/vendor/assets/javascripts/method-draw-js/images/conn.svg +29 -0
  255. data/vendor/assets/javascripts/method-draw-js/images/copy.png +0 -0
  256. data/vendor/assets/javascripts/method-draw-js/images/cross.png +0 -0
  257. data/vendor/assets/javascripts/method-draw-js/images/cut.png +0 -0
  258. data/vendor/assets/javascripts/method-draw-js/images/delete.png +0 -0
  259. data/vendor/assets/javascripts/method-draw-js/images/document-properties.png +0 -0
  260. data/vendor/assets/javascripts/method-draw-js/images/drag.png +0 -0
  261. data/vendor/assets/javascripts/method-draw-js/images/dragging.png +0 -0
  262. data/vendor/assets/javascripts/method-draw-js/images/dropdown.gif +0 -0
  263. data/vendor/assets/javascripts/method-draw-js/images/ellipse.png +0 -0
  264. data/vendor/assets/javascripts/method-draw-js/images/ellipse.svg +8 -0
  265. data/vendor/assets/javascripts/method-draw-js/images/eye.png +0 -0
  266. data/vendor/assets/javascripts/method-draw-js/images/eye.svg +1 -0
  267. data/vendor/assets/javascripts/method-draw-js/images/eyedropper.png +0 -0
  268. data/vendor/assets/javascripts/method-draw-js/images/eyedropper_tool.png +0 -0
  269. data/vendor/assets/javascripts/method-draw-js/images/fhpath.png +0 -0
  270. data/vendor/assets/javascripts/method-draw-js/images/flyouth.png +0 -0
  271. data/vendor/assets/javascripts/method-draw-js/images/flyup.gif +0 -0
  272. data/vendor/assets/javascripts/method-draw-js/images/freehand-circle.png +0 -0
  273. data/vendor/assets/javascripts/method-draw-js/images/freehand-square.png +0 -0
  274. data/vendor/assets/javascripts/method-draw-js/images/go-down.png +0 -0
  275. data/vendor/assets/javascripts/method-draw-js/images/go-up.png +0 -0
  276. data/vendor/assets/javascripts/method-draw-js/images/image.png +0 -0
  277. data/vendor/assets/javascripts/method-draw-js/images/image.svg +12 -0
  278. data/vendor/assets/javascripts/method-draw-js/images/italic.png +0 -0
  279. data/vendor/assets/javascripts/method-draw-js/images/italic.svg +1 -0
  280. data/vendor/assets/javascripts/method-draw-js/images/line.png +0 -0
  281. data/vendor/assets/javascripts/method-draw-js/images/link_controls.png +0 -0
  282. data/vendor/assets/javascripts/method-draw-js/images/logo.png +0 -0
  283. data/vendor/assets/javascripts/method-draw-js/images/map-opacity.png +0 -0
  284. data/vendor/assets/javascripts/method-draw-js/images/mappoint.gif +0 -0
  285. data/vendor/assets/javascripts/method-draw-js/images/mappoint_c.png +0 -0
  286. data/vendor/assets/javascripts/method-draw-js/images/mappoint_f.png +0 -0
  287. data/vendor/assets/javascripts/method-draw-js/images/move_bottom.png +0 -0
  288. data/vendor/assets/javascripts/method-draw-js/images/move_top.png +0 -0
  289. data/vendor/assets/javascripts/method-draw-js/images/node_clone.png +0 -0
  290. data/vendor/assets/javascripts/method-draw-js/images/node_delete.png +0 -0
  291. data/vendor/assets/javascripts/method-draw-js/images/none.png +0 -0
  292. data/vendor/assets/javascripts/method-draw-js/images/open.png +0 -0
  293. data/vendor/assets/javascripts/method-draw-js/images/paste.png +0 -0
  294. data/vendor/assets/javascripts/method-draw-js/images/path.png +0 -0
  295. data/vendor/assets/javascripts/method-draw-js/images/path.svg +10 -0
  296. data/vendor/assets/javascripts/method-draw-js/images/pencil.png +0 -0
  297. data/vendor/assets/javascripts/method-draw-js/images/pencil.svg +11 -0
  298. data/vendor/assets/javascripts/method-draw-js/images/pencil_cursor.png +0 -0
  299. data/vendor/assets/javascripts/method-draw-js/images/picker.gif +0 -0
  300. data/vendor/assets/javascripts/method-draw-js/images/placeholder.svg +10 -0
  301. data/vendor/assets/javascripts/method-draw-js/images/polygon.png +0 -0
  302. data/vendor/assets/javascripts/method-draw-js/images/polygon.svg +1 -0
  303. data/vendor/assets/javascripts/method-draw-js/images/preview-opacity.png +0 -0
  304. data/vendor/assets/javascripts/method-draw-js/images/rangearrows.gif +0 -0
  305. data/vendor/assets/javascripts/method-draw-js/images/rangearrows2.gif +0 -0
  306. data/vendor/assets/javascripts/method-draw-js/images/rect.png +0 -0
  307. data/vendor/assets/javascripts/method-draw-js/images/redo.png +0 -0
  308. data/vendor/assets/javascripts/method-draw-js/images/reorient.png +0 -0
  309. data/vendor/assets/javascripts/method-draw-js/images/rotate.png +0 -0
  310. data/vendor/assets/javascripts/method-draw-js/images/save.png +0 -0
  311. data/vendor/assets/javascripts/method-draw-js/images/select.png +0 -0
  312. data/vendor/assets/javascripts/method-draw-js/images/select.svg +10 -0
  313. data/vendor/assets/javascripts/method-draw-js/images/select_node.png +0 -0
  314. data/vendor/assets/javascripts/method-draw-js/images/sep.png +0 -0
  315. data/vendor/assets/javascripts/method-draw-js/images/shape_group.png +0 -0
  316. data/vendor/assets/javascripts/method-draw-js/images/shape_ungroup.png +0 -0
  317. data/vendor/assets/javascripts/method-draw-js/images/source.png +0 -0
  318. data/vendor/assets/javascripts/method-draw-js/images/spinbtn_updn_big.png +0 -0
  319. data/vendor/assets/javascripts/method-draw-js/images/square.png +0 -0
  320. data/vendor/assets/javascripts/method-draw-js/images/svg_edit_icons.svg +455 -0
  321. data/vendor/assets/javascripts/method-draw-js/images/svg_edit_icons.svgz +0 -0
  322. data/vendor/assets/javascripts/method-draw-js/images/text.png +0 -0
  323. data/vendor/assets/javascripts/method-draw-js/images/text.svg +10 -0
  324. data/vendor/assets/javascripts/method-draw-js/images/to_path.png +0 -0
  325. data/vendor/assets/javascripts/method-draw-js/images/undo.png +0 -0
  326. data/vendor/assets/javascripts/method-draw-js/images/view-refresh.png +0 -0
  327. data/vendor/assets/javascripts/method-draw-js/images/wave.png +0 -0
  328. data/vendor/assets/javascripts/method-draw-js/images/wireframe.png +0 -0
  329. data/vendor/assets/javascripts/method-draw-js/images/zoom.png +0 -0
  330. data/vendor/assets/javascripts/method-draw-js/images/zoom.svg +12 -0
  331. data/vendor/assets/javascripts/method-draw-js/index.html +631 -0
  332. data/vendor/assets/javascripts/method-draw-js/lib/canvg/canvg.js +2620 -0
  333. data/vendor/assets/javascripts/method-draw-js/lib/canvg/rgbcolor.js +287 -0
  334. data/vendor/assets/javascripts/method-draw-js/lib/contextmenu.js +68 -0
  335. data/vendor/assets/javascripts/method-draw-js/lib/contextmenu/jquery.contextMenu.js +223 -0
  336. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/LICENSE +202 -0
  337. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/README +3 -0
  338. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/css/jPicker.css +250 -0
  339. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/css/jgraduate.css +332 -0
  340. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/AlphaBar.png +0 -0
  341. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/Bars.png +0 -0
  342. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/Maps.png +0 -0
  343. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/NoColor.png +0 -0
  344. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/bar-opacity.png +0 -0
  345. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/eyedropper.png +0 -0
  346. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/map-opacity.png +0 -0
  347. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/mappoint.gif +0 -0
  348. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/mappoint_c.png +0 -0
  349. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/mappoint_f.png +0 -0
  350. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/picker.gif +0 -0
  351. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/preview-opacity.png +0 -0
  352. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/rangearrows.gif +0 -0
  353. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/images/rangearrows2.gif +0 -0
  354. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/jpicker.min.js +2087 -0
  355. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/jquery.jgraduate.js +1175 -0
  356. data/vendor/assets/javascripts/method-draw-js/lib/jgraduate/jquery.jgraduate.min.js +37 -0
  357. data/vendor/assets/javascripts/method-draw-js/lib/jquery-draginput.js +181 -0
  358. data/vendor/assets/javascripts/method-draw-js/lib/jquery-ui/jquery-ui-1.8.17.custom.min.js +54 -0
  359. data/vendor/assets/javascripts/method-draw-js/lib/jquery-ui/jquery-ui-1.8.custom.min.js +84 -0
  360. data/vendor/assets/javascripts/method-draw-js/lib/jquery.js +2 -0
  361. data/vendor/assets/javascripts/method-draw-js/lib/jquerybbq/jquery.bbq.min.js +18 -0
  362. data/vendor/assets/javascripts/method-draw-js/lib/js-hotkeys/README.md +45 -0
  363. data/vendor/assets/javascripts/method-draw-js/lib/js-hotkeys/jquery.hotkeys.min.js +15 -0
  364. data/vendor/assets/javascripts/method-draw-js/lib/mousewheel.js +84 -0
  365. data/vendor/assets/javascripts/method-draw-js/lib/requestanimationframe.js +24 -0
  366. data/vendor/assets/javascripts/method-draw-js/lib/taphold.js +136 -0
  367. data/vendor/assets/javascripts/method-draw-js/lib/touch.js +28 -0
  368. data/vendor/assets/javascripts/method-draw-js/method-draw.compiled.css +417 -0
  369. data/vendor/assets/javascripts/method-draw-js/method-draw.compiled.js +692 -0
  370. data/vendor/assets/javascripts/method-draw-js/method-draw.manifest +121 -0
  371. data/vendor/assets/javascripts/method-draw-js/src/browser.js +181 -0
  372. data/vendor/assets/javascripts/method-draw-js/src/dialog.js +49 -0
  373. data/vendor/assets/javascripts/method-draw-js/src/dragupload.js +11 -0
  374. data/vendor/assets/javascripts/method-draw-js/src/draw.js +533 -0
  375. data/vendor/assets/javascripts/method-draw-js/src/embedapi.js +173 -0
  376. data/vendor/assets/javascripts/method-draw-js/src/history.js +601 -0
  377. data/vendor/assets/javascripts/method-draw-js/src/math.js +247 -0
  378. data/vendor/assets/javascripts/method-draw-js/src/method-draw.js +4140 -0
  379. data/vendor/assets/javascripts/method-draw-js/src/path.js +979 -0
  380. data/vendor/assets/javascripts/method-draw-js/src/sanitize.js +273 -0
  381. data/vendor/assets/javascripts/method-draw-js/src/select.js +608 -0
  382. data/vendor/assets/javascripts/method-draw-js/src/svgcanvas.js +9047 -0
  383. data/vendor/assets/javascripts/method-draw-js/src/svgtransformlist.js +291 -0
  384. data/vendor/assets/javascripts/method-draw-js/src/svgutils.js +648 -0
  385. data/vendor/assets/javascripts/method-draw-js/src/units.js +281 -0
  386. data/vendor/assets/javascripts/method-draw-js/svgedit.compiled.css +417 -0
  387. data/vendor/assets/javascripts/method-draw-js/svgedit.compiled.js +691 -0
  388. data/vendor/assets/javascripts/method-draw-js/temp.css +2665 -0
  389. metadata +619 -0
@@ -0,0 +1,587 @@
1
+ /*
2
+ * ext-connector.js
3
+ *
4
+ * Licensed under the Apache License, Version 2
5
+ *
6
+ * Copyright(c) 2010 Alexis Deveria
7
+ *
8
+ */
9
+
10
+ methodDraw.addExtension("Connector", function(S) {
11
+ var svgcontent = S.svgcontent,
12
+ svgroot = S.svgroot,
13
+ getNextId = S.getNextId,
14
+ getElem = S.getElem,
15
+ addElem = S.addSvgElementFromJson,
16
+ selManager = S.selectorManager,
17
+ curConfig = methodDraw.curConfig,
18
+ started = false,
19
+ start_x,
20
+ start_y,
21
+ cur_line,
22
+ start_elem,
23
+ end_elem,
24
+ connections = [],
25
+ conn_sel = ".se_connector",
26
+ se_ns,
27
+ // connect_str = "-SE_CONNECT-",
28
+ selElems = [];
29
+
30
+ elData = $.data;
31
+
32
+ var lang_list = {
33
+ "en":[
34
+ {"id": "mode_connect", "title": "Connect two objects" }
35
+ ],
36
+ "fr":[
37
+ {"id": "mode_connect", "title": "Connecter deux objets"}
38
+ ]
39
+ };
40
+
41
+ function getOffset(side, line) {
42
+ var give_offset = !!line.getAttribute('marker-' + side);
43
+ // var give_offset = $(line).data(side+'_off');
44
+
45
+ // TODO: Make this number (5) be based on marker width/height
46
+ var size = line.getAttribute('stroke-width') * 5;
47
+ return give_offset ? size : 0;
48
+ }
49
+
50
+ function showPanel(on) {
51
+ var conn_rules = $('#connector_rules');
52
+ if(!conn_rules.length) {
53
+ conn_rules = $('<style id="connector_rules"><\/style>').appendTo('head');
54
+ }
55
+ conn_rules.text(!on?"":"#tool_clone, #tool_topath, #tool_angle, #xy_panel { display: none !important; }");
56
+ $('#connector_panel').toggle(on);
57
+ }
58
+
59
+ function setPoint(elem, pos, x, y, setMid) {
60
+ var pts = elem.points;
61
+ var pt = svgroot.createSVGPoint();
62
+ pt.x = x;
63
+ pt.y = y;
64
+ if(pos === 'end') pos = pts.numberOfItems-1;
65
+ // TODO: Test for this on init, then use alt only if needed
66
+ try {
67
+ pts.replaceItem(pt, pos);
68
+ } catch(err) {
69
+ // Should only occur in FF which formats points attr as "n,n n,n", so just split
70
+ var pt_arr = elem.getAttribute("points").split(" ");
71
+ for(var i=0; i< pt_arr.length; i++) {
72
+ if(i == pos) {
73
+ pt_arr[i] = x + ',' + y;
74
+ }
75
+ }
76
+ elem.setAttribute("points",pt_arr.join(" "));
77
+ }
78
+
79
+ if(setMid) {
80
+ // Add center point
81
+ var pt_start = pts.getItem(0);
82
+ var pt_end = pts.getItem(pts.numberOfItems-1);
83
+ setPoint(elem, 1, (pt_end.x + pt_start.x)/2, (pt_end.y + pt_start.y)/2);
84
+ }
85
+ }
86
+
87
+ function updateLine(diff_x, diff_y) {
88
+ // Update line with element
89
+ var i = connections.length;
90
+ while(i--) {
91
+ var conn = connections[i];
92
+ var line = conn.connector;
93
+ var elem = conn.elem;
94
+
95
+ var pre = conn.is_start?'start':'end';
96
+ // var sw = line.getAttribute('stroke-width') * 5;
97
+
98
+ // Update bbox for this element
99
+ var bb = elData(line, pre+'_bb');
100
+ bb.x = conn.start_x + diff_x;
101
+ bb.y = conn.start_y + diff_y;
102
+ elData(line, pre+'_bb', bb);
103
+
104
+ var alt_pre = conn.is_start?'end':'start';
105
+
106
+ // Get center pt of connected element
107
+ var bb2 = elData(line, alt_pre+'_bb');
108
+ var src_x = bb2.x + bb2.width/2;
109
+ var src_y = bb2.y + bb2.height/2;
110
+
111
+ // Set point of element being moved
112
+ var pt = getBBintersect(src_x, src_y, bb, getOffset(pre, line)); // $(line).data(pre+'_off')?sw:0
113
+ setPoint(line, conn.is_start?0:'end', pt.x, pt.y, true);
114
+
115
+ // Set point of connected element
116
+ var pt2 = getBBintersect(pt.x, pt.y, elData(line, alt_pre + '_bb'), getOffset(alt_pre, line));
117
+ setPoint(line, conn.is_start?'end':0, pt2.x, pt2.y, true);
118
+
119
+ }
120
+ }
121
+
122
+ function findConnectors(elems) {
123
+ if(!elems) elems = selElems;
124
+ var connectors = $(svgcontent).find(conn_sel);
125
+ connections = [];
126
+
127
+ // Loop through connectors to see if one is connected to the element
128
+ connectors.each(function() {
129
+ var start = elData(this, "c_start");
130
+ var end = elData(this, "c_end");
131
+
132
+ var parts = [getElem(start), getElem(end)];
133
+ for(var i=0; i<2; i++) {
134
+ var c_elem = parts[i];
135
+ var add_this = false;
136
+ // The connected element might be part of a selected group
137
+ $(c_elem).parents().each(function() {
138
+ if($.inArray(this, elems) !== -1) {
139
+ // Pretend this element is selected
140
+ add_this = true;
141
+ }
142
+ });
143
+
144
+ if(!c_elem || !c_elem.parentNode) {
145
+ $(this).remove();
146
+ continue;
147
+ }
148
+ if($.inArray(c_elem, elems) !== -1 || add_this) {
149
+ var bb = svgCanvas.getStrokedBBox([c_elem]);
150
+ connections.push({
151
+ elem: c_elem,
152
+ connector: this,
153
+ is_start: (i === 0),
154
+ start_x: bb.x,
155
+ start_y: bb.y
156
+ });
157
+ }
158
+ }
159
+ });
160
+ }
161
+
162
+ function updateConnectors(elems) {
163
+ // Updates connector lines based on selected elements
164
+ // Is not used on mousemove, as it runs getStrokedBBox every time,
165
+ // which isn't necessary there.
166
+ findConnectors(elems);
167
+ if(connections.length) {
168
+ // Update line with element
169
+ var i = connections.length;
170
+ while(i--) {
171
+ var conn = connections[i];
172
+ var line = conn.connector;
173
+ var elem = conn.elem;
174
+
175
+ var sw = line.getAttribute('stroke-width') * 5;
176
+ var pre = conn.is_start?'start':'end';
177
+
178
+ // Update bbox for this element
179
+ var bb = svgCanvas.getStrokedBBox([elem]);
180
+ bb.x = conn.start_x;
181
+ bb.y = conn.start_y;
182
+ elData(line, pre+'_bb', bb);
183
+ var add_offset = elData(line, pre+'_off');
184
+
185
+ var alt_pre = conn.is_start?'end':'start';
186
+
187
+ // Get center pt of connected element
188
+ var bb2 = elData(line, alt_pre+'_bb');
189
+ var src_x = bb2.x + bb2.width/2;
190
+ var src_y = bb2.y + bb2.height/2;
191
+
192
+ // Set point of element being moved
193
+ var pt = getBBintersect(src_x, src_y, bb, getOffset(pre, line));
194
+ setPoint(line, conn.is_start?0:'end', pt.x, pt.y, true);
195
+
196
+ // Set point of connected element
197
+ var pt2 = getBBintersect(pt.x, pt.y, elData(line, alt_pre + '_bb'), getOffset(alt_pre, line));
198
+ setPoint(line, conn.is_start?'end':0, pt2.x, pt2.y, true);
199
+
200
+ // Update points attribute manually for webkit
201
+ if(navigator.userAgent.indexOf('AppleWebKit') != -1) {
202
+ var pts = line.points;
203
+ var len = pts.numberOfItems;
204
+ var pt_arr = Array(len);
205
+ for(var j=0; j< len; j++) {
206
+ var pt = pts.getItem(j);
207
+ pt_arr[j] = pt.x + ',' + pt.y;
208
+ }
209
+ line.setAttribute("points",pt_arr.join(" "));
210
+ }
211
+
212
+ }
213
+ }
214
+ }
215
+
216
+ function getBBintersect(x, y, bb, offset) {
217
+ if(offset) {
218
+ offset -= 0;
219
+ bb = $.extend({}, bb);
220
+ bb.width += offset;
221
+ bb.height += offset;
222
+ bb.x -= offset/2;
223
+ bb.y -= offset/2;
224
+ }
225
+
226
+ var mid_x = bb.x + bb.width/2;
227
+ var mid_y = bb.y + bb.height/2;
228
+ var len_x = x - mid_x;
229
+ var len_y = y - mid_y;
230
+
231
+ var slope = Math.abs(len_y/len_x);
232
+
233
+ var ratio;
234
+
235
+ if(slope < bb.height/bb.width) {
236
+ ratio = (bb.width/2) / Math.abs(len_x);
237
+ } else {
238
+ ratio = (bb.height/2) / Math.abs(len_y);
239
+ }
240
+
241
+
242
+ return {
243
+ x: mid_x + len_x * ratio,
244
+ y: mid_y + len_y * ratio
245
+ }
246
+ }
247
+
248
+ // Do once
249
+ (function() {
250
+ var gse = svgCanvas.groupSelectedElements;
251
+
252
+ svgCanvas.groupSelectedElements = function() {
253
+ svgCanvas.removeFromSelection($(conn_sel).toArray());
254
+ return gse.apply(this, arguments);
255
+ }
256
+
257
+ var mse = svgCanvas.moveSelectedElements;
258
+
259
+ svgCanvas.moveSelectedElements = function() {
260
+ svgCanvas.removeFromSelection($(conn_sel).toArray());
261
+ var cmd = mse.apply(this, arguments);
262
+ updateConnectors();
263
+ return cmd;
264
+ }
265
+
266
+ se_ns = svgCanvas.getEditorNS();
267
+ }());
268
+
269
+ // Do on reset
270
+ function init() {
271
+ // Make sure all connectors have data set
272
+ $(svgcontent).find('*').each(function() {
273
+ var conn = this.getAttributeNS(se_ns, "connector");
274
+ if(conn) {
275
+ this.setAttribute('class', conn_sel.substr(1));
276
+ var conn_data = conn.split(' ');
277
+ var sbb = svgCanvas.getStrokedBBox([getElem(conn_data[0])]);
278
+ var ebb = svgCanvas.getStrokedBBox([getElem(conn_data[1])]);
279
+ $(this).data('c_start',conn_data[0])
280
+ .data('c_end',conn_data[1])
281
+ .data('start_bb', sbb)
282
+ .data('end_bb', ebb);
283
+ svgCanvas.getEditorNS(true);
284
+ }
285
+ });
286
+ // updateConnectors();
287
+ }
288
+
289
+ // $(svgroot).parent().mousemove(function(e) {
290
+ // // if(started
291
+ // // || svgCanvas.getMode() != "connector"
292
+ // // || e.target.parentNode.parentNode != svgcontent) return;
293
+ //
294
+ // console.log('y')
295
+ // // if(e.target.parentNode.parentNode === svgcontent) {
296
+ // //
297
+ // // }
298
+ // });
299
+
300
+ return {
301
+ name: "Connector",
302
+ svgicons: "images/conn.svg",
303
+ buttons: [{
304
+ id: "mode_connect",
305
+ type: "mode",
306
+ icon: "images/cut.png",
307
+ title: "Connect two objects",
308
+ includeWith: {
309
+ button: '#tool_line',
310
+ isDefault: false,
311
+ position: 1
312
+ },
313
+ events: {
314
+ 'click': function() {
315
+ svgCanvas.setMode("connector");
316
+ }
317
+ }
318
+ }],
319
+ addLangData: function(lang) {
320
+ return {
321
+ data: lang_list[lang]
322
+ };
323
+ },
324
+ mouseDown: function(opts) {
325
+ var e = opts.event;
326
+ start_x = opts.start_x,
327
+ start_y = opts.start_y;
328
+ var mode = svgCanvas.getMode();
329
+
330
+ if(mode == "connector") {
331
+
332
+ if(started) return;
333
+
334
+ var mouse_target = e.target;
335
+
336
+ var parents = $(mouse_target).parents();
337
+
338
+ if($.inArray(svgcontent, parents) != -1) {
339
+ // Connectable element
340
+
341
+ // If child of foreignObject, use parent
342
+ var fo = $(mouse_target).closest("foreignObject");
343
+ start_elem = fo.length ? fo[0] : mouse_target;
344
+
345
+ // Get center of source element
346
+ var bb = svgCanvas.getStrokedBBox([start_elem]);
347
+ var x = bb.x + bb.width/2;
348
+ var y = bb.y + bb.height/2;
349
+
350
+ started = true;
351
+ cur_line = addElem({
352
+ "element": "polyline",
353
+ "attr": {
354
+ "id": getNextId(),
355
+ "points": (x+','+y+' '+x+','+y+' '+start_x+','+start_y),
356
+ "stroke": '#' + curConfig.initStroke.color,
357
+ "stroke-width": (!start_elem.stroke_width || start_elem.stroke_width == 0) ? curConfig.initStroke.width : start_elem.stroke_width,
358
+ "fill": "none",
359
+ "opacity": curConfig.initStroke.opacity,
360
+ "style": "pointer-events:none"
361
+ }
362
+ });
363
+ elData(cur_line, 'start_bb', bb);
364
+ }
365
+ return {
366
+ started: true
367
+ };
368
+ } else if(mode == "select") {
369
+ findConnectors();
370
+ }
371
+ },
372
+ mouseMove: function(opts) {
373
+ var zoom = svgCanvas.getZoom();
374
+ var e = opts.event;
375
+ var x = opts.mouse_x/zoom;
376
+ var y = opts.mouse_y/zoom;
377
+
378
+ var diff_x = x - start_x,
379
+ diff_y = y - start_y;
380
+
381
+ var mode = svgCanvas.getMode();
382
+
383
+ if(mode == "connector" && started) {
384
+
385
+ var sw = cur_line.getAttribute('stroke-width') * 3;
386
+ // Set start point (adjusts based on bb)
387
+ var pt = getBBintersect(x, y, elData(cur_line, 'start_bb'), getOffset('start', cur_line));
388
+ start_x = pt.x;
389
+ start_y = pt.y;
390
+
391
+ setPoint(cur_line, 0, pt.x, pt.y, true);
392
+
393
+ // Set end point
394
+ setPoint(cur_line, 'end', x, y, true);
395
+ } else if(mode == "select") {
396
+ var slen = selElems.length;
397
+
398
+ while(slen--) {
399
+ var elem = selElems[slen];
400
+ // Look for selected connector elements
401
+ if(elem && elData(elem, 'c_start')) {
402
+ // Remove the "translate" transform given to move
403
+ svgCanvas.removeFromSelection([elem]);
404
+ svgCanvas.getTransformList(elem).clear();
405
+
406
+ }
407
+ }
408
+ if(connections.length) {
409
+ updateLine(diff_x, diff_y);
410
+
411
+
412
+ }
413
+ }
414
+ },
415
+ mouseUp: function(opts) {
416
+ var zoom = svgCanvas.getZoom();
417
+ var e = opts.event,
418
+ x = opts.mouse_x/zoom,
419
+ y = opts.mouse_y/zoom,
420
+ mouse_target = e.target;
421
+
422
+ if(svgCanvas.getMode() == "connector") {
423
+ var fo = $(mouse_target).closest("foreignObject");
424
+ if(fo.length) mouse_target = fo[0];
425
+
426
+ var parents = $(mouse_target).parents();
427
+
428
+ if(mouse_target == start_elem) {
429
+ // Start line through click
430
+ started = true;
431
+ return {
432
+ keep: true,
433
+ element: null,
434
+ started: started
435
+ }
436
+ } else if($.inArray(svgcontent, parents) === -1) {
437
+ // Not a valid target element, so remove line
438
+ $(cur_line).remove();
439
+ started = false;
440
+ return {
441
+ keep: false,
442
+ element: null,
443
+ started: started
444
+ }
445
+ } else {
446
+ // Valid end element
447
+ end_elem = mouse_target;
448
+
449
+ var start_id = start_elem.id, end_id = end_elem.id;
450
+ var conn_str = start_id + " " + end_id;
451
+ var alt_str = end_id + " " + start_id;
452
+ // Don't create connector if one already exists
453
+ var dupe = $(svgcontent).find(conn_sel).filter(function() {
454
+ var conn = this.getAttributeNS(se_ns, "connector");
455
+ if(conn == conn_str || conn == alt_str) return true;
456
+ });
457
+ if(dupe.length) {
458
+ $(cur_line).remove();
459
+ return {
460
+ keep: false,
461
+ element: null,
462
+ started: false
463
+ }
464
+ }
465
+
466
+ var bb = svgCanvas.getStrokedBBox([end_elem]);
467
+
468
+ var pt = getBBintersect(start_x, start_y, bb, getOffset('start', cur_line));
469
+ setPoint(cur_line, 'end', pt.x, pt.y, true);
470
+ $(cur_line)
471
+ .data("c_start", start_id)
472
+ .data("c_end", end_id)
473
+ .data("end_bb", bb);
474
+ se_ns = svgCanvas.getEditorNS(true);
475
+ cur_line.setAttributeNS(se_ns, "se:connector", conn_str);
476
+ cur_line.setAttribute('class', conn_sel.substr(1));
477
+ cur_line.setAttribute('opacity', 1);
478
+ svgCanvas.addToSelection([cur_line]);
479
+ svgCanvas.moveToBottomSelectedElement();
480
+ selManager.requestSelector(cur_line).showGrips(false);
481
+ started = false;
482
+ return {
483
+ keep: true,
484
+ element: cur_line,
485
+ started: started
486
+ }
487
+ }
488
+ }
489
+ },
490
+ selectedChanged: function(opts) {
491
+ // TODO: Find better way to skip operations if no connectors are in use
492
+ if(!$(svgcontent).find(conn_sel).length) return;
493
+
494
+ if(svgCanvas.getMode() == 'connector') {
495
+ svgCanvas.setMode('select');
496
+ }
497
+
498
+ // Use this to update the current selected elements
499
+ selElems = opts.elems;
500
+
501
+ var i = selElems.length;
502
+
503
+ while(i--) {
504
+ var elem = selElems[i];
505
+ if(elem && elData(elem, 'c_start')) {
506
+ selManager.requestSelector(elem).showGrips(false);
507
+ if(opts.selectedElement && !opts.multiselected) {
508
+ // TODO: Set up context tools and hide most regular line tools
509
+ showPanel(true);
510
+ } else {
511
+ showPanel(false);
512
+ }
513
+ } else {
514
+ showPanel(false);
515
+ }
516
+ }
517
+ updateConnectors();
518
+ },
519
+ elementChanged: function(opts) {
520
+ var elem = opts.elems[0];
521
+ if (elem && elem.tagName == 'svg' && elem.id == "svgcontent") {
522
+ // Update svgcontent (can change on import)
523
+ svgcontent = elem;
524
+ init();
525
+ }
526
+
527
+ // Has marker, so change offset
528
+ if(elem && (
529
+ elem.getAttribute("marker-start") ||
530
+ elem.getAttribute("marker-mid") ||
531
+ elem.getAttribute("marker-end")
532
+ )) {
533
+ var start = elem.getAttribute("marker-start");
534
+ var mid = elem.getAttribute("marker-mid");
535
+ var end = elem.getAttribute("marker-end");
536
+ cur_line = elem;
537
+ $(elem)
538
+ .data("start_off", !!start)
539
+ .data("end_off", !!end);
540
+
541
+ if(elem.tagName == "line" && mid) {
542
+ // Convert to polyline to accept mid-arrow
543
+
544
+ var x1 = elem.getAttribute('x1')-0;
545
+ var x2 = elem.getAttribute('x2')-0;
546
+ var y1 = elem.getAttribute('y1')-0;
547
+ var y2 = elem.getAttribute('y2')-0;
548
+ var id = elem.id;
549
+
550
+ var mid_pt = (' '+((x1+x2)/2)+','+((y1+y2)/2) + ' ');
551
+ var pline = addElem({
552
+ "element": "polyline",
553
+ "attr": {
554
+ "points": (x1+','+y1+ mid_pt +x2+','+y2),
555
+ "stroke": elem.getAttribute('stroke'),
556
+ "stroke-width": elem.getAttribute('stroke-width'),
557
+ "marker-mid": mid,
558
+ "fill": "none",
559
+ "opacity": elem.getAttribute('opacity') || 1
560
+ }
561
+ });
562
+ $(elem).after(pline).remove();
563
+ svgCanvas.clearSelection();
564
+ pline.id = id;
565
+ svgCanvas.addToSelection([pline]);
566
+ elem = pline;
567
+ }
568
+ }
569
+ // Update line if it's a connector
570
+ if(elem.getAttribute('class') == conn_sel.substr(1)) {
571
+ var start = getElem(elData(elem, 'c_start'));
572
+ updateConnectors([start]);
573
+ } else {
574
+ updateConnectors();
575
+ }
576
+ },
577
+ toolButtonStateUpdate: function(opts) {
578
+ if(opts.nostroke) {
579
+ if ($('#mode_connect').hasClass('tool_button_current')) {
580
+ clickSelect();
581
+ }
582
+ }
583
+ $('#mode_connect')
584
+ .toggleClass('disabled',opts.nostroke);
585
+ }
586
+ };
587
+ });