ela 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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