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.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +84 -0
- data/Rakefile +29 -0
- data/app/assets/javascripts/marty/application.js +15 -0
- data/app/assets/stylesheets/marty/application.css +13 -0
- data/app/components/marty/api_auth_view.rb +32 -0
- data/app/components/marty/auth_app.rb +55 -0
- data/app/components/marty/auth_app.rb~ +51 -0
- data/app/components/marty/auth_app/javascripts/auth_app.js +91 -0
- data/app/components/marty/auth_app/javascripts/auth_app.js~ +91 -0
- data/app/components/marty/cm_form_panel.rb~ +5 -0
- data/app/components/marty/cm_grid_panel.rb~ +35 -0
- data/app/components/marty/data_import_view.rb~ +142 -0
- data/app/components/marty/extras/layout.rb +46 -0
- data/app/components/marty/extras/layout.rb~ +46 -0
- data/app/components/marty/extras/misc.rb +18 -0
- data/app/components/marty/form.rb +6 -0
- data/app/components/marty/grid.rb +45 -0
- data/app/components/marty/grid_append_only.rb +12 -0
- data/app/components/marty/import_type_view.rb +53 -0
- data/app/components/marty/live_search_grid_panel.rb +46 -0
- data/app/components/marty/live_search_grid_panel.rb~ +49 -0
- data/app/components/marty/main_auth_app.rb +269 -0
- data/app/components/marty/main_auth_app.rb~ +238 -0
- data/app/components/marty/mcfly_grid_panel.rb +62 -0
- data/app/components/marty/mcfly_grid_panel.rb~ +80 -0
- data/app/components/marty/new_posting_form.rb +46 -0
- data/app/components/marty/new_posting_form.rb~ +46 -0
- data/app/components/marty/new_posting_window.rb +21 -0
- data/app/components/marty/new_posting_window.rb~ +21 -0
- data/app/components/marty/panel.rb +12 -0
- data/app/components/marty/pivot_grid.rb +52 -0
- data/app/components/marty/pivot_grid/endpoints.rb +45 -0
- data/app/components/marty/pivot_grid/javascripts/extensions.js +150 -0
- data/app/components/marty/pivot_grid/javascripts/pivot_grid.js +86 -0
- data/app/components/marty/pivot_grid/services.rb +44 -0
- data/app/components/marty/posting_grid.rb +139 -0
- data/app/components/marty/posting_grid.rb~ +140 -0
- data/app/components/marty/posting_window.rb +27 -0
- data/app/components/marty/promise_view.rb +177 -0
- data/app/components/marty/promise_view.rb~ +157 -0
- data/app/components/marty/promise_view/stylesheets/promise_view.css +26 -0
- data/app/components/marty/promise_view/stylesheets/promise_view.css~ +15 -0
- data/app/components/marty/report_form.rb +225 -0
- data/app/components/marty/report_form.rb~ +217 -0
- data/app/components/marty/report_select.rb +145 -0
- data/app/components/marty/report_select.rb~ +133 -0
- data/app/components/marty/reporting.rb +39 -0
- data/app/components/marty/reporting.rb~ +39 -0
- data/app/components/marty/script_detail.rb~ +430 -0
- data/app/components/marty/script_form.rb +233 -0
- data/app/components/marty/script_form.rb~ +233 -0
- data/app/components/marty/script_form/javascripts/Ext.ux.form.field.CodeMirror.js +698 -0
- data/app/components/marty/script_form/javascripts/Ext.ux.form.field.CodeMirror.js~ +909 -0
- data/app/components/marty/script_form/javascripts/codemirror.js +3130 -0
- data/app/components/marty/script_form/javascripts/mode/clike/clike.js +284 -0
- data/app/components/marty/script_form/javascripts/mode/clike/index.html +102 -0
- data/app/components/marty/script_form/javascripts/mode/clike/scala.html +766 -0
- data/app/components/marty/script_form/javascripts/mode/clojure/clojure.js +206 -0
- data/app/components/marty/script_form/javascripts/mode/clojure/index.html +67 -0
- data/app/components/marty/script_form/javascripts/mode/coffeescript/LICENSE +22 -0
- data/app/components/marty/script_form/javascripts/mode/coffeescript/coffeescript.js +346 -0
- data/app/components/marty/script_form/javascripts/mode/coffeescript/index.html +728 -0
- data/app/components/marty/script_form/javascripts/mode/commonlisp/commonlisp.js +101 -0
- data/app/components/marty/script_form/javascripts/mode/commonlisp/index.html +165 -0
- data/app/components/marty/script_form/javascripts/mode/css/css.js +448 -0
- data/app/components/marty/script_form/javascripts/mode/css/index.html +58 -0
- data/app/components/marty/script_form/javascripts/mode/css/test.js +501 -0
- data/app/components/marty/script_form/javascripts/mode/delorean/delorean.js +189 -0
- data/app/components/marty/script_form/javascripts/mode/diff/diff.js +32 -0
- data/app/components/marty/script_form/javascripts/mode/diff/index.html +105 -0
- data/app/components/marty/script_form/javascripts/mode/ecl/ecl.js +203 -0
- data/app/components/marty/script_form/javascripts/mode/ecl/index.html +42 -0
- data/app/components/marty/script_form/javascripts/mode/erlang/erlang.js +463 -0
- data/app/components/marty/script_form/javascripts/mode/erlang/index.html +63 -0
- data/app/components/marty/script_form/javascripts/mode/gfm/gfm.js +150 -0
- data/app/components/marty/script_form/javascripts/mode/gfm/index.html +48 -0
- data/app/components/marty/script_form/javascripts/mode/go/go.js +170 -0
- data/app/components/marty/script_form/javascripts/mode/go/index.html +73 -0
- data/app/components/marty/script_form/javascripts/mode/groovy/groovy.js +210 -0
- data/app/components/marty/script_form/javascripts/mode/groovy/index.html +72 -0
- data/app/components/marty/script_form/javascripts/mode/haskell/haskell.js +242 -0
- data/app/components/marty/script_form/javascripts/mode/haskell/index.html +61 -0
- data/app/components/marty/script_form/javascripts/mode/haxe/haxe.js +429 -0
- data/app/components/marty/script_form/javascripts/mode/haxe/index.html +91 -0
- data/app/components/marty/script_form/javascripts/mode/htmlembedded/htmlembedded.js +72 -0
- data/app/components/marty/script_form/javascripts/mode/htmlembedded/index.html +50 -0
- data/app/components/marty/script_form/javascripts/mode/htmlmixed/htmlmixed.js +84 -0
- data/app/components/marty/script_form/javascripts/mode/htmlmixed/index.html +52 -0
- data/app/components/marty/script_form/javascripts/mode/javascript/index.html +78 -0
- data/app/components/marty/script_form/javascripts/mode/javascript/javascript.js +361 -0
- data/app/components/marty/script_form/javascripts/mode/jinja2/index.html +38 -0
- data/app/components/marty/script_form/javascripts/mode/jinja2/jinja2.js +42 -0
- data/app/components/marty/script_form/javascripts/mode/less/index.html +740 -0
- data/app/components/marty/script_form/javascripts/mode/less/less.js +266 -0
- data/app/components/marty/script_form/javascripts/mode/lua/index.html +73 -0
- data/app/components/marty/script_form/javascripts/mode/lua/lua.js +140 -0
- data/app/components/marty/script_form/javascripts/mode/markdown/index.html +343 -0
- data/app/components/marty/script_form/javascripts/mode/markdown/markdown.js +382 -0
- data/app/components/marty/script_form/javascripts/mode/markdown/test.js +1084 -0
- data/app/components/marty/script_form/javascripts/mode/mysql/index.html +42 -0
- data/app/components/marty/script_form/javascripts/mode/mysql/mysql.js +186 -0
- data/app/components/marty/script_form/javascripts/mode/ntriples/index.html +33 -0
- data/app/components/marty/script_form/javascripts/mode/ntriples/ntriples.js +172 -0
- data/app/components/marty/script_form/javascripts/mode/ocaml/index.html +130 -0
- data/app/components/marty/script_form/javascripts/mode/ocaml/ocaml.js +114 -0
- data/app/components/marty/script_form/javascripts/mode/pascal/LICENSE +7 -0
- data/app/components/marty/script_form/javascripts/mode/pascal/index.html +49 -0
- data/app/components/marty/script_form/javascripts/mode/pascal/pascal.js +94 -0
- data/app/components/marty/script_form/javascripts/mode/perl/LICENSE +19 -0
- data/app/components/marty/script_form/javascripts/mode/perl/index.html +63 -0
- data/app/components/marty/script_form/javascripts/mode/perl/perl.js +816 -0
- data/app/components/marty/script_form/javascripts/mode/php/index.html +49 -0
- data/app/components/marty/script_form/javascripts/mode/php/php.js +148 -0
- data/app/components/marty/script_form/javascripts/mode/pig/index.html +43 -0
- data/app/components/marty/script_form/javascripts/mode/pig/pig.js +172 -0
- data/app/components/marty/script_form/javascripts/mode/plsql/index.html +63 -0
- data/app/components/marty/script_form/javascripts/mode/plsql/plsql.js +217 -0
- data/app/components/marty/script_form/javascripts/mode/properties/index.html +41 -0
- data/app/components/marty/script_form/javascripts/mode/properties/properties.js +63 -0
- data/app/components/marty/script_form/javascripts/mode/python/LICENSE.txt +21 -0
- data/app/components/marty/script_form/javascripts/mode/python/index.html +123 -0
- data/app/components/marty/script_form/javascripts/mode/python/python.js +338 -0
- data/app/components/marty/script_form/javascripts/mode/r/LICENSE +24 -0
- data/app/components/marty/script_form/javascripts/mode/r/index.html +74 -0
- data/app/components/marty/script_form/javascripts/mode/r/r.js +141 -0
- data/app/components/marty/script_form/javascripts/mode/rpm/changes/changes.js +19 -0
- data/app/components/marty/script_form/javascripts/mode/rpm/changes/index.html +54 -0
- data/app/components/marty/script_form/javascripts/mode/rpm/spec/index.html +100 -0
- data/app/components/marty/script_form/javascripts/mode/rpm/spec/spec.css +5 -0
- data/app/components/marty/script_form/javascripts/mode/rpm/spec/spec.js +66 -0
- data/app/components/marty/script_form/javascripts/mode/rst/index.html +526 -0
- data/app/components/marty/script_form/javascripts/mode/rst/rst.js +326 -0
- data/app/components/marty/script_form/javascripts/mode/ruby/LICENSE +24 -0
- data/app/components/marty/script_form/javascripts/mode/ruby/index.html +172 -0
- data/app/components/marty/script_form/javascripts/mode/ruby/ruby.js +195 -0
- data/app/components/marty/script_form/javascripts/mode/rust/index.html +49 -0
- data/app/components/marty/script_form/javascripts/mode/rust/rust.js +432 -0
- data/app/components/marty/script_form/javascripts/mode/scheme/index.html +65 -0
- data/app/components/marty/script_form/javascripts/mode/scheme/scheme.js +230 -0
- data/app/components/marty/script_form/javascripts/mode/shell/index.html +50 -0
- data/app/components/marty/script_form/javascripts/mode/shell/shell.js +118 -0
- data/app/components/marty/script_form/javascripts/mode/sieve/LICENSE +23 -0
- data/app/components/marty/script_form/javascripts/mode/sieve/index.html +81 -0
- data/app/components/marty/script_form/javascripts/mode/sieve/sieve.js +156 -0
- data/app/components/marty/script_form/javascripts/mode/smalltalk/index.html +56 -0
- data/app/components/marty/script_form/javascripts/mode/smalltalk/smalltalk.js +139 -0
- data/app/components/marty/script_form/javascripts/mode/smarty/index.html +83 -0
- data/app/components/marty/script_form/javascripts/mode/smarty/smarty.js +148 -0
- data/app/components/marty/script_form/javascripts/mode/sparql/index.html +41 -0
- data/app/components/marty/script_form/javascripts/mode/sparql/sparql.js +143 -0
- data/app/components/marty/script_form/javascripts/mode/stex/index.html +98 -0
- data/app/components/marty/script_form/javascripts/mode/stex/stex.js +182 -0
- data/app/components/marty/script_form/javascripts/mode/stex/test.js +343 -0
- data/app/components/marty/script_form/javascripts/mode/tiddlywiki/index.html +141 -0
- data/app/components/marty/script_form/javascripts/mode/tiddlywiki/tiddlywiki.css +14 -0
- data/app/components/marty/script_form/javascripts/mode/tiddlywiki/tiddlywiki.js +384 -0
- data/app/components/marty/script_form/javascripts/mode/tiki/index.html +83 -0
- data/app/components/marty/script_form/javascripts/mode/tiki/tiki.css +26 -0
- data/app/components/marty/script_form/javascripts/mode/tiki/tiki.js +309 -0
- data/app/components/marty/script_form/javascripts/mode/vb/LICENSE.txt +21 -0
- data/app/components/marty/script_form/javascripts/mode/vb/index.html +89 -0
- data/app/components/marty/script_form/javascripts/mode/vb/vb.js +260 -0
- data/app/components/marty/script_form/javascripts/mode/vbscript/index.html +43 -0
- data/app/components/marty/script_form/javascripts/mode/vbscript/vbscript.js +26 -0
- data/app/components/marty/script_form/javascripts/mode/velocity/index.html +104 -0
- data/app/components/marty/script_form/javascripts/mode/velocity/velocity.js +146 -0
- data/app/components/marty/script_form/javascripts/mode/verilog/index.html +211 -0
- data/app/components/marty/script_form/javascripts/mode/verilog/verilog.js +194 -0
- data/app/components/marty/script_form/javascripts/mode/xml/index.html +45 -0
- data/app/components/marty/script_form/javascripts/mode/xml/xml.js +318 -0
- data/app/components/marty/script_form/javascripts/mode/xquery/LICENSE +20 -0
- data/app/components/marty/script_form/javascripts/mode/xquery/index.html +223 -0
- data/app/components/marty/script_form/javascripts/mode/xquery/test/index.html +27 -0
- data/app/components/marty/script_form/javascripts/mode/xquery/test/testBase.js +42 -0
- data/app/components/marty/script_form/javascripts/mode/xquery/test/testEmptySequenceKeyword.js +16 -0
- data/app/components/marty/script_form/javascripts/mode/xquery/test/testMultiAttr.js +16 -0
- data/app/components/marty/script_form/javascripts/mode/xquery/test/testNamespaces.js +91 -0
- data/app/components/marty/script_form/javascripts/mode/xquery/test/testProcessingInstructions.js +16 -0
- data/app/components/marty/script_form/javascripts/mode/xquery/test/testQuotes.js +19 -0
- data/app/components/marty/script_form/javascripts/mode/xquery/xquery.js +451 -0
- data/app/components/marty/script_form/javascripts/mode/yaml/index.html +68 -0
- data/app/components/marty/script_form/javascripts/mode/yaml/yaml.js +95 -0
- data/app/components/marty/script_form/javascripts/util/closetag.js +164 -0
- data/app/components/marty/script_form/javascripts/util/dialog.css +27 -0
- data/app/components/marty/script_form/javascripts/util/dialog.js +70 -0
- data/app/components/marty/script_form/javascripts/util/foldcode.js +196 -0
- data/app/components/marty/script_form/javascripts/util/formatting.js +193 -0
- data/app/components/marty/script_form/javascripts/util/javascript-hint.js +134 -0
- data/app/components/marty/script_form/javascripts/util/loadmode.js +51 -0
- data/app/components/marty/script_form/javascripts/util/match-highlighter.js +44 -0
- data/app/components/marty/script_form/javascripts/util/multiplex.js +77 -0
- data/app/components/marty/script_form/javascripts/util/overlay.js +54 -0
- data/app/components/marty/script_form/javascripts/util/pig-hint.js +123 -0
- data/app/components/marty/script_form/javascripts/util/runmode-standalone.js +90 -0
- data/app/components/marty/script_form/javascripts/util/runmode.js +53 -0
- data/app/components/marty/script_form/javascripts/util/search.js +118 -0
- data/app/components/marty/script_form/javascripts/util/searchcursor.js +119 -0
- data/app/components/marty/script_form/javascripts/util/simple-hint.css +16 -0
- data/app/components/marty/script_form/javascripts/util/simple-hint.js +97 -0
- data/app/components/marty/script_form/javascripts/util/xml-hint.js +137 -0
- data/app/components/marty/script_form/stylesheets/codemirror.css +172 -0
- data/app/components/marty/script_form/stylesheets/delorean.css +10 -0
- data/app/components/marty/script_form/stylesheets/theme/ambiance.css +81 -0
- data/app/components/marty/script_form/stylesheets/theme/blackboard.css +25 -0
- data/app/components/marty/script_form/stylesheets/theme/cobalt.css +18 -0
- data/app/components/marty/script_form/stylesheets/theme/eclipse.css +25 -0
- data/app/components/marty/script_form/stylesheets/theme/elegant.css +10 -0
- data/app/components/marty/script_form/stylesheets/theme/erlang-dark.css +21 -0
- data/app/components/marty/script_form/stylesheets/theme/lesser-dark.css +44 -0
- data/app/components/marty/script_form/stylesheets/theme/monokai.css +28 -0
- data/app/components/marty/script_form/stylesheets/theme/neat.css +9 -0
- data/app/components/marty/script_form/stylesheets/theme/night.css +21 -0
- data/app/components/marty/script_form/stylesheets/theme/rubyblue.css +21 -0
- data/app/components/marty/script_form/stylesheets/theme/vibrant-ink.css +27 -0
- data/app/components/marty/script_form/stylesheets/theme/xq-dark.css +46 -0
- data/app/components/marty/script_grid.rb +104 -0
- data/app/components/marty/script_grid.rb~ +99 -0
- data/app/components/marty/script_tester.rb +114 -0
- data/app/components/marty/script_tester.rb~ +213 -0
- data/app/components/marty/scripting.rb +132 -0
- data/app/components/marty/scripting.rb~ +124 -0
- data/app/components/marty/select_report.rb~ +143 -0
- data/app/components/marty/simple_app.rb +97 -0
- data/app/components/marty/simple_app.rb~ +101 -0
- data/app/components/marty/simple_app/javascripts/simple_app.js +50 -0
- data/app/components/marty/simple_app/javascripts/statusbar_ext.js +8 -0
- data/app/components/marty/tag_grid.rb +83 -0
- data/app/components/marty/tag_grid.rb~ +89 -0
- data/app/components/marty/tree_panel.rb~ +256 -0
- data/app/components/marty/tree_panel/javascripts/tree_panel.js~ +317 -0
- data/app/components/marty/user_pivot.rb +128 -0
- data/app/components/marty/user_view.rb +181 -0
- data/app/components/marty/user_view.rb~ +188 -0
- data/app/controllers/marty/application_controller.rb +124 -0
- data/app/controllers/marty/application_controller.rb~ +133 -0
- data/app/controllers/marty/components_controller.rb +41 -0
- data/app/controllers/marty/components_controller.rb~ +37 -0
- data/app/controllers/marty/job_controller.rb +28 -0
- data/app/controllers/marty/job_controller.rb~ +28 -0
- data/app/controllers/marty/rpc_controller.rb +64 -0
- data/app/controllers/marty/rpc_controller.rb~ +61 -0
- data/app/helpers/marty/application_helper.rb +4 -0
- data/app/helpers/marty/script_set.rb +57 -0
- data/app/helpers/marty/script_set.rb~ +59 -0
- data/app/models/marty/api_auth.rb +44 -0
- data/app/models/marty/api_auth.rb~ +48 -0
- data/app/models/marty/base.rb +4 -0
- data/app/models/marty/data_change.rb +179 -0
- data/app/models/marty/data_change.rb~ +141 -0
- data/app/models/marty/enum.rb +22 -0
- data/app/models/marty/enum.rb~ +16 -0
- data/app/models/marty/import_type.rb +44 -0
- data/app/models/marty/import_type.rb~ +48 -0
- data/app/models/marty/poop.rb~ +169 -0
- data/app/models/marty/posting.rb +101 -0
- data/app/models/marty/posting.rb~ +86 -0
- data/app/models/marty/posting_type.rb +12 -0
- data/app/models/marty/posting_type.rb~ +21 -0
- data/app/models/marty/promise.rb +252 -0
- data/app/models/marty/promise.rb~ +196 -0
- data/app/models/marty/role.rb +6 -0
- data/app/models/marty/role.rb~ +10 -0
- data/app/models/marty/script.rb +144 -0
- data/app/models/marty/script.rb~ +62 -0
- data/app/models/marty/tag.rb +96 -0
- data/app/models/marty/tag.rb~ +91 -0
- data/app/models/marty/token.rb +30 -0
- data/app/models/marty/user.rb +146 -0
- data/app/models/marty/user.rb~ +148 -0
- data/app/models/marty/user_role.rb +7 -0
- data/app/models/marty/user_role.rb~ +13 -0
- data/app/views/layouts/marty/application.html.erb +12 -0
- data/app/views/layouts/marty/application.html.erb~ +11 -0
- data/config/locales/en.yml +134 -0
- data/config/routes.rb +6 -0
- data/config/routes.rb~ +10 -0
- data/db/migrate/001_create_marty_scripts.rb +14 -0
- data/db/migrate/003_create_marty_users.rb +12 -0
- data/db/migrate/004_create_marty_roles.rb +7 -0
- data/db/migrate/005_create_marty_user_roles.rb +14 -0
- data/db/migrate/006_create_marty_tokens.rb +14 -0
- data/db/migrate/008_create_marty_posting_types.rb +7 -0
- data/db/migrate/019_create_marty_postings.rb +18 -0
- data/db/migrate/019_create_marty_postings.rb~ +19 -0
- data/db/migrate/068_create_marty_import_types.rb +12 -0
- data/db/migrate/069_create_marty_import_synonyms.rb +15 -0
- data/db/migrate/070_create_versions.rb +18 -0
- data/db/migrate/071_add_object_changes_column_to_versions.rb +9 -0
- data/db/migrate/072_add_validation_function_to_import_types.rb +6 -0
- data/db/migrate/073_add_preprocess_function_to_import_types.rb +5 -0
- data/db/migrate/090_create_delayed_jobs.rb +22 -0
- data/db/migrate/091_create_marty_promises.rb +36 -0
- data/db/migrate/095_create_marty_tags.rb +14 -0
- data/db/migrate/095_create_marty_tags.rb~ +19 -0
- data/db/migrate/096_add_user_roles_to_import_types.rb +11 -0
- data/db/migrate/097_drop_versions.rb +9 -0
- data/db/migrate/098_create_marty_api_auths.rb +20 -0
- data/db/seeds.rb +48 -0
- data/lib/marty.rb +18 -0
- data/lib/marty.rb~ +13 -0
- data/lib/marty/content_handler.rb +97 -0
- data/lib/marty/content_handler.rb~ +93 -0
- data/lib/marty/data_conversion.rb +298 -0
- data/lib/marty/data_exporter.rb +150 -0
- data/lib/marty/data_exporter.rb~ +137 -0
- data/lib/marty/data_importer.rb +122 -0
- data/lib/marty/data_importer.rb~ +114 -0
- data/lib/marty/data_row_processor.rb~ +206 -0
- data/lib/marty/drop_folder_hook.rb~ +17 -0
- data/lib/marty/engine.rb +10 -0
- data/lib/marty/folder_hook.rb~ +9 -0
- data/lib/marty/lazy_column_loader.rb +57 -0
- data/lib/marty/lazy_column_loader.rb~ +47 -0
- data/lib/marty/mcfly_query.rb +189 -0
- data/lib/marty/mcfly_query.rb~ +188 -0
- data/lib/marty/migrations.rb +108 -0
- data/lib/marty/migrations.rb~ +65 -0
- data/lib/marty/monkey.rb +163 -0
- data/lib/marty/monkey.rb~ +160 -0
- data/lib/marty/permissions.rb +64 -0
- data/lib/marty/permissions.rb~ +69 -0
- data/lib/marty/promise.rb~ +41 -0
- data/lib/marty/promise_job.rb +123 -0
- data/lib/marty/promise_job.rb~ +121 -0
- data/lib/marty/promise_proxy.rb +94 -0
- data/lib/marty/promise_proxy.rb~ +69 -0
- data/lib/marty/railtie.rb +5 -0
- data/lib/marty/relation.rb +39 -0
- data/lib/marty/util.rb +110 -0
- data/lib/marty/util.rb~ +80 -0
- data/lib/marty/version.rb +3 -0
- data/lib/marty/version.rb~ +3 -0
- data/lib/marty/xl.rb +527 -0
- data/lib/marty/xl.rb~ +526 -0
- data/lib/pyxll/README.txt +19 -0
- data/lib/pyxll/README.txt~ +16 -0
- data/lib/pyxll/gemini.py +155 -0
- data/lib/pyxll/gemini.py~ +110 -0
- data/lib/pyxll/pyxll.cfg +12 -0
- data/lib/pyxll/pyxll.cfg~ +12 -0
- data/lib/pyxll/sample.xlsx +0 -0
- data/lib/tasks/marty_tasks.rake +37 -0
- metadata +517 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
initComponent: function(){
|
|
3
|
+
this.callParent();
|
|
4
|
+
|
|
5
|
+
this.mainPanel = this.down('panel[itemId="main_panel"]');
|
|
6
|
+
this.menuBar = this.down('container[itemId="menu_bar"]');
|
|
7
|
+
var statusBar = this.statusBar = this.down('container[itemId="status_bar"]');
|
|
8
|
+
|
|
9
|
+
// Setting the "busy" indicator for Ajax requests
|
|
10
|
+
Ext.Ajax.on('beforerequest', function(){ statusBar.showBusy(); });
|
|
11
|
+
Ext.Ajax.on('requestcomplete', function(){ statusBar.hideBusy(); });
|
|
12
|
+
Ext.Ajax.on('requestexception', function(){ statusBar.hideBusy(); });
|
|
13
|
+
|
|
14
|
+
this.setRouting();
|
|
15
|
+
},
|
|
16
|
+
|
|
17
|
+
setRouting: function(){
|
|
18
|
+
this.router = Ext.util.History;
|
|
19
|
+
this.router.init();
|
|
20
|
+
this.router.on('change', this.loadRoute, this);
|
|
21
|
+
},
|
|
22
|
+
|
|
23
|
+
loadRoute: function(token){
|
|
24
|
+
if (token){
|
|
25
|
+
this.netzkeLoadComponent(token, {container: this.mainPanel});
|
|
26
|
+
} else {
|
|
27
|
+
this.mainPanel.removeAll();
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
afterRender: function(){
|
|
32
|
+
this.callParent();
|
|
33
|
+
var currentToken = this.router.getToken();
|
|
34
|
+
if (typeof currentToken == "string" && currentToken.length > 0) {
|
|
35
|
+
this.loadRoute(currentToken);
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
appLoadComponent: function(name) {
|
|
40
|
+
this.router.add(name);
|
|
41
|
+
},
|
|
42
|
+
|
|
43
|
+
netzkeLoadComponentByAction: function(action){
|
|
44
|
+
this.router.add(action.name);
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
onToggleConfigMode: function(params){
|
|
48
|
+
this.toggleConfigMode();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
class Marty::TagGrid < Marty::Grid
|
|
2
|
+
has_marty_permissions \
|
|
3
|
+
read: :any,
|
|
4
|
+
create: :dev
|
|
5
|
+
|
|
6
|
+
def configure(c)
|
|
7
|
+
super
|
|
8
|
+
|
|
9
|
+
c.header = false
|
|
10
|
+
c.model = "Marty::Tag"
|
|
11
|
+
c.multi_select = false
|
|
12
|
+
|
|
13
|
+
c.columns ||= [:name, :created_dt, :user__name, :comment]
|
|
14
|
+
|
|
15
|
+
c.data_store.sorters = {
|
|
16
|
+
property: :created_dt,
|
|
17
|
+
direction: 'DESC',
|
|
18
|
+
}
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
endpoint :add_window__add_form__netzke_submit do |params, this|
|
|
22
|
+
data = ActiveSupport::JSON.decode(params[:data])
|
|
23
|
+
|
|
24
|
+
return this.netzke_feedback("Permission Denied") if
|
|
25
|
+
config[:prohibit_create]
|
|
26
|
+
|
|
27
|
+
# FIXME: disallow tag creation when no script has been modified?
|
|
28
|
+
|
|
29
|
+
tag = Marty::Tag.do_create(nil, data["comment"])
|
|
30
|
+
|
|
31
|
+
if tag.valid?
|
|
32
|
+
this.success = true
|
|
33
|
+
this.on_submit_success
|
|
34
|
+
return
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
data_adapter.errors_array(tag).each do |error|
|
|
38
|
+
flash :error => error
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
this.netzke_feedback(@flash)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
action :add_in_form do |a|
|
|
45
|
+
a.text = I18n.t("tag_grid.new")
|
|
46
|
+
a.tooltip = I18n.t("tag_grid.new")
|
|
47
|
+
a.icon = :time_add
|
|
48
|
+
a.disabled = config[:prohibit_create]
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def default_bbar
|
|
52
|
+
[:add_in_form]
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def default_context_menu
|
|
56
|
+
[]
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def default_fields_for_forms
|
|
60
|
+
[:comment]
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
column :name do |c|
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
column :created_dt do |c|
|
|
67
|
+
c.text = "Date/Time"
|
|
68
|
+
c.format = "Y-m-d H:i"
|
|
69
|
+
c.hidden = true
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
column :user__name do |c|
|
|
73
|
+
c.width = 100
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
column :comment do |c|
|
|
77
|
+
c.width = 100
|
|
78
|
+
c.flex = 1
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
TagGrid = Marty::TagGrid
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
class Marty::TagGrid < Marty::CmGridPanel
|
|
2
|
+
has_marty_permissions read: :any,
|
|
3
|
+
create: :dev
|
|
4
|
+
|
|
5
|
+
def configure(c)
|
|
6
|
+
super
|
|
7
|
+
|
|
8
|
+
c.header = false
|
|
9
|
+
c.model = "Marty::Tag"
|
|
10
|
+
c.columns ||= [:name, :created_dt, :user__name, :comment]
|
|
11
|
+
c.data_store.sorters = {
|
|
12
|
+
property: :created_dt,
|
|
13
|
+
direction: 'DESC',
|
|
14
|
+
}
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
js_configure do |c|
|
|
18
|
+
c.init_component = <<-JS
|
|
19
|
+
function() {
|
|
20
|
+
this.callParent();
|
|
21
|
+
// Set single selection mode. FIXME: can this be done on config?
|
|
22
|
+
this.getSelectionModel().setSelectionMode('SINGLE');
|
|
23
|
+
}
|
|
24
|
+
JS
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
endpoint :add_window__add_form__netzke_submit do |params, this|
|
|
28
|
+
data = ActiveSupport::JSON.decode(params[:data])
|
|
29
|
+
|
|
30
|
+
return this.netzke_feedback("Permission Denied") if
|
|
31
|
+
config[:prohibit_create]
|
|
32
|
+
|
|
33
|
+
# FIXME: disallow tag creation when no script has been modified?
|
|
34
|
+
|
|
35
|
+
tag = Marty::Tag.do_create(nil, data["comment"])
|
|
36
|
+
|
|
37
|
+
if tag.valid?
|
|
38
|
+
this.success = true
|
|
39
|
+
this.on_submit_success
|
|
40
|
+
return
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
data_adapter.errors_array(tag).each do |error|
|
|
44
|
+
flash :error => error
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
this.netzke_feedback(@flash)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
action :add_in_form do |a|
|
|
51
|
+
a.text = "New Tag"
|
|
52
|
+
a.tooltip = "New Tag"
|
|
53
|
+
a.icon = :time_add
|
|
54
|
+
a.disabled = config[:prohibit_create]
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def default_bbar
|
|
58
|
+
[:add_in_form]
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def default_context_menu
|
|
62
|
+
[]
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def default_fields_for_forms
|
|
66
|
+
[:comment]
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
column :name do |c|
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
column :created_dt do |c|
|
|
73
|
+
c.text = "Date/Time"
|
|
74
|
+
c.format = "Y-m-d H:i"
|
|
75
|
+
c.hidden = true
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
column :user__name do |c|
|
|
79
|
+
c.width = 100
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
column :comment do |c|
|
|
83
|
+
c.width = 100
|
|
84
|
+
c.flex = 1
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
TagGrid = Marty::TagGrid
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
# Ext.tree.TreePanel-based component
|
|
2
|
+
#
|
|
3
|
+
# ATTRIBUTION: this code is based on the netzke-extension module found at:
|
|
4
|
+
# https://github.com/phgrey/netzke-extension
|
|
5
|
+
# TODO: Add documentation for usage
|
|
6
|
+
|
|
7
|
+
class Marty::TreePanel < Netzke::Base
|
|
8
|
+
include ::Netzke::Basepack::DataAccessor
|
|
9
|
+
include ::Netzke::Basepack::Columns
|
|
10
|
+
|
|
11
|
+
self.default_instance_config = {
|
|
12
|
+
indicate_leafs: true,
|
|
13
|
+
auto_scroll: false,
|
|
14
|
+
root_visible: false,
|
|
15
|
+
load_inline_data: false,
|
|
16
|
+
enable_pagination: false,
|
|
17
|
+
rows_per_page: 30,
|
|
18
|
+
treecolumn: 'tree' # default name for tree column
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
def js_configure(c) #:nodoc:
|
|
22
|
+
super
|
|
23
|
+
c.bbar = bbar
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
js_configure do |c|
|
|
27
|
+
c.extend = "Ext.tree.TreePanel"
|
|
28
|
+
c.mixin
|
|
29
|
+
c.root_visible = false
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Configure dynamic JS properties for instantiation
|
|
33
|
+
def js_config
|
|
34
|
+
super.tap do |c|
|
|
35
|
+
# Hand over inline data to the js config hash
|
|
36
|
+
c[:inline_data] = get_data if config[:load_inline_data]
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def configure(c) #:nodoc:
|
|
41
|
+
super
|
|
42
|
+
c.title ||= self.class.js_config.properties[:title] ||
|
|
43
|
+
data_class.name.pluralize
|
|
44
|
+
c.columns = final_columns(with_meta: true)
|
|
45
|
+
|
|
46
|
+
# Set it to the primary key if not given and camelize it Setting
|
|
47
|
+
# it to anything else than the primary key is especially useful
|
|
48
|
+
# when instances of different class are shown in one tree because
|
|
49
|
+
# the primary key MUST be unique!
|
|
50
|
+
c.pri = (c.pri || data_class.primary_key).to_s.camelize(:lower)
|
|
51
|
+
|
|
52
|
+
# Add extra fields for a tree: A method ':name(r)' is called for
|
|
53
|
+
# every record to retrieve the value
|
|
54
|
+
c.extra_fields ||= []
|
|
55
|
+
|
|
56
|
+
# This will call leaf?(r) for every record
|
|
57
|
+
c.extra_fields << {name: 'leaf', type: 'boolean'}
|
|
58
|
+
|
|
59
|
+
# This will call expanded?(r) for every record
|
|
60
|
+
c.extra_fields << {name: 'expanded', type: 'boolean'}
|
|
61
|
+
|
|
62
|
+
# only if the node id property is different from the data class'
|
|
63
|
+
# primary key, we need to add and extra field
|
|
64
|
+
c.extra_fields << {name: c.pri.to_s.camelize(:lower), type: 'string'} if
|
|
65
|
+
c.pri != data_class.primary_key
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def config
|
|
69
|
+
@config ||= ActiveSupport::OrderedOptions.new.tap do |c|
|
|
70
|
+
# extend with data_store convenient config object
|
|
71
|
+
c.data_store = ActiveSupport::OrderedOptions.new
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def bbar
|
|
76
|
+
config[:bbar]
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Sets the xtype to 'treecolumn' for the column with name equal to
|
|
80
|
+
# the :treecolumn value of the config
|
|
81
|
+
def set_default_xtype(c)
|
|
82
|
+
c[:xtype] = 'treecolumn' if c[:name].to_s == config[:treecolumn].to_s
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Set data_index -- The name of the field configuration of the Ext
|
|
86
|
+
# JS model will be set to this value This is neccessary since the
|
|
87
|
+
# data is serialized as a hash (with camelized keys) so the
|
|
88
|
+
# data_index must also be camelized
|
|
89
|
+
def set_default_data_index(c)
|
|
90
|
+
c[:data_index] = c[:name].camelize(:lower)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# Call super and then set the data_index
|
|
94
|
+
def augment_column_config(c)
|
|
95
|
+
super
|
|
96
|
+
set_default_data_index(c)
|
|
97
|
+
set_default_xtype c
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# @!method get_data_endpoint
|
|
101
|
+
#
|
|
102
|
+
# Returns something like:
|
|
103
|
+
# [
|
|
104
|
+
# { 'id'=> 1, 'text'=> 'A folder Node', 'leaf'=> false },
|
|
105
|
+
# { 'id'=> 2, 'text'=> 'A leaf Node', 'leaf'=> true }
|
|
106
|
+
# ]
|
|
107
|
+
#
|
|
108
|
+
# @param [Hash] params
|
|
109
|
+
endpoint :get_data do |params, this|
|
|
110
|
+
this.merge! get_data(params)
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
# Method that is called by the get_data endpoint
|
|
114
|
+
# Calls the get_children method and returns the serialized records
|
|
115
|
+
#
|
|
116
|
+
# @param [] *args takes any arguments
|
|
117
|
+
# @return [Hash] all the serialized data
|
|
118
|
+
def get_data(*args)
|
|
119
|
+
params = args.first || {} # params are optional!
|
|
120
|
+
|
|
121
|
+
sortp = params["sort"]
|
|
122
|
+
|
|
123
|
+
# Giant hack to fix property field used in sort. Not sure why
|
|
124
|
+
# this is coming in camelized.
|
|
125
|
+
if sortp.is_a?(Array)
|
|
126
|
+
sortp.each { |h|
|
|
127
|
+
h["property"] = h["property"].underscore if
|
|
128
|
+
h.is_a?(Hash) && h["property"]
|
|
129
|
+
}
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
if !config[:prohibit_read]
|
|
133
|
+
{}.tap do |res|
|
|
134
|
+
# set children to an instance variable in order to access them later
|
|
135
|
+
@records = get_children(params)
|
|
136
|
+
|
|
137
|
+
# Serialize children
|
|
138
|
+
res[:data] = serialize_data(@records)
|
|
139
|
+
|
|
140
|
+
res[:total] = count_records(params) if
|
|
141
|
+
config[:enable_pagination] &&
|
|
142
|
+
(params[:id].nil? || params[:id] == 'root')
|
|
143
|
+
end
|
|
144
|
+
else
|
|
145
|
+
flash :error => "You don't have permissions to read data"
|
|
146
|
+
{ :netzke_feedback => @flash }
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
# Serializes an array of objects
|
|
151
|
+
#
|
|
152
|
+
# @param [Array] records
|
|
153
|
+
# @return [Array] the serialized data
|
|
154
|
+
def serialize_data(records)
|
|
155
|
+
records.map { |r|
|
|
156
|
+
data_adapter.record_to_hash(r, final_columns(:with_meta => true)).tap { |h|
|
|
157
|
+
|
|
158
|
+
config[:extra_fields].each do |f|
|
|
159
|
+
name = f[:name].underscore.to_sym
|
|
160
|
+
h[name] = send("#{name}#{f[:type] == 'boolean' ? '?' : ''}", r)
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
inline_children = get_inline_children(r)
|
|
164
|
+
h[:data] = serialize_data(inline_children) unless inline_children.nil?
|
|
165
|
+
h
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
# Retrieves all children for a node
|
|
171
|
+
# Note: It's recommended to override this method
|
|
172
|
+
#
|
|
173
|
+
# @param [Hash] params
|
|
174
|
+
# @return [Array] array of records
|
|
175
|
+
def get_children(params)
|
|
176
|
+
scope_data_class(params) do
|
|
177
|
+
params[:limit] = config[:rows_per_page] if
|
|
178
|
+
config[:enable_pagination] && (params[:id].nil? || params[:id] == 'root')
|
|
179
|
+
params[:scope] = config[:scope]
|
|
180
|
+
data_adapter.get_records(params, final_columns)
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
# Scopes the data class depending on the config of the parent_key and the node
|
|
185
|
+
#
|
|
186
|
+
# @param [Hash] params
|
|
187
|
+
def scope_data_class(params, &block)
|
|
188
|
+
if config[:parent_key]
|
|
189
|
+
# The value of the pri property of the expanded node is passed
|
|
190
|
+
# as params[:id] ('root' for the root collection)
|
|
191
|
+
if params[:id].nil? || params[:id] == 'root'
|
|
192
|
+
data_class.where(config[:parent_key] => nil).scoping do
|
|
193
|
+
yield
|
|
194
|
+
end
|
|
195
|
+
else
|
|
196
|
+
data_class.where(config[:parent_key] => params[:id]).scoping do
|
|
197
|
+
yield
|
|
198
|
+
end
|
|
199
|
+
end
|
|
200
|
+
else
|
|
201
|
+
yield
|
|
202
|
+
end
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
# Counts the total records
|
|
206
|
+
#
|
|
207
|
+
# @param [Hash] params
|
|
208
|
+
# @return [Fixnum] The number of records
|
|
209
|
+
def count_records(params)
|
|
210
|
+
scope_data_class(params) do
|
|
211
|
+
params[:scope] = config[:scope]
|
|
212
|
+
data_adapter.count_records(params, final_columns)
|
|
213
|
+
end
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
# Should return all children of the record that should also be
|
|
217
|
+
# serialized in the current request
|
|
218
|
+
# Note: It's recommended to override this method
|
|
219
|
+
#
|
|
220
|
+
# @param [Object] r The record for which the inline children should be loaded
|
|
221
|
+
# @return [NilClass, Array] If nil is returned, the tree doesn't
|
|
222
|
+
# know anything about any children, so opening the node will cause
|
|
223
|
+
# another request. If an empty array is returned, the tree assumes
|
|
224
|
+
# that there are no children available for this node (and thus you
|
|
225
|
+
# can't open it!)
|
|
226
|
+
def get_inline_children(r)
|
|
227
|
+
nil
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
# Is the record a leaf or not?
|
|
231
|
+
# Note: It's recommended to override this method
|
|
232
|
+
#
|
|
233
|
+
# @param [Object] r
|
|
234
|
+
# @return [Boolean] Whether the node is a leaf or not
|
|
235
|
+
def leaf?(r)
|
|
236
|
+
r.children.empty?
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
# Is the record a expanded or not?
|
|
240
|
+
# Note: It's recommended to override this method
|
|
241
|
+
#
|
|
242
|
+
# @param [Object] r
|
|
243
|
+
# @return [Boolean] Whether the node is expanded or not
|
|
244
|
+
def expanded?(r)
|
|
245
|
+
false
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
# Is the record a leaf or not?
|
|
249
|
+
# Note: It's recommended to override this method
|
|
250
|
+
#
|
|
251
|
+
# @param [Object] r
|
|
252
|
+
# @return [Boolean] Whether the node is a leaf or not
|
|
253
|
+
def node_id(r)
|
|
254
|
+
r.send(data_class.primary_key)
|
|
255
|
+
end
|
|
256
|
+
end
|