ela 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (300) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +5 -0
  3. data/.gitlab-ci.yml +23 -0
  4. data/Gemfile +7 -0
  5. data/Gemfile.lock +139 -0
  6. data/Guardfile +25 -0
  7. data/LICENSE.txt +205 -0
  8. data/README.de.md +195 -0
  9. data/README.md +66 -0
  10. data/Rakefile +96 -0
  11. data/app/css/screen.styl +425 -0
  12. data/app/css/vendor/stackedit.styl +140 -0
  13. data/app/fonts/Roboto-Italic-webfont.eot +0 -0
  14. data/app/fonts/Roboto-Italic-webfont.svg +642 -0
  15. data/app/fonts/Roboto-Italic-webfont.ttf +0 -0
  16. data/app/fonts/Roboto-Italic-webfont.woff +0 -0
  17. data/app/fonts/Roboto-Light-webfont.eot +0 -0
  18. data/app/fonts/Roboto-Light-webfont.svg +641 -0
  19. data/app/fonts/Roboto-Light-webfont.ttf +0 -0
  20. data/app/fonts/Roboto-Light-webfont.woff +0 -0
  21. data/app/fonts/Roboto-LightItalic-webfont.eot +0 -0
  22. data/app/fonts/Roboto-LightItalic-webfont.svg +641 -0
  23. data/app/fonts/Roboto-LightItalic-webfont.ttf +0 -0
  24. data/app/fonts/Roboto-LightItalic-webfont.woff +0 -0
  25. data/app/fonts/Roboto-Medium-webfont.eot +0 -0
  26. data/app/fonts/Roboto-Medium-webfont.svg +593 -0
  27. data/app/fonts/Roboto-Medium-webfont.ttf +0 -0
  28. data/app/fonts/Roboto-Medium-webfont.woff +0 -0
  29. data/app/fonts/Roboto-MediumItalic-webfont.eot +0 -0
  30. data/app/fonts/Roboto-MediumItalic-webfont.svg +642 -0
  31. data/app/fonts/Roboto-MediumItalic-webfont.ttf +0 -0
  32. data/app/fonts/Roboto-MediumItalic-webfont.woff +0 -0
  33. data/app/fonts/Roboto-Regular-webfont.eot +0 -0
  34. data/app/fonts/Roboto-Regular-webfont.svg +621 -0
  35. data/app/fonts/Roboto-Regular-webfont.ttf +0 -0
  36. data/app/fonts/Roboto-Regular-webfont.woff +0 -0
  37. data/app/fonts/Roboto-Thin-webfont.eot +0 -0
  38. data/app/fonts/Roboto-Thin-webfont.svg +631 -0
  39. data/app/fonts/Roboto-Thin-webfont.ttf +0 -0
  40. data/app/fonts/Roboto-Thin-webfont.woff +0 -0
  41. data/app/fonts/Roboto-ThinItalic-webfont.eot +0 -0
  42. data/app/fonts/Roboto-ThinItalic-webfont.svg +631 -0
  43. data/app/fonts/Roboto-ThinItalic-webfont.ttf +0 -0
  44. data/app/fonts/Roboto-ThinItalic-webfont.woff +0 -0
  45. data/app/fonts/droid_sans_regular.typeface.svg +1 -0
  46. data/app/fonts/fontawesome-webfont.eot +0 -0
  47. data/app/fonts/fontawesome-webfont.svg +2671 -0
  48. data/app/fonts/fontawesome-webfont.ttf +0 -0
  49. data/app/fonts/fontawesome-webfont.woff +0 -0
  50. data/app/fonts/fontawesome-webfont.woff2 +0 -0
  51. data/app/js/lib/application.coffee +83 -0
  52. data/app/js/lib/bootstrap_data.coffee +70 -0
  53. data/app/js/lib/collections/00_limited_collection.coffee +85 -0
  54. data/app/js/lib/collections/curves.coffee +3 -0
  55. data/app/js/lib/collections/named_object_collection.coffee +7 -0
  56. data/app/js/lib/mathjaxConfig.coffee +241 -0
  57. data/app/js/lib/models/app.coffee +58 -0
  58. data/app/js/lib/models/base_app.coffee +62 -0
  59. data/app/js/lib/models/base_app_model.coffee +61 -0
  60. data/app/js/lib/models/base_calculator.coffee +212 -0
  61. data/app/js/lib/models/base_subapp_container.coffee +35 -0
  62. data/app/js/lib/models/curve.coffee +179 -0
  63. data/app/js/lib/router.coffee +26 -0
  64. data/app/js/lib/views/app.coffee +56 -0
  65. data/app/js/lib/views/base_app.coffee +274 -0
  66. data/app/js/lib/views/base_aside.coffee +9 -0
  67. data/app/js/lib/views/base_graph.coffee +477 -0
  68. data/app/js/lib/views/base_subapp_container.coffee +44 -0
  69. data/app/js/lib/views/canvas.coffee +73 -0
  70. data/app/js/lib/views/curve_graph.coffee +163 -0
  71. data/app/js/lib/views/curves_aside.coffee +21 -0
  72. data/app/js/lib/views/curves_list_item.coffee +8 -0
  73. data/app/js/lib/views/grouped_parameters_aside.coffee +14 -0
  74. data/app/js/lib/views/headup.coffee +15 -0
  75. data/app/js/lib/views/help.coffee +86 -0
  76. data/app/js/lib/views/interpolated_graph.coffee +281 -0
  77. data/app/js/lib/views/legend.coffee +138 -0
  78. data/app/js/lib/views/legend_handler.coffee +51 -0
  79. data/app/js/lib/views/overview.coffee +85 -0
  80. data/app/js/lib/views/overview_tile.coffee +18 -0
  81. data/app/js/lib/views/parameters_aside.coffee +12 -0
  82. data/app/js/lib/views/three_graph.coffee +92 -0
  83. data/app/js/vendor/Markdown.Converter.js +1519 -0
  84. data/app/js/vendor/Markdown.Extra.js +874 -0
  85. data/app/js/vendor/Markdown.Toc.coffee +79 -0
  86. data/app/js/vendor/backbone-1.3.3.min.js +2 -0
  87. data/app/js/vendor/backbone-validation-0.11.5.js +8 -0
  88. data/app/js/vendor/backbone.poised/form.coffee +156 -0
  89. data/app/js/vendor/backbone.poised/form/anchor.coffee +26 -0
  90. data/app/js/vendor/backbone.poised/form/base_control.coffee +42 -0
  91. data/app/js/vendor/backbone.poised/form/linked_control.coffee +79 -0
  92. data/app/js/vendor/backbone.poised/form/linked_number_control.coffee +27 -0
  93. data/app/js/vendor/backbone.poised/form/linked_range_control.coffee +53 -0
  94. data/app/js/vendor/backbone.poised/form/linked_select_control.coffee +18 -0
  95. data/app/js/vendor/backbone.poised/form/linked_string_control.coffee +27 -0
  96. data/app/js/vendor/backbone.poised/form/number_control.coffee +25 -0
  97. data/app/js/vendor/backbone.poised/form/range_control.coffee +48 -0
  98. data/app/js/vendor/backbone.poised/form/select_control.coffee +16 -0
  99. data/app/js/vendor/backbone.poised/form/selectbox.coffee +78 -0
  100. data/app/js/vendor/backbone.poised/form/slider.coffee +109 -0
  101. data/app/js/vendor/backbone.poised/form/string_control.coffee +23 -0
  102. data/app/js/vendor/backbone.poised/form/submit_control.coffee +39 -0
  103. data/app/js/vendor/backbone.poised/form/textarea.coffee +36 -0
  104. data/app/js/vendor/backbone.poised/form/textfield.coffee +86 -0
  105. data/app/js/vendor/backbone.poised/form/value.coffee +33 -0
  106. data/app/js/vendor/backbone.poised/form/value_control.coffee +15 -0
  107. data/app/js/vendor/backbone.poised/linked_form.coffee +43 -0
  108. data/app/js/vendor/backbone.poised/list.coffee +97 -0
  109. data/app/js/vendor/backbone.poised/list/add_button.coffee +16 -0
  110. data/app/js/vendor/backbone.poised/list/anchor.coffee +32 -0
  111. data/app/js/vendor/backbone.poised/list/item.coffee +68 -0
  112. data/app/js/vendor/backbone.poised/list/searchfield.coffee +26 -0
  113. data/app/js/vendor/backbone.poised/list/selectable_item.coffee +65 -0
  114. data/app/js/vendor/backbone.poised/patches.coffee +6 -0
  115. data/app/js/vendor/backbone.poised/string_mixin.coffee +23 -0
  116. data/app/js/vendor/backbone.poised/underscore_ext.coffee +2 -0
  117. data/app/js/vendor/backbone.poised/view.coffee +59 -0
  118. data/app/js/vendor/gaussianElimination.coffee +40 -0
  119. data/app/js/vendor/hammer-2.0.8.min.js +7 -0
  120. data/app/js/vendor/jquery-3.1.1.min.js +4 -0
  121. data/app/js/vendor/jquery.after-transition.coffee +20 -0
  122. data/app/js/vendor/jquery.backbone-hammer.coffee +28 -0
  123. data/app/js/vendor/jquery.keyboard-modifiers.coffee +22 -0
  124. data/app/js/vendor/jquery.mark-5.2.3.min.js +7 -0
  125. data/app/js/vendor/jquery.scrollTo-2.1.2.min.js +7 -0
  126. data/app/js/vendor/js-yaml-3.4.3.min.js +3 -0
  127. data/app/js/vendor/markup_text.coffee +95 -0
  128. data/app/js/vendor/mathjax/MathJax.js +19 -0
  129. data/app/js/vendor/mathjax/extensions/MathEvents.js +19 -0
  130. data/app/js/vendor/mathjax/extensions/tex2jax.js +19 -0
  131. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/eot/MathJax_AMS-Regular.eot +0 -0
  132. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/eot/MathJax_Caligraphic-Bold.eot +0 -0
  133. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/eot/MathJax_Caligraphic-Regular.eot +0 -0
  134. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/eot/MathJax_Fraktur-Bold.eot +0 -0
  135. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/eot/MathJax_Fraktur-Regular.eot +0 -0
  136. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/eot/MathJax_Main-Bold.eot +0 -0
  137. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/eot/MathJax_Main-Italic.eot +0 -0
  138. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/eot/MathJax_Main-Regular.eot +0 -0
  139. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/eot/MathJax_Math-BoldItalic.eot +0 -0
  140. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/eot/MathJax_Math-Italic.eot +0 -0
  141. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/eot/MathJax_Math-Regular.eot +0 -0
  142. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/eot/MathJax_SansSerif-Bold.eot +0 -0
  143. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/eot/MathJax_SansSerif-Italic.eot +0 -0
  144. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/eot/MathJax_SansSerif-Regular.eot +0 -0
  145. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/eot/MathJax_Script-Regular.eot +0 -0
  146. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/eot/MathJax_Size1-Regular.eot +0 -0
  147. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/eot/MathJax_Size2-Regular.eot +0 -0
  148. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/eot/MathJax_Size3-Regular.eot +0 -0
  149. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/eot/MathJax_Size4-Regular.eot +0 -0
  150. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/eot/MathJax_Typewriter-Regular.eot +0 -0
  151. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/eot/MathJax_WinIE6-Regular.eot +0 -0
  152. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_AMS-Regular.otf +0 -0
  153. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_Caligraphic-Bold.otf +0 -0
  154. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_Caligraphic-Regular.otf +0 -0
  155. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_Fraktur-Bold.otf +0 -0
  156. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_Fraktur-Regular.otf +0 -0
  157. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_Main-Bold.otf +0 -0
  158. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_Main-Italic.otf +0 -0
  159. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_Main-Regular.otf +0 -0
  160. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_Math-BoldItalic.otf +0 -0
  161. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_Math-Italic.otf +0 -0
  162. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_Math-Regular.otf +0 -0
  163. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_SansSerif-Bold.otf +0 -0
  164. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_SansSerif-Italic.otf +0 -0
  165. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_SansSerif-Regular.otf +0 -0
  166. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_Script-Regular.otf +0 -0
  167. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_Size1-Regular.otf +0 -0
  168. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_Size2-Regular.otf +0 -0
  169. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_Size3-Regular.otf +0 -0
  170. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_Size4-Regular.otf +0 -0
  171. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_Typewriter-Regular.otf +0 -0
  172. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_WinChrome-Regular.otf +0 -0
  173. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/otf/MathJax_WinIE6-Regular.otf +0 -0
  174. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/svg/MathJax_AMS-Regular.svg +765 -0
  175. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/svg/MathJax_Caligraphic-Bold.svg +136 -0
  176. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/svg/MathJax_Caligraphic-Regular.svg +134 -0
  177. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/svg/MathJax_Fraktur-Bold.svg +319 -0
  178. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/svg/MathJax_Fraktur-Regular.svg +309 -0
  179. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/svg/MathJax_Main-Bold.svg +656 -0
  180. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/svg/MathJax_Main-Italic.svg +374 -0
  181. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/svg/MathJax_Main-Regular.svg +659 -0
  182. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/svg/MathJax_Math-BoldItalic.svg +331 -0
  183. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/svg/MathJax_Math-Italic.svg +331 -0
  184. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/svg/MathJax_Math-Regular.svg +330 -0
  185. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/svg/MathJax_SansSerif-Bold.svg +280 -0
  186. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/svg/MathJax_SansSerif-Italic.svg +245 -0
  187. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/svg/MathJax_SansSerif-Regular.svg +211 -0
  188. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/svg/MathJax_Script-Regular.svg +160 -0
  189. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/svg/MathJax_Size1-Regular.svg +110 -0
  190. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/svg/MathJax_Size2-Regular.svg +109 -0
  191. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/svg/MathJax_Size3-Regular.svg +49 -0
  192. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/svg/MathJax_Size4-Regular.svg +102 -0
  193. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/svg/MathJax_Typewriter-Regular.svg +322 -0
  194. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/svg/MathJax_WinChrome-Regular.svg +39 -0
  195. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_AMS-Regular.woff +0 -0
  196. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Bold.woff +0 -0
  197. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Regular.woff +0 -0
  198. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Bold.woff +0 -0
  199. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Regular.woff +0 -0
  200. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Bold.woff +0 -0
  201. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Italic.woff +0 -0
  202. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Main-Regular.woff +0 -0
  203. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Math-BoldItalic.woff +0 -0
  204. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Math-Italic.woff +0 -0
  205. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Math-Regular.woff +0 -0
  206. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Bold.woff +0 -0
  207. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Italic.woff +0 -0
  208. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Regular.woff +0 -0
  209. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Script-Regular.woff +0 -0
  210. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size1-Regular.woff +0 -0
  211. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size2-Regular.woff +0 -0
  212. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size3-Regular.woff +0 -0
  213. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Size4-Regular.woff +0 -0
  214. data/app/js/vendor/mathjax/fonts/HTML-CSS/TeX/woff/MathJax_Typewriter-Regular.woff +0 -0
  215. data/app/js/vendor/mathjax/jax/element/mml/jax.js +19 -0
  216. data/app/js/vendor/mathjax/jax/element/mml/optable/Arrows.js +19 -0
  217. data/app/js/vendor/mathjax/jax/element/mml/optable/BasicLatin.js +19 -0
  218. data/app/js/vendor/mathjax/jax/element/mml/optable/CombDiacritMarks.js +19 -0
  219. data/app/js/vendor/mathjax/jax/element/mml/optable/CombDiactForSymbols.js +19 -0
  220. data/app/js/vendor/mathjax/jax/element/mml/optable/Dingbats.js +19 -0
  221. data/app/js/vendor/mathjax/jax/element/mml/optable/GeneralPunctuation.js +19 -0
  222. data/app/js/vendor/mathjax/jax/element/mml/optable/GeometricShapes.js +19 -0
  223. data/app/js/vendor/mathjax/jax/element/mml/optable/GreekAndCoptic.js +19 -0
  224. data/app/js/vendor/mathjax/jax/element/mml/optable/Latin1Supplement.js +19 -0
  225. data/app/js/vendor/mathjax/jax/element/mml/optable/LetterlikeSymbols.js +19 -0
  226. data/app/js/vendor/mathjax/jax/element/mml/optable/MathOperators.js +19 -0
  227. data/app/js/vendor/mathjax/jax/element/mml/optable/MiscMathSymbolsA.js +19 -0
  228. data/app/js/vendor/mathjax/jax/element/mml/optable/MiscMathSymbolsB.js +19 -0
  229. data/app/js/vendor/mathjax/jax/element/mml/optable/MiscSymbolsAndArrows.js +19 -0
  230. data/app/js/vendor/mathjax/jax/element/mml/optable/MiscTechnical.js +19 -0
  231. data/app/js/vendor/mathjax/jax/element/mml/optable/SpacingModLetters.js +19 -0
  232. data/app/js/vendor/mathjax/jax/element/mml/optable/SuppMathOperators.js +19 -0
  233. data/app/js/vendor/mathjax/jax/element/mml/optable/SupplementalArrowsA.js +19 -0
  234. data/app/js/vendor/mathjax/jax/element/mml/optable/SupplementalArrowsB.js +19 -0
  235. data/app/js/vendor/mathjax/jax/input/TeX/config.js +19 -0
  236. data/app/js/vendor/mathjax/jax/input/TeX/jax.js +19 -0
  237. data/app/js/vendor/mathjax/jax/output/CommonHTML/autoload/annotation-xml.js +19 -0
  238. data/app/js/vendor/mathjax/jax/output/CommonHTML/autoload/maction.js +19 -0
  239. data/app/js/vendor/mathjax/jax/output/CommonHTML/autoload/menclose.js +19 -0
  240. data/app/js/vendor/mathjax/jax/output/CommonHTML/autoload/mglyph.js +19 -0
  241. data/app/js/vendor/mathjax/jax/output/CommonHTML/autoload/mmultiscripts.js +19 -0
  242. data/app/js/vendor/mathjax/jax/output/CommonHTML/autoload/ms.js +19 -0
  243. data/app/js/vendor/mathjax/jax/output/CommonHTML/autoload/mtable.js +19 -0
  244. data/app/js/vendor/mathjax/jax/output/CommonHTML/autoload/multiline.js +19 -0
  245. data/app/js/vendor/mathjax/jax/output/CommonHTML/config.js +19 -0
  246. data/app/js/vendor/mathjax/jax/output/CommonHTML/fonts/TeX/AMS-Regular.js +19 -0
  247. data/app/js/vendor/mathjax/jax/output/CommonHTML/fonts/TeX/Caligraphic-Bold.js +19 -0
  248. data/app/js/vendor/mathjax/jax/output/CommonHTML/fonts/TeX/Fraktur-Bold.js +19 -0
  249. data/app/js/vendor/mathjax/jax/output/CommonHTML/fonts/TeX/Fraktur-Regular.js +19 -0
  250. data/app/js/vendor/mathjax/jax/output/CommonHTML/fonts/TeX/Main-Bold.js +19 -0
  251. data/app/js/vendor/mathjax/jax/output/CommonHTML/fonts/TeX/Math-BoldItalic.js +19 -0
  252. data/app/js/vendor/mathjax/jax/output/CommonHTML/fonts/TeX/SansSerif-Bold.js +19 -0
  253. data/app/js/vendor/mathjax/jax/output/CommonHTML/fonts/TeX/SansSerif-Italic.js +19 -0
  254. data/app/js/vendor/mathjax/jax/output/CommonHTML/fonts/TeX/SansSerif-Regular.js +19 -0
  255. data/app/js/vendor/mathjax/jax/output/CommonHTML/fonts/TeX/Script-Regular.js +19 -0
  256. data/app/js/vendor/mathjax/jax/output/CommonHTML/fonts/TeX/Typewriter-Regular.js +19 -0
  257. data/app/js/vendor/mathjax/jax/output/CommonHTML/fonts/TeX/fontdata-extra.js +19 -0
  258. data/app/js/vendor/mathjax/jax/output/CommonHTML/fonts/TeX/fontdata.js +19 -0
  259. data/app/js/vendor/mathjax/jax/output/CommonHTML/jax.js +19 -0
  260. data/app/js/vendor/modernizr-custom-3.3.1.min.js +3 -0
  261. data/app/js/vendor/persistjs-git.js +1136 -0
  262. data/app/js/vendor/poised/poised.general.coffee +21 -0
  263. data/app/js/vendor/poised/poised.tabs.coffee +31 -0
  264. data/app/js/vendor/poised/utils.coffee +11 -0
  265. data/app/js/vendor/request_animation_frame.coffee +19 -0
  266. data/app/js/vendor/three-82.min.js +15 -0
  267. data/app/js/vendor/three-CanvasRenderer-82.js +1118 -0
  268. data/app/js/vendor/three-Projector-82.js +929 -0
  269. data/app/js/vendor/underscore-1.8.3.min.js +6 -0
  270. data/app/js/vendor/webfontloader-1.6.26.min.js +33 -0
  271. data/app/views/aliasing/legend.jst.hamlc +6 -0
  272. data/app/views/composites/composites_list_item_label.jst.hamlc +3 -0
  273. data/app/views/composites/import_composites_aside.jst.hamlc +6 -0
  274. data/app/views/composites/mix_preset_list_item_label.jst.hamlc +8 -0
  275. data/app/views/composites/share_aside.jst.hamlc +7 -0
  276. data/app/views/doc/airplanes_list_item_label.jst.hamlc +3 -0
  277. data/app/views/doc/import_airplanes_aside.jst.hamlc +6 -0
  278. data/app/views/doc/share_aside.jst.hamlc +7 -0
  279. data/app/views/general/app.jst.hamlc +42 -0
  280. data/app/views/general/curves_list_item_label.jst.hamlc +5 -0
  281. data/app/views/general/help.jst.hamlc +7 -0
  282. data/app/views/general/tabs.jst.hamlc +6 -0
  283. data/app/views/index.haml +24 -0
  284. data/app/views/overview/app.jst.hamlc +7 -0
  285. data/app/views/overview/tile.jst.hamlc +4 -0
  286. data/bin/console +14 -0
  287. data/bin/setup +8 -0
  288. data/ela.gemspec +50 -0
  289. data/exe/ela +59 -0
  290. data/lib/ela.rb +8 -0
  291. data/lib/ela/jasmine.rb +87 -0
  292. data/lib/ela/server.rb +136 -0
  293. data/lib/ela/utils.rb +131 -0
  294. data/lib/ela/version.rb +3 -0
  295. data/package-lock.json +899 -0
  296. data/package.json +11 -0
  297. data/support/project/Guardfile +64 -0
  298. data/support/project/jasmine.yml +3 -0
  299. data/support/server.ru +5 -0
  300. metadata +4365 -0
data/README.md ADDED
@@ -0,0 +1,66 @@
1
+ # ela.js E-Learning App Framework
2
+
3
+ ela.js is a JavaScript framework and build environment for developing
4
+ HTML5 E-Learning Apps.
5
+
6
+ Sorry, a comprehensive readme is currently only
7
+ available [in German](README.de.md).
8
+
9
+ ## Installation
10
+
11
+ Add this line to your application's Gemfile:
12
+
13
+ ```ruby
14
+ gem 'ela'
15
+ ```
16
+
17
+ And then execute:
18
+
19
+ $ bundle
20
+
21
+ Or install it yourself as:
22
+
23
+ $ gem install ela
24
+
25
+ ## Usage
26
+
27
+ $ mkdir my-apps
28
+ $ cd my-apps
29
+ $ ela init
30
+ $ ela serve
31
+
32
+ ## Screenshots
33
+
34
+ ![](screenshots/overview.tablet.png)
35
+
36
+ ![](screenshots/subapps-and-curves-aside.tablet.png)
37
+
38
+ ![](screenshots/airplanes.tablet.png)
39
+
40
+ ![](screenshots/parameters-aside-1.tablet.png)
41
+
42
+ ![](screenshots/parameters-aside-2.tablet.png)
43
+
44
+ ![](screenshots/help.tablet.png)
45
+
46
+ ![](screenshots/airplaneInternalLoads-fuselage.tablet.png)
47
+
48
+ ![](screenshots/airplaneInternalLoads-wing.tablet.png)
49
+
50
+ ![](screenshots/buckling.tablet.png)
51
+
52
+ ![](screenshots/cabinSlendernessRatio.tablet.png)
53
+
54
+ ![](screenshots/laminateDeformation.tablet.png)
55
+
56
+ ![](screenshots/mohrsCircle.tablet.png)
57
+
58
+ ![](screenshots/planeElasticityProblems.tablet.png)
59
+
60
+ ![](screenshots/thrustMatching.tablet.png)
61
+
62
+ ## Credits
63
+
64
+ This framework was initially written to support teaching at the
65
+ department of aircraft construction, institute of aerospace at the
66
+ Berlin Institute of Technology ("Technische Universität Berlin").
data/Rakefile ADDED
@@ -0,0 +1,96 @@
1
+ require "bundler/gem_tasks"
2
+ require 'jasmine'
3
+ load 'jasmine/tasks/jasmine.rake'
4
+
5
+ ENV['RACK_ENV'] = 'production'
6
+ APP_FILE = 'lib/ela/server.rb'
7
+ APP_CLASS = 'ELA::Server'
8
+ require 'sinatra/assetpack/rake'
9
+
10
+ require './lib/ela/ela'
11
+
12
+ def compile_custom(path, target_file)
13
+ response = app.assets.send(:build_get, path)
14
+ File.open(File.join(app.settings.public_folder, target_file), 'w+') do |f|
15
+ f.puts response.body
16
+ end
17
+ puts "Precompiling #{path} to #{target_file} ..."
18
+ end
19
+
20
+ def write_yml(path)
21
+ ELA.write_settings_yml(File.join(path, 'settings.default.yml'))
22
+ ELA.write_labels_yml(File.join(path, 'labels.default.yml'))
23
+ end
24
+
25
+ task :clean do
26
+ rm_rf 'dist'
27
+ rm_rf 'doc'
28
+ rm_f 'CHANGELOG.md'
29
+ end
30
+
31
+ task :build => :clean do
32
+ mkdir 'dist'
33
+ compile_custom('/', 'index.html')
34
+ Rake::Task['assetpack:precompile:packages'].invoke
35
+ cp_r(File.join(app.settings.root, 'app', 'fonts'), File.join(app.settings.public_folder, 'fonts'))
36
+ cp_r(File.join(app.settings.root, 'app', 'images'), File.join(app.settings.public_folder, 'images'))
37
+ cp(File.join(app.settings.root, 'app', 'images', 'favicons', 'favicon.ico'), File.join(app.settings.public_folder, 'favicon.ico'))
38
+ write_yml(app.settings.public_folder)
39
+ mkdir 'public/js/vendor'
40
+ cp_r(Dir[File.join(app.settings.root, 'app', 'js', 'vendor', 'mathjax')], File.join(app.settings.public_folder, 'js', 'vendor'))
41
+ end
42
+
43
+ task :doc do
44
+ File.open('CHANGELOG.md', 'w') do |f|
45
+ f << `git-changelog`
46
+ end
47
+ system('codo')
48
+ cp_r(File.join(app.settings.root, 'screenshots'), File.join(app.settings.root, 'doc', 'extra'))
49
+ end
50
+
51
+ require 'coffee-script'
52
+ require 'fileutils'
53
+ def coffee_compile(source_dir, target_dir)
54
+ glob = File.join(source_dir, '**/*.coffee')
55
+ Dir[glob].each do |file|
56
+ target_file = file.
57
+ gsub(/^#{source_dir}/, target_dir).
58
+ gsub(/\.coffee$/, '.js')
59
+ target_file_dir = File.dirname(target_file)
60
+ puts " #{file} to #{target_file}"
61
+ FileUtils.mkdir_p(target_file_dir)
62
+ File.open(target_file, "w") do |f|
63
+ f.puts CoffeeScript.compile(File.read(file))
64
+ end
65
+ end
66
+ end
67
+
68
+ namespace :test do
69
+ desc "Compile app and spec coffeescripts."
70
+ task :compile do
71
+ puts "Compiling app coffeescripts for testing ..."
72
+ coffee_compile('./app/js', './spec/app_js')
73
+
74
+ puts "Compiling spec coffeescripts for testing ..."
75
+ coffee_compile('./spec/coffeescripts', './spec/javascripts')
76
+
77
+ puts "Copying vendored javascript for testing ..."
78
+ cp(Dir["./app/js/vendor/*.js"], "./spec/app_js/vendor/")
79
+
80
+ puts "Building config files for testing ..."
81
+ write_yml('./spec/app_js')
82
+ end
83
+
84
+ desc "Run jasmine specs."
85
+ task :run => 'jasmine:ci'
86
+
87
+ desc "Clean all untracked and ignored files on ./spec folder."
88
+ task :clean do
89
+ sh 'git clean -f -d -x -- ./spec'
90
+ end
91
+ end
92
+
93
+ desc "Compile, run and clean specs."
94
+ task :test => ['test:compile', 'test:run']
95
+
96
+ task default: :test
@@ -0,0 +1,425 @@
1
+ // ELA specific
2
+ $range-handler-width = 59px
3
+
4
+ // Remember that this color should be set in CurveGraph aswell
5
+ // to resemble the fillColor of the range indicator triangles:
6
+ $legend-background = #f2f2f2
7
+
8
+ @import "poised"
9
+ @import "vendor/stackedit"
10
+
11
+ sub
12
+ relative 0.5em // vertical-align approach affects line height
13
+ font-size 0.7em
14
+ margin-left 3px
15
+
16
+ sup
17
+ relative -0.5em // vertical-align approach affects line height
18
+ font-size 0.7em
19
+ margin-left 3px
20
+
21
+ #app
22
+ absolute 0 0 0 0
23
+ overflow hidden
24
+
25
+ #help article
26
+ overflow scroll
27
+ -webkit-overflow-scrolling touch
28
+ padding 10px
29
+ font-size 80%
30
+ stackedit()
31
+
32
+ #overview
33
+ $margin = 18px
34
+ $tile-size = 200px
35
+ $tile-spacing = 8px
36
+ $tile-image-max-height = 45%
37
+ $tile-image-top = 37.5%
38
+
39
+ ul
40
+ margin 0
41
+
42
+ li.search-box
43
+ margin $margin
44
+ li.anchor
45
+ margin 0 $margin
46
+ + li.anchor
47
+ &.collapsed
48
+ margin-bottom $margin
49
+
50
+ article > ul
51
+ .list-group
52
+ clearfix()
53
+ margin ($margin - $tile-spacing/2)
54
+
55
+ .tile
56
+ position relative
57
+ width 50%
58
+ height $tile-size
59
+ max-width $tile-size
60
+ float left
61
+ padding ($tile-spacing/2)
62
+ cursor pointer
63
+ border 0
64
+ display inline-block
65
+
66
+ .wrapper
67
+ width 100%
68
+ height 100%
69
+ background-color #eeeeee
70
+
71
+ img
72
+ absolute $tile-image-top auto auto 50%
73
+ transform translateX(-50%) translateY(-50%)
74
+ max-width 70%
75
+ max-height $tile-image-max-height
76
+
77
+ span.title
78
+ absolute none 0 ((100% - ($tile-image-top + $tile-image-max-height/2))/2) 0
79
+ text-align center
80
+ font-size 0.7em
81
+ line-height 1.2em
82
+ padding 0 $tile-spacing $tile-spacing $tile-spacing
83
+ transform translateY(50%)
84
+
85
+ .hint
86
+ display none
87
+ margin $margin
88
+ color lighten($foreground, 30%)
89
+
90
+ &:before
91
+ font-family FontAwesome
92
+ content "\f05a"
93
+ margin-right 0.4em
94
+
95
+ li.share-form
96
+ form
97
+ background-color #eaeaea
98
+ display flex
99
+
100
+ input[type=text]
101
+ width auto // 100% would take the whole <li>
102
+ flex 1
103
+
104
+ button
105
+ &:before
106
+ font-family FontAwesome
107
+
108
+ &.copy:before
109
+ content "\f0ea"
110
+ &.success:before
111
+ content "\f00c"
112
+ &.failure:before
113
+ content "\f00d"
114
+
115
+ article.graph
116
+ display flex
117
+ flex-direction column
118
+
119
+ div.legend
120
+ z-layer 'section', 'legend'
121
+ font-size .75em
122
+ line-height 1.2em
123
+ background $legend-background
124
+ opacity .8
125
+ touch-action auto
126
+
127
+ .values-at-range
128
+ font-size 0.9em
129
+ text-align left
130
+
131
+ .line-type
132
+ position relative
133
+ top -0.2em
134
+ height 0
135
+ display inline-block
136
+ width 20px
137
+ border-radius 2px
138
+ margin-right 10px
139
+
140
+ &.solid
141
+ border 1px solid $foreground
142
+ &.dashed
143
+ border 1px dashed $foreground
144
+
145
+ .range
146
+ color #999999
147
+
148
+ .label
149
+ font-weight 500
150
+
151
+ .curves
152
+ display table
153
+ margin 0 auto
154
+
155
+ .curve
156
+ display table-row
157
+
158
+ .line, .line-label
159
+ display table-cell
160
+ text-align left
161
+
162
+ .line canvas
163
+ display inline
164
+ vertical-align bottom
165
+ margin-right 0.5em
166
+
167
+ .col
168
+ display table-cell
169
+ width 1%
170
+ white-space nowrap
171
+ padding 8px 10px 4px 10px
172
+ text-align center
173
+ border-bottom 4px solid transparent
174
+
175
+ &.values
176
+ cursor pointer
177
+
178
+ &.active
179
+ background rgba(#fff, 60%)
180
+
181
+ &.legend-simple
182
+ border-bottom 1px solid #ccc
183
+ absolute 0
184
+ width 100%
185
+
186
+ .curve
187
+ display inline-block
188
+ white-space nowrap
189
+ padding 7px 10px
190
+
191
+ .line
192
+ border 2px solid
193
+ border-radius 2px
194
+ width 20px
195
+ height 0
196
+ display inline-block
197
+ relative -0.2em
198
+ margin-right 0.5em
199
+
200
+ &.original .line
201
+ border-color #a00
202
+
203
+ &.alias .line
204
+ border-color #00f
205
+
206
+ div.graph
207
+ z-layer 'section', 'graph'
208
+ flex 1
209
+ overflow hidden
210
+
211
+ div.graph-overlay-wrapper
212
+ height 0
213
+ font-size .75em
214
+ z-index 125
215
+
216
+ .graph-overlay
217
+ padding 10px
218
+ background-color rgba(255, 255, 255, 0.8)
219
+
220
+ div.range-handler
221
+ text-align center
222
+ cursor pointer
223
+ background $legend-background
224
+ padding 14px 5px
225
+
226
+ &.orientation-y
227
+ absolute 0 none 0 0
228
+ width $range-handler-width
229
+
230
+ span.hint
231
+ absolute 50% none none 50%
232
+ transform translateX(-50%) translateY(-50%) rotate(-90deg)
233
+ width 500px // ugly, but no alternative
234
+
235
+ // vertical range slider and large, non-transparent legend with values
236
+ #international-standard-atmosphere article.graph div.graph
237
+ margin-left $range-handler-width
238
+
239
+ // Some space for the delete button
240
+ #composites
241
+ aside.parameters > ul > li > label
242
+ margin-right 45px
243
+
244
+ aside
245
+ &.hidden
246
+ opacity 0 !important
247
+
248
+ &.parameters .description
249
+ padding 1em
250
+ display table
251
+
252
+ .icon
253
+ display table-cell
254
+ width 1px
255
+
256
+ .text
257
+ display table-cell
258
+ padding-left 0.66em
259
+
260
+ &.airplanes
261
+ &.composites
262
+ li.item
263
+ padding 0
264
+ white-space no-wrap
265
+
266
+ label.item
267
+ padding $list-item-padding
268
+ div
269
+ font-size 0.85em
270
+ line-height 1.2em
271
+ &.name
272
+ font-weight 400
273
+
274
+ &.curves
275
+ $color-span-width = 30px
276
+ li.item
277
+ padding 0
278
+ height $list-item-height + 1px
279
+
280
+ label.item
281
+ margin 0
282
+ height $list-item-height + 1px
283
+
284
+ .color
285
+ display inline-block
286
+ width $color-span-width
287
+ height $list-item-height
288
+ background: #ccc
289
+ border-left 1px solid $list-item-border
290
+ border-right 1px solid $list-item-border
291
+
292
+ .name
293
+ vertical-center absolute
294
+ left $color-span-width + 10px
295
+ font-size 1.2em
296
+
297
+ label.checkbox
298
+ float right
299
+ margin 3px
300
+
301
+ li.anchor
302
+ padding 4px
303
+ height auto
304
+
305
+ .hint
306
+ margin: 0 18px 18px 18px
307
+ text-align center
308
+
309
+ &.headup
310
+ z-layer 'section', 'headup'
311
+ absolute auto none 0 none
312
+ background-color rgba(#ffffff, 0.8)
313
+ opacity 1
314
+ transform translateY(100%)
315
+ transition opacity .2s ease-in-out
316
+
317
+ &.right
318
+ transform translateY(100%)
319
+
320
+ &.active
321
+ transform translateY(0)
322
+
323
+ section.subapp-container
324
+ &> section
325
+ transform translateX(0)
326
+ transition none
327
+ z-index 5
328
+ transform-origin 50% 10%
329
+ opacity 0
330
+ transform scale(0.75)
331
+ transition visibility 0s linear 200ms, opacity 0s linear 200ms, transform 0s linear 200ms
332
+
333
+ &.active
334
+ visibility visible
335
+ transition opacity 200ms ease-out, transform 200ms ease-out
336
+ opacity 1
337
+ transform scale(1)
338
+ z-index 10
339
+
340
+ .range-handler
341
+ aside.curves
342
+ > .hint
343
+ color lighten($foreground, 30%)
344
+
345
+ &:before
346
+ font-family FontAwesome
347
+ content "\f05a"
348
+ margin-right 0.4em
349
+
350
+ img.logo
351
+ absolute none 0 0 none
352
+ height $range-handler-width
353
+ z-layer 'section', 'graph'
354
+
355
+ @media $media-lt-phone
356
+ display none
357
+
358
+ span.mark
359
+ background-color yellow
360
+
361
+ .poised .list-group
362
+ margin 0
363
+
364
+ .poised
365
+ .list-group + .anchor
366
+ margin-top 18px
367
+
368
+ .icon.scene:before
369
+ content: "\f03e"
370
+
371
+ .icon.composites:before
372
+ content "\f279"
373
+
374
+ .icon.calculator:before
375
+ content: "\f1ec"
376
+
377
+ .icon.warning:before
378
+ content: "\f071"
379
+
380
+ // on iPhones, avoid collision between slider and Safari back-swipes
381
+ @media $media-lt-phone
382
+ html.ios .poised.slider
383
+ margin-left 20px
384
+
385
+ @keyframes tada {
386
+ 0%, 50%, 100% {
387
+ transform: scale3d(1, 1, 1);
388
+ }
389
+
390
+ 5%, 10% {
391
+ transform: scale3d(.8, .8, .8) rotate3d(0, 0, 1, -7deg);
392
+ }
393
+
394
+ 15%, 25%, 35%, 45% {
395
+ transform: scale3d(1.3, 1.3, 1.3) rotate3d(0, 0, 1, 7deg);
396
+ }
397
+
398
+ 20%, 30%, 40% {
399
+ transform: scale3d(1.3, 1.3, 1.3) rotate3d(0, 0, 1, -7deg);
400
+ }
401
+ }
402
+
403
+ #thrust-matching .graph-overlay
404
+ .parameter-warnings
405
+ display table
406
+ width 100%
407
+
408
+ .icon
409
+ display table-cell
410
+ vertical-align middle
411
+ color red
412
+ font-size 2em
413
+ width 1px // stretches automatically to minimal size
414
+ padding 0 6px
415
+ animation tada 2s infinite
416
+
417
+ .right
418
+ display table-cell
419
+ vertical-align middle
420
+ padding-left 10px
421
+ line-height 1.1em
422
+
423
+ .headline
424
+ font-weight bolder
425
+ padding-bottom 5px