lanes 0.0.3 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Gemfile +1 -1
- data/Rakefile +0 -42
- data/client/{javascripts/component → lanes/components}/Base.coffee +10 -10
- data/client/{javascripts/component → lanes/components}/ChoicesInput.coffee +0 -0
- data/client/lanes/components/enabled.js.erb +3 -0
- data/client/{javascripts/lib/create-namespace.js → lanes/components/enabled.scss.erb} +0 -0
- data/client/{javascripts/component → lanes/components}/grid/Editor.coffee +10 -13
- data/client/{javascripts/component → lanes/components/grid}/Grid.coffee +6 -6
- data/client/{javascripts/component → lanes/components}/grid/PopOverEditor.coffee +3 -3
- data/client/{javascripts/component → lanes/components}/grid/RowEditor.coffee +2 -3
- data/client/lanes/components/grid/config.json +3 -0
- data/client/{stylesheets/compoonents/grid-editors.scss → lanes/components/grid/editors.scss} +0 -0
- data/client/{stylesheets/compoonents → lanes/components/grid}/grid.scss +8 -6
- data/client/lanes/components/grid/index.js +8 -0
- data/client/{javascripts/component → lanes/components}/grid/popover-editor.html +0 -0
- data/client/{javascripts/component → lanes/components}/grid/row-editor.html +0 -0
- data/client/{javascripts/component/grid.html → lanes/components/grid/template.html} +0 -0
- data/client/{javascripts/vendor/dataTables → lanes/components/grid/vendor}/dataTables.bootstrap.js +0 -0
- data/client/{javascripts/vendor/dataTables → lanes/components/grid/vendor}/dataTables.scroller.js +0 -0
- data/client/{javascripts/vendor/dataTables → lanes/components/grid/vendor}/datatables.responsive.js +0 -0
- data/client/{javascripts/vendor/dataTables → lanes/components/grid/vendor}/index.js +0 -0
- data/client/{javascripts/vendor/dataTables → lanes/components/grid/vendor}/jquery.dataTables.js +1 -0
- data/client/lanes/components/index.js +2 -0
- data/client/lanes/components/modal/ModalDialog.coffee +47 -0
- data/client/lanes/components/modal/index.js +2 -0
- data/client/lanes/components/modal/modal.scss +20 -0
- data/client/{javascripts/component/modal.html → lanes/components/modal/template.html} +5 -4
- data/client/{javascripts/component → lanes/components/popover}/PopOver.coffee +4 -4
- data/client/lanes/components/popover/index.js +2 -0
- data/client/lanes/components/popover/popover.scss +1 -0
- data/client/{javascripts/component/popover.html → lanes/components/popover/template.html} +0 -0
- data/client/{javascripts/component → lanes/components/radio_group}/RadioGroup.coffee +1 -1
- data/client/{javascripts/component → lanes/components/record_finder}/RecordFinder.coffee +4 -4
- data/client/{javascripts/component/record-finder → lanes/components/record_finder}/clause.skr +0 -0
- data/client/{javascripts/component/record-finder → lanes/components/record_finder}/dialog.skr +0 -0
- data/client/{javascripts/component/record-finder → lanes/components/record_finder}/field.skr +0 -0
- data/client/lanes/components/select_field/SelectField.coffee +87 -0
- data/client/{screens/user-management → lanes/components/select_field}/index.js +0 -1
- data/client/{javascripts/workspace/tab.html → lanes/components/select_field/select_field.scss} +0 -0
- data/client/{javascripts → lanes}/data/Bootstrap.coffee +0 -0
- data/client/{javascripts → lanes}/data/ChangeSet.coffee +0 -0
- data/client/{javascripts → lanes}/data/Collection.coffee +37 -6
- data/client/{javascripts → lanes}/data/Config.coffee +0 -0
- data/client/{javascripts → lanes}/data/Model.coffee +8 -9
- data/client/{javascripts → lanes}/data/PubSub.coffee +0 -0
- data/client/{javascripts → lanes}/data/Query.coffee +0 -0
- data/client/{javascripts → lanes}/data/Screens.coffee +48 -19
- data/client/{javascripts → lanes}/data/Sync.coffee +5 -5
- data/client/lanes/data/User.coffee +46 -0
- data/client/{javascripts → lanes}/data/index.js +1 -2
- data/client/{javascripts → lanes}/data/mixins/HasCodeField.coffee +1 -1
- data/client/{javascripts → lanes}/extension/Base.coffee +1 -1
- data/client/lanes/extension/EarlyExtensions.js.erb +3 -0
- data/client/{javascripts → lanes}/extension/Extensions.coffee +5 -0
- data/client/{javascripts → lanes}/extension/GlAccounts.coffee +0 -0
- data/client/lanes/extension/LateLoaded.js.erb +3 -0
- data/client/lanes/extension/index.js +5 -0
- data/client/lanes/extension/namespace-available.js.erb +3 -0
- data/client/lanes/index.js +11 -0
- data/client/{javascripts → lanes}/lib/MakeBaseClass.coffee +0 -0
- data/client/{javascripts → lanes}/lib/ModuleSupport.coffee +0 -0
- data/client/{javascripts → lanes}/lib/Templates.coffee +2 -5
- data/{spec/client/foo_spec.js → client/lanes/lib/create-namespace.js} +0 -0
- data/client/{javascripts → lanes}/lib/debounce.coffee +0 -0
- data/client/{javascripts → lanes}/lib/defer.coffee +0 -0
- data/client/{javascripts → lanes}/lib/el.js +0 -0
- data/client/{javascripts → lanes}/lib/index.js +0 -4
- data/client/{javascripts → lanes}/lib/loader.coffee +15 -10
- data/client/{javascripts → lanes}/lib/namespace.coffee +3 -0
- data/client/{javascripts → lanes}/lib/noConflict.coffee +1 -0
- data/client/{javascripts → lanes}/lib/promise_helpers.coffee +0 -0
- data/client/{javascripts → lanes}/lib/results.coffee +0 -0
- data/client/{javascripts → lanes}/lib/utilFunctions.coffee +11 -13
- data/client/{javascripts → lanes}/plugins/ResizeSensor.js +0 -0
- data/client/lanes/plugins/index.js +1 -0
- data/client/{javascripts → lanes}/plugins/overlay.coffee +0 -0
- data/client/{javascripts → lanes}/plugins/trigger.coffee +0 -0
- data/client/lanes/screens/Base.coffee +40 -0
- data/client/{javascripts/view/mixins/ScreenChangeListener.coffee → lanes/screens/ChangeListener.coffee} +2 -2
- data/client/lanes/screens/Router.coffee +6 -0
- data/client/lanes/screens/index.js +1 -0
- data/client/{javascripts/view → lanes/screens}/screen-definitions.js.erb +0 -0
- data/client/{javascripts → lanes}/vendor/bootstrap/affix.js +43 -23
- data/client/{javascripts → lanes}/vendor/bootstrap/alert.js +6 -4
- data/client/{javascripts → lanes}/vendor/bootstrap/button.js +16 -10
- data/client/{javascripts → lanes}/vendor/bootstrap/carousel.js +27 -10
- data/client/{javascripts → lanes}/vendor/bootstrap/collapse.js +69 -28
- data/client/{javascripts → lanes}/vendor/bootstrap/dropdown.js +20 -10
- data/client/{javascripts → lanes}/vendor/bootstrap/modal.js +67 -23
- data/client/{javascripts → lanes}/vendor/bootstrap/popover.js +13 -7
- data/client/{javascripts → lanes}/vendor/bootstrap/scrollspy.js +12 -7
- data/client/{javascripts → lanes}/vendor/bootstrap/tab.js +41 -16
- data/client/{javascripts → lanes}/vendor/bootstrap/tooltip.js +60 -39
- data/client/{javascripts → lanes}/vendor/bootstrap/transition.js +1 -1
- data/client/{javascripts → lanes}/vendor/jquery-2.js +0 -0
- data/client/{javascripts → lanes}/vendor/jquery.tap.js +0 -0
- data/client/{javascripts → lanes}/vendor/magicsuggest.js +0 -0
- data/client/{javascripts → lanes}/vendor/message-bus.js +0 -0
- data/client/lanes/vendor/modern-stack.js +27 -0
- data/client/lanes/vendor/packaged.js +13698 -0
- data/client/{javascripts/view → lanes/views}/Assets.coffee +1 -1
- data/client/lanes/views/Base.coffee +426 -0
- data/client/{javascripts/view → lanes/views}/FormBindings.coffee +1 -1
- data/client/{javascripts/view → lanes/views}/Functions.coffee +1 -1
- data/client/{javascripts/view → lanes/views}/Helpers.coffee +6 -6
- data/client/{javascripts/view → lanes/views}/Keys.coffee +3 -3
- data/client/{javascripts/view → lanes/views}/ModelObserver.coffee +1 -1
- data/client/{javascripts/view → lanes/views}/ModelUpdate.coffee +2 -2
- data/client/{javascripts/view → lanes/views}/PubSub.coffee +3 -3
- data/client/{javascripts/view → lanes/views}/RenderContext.coffee +1 -1
- data/client/{javascripts/view → lanes/views}/SaveNotify.coffee +2 -2
- data/client/{javascripts/view → lanes/views}/TimedHighlight.coffee +1 -1
- data/client/{javascripts/view → lanes/views}/TimedMask.coffee +1 -1
- data/client/{javascripts/view/InterfaceState.coffee → lanes/views/Viewport.coffee} +18 -18
- data/client/{javascripts/view → lanes/views}/_button.html +0 -0
- data/client/{javascripts/view → lanes/views}/_toolbar.html +0 -0
- data/client/lanes/views/index.js +2 -0
- data/client/{javascripts/view → lanes/views}/model-update.html +0 -0
- data/client/{javascripts → lanes}/workspace/ActiveScreensSwitcher.coffee +23 -27
- data/client/{javascripts → lanes}/workspace/Instance.es6 +25 -21
- data/client/{javascripts → lanes}/workspace/Layout.coffee +6 -5
- data/client/{javascripts → lanes}/workspace/Navbar.coffee +2 -2
- data/client/{javascripts → lanes}/workspace/Pages.coffee +9 -13
- data/client/{javascripts → lanes}/workspace/ScreensMenu.coffee +11 -11
- data/client/{javascripts → lanes}/workspace/index.js +7 -5
- data/client/{javascripts → lanes}/workspace/layout.html +0 -0
- data/client/{javascripts → lanes}/workspace/menu.html +0 -0
- data/client/{javascripts → lanes}/workspace/menu_toggle.html +0 -0
- data/client/{javascripts → lanes}/workspace/navbar.html +0 -0
- data/client/{javascripts → lanes}/workspace/pages.html +0 -0
- data/client/{javascripts → lanes}/workspace/screens-menu.html +0 -0
- data/client/{javascripts → lanes}/workspace/screens-switcher.html +0 -0
- data/client/lanes/workspace/tab.html +0 -0
- data/client/lanes/workspace.scss.erb +21 -0
- data/client/{javascripts/lanes-complete.js → lanes-complete.js} +0 -0
- data/client/lanes-workspace.scss.erb +21 -0
- data/client/{stylesheets/compoonents → styles/components}/all.scss +0 -0
- data/client/{stylesheets/compoonents → styles/components}/changes-notification.scss +0 -0
- data/client/{stylesheets/compoonents → styles/components}/record-finder.scss +0 -0
- data/client/{stylesheets/compoonents → styles/components}/suggest.scss +0 -0
- data/client/{stylesheets → styles}/fonts/icomoon.eot +0 -0
- data/client/{stylesheets → styles}/fonts/icomoon.svg +0 -0
- data/client/{stylesheets → styles}/fonts/icomoon.ttf +0 -0
- data/client/{stylesheets → styles}/fonts/icomoon.woff +0 -0
- data/client/{stylesheets → styles}/fonts/selection.json +0 -0
- data/client/{stylesheets/fonts/style.css → styles/fonts/style.scss} +0 -0
- data/client/{stylesheets → styles}/fonts.scss +6 -6
- data/client/{stylesheets → styles}/forms.scss +0 -0
- data/client/{stylesheets → styles}/index.css +0 -0
- data/client/{stylesheets → styles}/keybindings.scss +0 -0
- data/client/{stylesheets → styles}/layout.scss +1 -1
- data/client/{stylesheets → styles}/plugins/all.scss +0 -0
- data/client/{stylesheets → styles}/plugins/overlay.scss +1 -1
- data/client/{stylesheets → styles}/plugins/resize-sensor.scss +0 -0
- data/client/{stylesheets → styles}/screens.scss +0 -0
- data/client/{stylesheets → styles}/tabs.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/_alerts.scss +0 -0
- data/client/styles/vendor/bootstrap/_badges.scss +63 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/_breadcrumbs.scss +0 -0
- data/client/styles/vendor/bootstrap/_button-groups.scss +243 -0
- data/client/styles/vendor/bootstrap/_buttons.scss +160 -0
- data/client/styles/vendor/bootstrap/_carousel.scss +267 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/_close.scss +0 -0
- data/client/styles/vendor/bootstrap/_code.scss +69 -0
- data/client/styles/vendor/bootstrap/_component-animations.scss +38 -0
- data/client/styles/vendor/bootstrap/_dropdowns.scss +213 -0
- data/client/styles/vendor/bootstrap/_forms.scss +548 -0
- data/client/styles/vendor/bootstrap/_glyphicons.scss +234 -0
- data/client/styles/vendor/bootstrap/_grid.scss +84 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/_input-groups.scss +0 -0
- data/client/styles/vendor/bootstrap/_jumbotron.scss +49 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/_labels.scss +0 -0
- data/client/styles/vendor/bootstrap/_list-group.scss +124 -0
- data/client/styles/vendor/bootstrap/_media.scss +47 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/_mixins.scss +0 -0
- data/client/styles/vendor/bootstrap/_modals.scss +148 -0
- data/client/styles/vendor/bootstrap/_navbar.scss +662 -0
- data/client/styles/vendor/bootstrap/_navs.scss +244 -0
- data/client/styles/vendor/bootstrap/_normalize.scss +427 -0
- data/client/styles/vendor/bootstrap/_pager.scss +54 -0
- data/client/styles/vendor/bootstrap/_pagination.scss +88 -0
- data/client/styles/vendor/bootstrap/_panels.scss +261 -0
- data/client/styles/vendor/bootstrap/_popovers.scss +135 -0
- data/client/styles/vendor/bootstrap/_print.scss +107 -0
- data/client/styles/vendor/bootstrap/_progress-bars.scss +87 -0
- data/client/styles/vendor/bootstrap/_responsive-embed.scss +35 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/_responsive-utilities.scss +0 -0
- data/client/styles/vendor/bootstrap/_scaffolding.scss +150 -0
- data/client/styles/vendor/bootstrap/_tables.scss +234 -0
- data/client/styles/vendor/bootstrap/_theme.scss +272 -0
- data/client/styles/vendor/bootstrap/_thumbnails.scss +38 -0
- data/client/styles/vendor/bootstrap/_tooltip.scss +103 -0
- data/client/styles/vendor/bootstrap/_type.scss +298 -0
- data/client/styles/vendor/bootstrap/_utilities.scss +56 -0
- data/client/styles/vendor/bootstrap/_variables.scss +864 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/_wells.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_alerts.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_background-variant.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_border-radius.scss +0 -0
- data/client/styles/vendor/bootstrap/mixins/_buttons.scss +52 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_center-block.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_clearfix.scss +0 -0
- data/client/styles/vendor/bootstrap/mixins/_forms.scss +88 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_gradients.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_grid-framework.scss +0 -0
- data/client/styles/vendor/bootstrap/mixins/_grid.scss +122 -0
- data/client/styles/vendor/bootstrap/mixins/_hide-text.scss +21 -0
- data/client/styles/vendor/bootstrap/mixins/_image.scss +33 -0
- data/client/styles/vendor/bootstrap/mixins/_labels.scss +12 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_list-group.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_nav-divider.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_nav-vertical-align.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_opacity.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_pagination.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_panels.scss +0 -0
- data/client/styles/vendor/bootstrap/mixins/_progress-bar.scss +10 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_reset-filter.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_resize.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_responsive-visibility.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_size.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_tab-focus.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_table-row.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_text-emphasis.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_text-overflow.scss +0 -0
- data/client/styles/vendor/bootstrap/mixins/_vendor-prefixes.scss +222 -0
- data/client/styles/vendor/bootstrap/old/_alerts.scss +68 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_badges.scss +0 -0
- data/client/styles/vendor/bootstrap/old/_breadcrumbs.scss +26 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_button-groups.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_buttons.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_carousel.scss +0 -0
- data/client/styles/vendor/bootstrap/old/_close.scss +35 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_code.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_component-animations.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_dropdowns.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_forms.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_glyphicons.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_grid.scss +0 -0
- data/client/styles/vendor/bootstrap/old/_input-groups.scss +166 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_jumbotron.scss +0 -0
- data/client/styles/vendor/bootstrap/old/_labels.scss +66 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_list-group.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_media.scss +0 -0
- data/client/styles/vendor/bootstrap/old/_mixins.scss +39 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_modals.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_navbar.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_navs.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_normalize.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_pager.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_pagination.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_panels.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_popovers.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_print.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_progress-bars.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_responsive-embed.scss +0 -0
- data/client/styles/vendor/bootstrap/old/_responsive-utilities.scss +174 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_scaffolding.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_tables.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_theme.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_thumbnails.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_tooltip.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_type.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_utilities.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_variables.scss +0 -0
- data/client/styles/vendor/bootstrap/old/_wells.scss +29 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/bootstrap.scss +0 -0
- data/client/styles/vendor/bootstrap/old/mixins/_alerts.scss +14 -0
- data/client/styles/vendor/bootstrap/old/mixins/_background-variant.scss +11 -0
- data/client/styles/vendor/bootstrap/old/mixins/_border-radius.scss +18 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/mixins/_buttons.scss +0 -0
- data/client/styles/vendor/bootstrap/old/mixins/_center-block.scss +7 -0
- data/client/styles/vendor/bootstrap/old/mixins/_clearfix.scss +22 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/mixins/_forms.scss +0 -0
- data/client/styles/vendor/bootstrap/old/mixins/_gradients.scss +58 -0
- data/client/styles/vendor/bootstrap/old/mixins/_grid-framework.scss +81 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/mixins/_grid.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/mixins/_hide-text.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/mixins/_image.scss +0 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/mixins/_labels.scss +0 -0
- data/client/styles/vendor/bootstrap/old/mixins/_list-group.scss +31 -0
- data/client/styles/vendor/bootstrap/old/mixins/_nav-divider.scss +10 -0
- data/client/styles/vendor/bootstrap/old/mixins/_nav-vertical-align.scss +9 -0
- data/client/styles/vendor/bootstrap/old/mixins/_opacity.scss +8 -0
- data/client/styles/vendor/bootstrap/old/mixins/_pagination.scss +23 -0
- data/client/styles/vendor/bootstrap/old/mixins/_panels.scss +24 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/mixins/_progress-bar.scss +0 -0
- data/client/styles/vendor/bootstrap/old/mixins/_reset-filter.scss +8 -0
- data/client/styles/vendor/bootstrap/old/mixins/_resize.scss +6 -0
- data/client/styles/vendor/bootstrap/old/mixins/_responsive-visibility.scss +21 -0
- data/client/styles/vendor/bootstrap/old/mixins/_size.scss +10 -0
- data/client/styles/vendor/bootstrap/old/mixins/_tab-focus.scss +9 -0
- data/client/styles/vendor/bootstrap/old/mixins/_table-row.scss +28 -0
- data/client/styles/vendor/bootstrap/old/mixins/_text-emphasis.scss +11 -0
- data/client/styles/vendor/bootstrap/old/mixins/_text-overflow.scss +8 -0
- data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/mixins/_vendor-prefixes.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap-custom-grid.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap-custom-modals.scss +0 -0
- data/client/{stylesheets → styles}/vendor/bootstrap.scss +14 -9
- data/client/{stylesheets → styles}/vendor/dataTables.scss +0 -0
- data/lanes.gemspec +5 -1
- data/lib/lanes/api/controller.rb +47 -6
- data/lib/lanes/api/helper_methods.rb +2 -10
- data/lib/lanes/api/javascript_processor.rb +17 -7
- data/lib/lanes/api/null_authentication_provider.rb +33 -0
- data/lib/lanes/api/request_wrapper.rb +49 -28
- data/lib/lanes/api/root.rb +12 -30
- data/lib/lanes/api/routing.rb +37 -0
- data/lib/lanes/api/sprockets_compressor.rb +35 -0
- data/lib/lanes/api/sprockets_extension.rb +69 -0
- data/lib/lanes/api/test_specs.rb +13 -9
- data/lib/lanes/api.rb +2 -18
- data/lib/lanes/cli.rb +22 -2
- data/lib/lanes/command/app.rb +49 -0
- data/lib/lanes/command/client_model_update.rb +65 -0
- data/lib/lanes/command/console.rb +20 -0
- data/lib/lanes/command/db.rb +33 -0
- data/lib/lanes/command/db.usage +1 -0
- data/lib/lanes/command/generate.rb +21 -0
- data/lib/lanes/command/generate_model.rb +105 -0
- data/lib/lanes/command/generate_model.usage +45 -0
- data/lib/lanes/command/generate_screen.rb +31 -0
- data/lib/lanes/command/generate_screen.usage +11 -0
- data/lib/lanes/command/generate_view.rb +22 -0
- data/lib/lanes/command/generate_view.usage +13 -0
- data/lib/lanes/command/model_attribute.rb +188 -0
- data/lib/lanes/command/named_command.rb +27 -0
- data/lib/lanes/command/server.rb +19 -0
- data/lib/lanes/command/server.usage +3 -0
- data/lib/lanes/command/templates/Gemfile +10 -0
- data/lib/lanes/{generators/app → command/templates}/Guardfile +0 -0
- data/lib/lanes/command/templates/Rakefile +2 -0
- data/lib/lanes/command/templates/client/Extension.coffee +5 -0
- data/lib/lanes/command/templates/client/components/.gitkeep +0 -0
- data/lib/lanes/command/templates/client/components/Component.coffee +1 -0
- data/lib/lanes/command/templates/client/data/Model.coffee +24 -0
- data/lib/lanes/command/templates/client/namespace-extension.js +17 -0
- data/lib/lanes/command/templates/client/screens/Screen.coffee +9 -0
- data/lib/lanes/command/templates/client/screens/index.js +5 -0
- data/lib/lanes/command/templates/client/screens/layout.html +3 -0
- data/lib/lanes/command/templates/client/screens/styles.scss +9 -0
- data/lib/lanes/command/templates/client/styles/styles.scss +1 -0
- data/lib/lanes/command/templates/client/views/.gitkeep +0 -0
- data/lib/lanes/command/templates/client/views/View.coffee +9 -0
- data/lib/lanes/command/templates/client/views/template.html +3 -0
- data/lib/lanes/{generators/app → command/templates}/config/database.yml +0 -0
- data/lib/lanes/command/templates/config/lanes.rb +7 -0
- data/lib/lanes/command/templates/config/routes.rb +2 -0
- data/lib/lanes/{generators/app → command/templates}/config.ru +1 -0
- data/lib/lanes/command/templates/db/create_table_migration.rb +19 -0
- data/lib/lanes/command/templates/gitignore +1 -0
- data/lib/lanes/command/templates/lib/namespace/extension.rb +13 -0
- data/lib/lanes/command/templates/lib/namespace/model.rb +7 -0
- data/lib/lanes/command/templates/lib/namespace/screen.rb +17 -0
- data/lib/lanes/command/templates/lib/namespace/version.rb +3 -0
- data/lib/lanes/command/templates/lib/namespace.rb +12 -0
- data/lib/lanes/command/templates/spec/client/data/ModelSpec.coffee +5 -0
- data/lib/lanes/command/templates/spec/client/views/ViewSpec.coffee +5 -0
- data/lib/lanes/command/templates/spec/fixtures/namespace/model.yml +16 -0
- data/lib/lanes/command/templates/spec/namespace/model_spec.rb +10 -0
- data/lib/lanes/command/templates/spec/spec_helper.rb +15 -0
- data/lib/lanes/command/update.rb +13 -0
- data/lib/lanes/command/update_model.rb +125 -0
- data/lib/lanes/command/update_model.usage +2 -0
- data/lib/lanes/command.rb +37 -0
- data/lib/lanes/components.rb +45 -0
- data/lib/lanes/concerns/set_attribute_data.rb +2 -2
- data/lib/lanes/configuration.rb +3 -3
- data/lib/lanes/db.rb +5 -39
- data/lib/lanes/extension.rb +64 -19
- data/lib/lanes/guard_tasks.rb +7 -5
- data/lib/lanes/rake_tasks.rb +47 -0
- data/lib/lanes/screens.rb +1 -48
- data/{spec → lib/lanes}/spec_helper.rb +0 -0
- data/lib/lanes/version.rb +1 -1
- data/lib/lanes.rb +1 -3
- data/npm-build/compile.coffee +1 -1
- data/npm-build/package.json +5 -5
- data/npm-build/template.js +13 -13
- data/spec/api/javascript_processor_spec.rb +1 -1
- data/spec/client/view/BaseSpec.coffee +166 -0
- data/spec/helpers/jasmine-jquery.js +813 -0
- data/spec/helpers/jasmine-matchers.js +1586 -0
- data/tasks/migrations.rake +1 -1
- data/views/index.erb +9 -13
- metadata +419 -268
- data/client/javascripts/component/ModalDialog.coffee +0 -44
- data/client/javascripts/component/SelectField.coffee +0 -43
- data/client/javascripts/component/TaggedField.coffee +0 -27
- data/client/javascripts/component/index.js +0 -5
- data/client/javascripts/data/Roles.coffee +0 -91
- data/client/javascripts/data/User.coffee +0 -70
- data/client/javascripts/extension/index.js +0 -6
- data/client/javascripts/extension/load.js.erb +0 -3
- data/client/javascripts/lanes-workspace.js +0 -1
- data/client/javascripts/lib/underscore.inflection.js +0 -210
- data/client/javascripts/plugins/index.js +0 -4
- data/client/javascripts/vendor/modern-stack.js +0 -14
- data/client/javascripts/vendor/packaged.js +0 -13769
- data/client/javascripts/view/Base.coffee +0 -231
- data/client/javascripts/view/Screen.coffee +0 -30
- data/client/javascripts/view/index.js +0 -10
- data/client/javascripts/workspace/LoginDialog.coffee +0 -33
- data/client/javascripts/workspace/login-dialog.html +0 -16
- data/client/screens/user-management/UserEditScreen.coffee +0 -21
- data/client/screens/user-management/UserManagement.coffee +0 -24
- data/client/screens/user-management/grid-popover-editor.html +0 -33
- data/client/screens/user-management/index.css +0 -4
- data/client/screens/user-management/user-management-styles.scss +0 -7
- data/client/screens/user-management/user-management.html +0 -8
- data/client/stylesheets/compoonents/modal-dialog.scss +0 -23
- data/client/stylesheets/lanes-workspace.scss +0 -17
- data/config/puma.rb +0 -7
- data/db/seed.rb +0 -37
- data/foo/Gemfile +0 -5
- data/foo/Guardfile +0 -13
- data/foo/foo/Gemfile +0 -5
- data/foo/foo/lib/foo.rb +0 -7
- data/foo/lib/foo/version.rb +0 -3
- data/foo/lib/foo.rb +0 -8
- data/lib/lanes/access/locked_fields.rb +0 -43
- data/lib/lanes/access/role.rb +0 -58
- data/lib/lanes/access/role_collection.rb +0 -75
- data/lib/lanes/access/roles/administrator.rb +0 -25
- data/lib/lanes/access/roles/support.rb +0 -13
- data/lib/lanes/access/user_maint_screen.rb +0 -32
- data/lib/lanes/access.rb +0 -50
- data/lib/lanes/api/asset_pipeline.rb +0 -59
- data/lib/lanes/api/authentication_helper.rb +0 -21
- data/lib/lanes/api/authentication_provider.rb +0 -45
- data/lib/lanes/api/default_routes.rb +0 -35
- data/lib/lanes/api/skr_templates.rb +0 -60
- data/lib/lanes/concerns/track_modifications.rb +0 -51
- data/lib/lanes/db/seed.rb +0 -27
- data/lib/lanes/generators/app/Gemfile +0 -5
- data/lib/lanes/generators/app/Rakefile +0 -9
- data/lib/lanes/generators/app/lib/main_class/version.rb +0 -3
- data/lib/lanes/generators/app/lib/main_class.rb +0 -8
- data/lib/lanes/generators/app.rb +0 -36
- data/lib/lanes/user.rb +0 -127
- data/spec/client/component/ChoicesInputSpec.coffee +0 -12
- data/spec/client/component/foo_spec.coffee +0 -4
- data/spec/client/support/jasmine.yml +0 -128
- data/spec/client/support/jasmine_helper.rb +0 -15
- data/spec/helpers/SpecHelper.js +0 -18
@@ -0,0 +1,33 @@
|
|
1
|
+
module Lanes
|
2
|
+
|
3
|
+
module API
|
4
|
+
|
5
|
+
class DummyUser
|
6
|
+
def can_read?(*args)
|
7
|
+
true
|
8
|
+
end
|
9
|
+
def can_write?(*args)
|
10
|
+
true
|
11
|
+
end
|
12
|
+
def can_delete?(*args)
|
13
|
+
true
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class AuthenticationProvider
|
18
|
+
USER = DummyUser.new
|
19
|
+
|
20
|
+
def initialize(session:nil, params:nil, request_type: type)
|
21
|
+
end
|
22
|
+
|
23
|
+
def current_user
|
24
|
+
USER
|
25
|
+
end
|
26
|
+
|
27
|
+
def wrap_request(model)
|
28
|
+
yield
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -1,42 +1,63 @@
|
|
1
|
-
module
|
1
|
+
module Lanes
|
2
|
+
module API
|
2
3
|
|
3
|
-
|
4
|
+
module RequestWrapper
|
5
|
+
class << self
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
params: params
|
11
|
-
)
|
7
|
+
def get(*args)
|
8
|
+
wrap_request(*args) do |controller|
|
9
|
+
controller.perform_retrieval
|
10
|
+
end
|
11
|
+
end
|
12
12
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
::Lanes::User.scoped_to(authentication.current_user) do | user |
|
19
|
-
Lanes.logger.debug "User : #{user.id} (#{user.login})"
|
20
|
-
Lanes.logger.debug "Params : #{request.params}"
|
13
|
+
def post(*args)
|
14
|
+
wrap_request(*args) do |controller|
|
15
|
+
controller.perform_creation
|
16
|
+
end
|
17
|
+
end
|
21
18
|
|
22
|
-
|
19
|
+
def update(*args)
|
20
|
+
wrap_request(*args) do |controller|
|
21
|
+
controller.perform_update
|
22
|
+
end
|
23
|
+
end
|
23
24
|
|
24
|
-
|
25
|
-
|
25
|
+
def delete(*args)
|
26
|
+
wrap_request(*args) do |controller|
|
27
|
+
controller.perform_destroy
|
28
|
+
end
|
26
29
|
end
|
27
30
|
|
31
|
+
def wrap_request(model, controller, parent_attribute)
|
32
|
+
lambda do
|
33
|
+
authentication = Lanes::API::AuthenticationProvider.new(
|
34
|
+
request_type: request.request_method,
|
35
|
+
session: session,
|
36
|
+
params: params
|
37
|
+
)
|
38
|
+
authentication.wrap_request(model) do
|
39
|
+
if parent_attribute
|
40
|
+
params[:nested_attribute] = Hash[ parent_attribute,
|
41
|
+
params[parent_attribute] ]
|
42
|
+
end
|
43
|
+
wrap_json_reply do
|
44
|
+
yield controller.new(model, authentication, params, data)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
28
49
|
end
|
29
|
-
end
|
30
50
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
51
|
+
def wrap_json_reply
|
52
|
+
response = yield
|
53
|
+
if false == response[:success]
|
54
|
+
status(406)
|
55
|
+
end
|
56
|
+
Oj.dump(response, mode: :compat)
|
35
57
|
end
|
36
|
-
Oj.dump(response, mode: :compat)
|
37
|
-
end
|
38
58
|
|
39
|
-
|
59
|
+
end
|
40
60
|
|
41
61
|
|
62
|
+
end
|
42
63
|
end
|
data/lib/lanes/api/root.rb
CHANGED
@@ -3,7 +3,7 @@ require 'oj'
|
|
3
3
|
require 'rack/csrf'
|
4
4
|
require 'sprockets-helpers'
|
5
5
|
require 'message_bus'
|
6
|
-
require_relative '
|
6
|
+
require_relative 'sprockets_extension'
|
7
7
|
require_relative 'helper_methods'
|
8
8
|
require_relative 'pub_sub'
|
9
9
|
|
@@ -14,8 +14,8 @@ module Lanes
|
|
14
14
|
Lanes.config.get(:environment) do | env |
|
15
15
|
set :environment, env
|
16
16
|
end
|
17
|
-
register
|
18
|
-
helpers
|
17
|
+
register SprocketsExtension
|
18
|
+
helpers RequestWrapper
|
19
19
|
helpers HelperMethods
|
20
20
|
not_found do
|
21
21
|
Oj.dump({ message: "endpoint not found", success: false })
|
@@ -41,10 +41,13 @@ module Lanes
|
|
41
41
|
set :show_exceptions, false
|
42
42
|
DB.establish_connection
|
43
43
|
PubSub.initialize
|
44
|
+
Extensions.load_current_config
|
45
|
+
# late load in case an extension has provided an alternative implementation
|
46
|
+
require "lanes/api/null_authentication_provider" unless API.const_defined?(:AuthenticationProvider)
|
44
47
|
# use Rack::Csrf, :skip=>['GET:/'], :raise => true
|
45
48
|
end
|
46
49
|
|
47
|
-
def self.
|
50
|
+
def self.resources(model, options = {})
|
48
51
|
|
49
52
|
path = options[:path] || model.api_path
|
50
53
|
controller = options[:controller] || Lanes::API::Controller
|
@@ -56,42 +59,21 @@ module Lanes
|
|
56
59
|
''
|
57
60
|
end
|
58
61
|
|
59
|
-
|
60
62
|
# index
|
61
|
-
get "#{prefix}/#{path}/?:id?.json"
|
62
|
-
wrap_request(model, params, parent_attribute) do |authentication|
|
63
|
-
controller.new(model, authentication, params).perform_retrieval
|
64
|
-
end
|
65
|
-
end
|
63
|
+
get "#{prefix}/#{path}/?:id?.json", &RequestWrapper.get(model, controller, parent_attribute)
|
66
64
|
|
67
65
|
# create
|
68
|
-
post "#{prefix}/#{path}.json"
|
69
|
-
wrap_request(model, params, parent_attribute) do |authentication|
|
70
|
-
controller.new(model, authentication, params, data).perform_creation
|
71
|
-
end
|
72
|
-
end
|
66
|
+
post "#{prefix}/#{path}.json", &RequestWrapper.post(model, controller, parent_attribute)
|
73
67
|
|
74
68
|
unless options[:immutable]
|
75
|
-
patch "#{prefix}/#{path}/:id.json" do
|
76
|
-
perform_request(model, params, parent_attribute) do |authentication|
|
77
|
-
controller.new(model, authentication, params, data).perform_update
|
78
|
-
end
|
79
|
-
end
|
80
69
|
|
81
70
|
# update
|
82
|
-
|
83
|
-
|
84
|
-
controller.new(model, authentication, params, data).perform_update
|
85
|
-
end
|
86
|
-
end
|
71
|
+
patch "#{prefix}/#{path}/?:id?.json", &RequestWrapper.update(model, controller, parent_attribute)
|
72
|
+
put "#{prefix}/#{path}/?:id?.json", &RequestWrapper.update(model, controller, parent_attribute)
|
87
73
|
|
88
74
|
unless options[:indestructible]
|
89
75
|
# destroy
|
90
|
-
delete "#{prefix}/#{path}
|
91
|
-
wrap_request(model, params, parent_attribute) do |authentication|
|
92
|
-
controller.new(model, authentication, params).perform_destroy
|
93
|
-
end
|
94
|
-
end
|
76
|
+
delete "#{prefix}/#{path}/?:id?.json", &RequestWrapper.delete(model, controller, parent_attribute)
|
95
77
|
end
|
96
78
|
|
97
79
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Lanes
|
2
|
+
module API
|
3
|
+
|
4
|
+
|
5
|
+
class RouteSet
|
6
|
+
def initialize(root)
|
7
|
+
@root = root
|
8
|
+
end
|
9
|
+
|
10
|
+
def draw(&block)
|
11
|
+
@root.instance_eval(&block)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.routes(&block)
|
16
|
+
@routes ||= RouteSet.new(API::Root)
|
17
|
+
end
|
18
|
+
|
19
|
+
self.routes.draw do
|
20
|
+
get '/' do
|
21
|
+
content_type 'text/html'
|
22
|
+
erb :index
|
23
|
+
end
|
24
|
+
|
25
|
+
get "default-records" do
|
26
|
+
{ success: true, data: Lanes::API.default_records }
|
27
|
+
end
|
28
|
+
|
29
|
+
Extensions.each do | ext |
|
30
|
+
ext.route(self)
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require "yui/compressor"
|
2
|
+
|
3
|
+
module Lanes
|
4
|
+
module API
|
5
|
+
class AssetCompressor < Tilt::Template
|
6
|
+
def self.engine_initialized?
|
7
|
+
defined?(::YUI)
|
8
|
+
end
|
9
|
+
|
10
|
+
def initialize_engine
|
11
|
+
require_template_library 'yui/compressor'
|
12
|
+
end
|
13
|
+
|
14
|
+
def prepare
|
15
|
+
end
|
16
|
+
|
17
|
+
def js
|
18
|
+
@js||=YUI::JavaScriptCompressor.new(:munge => true, :java_opts=>'-client')
|
19
|
+
end
|
20
|
+
def css
|
21
|
+
@css ||= YUI::CssCompressor.new( :java_opts=>'-client' )
|
22
|
+
end
|
23
|
+
def evaluate(context, locals, &block)
|
24
|
+
case context.content_type
|
25
|
+
when 'application/javascript'
|
26
|
+
js.compress(data)
|
27
|
+
when 'text/css'
|
28
|
+
css.compress(data)
|
29
|
+
else
|
30
|
+
data
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'sprockets'
|
2
|
+
require 'sass'
|
3
|
+
require 'sinatra/sprockets-helpers'
|
4
|
+
require_relative 'javascript_processor'
|
5
|
+
require_relative 'sprockets_compressor'
|
6
|
+
require 'compass/import-once/activate'
|
7
|
+
|
8
|
+
module Lanes
|
9
|
+
module API
|
10
|
+
module SprocketsExtension
|
11
|
+
class << self
|
12
|
+
|
13
|
+
def compile!
|
14
|
+
env = ::Sprockets::Environment.new
|
15
|
+
Lanes::API::SprocketsExtension.configure(env, compress:true)
|
16
|
+
comp = Sprockets::Manifest.new( env.index, "public/assets" )
|
17
|
+
comp.compile( 'lanes/workspace.js', 'lanes/workspace.css' )
|
18
|
+
env
|
19
|
+
end
|
20
|
+
|
21
|
+
def configure(env, compress:false)
|
22
|
+
root = Pathname.new(__FILE__).dirname.join("../../..")
|
23
|
+
Lanes.config.get(:environment) do
|
24
|
+
unless Lanes.env.production?
|
25
|
+
env.cache = ::Sprockets::Cache::FileStore.new(Pathname.pwd.join('tmp','cache'))
|
26
|
+
end
|
27
|
+
end
|
28
|
+
Lanes::Extensions.each do | ext |
|
29
|
+
ext.client_paths.each{ |path| env.append_path(path) }
|
30
|
+
end
|
31
|
+
if compress
|
32
|
+
env.js_compressor = AssetCompressor
|
33
|
+
env.css_compressor = AssetCompressor
|
34
|
+
end
|
35
|
+
env.append_path root.join('client')
|
36
|
+
JsAssetCompiler.register(env)
|
37
|
+
end
|
38
|
+
|
39
|
+
def registered(app)
|
40
|
+
app.register Sinatra::Sprockets::Helpers
|
41
|
+
app.set :sprockets, ::Sprockets::Environment.new
|
42
|
+
configure(app.sprockets)
|
43
|
+
|
44
|
+
# The url for client
|
45
|
+
app.set :digest_assets, false
|
46
|
+
|
47
|
+
app.configure do
|
48
|
+
::Sprockets::Helpers.configure do |config|
|
49
|
+
config.environment = app.sprockets
|
50
|
+
config.prefix = Lanes.config.assets_path_prefix
|
51
|
+
config.digest = app.digest_assets
|
52
|
+
config.public_path = app.public_folder
|
53
|
+
config.debug = true
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
app.configure :test, :development do
|
58
|
+
app.get "#{Lanes.config.assets_path_prefix}/*" do |path|
|
59
|
+
env_sprockets = request.env.dup
|
60
|
+
env_sprockets['PATH_INFO'] = path
|
61
|
+
settings.sprockets.call env_sprockets
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
data/lib/lanes/api/test_specs.rb
CHANGED
@@ -36,24 +36,28 @@ module Lanes
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
+
|
39
40
|
Lanes.config.get(:specs_root) do | root |
|
40
41
|
TestSpecs.current = TestSpecs.new(root)
|
41
42
|
Root.sprockets.append_path(root.join("spec"))
|
42
43
|
end
|
43
44
|
|
45
|
+
|
44
46
|
Root.sprockets.append_path(Jasmine::Core.path)
|
45
47
|
|
46
|
-
|
47
|
-
content_type 'text/html'
|
48
|
-
erb :specs, locals: { specs: TestSpecs.current }
|
49
|
-
end
|
48
|
+
routes.draw do
|
50
49
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
end
|
50
|
+
get '/spec' do
|
51
|
+
content_type 'text/html'
|
52
|
+
erb :specs, locals: { specs: TestSpecs.current }
|
53
|
+
end
|
56
54
|
|
55
|
+
get "/spec/*" do |path|
|
56
|
+
env_sprockets = request.env.dup
|
57
|
+
env_sprockets['PATH_INFO'] = path
|
58
|
+
settings.sprockets.call env_sprockets
|
59
|
+
end
|
57
60
|
|
61
|
+
end
|
58
62
|
end
|
59
63
|
end
|
data/lib/lanes/api.rb
CHANGED
@@ -1,27 +1,11 @@
|
|
1
|
-
require_relative '
|
2
|
-
require_relative 'api/authentication_provider'
|
3
|
-
|
1
|
+
require_relative '../lanes'
|
4
2
|
require_relative 'api/request_wrapper'
|
5
3
|
require_relative 'api/error_formatter'
|
6
4
|
require_relative 'api/controller'
|
7
5
|
require_relative 'api/root'
|
8
|
-
require_relative 'api/
|
9
|
-
# require_relative 'api/login_sessions_controller'
|
10
|
-
# require_relative 'api/users_controller'
|
11
|
-
|
6
|
+
require_relative 'api/routing'
|
12
7
|
require_relative "api/pub_sub"
|
13
8
|
|
14
|
-
|
15
9
|
Lanes.config.get(:environment) do
|
16
10
|
require_relative("api/test_specs") if Lanes.env.test?
|
17
11
|
end
|
18
|
-
|
19
|
-
# Lanes::API::Root.routes['GET'].each do |route|
|
20
|
-
# puts route[0]
|
21
|
-
# end
|
22
|
-
|
23
|
-
# require_relative "api/skr_templates"
|
24
|
-
# if defined?(::Rails)
|
25
|
-
# require_relative "api/engine"
|
26
|
-
# require_relative "api/route_helper"
|
27
|
-
# end
|
data/lib/lanes/cli.rb
CHANGED
@@ -1,12 +1,32 @@
|
|
1
1
|
require 'thor'
|
2
|
+
require 'require_all'
|
2
3
|
require_relative '../lanes'
|
3
|
-
require_relative '
|
4
|
+
require_relative 'command'
|
5
|
+
require_relative 'command/named_command'
|
6
|
+
require_rel 'command/*.rb'
|
4
7
|
|
5
8
|
module Lanes
|
6
9
|
|
10
|
+
# This is the main interface to Lanes that is called by the command
|
11
|
+
# `bin/lanes`. Do not put any logic in here, create a class and delegate
|
12
|
+
# instead.
|
7
13
|
class CLI < Thor
|
8
14
|
|
9
|
-
register
|
15
|
+
register Command::App, 'new', 'new [NAME]', 'Creates a new Lanes based application'
|
16
|
+
|
17
|
+
desc "generate SUBCOMMAND ...ARGS", "Generate a component"
|
18
|
+
subcommand "generate", Command::Generate
|
19
|
+
|
20
|
+
desc "update SUBCOMMAND ...ARGS", "Update a component"
|
21
|
+
subcommand "update", Command::Update
|
22
|
+
|
23
|
+
long_desc Command.usage_from_file("server")
|
24
|
+
register Command::Server, 'serve', 'serve', 'Run the app in development/testing mode'
|
25
|
+
|
26
|
+
long_desc Command.usage_from_file("db")
|
27
|
+
register Command::Db, 'db', 'db', 'Database commands'
|
28
|
+
|
29
|
+
register Command::Console, "console", "console", "Start IRB console"
|
10
30
|
|
11
31
|
end
|
12
32
|
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Lanes
|
2
|
+
module Command
|
3
|
+
|
4
|
+
class App < NamedCommand
|
5
|
+
|
6
|
+
class_options :force => :boolean
|
7
|
+
|
8
|
+
class_option :directory, :type=>:string
|
9
|
+
|
10
|
+
|
11
|
+
def load_namespace # override
|
12
|
+
@namespace = name
|
13
|
+
end
|
14
|
+
|
15
|
+
def set_variables
|
16
|
+
super
|
17
|
+
self.destination_root = options[:directory] || name
|
18
|
+
end
|
19
|
+
|
20
|
+
def create_files
|
21
|
+
["Gemfile", "Rakefile", "Guardfile", "config.ru", "config/database.yml"].each do | file |
|
22
|
+
template file
|
23
|
+
end
|
24
|
+
template "lib/namespace.rb", "lib/#{name}.rb"
|
25
|
+
template "lib/namespace/version.rb", "lib/#{name}/version.rb"
|
26
|
+
template "lib/namespace/extension.rb", "lib/#{name}/extension.rb"
|
27
|
+
template "config/routes.rb"
|
28
|
+
template "config/lanes.rb"
|
29
|
+
template "gitignore",".gitignore"
|
30
|
+
create_file "tmp/.gitkeep",""
|
31
|
+
create_file "db/.gitkeep", ""
|
32
|
+
end
|
33
|
+
|
34
|
+
def create_client_files
|
35
|
+
self.class.source_root.join('client').children.each do | path |
|
36
|
+
empty_directory "#{client_dir}/#{path.basename}" if path.directory?
|
37
|
+
end
|
38
|
+
template "client/namespace-extension.js", "#{client_dir}/index.js"
|
39
|
+
template "client/Extension.coffee", "#{client_dir}/Extension.coffee"
|
40
|
+
template "client/styles/styles.scss", "client/#{name}-styles.scss"
|
41
|
+
end
|
42
|
+
|
43
|
+
def create_first_screen
|
44
|
+
invoke GenerateScreen, [name], title: name.titleize, namespace: name
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
module Lanes
|
2
|
+
module Command
|
3
|
+
|
4
|
+
module ClientModelUpdate
|
5
|
+
# @param file [Pathname] file to replace the props on
|
6
|
+
def replace_props(file, columns)
|
7
|
+
contents = file.read
|
8
|
+
match = contents.match(/\n(\s+props\s*:\s*)\n+(\s+)\w/m)
|
9
|
+
if !match
|
10
|
+
raise Thor::Error.new("Unable to detect existing props section")
|
11
|
+
end
|
12
|
+
(props,indent) = match.capture3
|
13
|
+
p match
|
14
|
+
maxlen = columns.map{|field| field.name.length }.max
|
15
|
+
|
16
|
+
contents = "#{props}"
|
17
|
+
columns.each do | column |
|
18
|
+
contents << sprintf("#{indent}%-#{maxlen+1}s",column.name+':') + type_specification(column) + "\n"
|
19
|
+
end
|
20
|
+
puts contents
|
21
|
+
# gsub_file file, /\n\s+props\s*:\s*\n.*?\n\n/m, contents
|
22
|
+
|
23
|
+
# props:
|
24
|
+
# <% len = max_name_length(@columns)
|
25
|
+
# @columns.each do | column | -%>
|
26
|
+
# <%= sprintf("%-#{len+1}s",column.name+':') -%> <%= type_specification(column) %>
|
27
|
+
# <% end -%>
|
28
|
+
|
29
|
+
# <% if @associations.any? -%>
|
30
|
+
# associations:
|
31
|
+
# <% len = max_name_length(@associations)
|
32
|
+
# @associations.each do | assoc | -%>
|
33
|
+
# <%= sprintf("%-#{len+2}s",assoc.name.to_s+':') -%> { <%= assoc.collection? ? 'collection' : 'model' -%>: "<%= assoc.class_name.demodulize %>" }
|
34
|
+
# <% end -%>
|
35
|
+
# <% end -%>
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
__END__
|
50
|
+
|
51
|
+
props:
|
52
|
+
<% fields.each do |field| -%>
|
53
|
+
<% if field.reference? -%>
|
54
|
+
<%= sprintf("%-#{max_field_length}s",field.name+'_id') %>: "<%= field.client_type %>"
|
55
|
+
<% else -%>
|
56
|
+
<%= sprintf("%-#{max_field_length}s",field.name) %>: "<%= field.client_type %>"
|
57
|
+
<% end -%>
|
58
|
+
<% end %>
|
59
|
+
<% if reference_fields.any? -%>
|
60
|
+
|
61
|
+
associations:
|
62
|
+
<% reference_fields.each do |field| -%>
|
63
|
+
<%= sprintf("%-#{max_field_length}s ",field.name) %>: { <%= field.belongs_to? ? 'model' : 'collection' -%>: "Lanes.<%= namespace.camelize %>.<%= field.name.camelize %>" }
|
64
|
+
<% end -%>
|
65
|
+
<% end -%>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Lanes
|
2
|
+
module Command
|
3
|
+
|
4
|
+
class Console < Thor::Group
|
5
|
+
include Thor::Actions
|
6
|
+
|
7
|
+
def start
|
8
|
+
Command.load_current_extension
|
9
|
+
require 'irb'
|
10
|
+
require 'irb/completion'
|
11
|
+
require 'pp'
|
12
|
+
DB.establish_connection
|
13
|
+
ActiveRecord::Base.logger = Logger.new STDOUT
|
14
|
+
ARGV.clear
|
15
|
+
IRB.start
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'find'
|
3
|
+
|
4
|
+
module Lanes
|
5
|
+
module Command
|
6
|
+
|
7
|
+
class Db < Thor
|
8
|
+
|
9
|
+
desc 'migrate', 'Run database migrations for all loaded extensions'
|
10
|
+
def migrate
|
11
|
+
run_task "db:migrate"
|
12
|
+
end
|
13
|
+
|
14
|
+
desc "seed", "seed the database with data from all extensions"
|
15
|
+
def seed
|
16
|
+
run_task "db:seed"
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def run_task(task)
|
22
|
+
Command.load_current_extension
|
23
|
+
require_relative "../rake_tasks"
|
24
|
+
Extensions.each do |ext|
|
25
|
+
Dir.chdir(ext.root_path) do
|
26
|
+
Rake::Task[task].invoke
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
Some use inst for db
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Lanes
|
2
|
+
module Command
|
3
|
+
|
4
|
+
class Generate < Thor
|
5
|
+
|
6
|
+
long_desc Command.usage_from_file("generate_model")
|
7
|
+
method_options( GenerateModel::OPTIONS )
|
8
|
+
register Command::GenerateModel, 'model', 'model [NAME] ...FIELDS', 'Creates a new model'
|
9
|
+
|
10
|
+
long_desc Command.usage_from_file("generate_screen")
|
11
|
+
method_options( GenerateScreen::OPTIONS )
|
12
|
+
register Command::GenerateScreen, 'screen', 'screen [NAME]', 'Creates a new Screen'
|
13
|
+
|
14
|
+
long_desc Command.usage_from_file("generate_view")
|
15
|
+
method_options( GenerateView::OPTIONS )
|
16
|
+
register Command::GenerateView, 'view', 'view [NAME]', 'Creates a new View'
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|