marty 0.5.12

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 (345) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +84 -0
  4. data/Rakefile +29 -0
  5. data/app/assets/javascripts/marty/application.js +15 -0
  6. data/app/assets/stylesheets/marty/application.css +13 -0
  7. data/app/components/marty/api_auth_view.rb +32 -0
  8. data/app/components/marty/auth_app.rb +55 -0
  9. data/app/components/marty/auth_app.rb~ +51 -0
  10. data/app/components/marty/auth_app/javascripts/auth_app.js +91 -0
  11. data/app/components/marty/auth_app/javascripts/auth_app.js~ +91 -0
  12. data/app/components/marty/cm_form_panel.rb~ +5 -0
  13. data/app/components/marty/cm_grid_panel.rb~ +35 -0
  14. data/app/components/marty/data_import_view.rb~ +142 -0
  15. data/app/components/marty/extras/layout.rb +46 -0
  16. data/app/components/marty/extras/layout.rb~ +46 -0
  17. data/app/components/marty/extras/misc.rb +18 -0
  18. data/app/components/marty/form.rb +6 -0
  19. data/app/components/marty/grid.rb +45 -0
  20. data/app/components/marty/grid_append_only.rb +12 -0
  21. data/app/components/marty/import_type_view.rb +53 -0
  22. data/app/components/marty/live_search_grid_panel.rb +46 -0
  23. data/app/components/marty/live_search_grid_panel.rb~ +49 -0
  24. data/app/components/marty/main_auth_app.rb +269 -0
  25. data/app/components/marty/main_auth_app.rb~ +238 -0
  26. data/app/components/marty/mcfly_grid_panel.rb +62 -0
  27. data/app/components/marty/mcfly_grid_panel.rb~ +80 -0
  28. data/app/components/marty/new_posting_form.rb +46 -0
  29. data/app/components/marty/new_posting_form.rb~ +46 -0
  30. data/app/components/marty/new_posting_window.rb +21 -0
  31. data/app/components/marty/new_posting_window.rb~ +21 -0
  32. data/app/components/marty/panel.rb +12 -0
  33. data/app/components/marty/pivot_grid.rb +52 -0
  34. data/app/components/marty/pivot_grid/endpoints.rb +45 -0
  35. data/app/components/marty/pivot_grid/javascripts/extensions.js +150 -0
  36. data/app/components/marty/pivot_grid/javascripts/pivot_grid.js +86 -0
  37. data/app/components/marty/pivot_grid/services.rb +44 -0
  38. data/app/components/marty/posting_grid.rb +139 -0
  39. data/app/components/marty/posting_grid.rb~ +140 -0
  40. data/app/components/marty/posting_window.rb +27 -0
  41. data/app/components/marty/promise_view.rb +177 -0
  42. data/app/components/marty/promise_view.rb~ +157 -0
  43. data/app/components/marty/promise_view/stylesheets/promise_view.css +26 -0
  44. data/app/components/marty/promise_view/stylesheets/promise_view.css~ +15 -0
  45. data/app/components/marty/report_form.rb +225 -0
  46. data/app/components/marty/report_form.rb~ +217 -0
  47. data/app/components/marty/report_select.rb +145 -0
  48. data/app/components/marty/report_select.rb~ +133 -0
  49. data/app/components/marty/reporting.rb +39 -0
  50. data/app/components/marty/reporting.rb~ +39 -0
  51. data/app/components/marty/script_detail.rb~ +430 -0
  52. data/app/components/marty/script_form.rb +233 -0
  53. data/app/components/marty/script_form.rb~ +233 -0
  54. data/app/components/marty/script_form/javascripts/Ext.ux.form.field.CodeMirror.js +698 -0
  55. data/app/components/marty/script_form/javascripts/Ext.ux.form.field.CodeMirror.js~ +909 -0
  56. data/app/components/marty/script_form/javascripts/codemirror.js +3130 -0
  57. data/app/components/marty/script_form/javascripts/mode/clike/clike.js +284 -0
  58. data/app/components/marty/script_form/javascripts/mode/clike/index.html +102 -0
  59. data/app/components/marty/script_form/javascripts/mode/clike/scala.html +766 -0
  60. data/app/components/marty/script_form/javascripts/mode/clojure/clojure.js +206 -0
  61. data/app/components/marty/script_form/javascripts/mode/clojure/index.html +67 -0
  62. data/app/components/marty/script_form/javascripts/mode/coffeescript/LICENSE +22 -0
  63. data/app/components/marty/script_form/javascripts/mode/coffeescript/coffeescript.js +346 -0
  64. data/app/components/marty/script_form/javascripts/mode/coffeescript/index.html +728 -0
  65. data/app/components/marty/script_form/javascripts/mode/commonlisp/commonlisp.js +101 -0
  66. data/app/components/marty/script_form/javascripts/mode/commonlisp/index.html +165 -0
  67. data/app/components/marty/script_form/javascripts/mode/css/css.js +448 -0
  68. data/app/components/marty/script_form/javascripts/mode/css/index.html +58 -0
  69. data/app/components/marty/script_form/javascripts/mode/css/test.js +501 -0
  70. data/app/components/marty/script_form/javascripts/mode/delorean/delorean.js +189 -0
  71. data/app/components/marty/script_form/javascripts/mode/diff/diff.js +32 -0
  72. data/app/components/marty/script_form/javascripts/mode/diff/index.html +105 -0
  73. data/app/components/marty/script_form/javascripts/mode/ecl/ecl.js +203 -0
  74. data/app/components/marty/script_form/javascripts/mode/ecl/index.html +42 -0
  75. data/app/components/marty/script_form/javascripts/mode/erlang/erlang.js +463 -0
  76. data/app/components/marty/script_form/javascripts/mode/erlang/index.html +63 -0
  77. data/app/components/marty/script_form/javascripts/mode/gfm/gfm.js +150 -0
  78. data/app/components/marty/script_form/javascripts/mode/gfm/index.html +48 -0
  79. data/app/components/marty/script_form/javascripts/mode/go/go.js +170 -0
  80. data/app/components/marty/script_form/javascripts/mode/go/index.html +73 -0
  81. data/app/components/marty/script_form/javascripts/mode/groovy/groovy.js +210 -0
  82. data/app/components/marty/script_form/javascripts/mode/groovy/index.html +72 -0
  83. data/app/components/marty/script_form/javascripts/mode/haskell/haskell.js +242 -0
  84. data/app/components/marty/script_form/javascripts/mode/haskell/index.html +61 -0
  85. data/app/components/marty/script_form/javascripts/mode/haxe/haxe.js +429 -0
  86. data/app/components/marty/script_form/javascripts/mode/haxe/index.html +91 -0
  87. data/app/components/marty/script_form/javascripts/mode/htmlembedded/htmlembedded.js +72 -0
  88. data/app/components/marty/script_form/javascripts/mode/htmlembedded/index.html +50 -0
  89. data/app/components/marty/script_form/javascripts/mode/htmlmixed/htmlmixed.js +84 -0
  90. data/app/components/marty/script_form/javascripts/mode/htmlmixed/index.html +52 -0
  91. data/app/components/marty/script_form/javascripts/mode/javascript/index.html +78 -0
  92. data/app/components/marty/script_form/javascripts/mode/javascript/javascript.js +361 -0
  93. data/app/components/marty/script_form/javascripts/mode/jinja2/index.html +38 -0
  94. data/app/components/marty/script_form/javascripts/mode/jinja2/jinja2.js +42 -0
  95. data/app/components/marty/script_form/javascripts/mode/less/index.html +740 -0
  96. data/app/components/marty/script_form/javascripts/mode/less/less.js +266 -0
  97. data/app/components/marty/script_form/javascripts/mode/lua/index.html +73 -0
  98. data/app/components/marty/script_form/javascripts/mode/lua/lua.js +140 -0
  99. data/app/components/marty/script_form/javascripts/mode/markdown/index.html +343 -0
  100. data/app/components/marty/script_form/javascripts/mode/markdown/markdown.js +382 -0
  101. data/app/components/marty/script_form/javascripts/mode/markdown/test.js +1084 -0
  102. data/app/components/marty/script_form/javascripts/mode/mysql/index.html +42 -0
  103. data/app/components/marty/script_form/javascripts/mode/mysql/mysql.js +186 -0
  104. data/app/components/marty/script_form/javascripts/mode/ntriples/index.html +33 -0
  105. data/app/components/marty/script_form/javascripts/mode/ntriples/ntriples.js +172 -0
  106. data/app/components/marty/script_form/javascripts/mode/ocaml/index.html +130 -0
  107. data/app/components/marty/script_form/javascripts/mode/ocaml/ocaml.js +114 -0
  108. data/app/components/marty/script_form/javascripts/mode/pascal/LICENSE +7 -0
  109. data/app/components/marty/script_form/javascripts/mode/pascal/index.html +49 -0
  110. data/app/components/marty/script_form/javascripts/mode/pascal/pascal.js +94 -0
  111. data/app/components/marty/script_form/javascripts/mode/perl/LICENSE +19 -0
  112. data/app/components/marty/script_form/javascripts/mode/perl/index.html +63 -0
  113. data/app/components/marty/script_form/javascripts/mode/perl/perl.js +816 -0
  114. data/app/components/marty/script_form/javascripts/mode/php/index.html +49 -0
  115. data/app/components/marty/script_form/javascripts/mode/php/php.js +148 -0
  116. data/app/components/marty/script_form/javascripts/mode/pig/index.html +43 -0
  117. data/app/components/marty/script_form/javascripts/mode/pig/pig.js +172 -0
  118. data/app/components/marty/script_form/javascripts/mode/plsql/index.html +63 -0
  119. data/app/components/marty/script_form/javascripts/mode/plsql/plsql.js +217 -0
  120. data/app/components/marty/script_form/javascripts/mode/properties/index.html +41 -0
  121. data/app/components/marty/script_form/javascripts/mode/properties/properties.js +63 -0
  122. data/app/components/marty/script_form/javascripts/mode/python/LICENSE.txt +21 -0
  123. data/app/components/marty/script_form/javascripts/mode/python/index.html +123 -0
  124. data/app/components/marty/script_form/javascripts/mode/python/python.js +338 -0
  125. data/app/components/marty/script_form/javascripts/mode/r/LICENSE +24 -0
  126. data/app/components/marty/script_form/javascripts/mode/r/index.html +74 -0
  127. data/app/components/marty/script_form/javascripts/mode/r/r.js +141 -0
  128. data/app/components/marty/script_form/javascripts/mode/rpm/changes/changes.js +19 -0
  129. data/app/components/marty/script_form/javascripts/mode/rpm/changes/index.html +54 -0
  130. data/app/components/marty/script_form/javascripts/mode/rpm/spec/index.html +100 -0
  131. data/app/components/marty/script_form/javascripts/mode/rpm/spec/spec.css +5 -0
  132. data/app/components/marty/script_form/javascripts/mode/rpm/spec/spec.js +66 -0
  133. data/app/components/marty/script_form/javascripts/mode/rst/index.html +526 -0
  134. data/app/components/marty/script_form/javascripts/mode/rst/rst.js +326 -0
  135. data/app/components/marty/script_form/javascripts/mode/ruby/LICENSE +24 -0
  136. data/app/components/marty/script_form/javascripts/mode/ruby/index.html +172 -0
  137. data/app/components/marty/script_form/javascripts/mode/ruby/ruby.js +195 -0
  138. data/app/components/marty/script_form/javascripts/mode/rust/index.html +49 -0
  139. data/app/components/marty/script_form/javascripts/mode/rust/rust.js +432 -0
  140. data/app/components/marty/script_form/javascripts/mode/scheme/index.html +65 -0
  141. data/app/components/marty/script_form/javascripts/mode/scheme/scheme.js +230 -0
  142. data/app/components/marty/script_form/javascripts/mode/shell/index.html +50 -0
  143. data/app/components/marty/script_form/javascripts/mode/shell/shell.js +118 -0
  144. data/app/components/marty/script_form/javascripts/mode/sieve/LICENSE +23 -0
  145. data/app/components/marty/script_form/javascripts/mode/sieve/index.html +81 -0
  146. data/app/components/marty/script_form/javascripts/mode/sieve/sieve.js +156 -0
  147. data/app/components/marty/script_form/javascripts/mode/smalltalk/index.html +56 -0
  148. data/app/components/marty/script_form/javascripts/mode/smalltalk/smalltalk.js +139 -0
  149. data/app/components/marty/script_form/javascripts/mode/smarty/index.html +83 -0
  150. data/app/components/marty/script_form/javascripts/mode/smarty/smarty.js +148 -0
  151. data/app/components/marty/script_form/javascripts/mode/sparql/index.html +41 -0
  152. data/app/components/marty/script_form/javascripts/mode/sparql/sparql.js +143 -0
  153. data/app/components/marty/script_form/javascripts/mode/stex/index.html +98 -0
  154. data/app/components/marty/script_form/javascripts/mode/stex/stex.js +182 -0
  155. data/app/components/marty/script_form/javascripts/mode/stex/test.js +343 -0
  156. data/app/components/marty/script_form/javascripts/mode/tiddlywiki/index.html +141 -0
  157. data/app/components/marty/script_form/javascripts/mode/tiddlywiki/tiddlywiki.css +14 -0
  158. data/app/components/marty/script_form/javascripts/mode/tiddlywiki/tiddlywiki.js +384 -0
  159. data/app/components/marty/script_form/javascripts/mode/tiki/index.html +83 -0
  160. data/app/components/marty/script_form/javascripts/mode/tiki/tiki.css +26 -0
  161. data/app/components/marty/script_form/javascripts/mode/tiki/tiki.js +309 -0
  162. data/app/components/marty/script_form/javascripts/mode/vb/LICENSE.txt +21 -0
  163. data/app/components/marty/script_form/javascripts/mode/vb/index.html +89 -0
  164. data/app/components/marty/script_form/javascripts/mode/vb/vb.js +260 -0
  165. data/app/components/marty/script_form/javascripts/mode/vbscript/index.html +43 -0
  166. data/app/components/marty/script_form/javascripts/mode/vbscript/vbscript.js +26 -0
  167. data/app/components/marty/script_form/javascripts/mode/velocity/index.html +104 -0
  168. data/app/components/marty/script_form/javascripts/mode/velocity/velocity.js +146 -0
  169. data/app/components/marty/script_form/javascripts/mode/verilog/index.html +211 -0
  170. data/app/components/marty/script_form/javascripts/mode/verilog/verilog.js +194 -0
  171. data/app/components/marty/script_form/javascripts/mode/xml/index.html +45 -0
  172. data/app/components/marty/script_form/javascripts/mode/xml/xml.js +318 -0
  173. data/app/components/marty/script_form/javascripts/mode/xquery/LICENSE +20 -0
  174. data/app/components/marty/script_form/javascripts/mode/xquery/index.html +223 -0
  175. data/app/components/marty/script_form/javascripts/mode/xquery/test/index.html +27 -0
  176. data/app/components/marty/script_form/javascripts/mode/xquery/test/testBase.js +42 -0
  177. data/app/components/marty/script_form/javascripts/mode/xquery/test/testEmptySequenceKeyword.js +16 -0
  178. data/app/components/marty/script_form/javascripts/mode/xquery/test/testMultiAttr.js +16 -0
  179. data/app/components/marty/script_form/javascripts/mode/xquery/test/testNamespaces.js +91 -0
  180. data/app/components/marty/script_form/javascripts/mode/xquery/test/testProcessingInstructions.js +16 -0
  181. data/app/components/marty/script_form/javascripts/mode/xquery/test/testQuotes.js +19 -0
  182. data/app/components/marty/script_form/javascripts/mode/xquery/xquery.js +451 -0
  183. data/app/components/marty/script_form/javascripts/mode/yaml/index.html +68 -0
  184. data/app/components/marty/script_form/javascripts/mode/yaml/yaml.js +95 -0
  185. data/app/components/marty/script_form/javascripts/util/closetag.js +164 -0
  186. data/app/components/marty/script_form/javascripts/util/dialog.css +27 -0
  187. data/app/components/marty/script_form/javascripts/util/dialog.js +70 -0
  188. data/app/components/marty/script_form/javascripts/util/foldcode.js +196 -0
  189. data/app/components/marty/script_form/javascripts/util/formatting.js +193 -0
  190. data/app/components/marty/script_form/javascripts/util/javascript-hint.js +134 -0
  191. data/app/components/marty/script_form/javascripts/util/loadmode.js +51 -0
  192. data/app/components/marty/script_form/javascripts/util/match-highlighter.js +44 -0
  193. data/app/components/marty/script_form/javascripts/util/multiplex.js +77 -0
  194. data/app/components/marty/script_form/javascripts/util/overlay.js +54 -0
  195. data/app/components/marty/script_form/javascripts/util/pig-hint.js +123 -0
  196. data/app/components/marty/script_form/javascripts/util/runmode-standalone.js +90 -0
  197. data/app/components/marty/script_form/javascripts/util/runmode.js +53 -0
  198. data/app/components/marty/script_form/javascripts/util/search.js +118 -0
  199. data/app/components/marty/script_form/javascripts/util/searchcursor.js +119 -0
  200. data/app/components/marty/script_form/javascripts/util/simple-hint.css +16 -0
  201. data/app/components/marty/script_form/javascripts/util/simple-hint.js +97 -0
  202. data/app/components/marty/script_form/javascripts/util/xml-hint.js +137 -0
  203. data/app/components/marty/script_form/stylesheets/codemirror.css +172 -0
  204. data/app/components/marty/script_form/stylesheets/delorean.css +10 -0
  205. data/app/components/marty/script_form/stylesheets/theme/ambiance.css +81 -0
  206. data/app/components/marty/script_form/stylesheets/theme/blackboard.css +25 -0
  207. data/app/components/marty/script_form/stylesheets/theme/cobalt.css +18 -0
  208. data/app/components/marty/script_form/stylesheets/theme/eclipse.css +25 -0
  209. data/app/components/marty/script_form/stylesheets/theme/elegant.css +10 -0
  210. data/app/components/marty/script_form/stylesheets/theme/erlang-dark.css +21 -0
  211. data/app/components/marty/script_form/stylesheets/theme/lesser-dark.css +44 -0
  212. data/app/components/marty/script_form/stylesheets/theme/monokai.css +28 -0
  213. data/app/components/marty/script_form/stylesheets/theme/neat.css +9 -0
  214. data/app/components/marty/script_form/stylesheets/theme/night.css +21 -0
  215. data/app/components/marty/script_form/stylesheets/theme/rubyblue.css +21 -0
  216. data/app/components/marty/script_form/stylesheets/theme/vibrant-ink.css +27 -0
  217. data/app/components/marty/script_form/stylesheets/theme/xq-dark.css +46 -0
  218. data/app/components/marty/script_grid.rb +104 -0
  219. data/app/components/marty/script_grid.rb~ +99 -0
  220. data/app/components/marty/script_tester.rb +114 -0
  221. data/app/components/marty/script_tester.rb~ +213 -0
  222. data/app/components/marty/scripting.rb +132 -0
  223. data/app/components/marty/scripting.rb~ +124 -0
  224. data/app/components/marty/select_report.rb~ +143 -0
  225. data/app/components/marty/simple_app.rb +97 -0
  226. data/app/components/marty/simple_app.rb~ +101 -0
  227. data/app/components/marty/simple_app/javascripts/simple_app.js +50 -0
  228. data/app/components/marty/simple_app/javascripts/statusbar_ext.js +8 -0
  229. data/app/components/marty/tag_grid.rb +83 -0
  230. data/app/components/marty/tag_grid.rb~ +89 -0
  231. data/app/components/marty/tree_panel.rb~ +256 -0
  232. data/app/components/marty/tree_panel/javascripts/tree_panel.js~ +317 -0
  233. data/app/components/marty/user_pivot.rb +128 -0
  234. data/app/components/marty/user_view.rb +181 -0
  235. data/app/components/marty/user_view.rb~ +188 -0
  236. data/app/controllers/marty/application_controller.rb +124 -0
  237. data/app/controllers/marty/application_controller.rb~ +133 -0
  238. data/app/controllers/marty/components_controller.rb +41 -0
  239. data/app/controllers/marty/components_controller.rb~ +37 -0
  240. data/app/controllers/marty/job_controller.rb +28 -0
  241. data/app/controllers/marty/job_controller.rb~ +28 -0
  242. data/app/controllers/marty/rpc_controller.rb +64 -0
  243. data/app/controllers/marty/rpc_controller.rb~ +61 -0
  244. data/app/helpers/marty/application_helper.rb +4 -0
  245. data/app/helpers/marty/script_set.rb +57 -0
  246. data/app/helpers/marty/script_set.rb~ +59 -0
  247. data/app/models/marty/api_auth.rb +44 -0
  248. data/app/models/marty/api_auth.rb~ +48 -0
  249. data/app/models/marty/base.rb +4 -0
  250. data/app/models/marty/data_change.rb +179 -0
  251. data/app/models/marty/data_change.rb~ +141 -0
  252. data/app/models/marty/enum.rb +22 -0
  253. data/app/models/marty/enum.rb~ +16 -0
  254. data/app/models/marty/import_type.rb +44 -0
  255. data/app/models/marty/import_type.rb~ +48 -0
  256. data/app/models/marty/poop.rb~ +169 -0
  257. data/app/models/marty/posting.rb +101 -0
  258. data/app/models/marty/posting.rb~ +86 -0
  259. data/app/models/marty/posting_type.rb +12 -0
  260. data/app/models/marty/posting_type.rb~ +21 -0
  261. data/app/models/marty/promise.rb +252 -0
  262. data/app/models/marty/promise.rb~ +196 -0
  263. data/app/models/marty/role.rb +6 -0
  264. data/app/models/marty/role.rb~ +10 -0
  265. data/app/models/marty/script.rb +144 -0
  266. data/app/models/marty/script.rb~ +62 -0
  267. data/app/models/marty/tag.rb +96 -0
  268. data/app/models/marty/tag.rb~ +91 -0
  269. data/app/models/marty/token.rb +30 -0
  270. data/app/models/marty/user.rb +146 -0
  271. data/app/models/marty/user.rb~ +148 -0
  272. data/app/models/marty/user_role.rb +7 -0
  273. data/app/models/marty/user_role.rb~ +13 -0
  274. data/app/views/layouts/marty/application.html.erb +12 -0
  275. data/app/views/layouts/marty/application.html.erb~ +11 -0
  276. data/config/locales/en.yml +134 -0
  277. data/config/routes.rb +6 -0
  278. data/config/routes.rb~ +10 -0
  279. data/db/migrate/001_create_marty_scripts.rb +14 -0
  280. data/db/migrate/003_create_marty_users.rb +12 -0
  281. data/db/migrate/004_create_marty_roles.rb +7 -0
  282. data/db/migrate/005_create_marty_user_roles.rb +14 -0
  283. data/db/migrate/006_create_marty_tokens.rb +14 -0
  284. data/db/migrate/008_create_marty_posting_types.rb +7 -0
  285. data/db/migrate/019_create_marty_postings.rb +18 -0
  286. data/db/migrate/019_create_marty_postings.rb~ +19 -0
  287. data/db/migrate/068_create_marty_import_types.rb +12 -0
  288. data/db/migrate/069_create_marty_import_synonyms.rb +15 -0
  289. data/db/migrate/070_create_versions.rb +18 -0
  290. data/db/migrate/071_add_object_changes_column_to_versions.rb +9 -0
  291. data/db/migrate/072_add_validation_function_to_import_types.rb +6 -0
  292. data/db/migrate/073_add_preprocess_function_to_import_types.rb +5 -0
  293. data/db/migrate/090_create_delayed_jobs.rb +22 -0
  294. data/db/migrate/091_create_marty_promises.rb +36 -0
  295. data/db/migrate/095_create_marty_tags.rb +14 -0
  296. data/db/migrate/095_create_marty_tags.rb~ +19 -0
  297. data/db/migrate/096_add_user_roles_to_import_types.rb +11 -0
  298. data/db/migrate/097_drop_versions.rb +9 -0
  299. data/db/migrate/098_create_marty_api_auths.rb +20 -0
  300. data/db/seeds.rb +48 -0
  301. data/lib/marty.rb +18 -0
  302. data/lib/marty.rb~ +13 -0
  303. data/lib/marty/content_handler.rb +97 -0
  304. data/lib/marty/content_handler.rb~ +93 -0
  305. data/lib/marty/data_conversion.rb +298 -0
  306. data/lib/marty/data_exporter.rb +150 -0
  307. data/lib/marty/data_exporter.rb~ +137 -0
  308. data/lib/marty/data_importer.rb +122 -0
  309. data/lib/marty/data_importer.rb~ +114 -0
  310. data/lib/marty/data_row_processor.rb~ +206 -0
  311. data/lib/marty/drop_folder_hook.rb~ +17 -0
  312. data/lib/marty/engine.rb +10 -0
  313. data/lib/marty/folder_hook.rb~ +9 -0
  314. data/lib/marty/lazy_column_loader.rb +57 -0
  315. data/lib/marty/lazy_column_loader.rb~ +47 -0
  316. data/lib/marty/mcfly_query.rb +189 -0
  317. data/lib/marty/mcfly_query.rb~ +188 -0
  318. data/lib/marty/migrations.rb +108 -0
  319. data/lib/marty/migrations.rb~ +65 -0
  320. data/lib/marty/monkey.rb +163 -0
  321. data/lib/marty/monkey.rb~ +160 -0
  322. data/lib/marty/permissions.rb +64 -0
  323. data/lib/marty/permissions.rb~ +69 -0
  324. data/lib/marty/promise.rb~ +41 -0
  325. data/lib/marty/promise_job.rb +123 -0
  326. data/lib/marty/promise_job.rb~ +121 -0
  327. data/lib/marty/promise_proxy.rb +94 -0
  328. data/lib/marty/promise_proxy.rb~ +69 -0
  329. data/lib/marty/railtie.rb +5 -0
  330. data/lib/marty/relation.rb +39 -0
  331. data/lib/marty/util.rb +110 -0
  332. data/lib/marty/util.rb~ +80 -0
  333. data/lib/marty/version.rb +3 -0
  334. data/lib/marty/version.rb~ +3 -0
  335. data/lib/marty/xl.rb +527 -0
  336. data/lib/marty/xl.rb~ +526 -0
  337. data/lib/pyxll/README.txt +19 -0
  338. data/lib/pyxll/README.txt~ +16 -0
  339. data/lib/pyxll/gemini.py +155 -0
  340. data/lib/pyxll/gemini.py~ +110 -0
  341. data/lib/pyxll/pyxll.cfg +12 -0
  342. data/lib/pyxll/pyxll.cfg~ +12 -0
  343. data/lib/pyxll/sample.xlsx +0 -0
  344. data/lib/tasks/marty_tasks.rake +37 -0
  345. metadata +517 -0
@@ -0,0 +1,49 @@
1
+ # The LiveSearchGridPanel provides a search field in the toolbar of
2
+ # the GridPanel. While the content of the search field is changeing,
3
+ # the data in the grid gets reloaded and the filter string is given to
4
+ # a scope on the configured model. The scope name by default is
5
+ # :live_search but it can be reconfigured by the configuration option
6
+ # :live_search_scope. NOTE: this is rewrite of the Netzke community
7
+ # pack component of the same name. We should submit this to the
8
+ # community.
9
+ #
10
+ # Options:
11
+ # * +live_search_scope+ - The scope name for filtering the results by
12
+ # the live search (default: :live_search)
13
+ #
14
+
15
+ class Marty::LiveSearchGridPanel < Marty::McflyGridPanel
16
+ js_configure do |c|
17
+ c.listen_fn = <<-JS
18
+ function(obj, search_text) {
19
+ var lg = this.ownerCt.ownerCt;
20
+ lg.getStore().getProxy().extraParams.live_search = search_text;
21
+ lg.getStore().load();
22
+ }
23
+ JS
24
+
25
+ c.tbar = ['->', {
26
+ name: 'live_search_text',
27
+ xtype: 'textfield',
28
+ enable_key_events: true,
29
+ ref: '../live_search_field',
30
+ empty_text: 'Search',
31
+ listeners: {
32
+ change: {
33
+ fn: c.listen_fn,
34
+ buffer: 100,
35
+ }
36
+ }
37
+ }]
38
+ end
39
+
40
+ def get_data(*args)
41
+ params = args.first
42
+ search_scope = config[:live_search_scope] || :live_search
43
+ data_class.send(search_scope, params && params[:live_search] || '').scoping do
44
+ super
45
+ end
46
+ end
47
+
48
+ end
49
+
@@ -0,0 +1,269 @@
1
+ require 'marty/permissions'
2
+ require 'marty/scripting'
3
+ require 'marty/reporting'
4
+ require 'marty/posting_window'
5
+ require 'marty/new_posting_window'
6
+ require 'marty/import_type_view'
7
+ require 'marty/user_view'
8
+ require 'marty/promise_view'
9
+ require 'marty/api_auth_view'
10
+
11
+ class Marty::MainAuthApp < Marty::AuthApp
12
+ extend ::Marty::Permissions
13
+
14
+ # set of posting types user is allowed to post with
15
+ def self.has_posting_perm?
16
+ Marty::NewPostingForm.has_any_perm?
17
+ end
18
+
19
+ def self.has_scripting_perm?
20
+ self.has_admin_perm?
21
+ end
22
+
23
+ def sep
24
+ { xtype: 'tbseparator' }
25
+ end
26
+
27
+ def icon_hack(name)
28
+ # There's a Netzke bug whereby, using an icon name in a hash
29
+ # doesn't generate a proper URL.
30
+ "#{Netzke::Core.ext_uri}/../images/icons/#{name}.png"
31
+ end
32
+
33
+ def posting_menu
34
+ {
35
+ text: warped ? "#{Marty::Util.get_posting.name}" : I18n.t("postings"),
36
+ name: "posting",
37
+ tooltip: "Postings",
38
+ icon: icon_hack(:time),
39
+ style: (warped ? "background-color: lightGrey;" : ""),
40
+ menu: [
41
+ :new_posting,
42
+ :select_posting,
43
+ :select_now,
44
+ ],
45
+ }
46
+ end
47
+
48
+ def system_menu
49
+ {
50
+ text: I18n.t("system"),
51
+ icon: icon_hack(:wrench),
52
+ style: "",
53
+ menu: [
54
+ :import_type_view,
55
+ :user_view,
56
+ :api_auth_view,
57
+ :reload_scripts,
58
+ ],
59
+ }
60
+ end
61
+
62
+ def applications_menu
63
+ {
64
+ text: I18n.t("applications"),
65
+ icon: icon_hack(:application_cascade),
66
+ menu: [
67
+ :reporting,
68
+ :scripting,
69
+ :promise_view,
70
+ ],
71
+ }
72
+ end
73
+
74
+ def warped
75
+ Marty::Util.warped?
76
+ end
77
+
78
+ def app_moniker
79
+ warped ? 0x231B.chr('utf-8') : 0x03FB.chr('utf-8')
80
+ end
81
+
82
+ def app_title
83
+ e = ENV['RAILS_ENV']
84
+
85
+ title = "#{app_moniker} #{Rails.application.class.parent_name.titleize}"
86
+ title += " - #{e.capitalize}" unless e == 'production'
87
+ title += ' [TIME WARPED]' if warped
88
+ title
89
+ end
90
+
91
+ def ident_menu
92
+ "<span style='color:#3333FF;
93
+ background-color:#{warped ? '#FBDF4F' : ''};
94
+ font-size:120%;
95
+ font-weight:bold;'>#{app_title}</span>"
96
+ end
97
+
98
+ def data_menus
99
+ []
100
+ end
101
+
102
+ def menu
103
+ return super unless self.class.has_any_perm?
104
+
105
+ [ident_menu, sep] +
106
+ (self.class.has_admin_perm? ||
107
+ self.class.has_user_manager_perm? ? [system_menu, sep] : []) +
108
+ data_menus +
109
+ [
110
+ applications_menu, sep,
111
+ posting_menu, sep,
112
+ ] + super
113
+ end
114
+
115
+ ######################################################################
116
+
117
+ action :import_type_view do |a|
118
+ a.text = I18n.t("import_type")
119
+ a.handler = :netzke_load_component_by_action
120
+ a.disabled = !self.class.has_admin_perm?
121
+ a.icon = :table_go
122
+ end
123
+
124
+ action :scripting do |a|
125
+ a.text = I18n.t("scripting")
126
+ a.handler = :netzke_load_component_by_action
127
+ a.icon = :script
128
+ a.disabled = !self.class.has_any_perm?
129
+ end
130
+
131
+ action :reporting do |a|
132
+ a.text = I18n.t("reports")
133
+ a.handler = :netzke_load_component_by_action
134
+ a.icon = :page_lightning
135
+ a.disabled = !self.class.has_any_perm?
136
+ end
137
+
138
+ action :promise_view do |a|
139
+ a.text = I18n.t("jobs.promise_view")
140
+ a.handler = :netzke_load_component_by_action
141
+ a.icon = :report_magnify
142
+ a.disabled = !self.class.has_any_perm?
143
+ end
144
+
145
+ action :user_view do |a|
146
+ a.text = I18n.t("user_view")
147
+ a.handler = :netzke_load_component_by_action
148
+ a.icon = :group
149
+ a.disabled = !self.class.has_admin_perm? &&
150
+ !self.class.has_user_manager_perm?
151
+ end
152
+
153
+ action :api_auth_view do |a|
154
+ a.text = I18n.t("api_auth_view", default: "API Authorization")
155
+ a.handler = :netzke_load_component_by_action
156
+ a.icon = :script_key
157
+ a.disabled = !self.class.has_admin_perm?
158
+ end
159
+
160
+ action :reload_scripts do |a|
161
+ a.text = 'Reload Scripts'
162
+ a.tooltip = 'Reload and tag Delorean scripts'
163
+ a.icon = :arrow_refresh
164
+ a.disabled = !self.class.has_admin_perm?
165
+ end
166
+
167
+ ######################################################################
168
+ # Postings
169
+
170
+ action :new_posting do |a|
171
+ a.text = I18n.t('new_posting')
172
+ a.tooltip = I18n.t('new_posting')
173
+ a.icon = :time_add
174
+ a.disabled = Marty::Util.warped? || !self.class.has_posting_perm?
175
+ end
176
+
177
+ js_configure do |c|
178
+ c.on_new_posting = <<-JS
179
+ function(params) {
180
+ this.netzkeLoadComponent({
181
+ name: "new_posting_window",
182
+ callback: function(w) { w.show(); },
183
+ });
184
+ }
185
+ JS
186
+
187
+ c.on_select_posting = <<-JS
188
+ function(params) {
189
+ this.netzkeLoadComponent({
190
+ name: "posting_window",
191
+ callback: function(w) { w.show(); },
192
+ });
193
+ }
194
+ JS
195
+
196
+ c.on_reload = <<-JS
197
+ function(params) {
198
+ window.location.reload();
199
+ }
200
+ JS
201
+
202
+ c.on_select_now = <<-JS
203
+ function(params) {
204
+ this.serverSelectPosting({});
205
+ }
206
+ JS
207
+
208
+ c.on_reload_scripts = <<-JS
209
+ function(params) {
210
+ var me = this;
211
+ Ext.Msg.show({
212
+ title: 'Reload Scripts',
213
+ msg: 'Enter RELOAD and press OK to force a reload of all scripts',
214
+ width: 375,
215
+ buttons: Ext.Msg.OKCANCEL,
216
+ prompt: true,
217
+ fn: function (btn, value) {
218
+ btn == "ok" && value == "RELOAD" && me.serverReloadScripts({});
219
+ }
220
+ });
221
+ }
222
+ JS
223
+ end
224
+
225
+ action :select_posting do |a|
226
+ a.text = I18n.t('select_posting')
227
+ a.tooltip = I18n.t('select_posting')
228
+ a.icon = :timeline_marker
229
+ end
230
+
231
+ endpoint :server_select_posting do |params, this|
232
+ sid = params && params[0]
233
+ Marty::Util.set_posting_id(sid)
234
+ posting = sid && Marty::Posting.find(sid)
235
+
236
+ this.netzke_feedback "Selected '#{posting ? posting.name : 'NOW'}'"
237
+ this.on_reload 1
238
+ end
239
+
240
+ action :select_now do |a|
241
+ a.text = I18n.t('go_to_now')
242
+ a.icon = :arrow_in
243
+ a.disabled = Marty::Util.get_posting_time == Float::INFINITY
244
+ end
245
+
246
+ ######################################################################
247
+
248
+ component :scripting do |c|
249
+ c.allow_edit = self.class.has_scripting_perm?
250
+ end
251
+ component :reporting
252
+ component :promise_view
253
+ component :posting_window
254
+ component :new_posting_window do |c|
255
+ c.disabled = Marty::Util.warped? || !self.class.has_posting_perm?
256
+ end
257
+ component :import_type_view
258
+ component :user_view
259
+ component :api_auth_view do |c|
260
+ c.disabled = Marty::Util.warped?
261
+ end
262
+
263
+ endpoint :server_reload_scripts do |params, this|
264
+ Marty::Script.load_scripts
265
+ this.netzke_feedback 'Scripts have been reloaded'
266
+ end
267
+ end
268
+
269
+ MainAuthApp = Marty::MainAuthApp
@@ -0,0 +1,238 @@
1
+ require 'marty/permissions'
2
+ require 'marty/scripting'
3
+ require 'marty/reporting'
4
+ require 'marty/posting_window'
5
+ require 'marty/new_posting_window'
6
+ require 'marty/import_type_view'
7
+ require 'marty/data_import_view'
8
+ require 'marty/user_view'
9
+ require 'marty/promise_view'
10
+ require 'marty/api_auth_view'
11
+
12
+ class Marty::MainAuthApp < Marty::AuthApp
13
+ extend ::Marty::Permissions
14
+
15
+ # set of posting types user is allowed to post with
16
+ def self.has_posting_perm?
17
+ Marty::NewPostingForm.has_any_perm?
18
+ end
19
+
20
+ def self.has_data_import_perm?
21
+ self.class.has_admin_perm?
22
+ end
23
+
24
+ def self.has_scripting_perm?
25
+ self.class.has_admin_perm?
26
+ end
27
+
28
+ def sep
29
+ { xtype: 'tbseparator' }
30
+ end
31
+
32
+ def icon_hack(name)
33
+ # There's a Netzke bug whereby, using icon names in hashes
34
+ # doesn't generate the proper URL.
35
+ "#{Netzke::Core.ext_uri}/../images/icons/#{name}.png"
36
+ end
37
+
38
+ def posting_menu
39
+ warped = Marty::Util.get_posting_time != Float::INFINITY
40
+ wtext = warped ? " [#{Marty::Util.get_posting.name}" : ''
41
+
42
+ {
43
+ text: I18n.t("postings") + wtext,
44
+ icon: icon_hack(:time),
45
+ style: (warped ? "background-color: lightGrey;" : ""),
46
+ menu: [
47
+ :new_posting,
48
+ :select_posting,
49
+ :select_now,
50
+ ],
51
+ }
52
+ end
53
+
54
+ def system_menu
55
+ {
56
+ text: I18n.t("system"),
57
+ icon: icon_hack(:wrench),
58
+ style: "",
59
+ menu: [
60
+ :import_type_view,
61
+ :user_view,
62
+ :api_auth_view,
63
+ ],
64
+ }
65
+ end
66
+
67
+ def applications_menu
68
+ {
69
+ text: I18n.t("applications"),
70
+ icon: icon_hack(:application_cascade),
71
+ menu: [
72
+ :reporting,
73
+ :scripting,
74
+ :data_import_view,
75
+ :promise_view,
76
+ ],
77
+ }
78
+ end
79
+
80
+ def ident_menu
81
+ '<span style="color:#B32D15; font-size:150%; font-weight:bold;">' +
82
+ 'Marty</span>'
83
+ end
84
+
85
+ def data_menus
86
+ []
87
+ end
88
+
89
+ def menu
90
+ return super unless self.class.has_any_perm?
91
+
92
+ [ident_menu, sep] +
93
+ (self.class.has_admin_perm? ||
94
+ self.class.has_user_manager_perm? ? [system_menu, sep] : []) +
95
+ data_menus +
96
+ [
97
+ applications_menu, sep,
98
+ posting_menu, sep,
99
+ ] + super
100
+ end
101
+
102
+ ######################################################################
103
+
104
+ action :import_type_view do |a|
105
+ a.text = I18n.t("import_type")
106
+ a.handler = :netzke_load_component_by_action
107
+ a.disabled = !self.class.has_admin_perm?
108
+ a.icon = :table_go
109
+ end
110
+
111
+ action :scripting do |a|
112
+ a.text = I18n.t("scripting")
113
+ a.handler = :netzke_load_component_by_action
114
+ a.icon = :script
115
+ a.disabled = !self.class.has_any_perm?
116
+ end
117
+
118
+ action :reporting do |a|
119
+ a.text = I18n.t("reports")
120
+ a.handler = :netzke_load_component_by_action
121
+ a.icon = :page_lightning
122
+ a.disabled = !self.class.has_any_perm?
123
+ end
124
+
125
+ action :promise_view do |a|
126
+ a.text = I18n.t("jobs.promise_view")
127
+ a.handler = :netzke_load_component_by_action
128
+ a.icon = :report_magnify
129
+ a.disabled = !self.class.has_any_perm?
130
+ end
131
+
132
+ action :data_import_view do |a|
133
+ a.text = I18n.t("data_import_view.import_data")
134
+ a.handler = :netzke_load_component_by_action
135
+ a.icon = :database_go
136
+ a.disabled = Marty::Util.warped? || !self.class.has_data_import_perm?
137
+ end
138
+
139
+ action :user_view do |a|
140
+ a.text = I18n.t("user_view")
141
+ a.handler = :netzke_load_component_by_action
142
+ a.icon = :group
143
+ a.disabled = !self.class.has_admin_perm? &&
144
+ !self.class.has_user_manager_perm?
145
+ end
146
+
147
+ action :api_auth_view do |a|
148
+ a.text = I18n.t("api_auth_view", default: "API Authorization")
149
+ a.handler = :netzke_load_component_by_action
150
+ a.icon = :script_key
151
+ a.disabled = !self.class.has_admin_perm?
152
+ end
153
+
154
+ ######################################################################
155
+ # Postings
156
+
157
+ action :new_posting do |a|
158
+ a.text = I18n.t('new_posting')
159
+ a.tooltip = I18n.t('new_posting')
160
+ a.icon = :time_add
161
+ a.disabled = Marty::Util.warped? || !self.class.has_posting_perm?
162
+ end
163
+
164
+ js_configure do |c|
165
+ c.on_new_posting = <<-JS
166
+ function(params) {
167
+ this.netzkeLoadComponent({
168
+ name: "new_posting_window",
169
+ callback: function(w) { w.show(); },
170
+ });
171
+ }
172
+ JS
173
+
174
+ c.on_select_posting = <<-JS
175
+ function(params) {
176
+ this.netzkeLoadComponent({
177
+ name: "posting_window",
178
+ callback: function(w) { w.show(); },
179
+ });
180
+ }
181
+ JS
182
+
183
+ c.on_reload = <<-JS
184
+ function(params) {
185
+ window.location.reload();
186
+ }
187
+ JS
188
+
189
+ c.on_select_now = <<-JS
190
+ function(params) {
191
+ this.serverSelectPosting({});
192
+ }
193
+ JS
194
+ end
195
+
196
+ action :select_posting do |a|
197
+ a.text = I18n.t('select_posting')
198
+ a.tooltip = I18n.t('select_posting')
199
+ a.icon = :timeline_marker
200
+ end
201
+
202
+ endpoint :server_select_posting do |params, this|
203
+ sid = params && params[0]
204
+ Marty::Util.set_posting_id(sid)
205
+ posting = sid && Marty::Posting.find(sid)
206
+
207
+ this.netzke_feedback "Selected '#{posting ? posting.name : 'NOW'}'"
208
+ this.on_reload 1
209
+ end
210
+
211
+ action :select_now do |a|
212
+ a.text = I18n.t('go_to_now')
213
+ a.icon = :arrow_in
214
+ a.disabled = Marty::Util.get_posting_time == Float::INFINITY
215
+ end
216
+
217
+ ######################################################################
218
+
219
+ component :scripting do |c|
220
+ c.allow_edit = self.class.has_scripting_perm?
221
+ end
222
+ component :reporting
223
+ component :promise_view
224
+ component :posting_window
225
+ component :new_posting_window do |c|
226
+ c.disabled = Marty::Util.warped? || !self.class.has_posting_perm?
227
+ end
228
+ component :import_type_view
229
+ component :data_import_view do |c|
230
+ c.disabled = Marty::Util.warped? || !self.class.has_data_import_perm?
231
+ end
232
+ component :user_view
233
+ component :api_auth_view do |c|
234
+ c.disabled = Marty::Util.warped?
235
+ end
236
+ end
237
+
238
+ MainAuthApp = Marty::MainAuthApp