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,105 @@
|
|
1
|
+
require_relative 'model_attribute'
|
2
|
+
|
3
|
+
module Lanes
|
4
|
+
module Command
|
5
|
+
|
6
|
+
class GenerateModel < NamedCommand
|
7
|
+
RESERVED_YAML_KEYWORDS = %w(y yes n no true false on off null)
|
8
|
+
OPTIONS ||= {
|
9
|
+
timestamps: true,
|
10
|
+
parent: "Lanes::Model",
|
11
|
+
client_collection_parent: "Lanes.Data.Collection"
|
12
|
+
}
|
13
|
+
|
14
|
+
class_options OPTIONS
|
15
|
+
|
16
|
+
argument :fields, type: :array, default: []
|
17
|
+
|
18
|
+
attr_reader :file_name, :table_name
|
19
|
+
|
20
|
+
def set_variables
|
21
|
+
super
|
22
|
+
if name=~/::/
|
23
|
+
(@namespace,@name) = name.split("::")
|
24
|
+
else
|
25
|
+
@namespace = computed_namespace
|
26
|
+
end
|
27
|
+
@file_name = name.underscore
|
28
|
+
@table_name = namespace + "_" + name.tableize
|
29
|
+
end
|
30
|
+
|
31
|
+
def create_migration
|
32
|
+
migration = exising_migration || Time.now.utc.strftime("%Y%m%d%H%M%S") + "_create_#{table_name}.rb"
|
33
|
+
self.fields = fields.map{ |field| ModelAttribute.parse(field) }
|
34
|
+
template "db/create_table_migration.rb", "db/migrate/#{migration}"
|
35
|
+
end
|
36
|
+
|
37
|
+
def create_model
|
38
|
+
template "lib/namespace/model.rb", "lib/#{namespace}/#{file_name}.rb"
|
39
|
+
template "spec/namespace/model_spec.rb", "spec/#{namespace}/#{file_name}.rb"
|
40
|
+
template "spec/fixtures/namespace/model.yml", "spec/fixtures/#{namespace}/#{file_name}.yml"
|
41
|
+
end
|
42
|
+
|
43
|
+
def create_client
|
44
|
+
template "client/data/Model.coffee", \
|
45
|
+
"#{client_dir}/data/#{class_name}.coffee"
|
46
|
+
template "spec/client/data/ModelSpec.coffee", \
|
47
|
+
"spec/client/data/#{class_name}Spec.coffee"
|
48
|
+
end
|
49
|
+
|
50
|
+
def add_route
|
51
|
+
insert_into_file "config/routes.rb", before: "end" do
|
52
|
+
" resources #{namespace.camelize}::#{class_name}\n"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def fields_with_index
|
59
|
+
fields.select { |a| !a.reference? && a.has_index? }
|
60
|
+
end
|
61
|
+
|
62
|
+
def exising_migration
|
63
|
+
migrations = Pathname.glob("#{destination_root}/db/migrate/[0-9]*_create_#{table_name}.rb")
|
64
|
+
migrations.any? ? migrations.first.basename.to_s : nil
|
65
|
+
end
|
66
|
+
|
67
|
+
def computed_namespace
|
68
|
+
# find a file and directory with the same basename
|
69
|
+
entries = Dir.glob(self.destination_root + "/lib/*")
|
70
|
+
name = entries.detect{ |directory|
|
71
|
+
FileTest.directory?(directory) && entries.detect{ |file|
|
72
|
+
file == directory+".rb"
|
73
|
+
}
|
74
|
+
}
|
75
|
+
name ? File.basename(name).to_s : nil
|
76
|
+
end
|
77
|
+
|
78
|
+
def yaml_key_value(key, value)
|
79
|
+
if RESERVED_YAML_KEYWORDS.include?(key.downcase)
|
80
|
+
"'#{key}': #{value}"
|
81
|
+
else
|
82
|
+
"#{key}: #{value}"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def client_parent
|
87
|
+
if options[:parent] == 'Lanes::Model'
|
88
|
+
"Lanes.Data.Model"
|
89
|
+
else
|
90
|
+
"Lanes.#{namespace.camelize}.#{options[:parent]}"
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def max_field_length
|
95
|
+
@max_field_length ||= fields.map{|field|
|
96
|
+
field.name.length + ( field.reference? ? 3 : 0 )
|
97
|
+
}.max
|
98
|
+
end
|
99
|
+
|
100
|
+
def reference_fields
|
101
|
+
fields.select { |a| a.reference? }
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
Stubs out a new model. Pass the model name, either CamelCased or
|
2
|
+
under_scored, and an optional list of attribute pairs as arguments.
|
3
|
+
|
4
|
+
Attribute pairs are field:type arguments specifying the
|
5
|
+
model's attributes. Timestamps are added by default, so you don't have to
|
6
|
+
specify them by hand as 'created_at:datetime updated_at:datetime'.
|
7
|
+
|
8
|
+
You don't have to think up every attribute up front, but it helps to
|
9
|
+
sketch out a few so you can start working with the model immediately.
|
10
|
+
|
11
|
+
|
12
|
+
Available field types:
|
13
|
+
|
14
|
+
Are the same as ActiveRecord, to wit:
|
15
|
+
integer
|
16
|
+
primary_key
|
17
|
+
decimal
|
18
|
+
float
|
19
|
+
boolean
|
20
|
+
binary
|
21
|
+
string
|
22
|
+
text
|
23
|
+
date
|
24
|
+
time
|
25
|
+
datetime
|
26
|
+
references
|
27
|
+
|
28
|
+
Example:
|
29
|
+
|
30
|
+
When executed inside a project called "Blog":
|
31
|
+
|
32
|
+
`lanes generate model comments user:references subject:string{60} body:text`
|
33
|
+
|
34
|
+
Lanes will create:
|
35
|
+
|
36
|
+
Migration: db/migrate/XXX_create_comments.rb
|
37
|
+
Model: lib/blog/comment.rb
|
38
|
+
Model Spec: spec/comment_spec.rb
|
39
|
+
Fixtures: spec/fixtures/comments.yml
|
40
|
+
Client Model: client/data/Comment.coffee
|
41
|
+
Client Spec: spec/client/data/CommentSpec.coffee
|
42
|
+
|
43
|
+
The Ruby model will contain a `belongs_to` association to the User model,
|
44
|
+
and the Javascript model definition will also have an association defined.
|
45
|
+
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require_relative 'model_attribute'
|
2
|
+
|
3
|
+
module Lanes
|
4
|
+
module Command
|
5
|
+
|
6
|
+
class GenerateScreen < NamedCommand
|
7
|
+
OPTIONS = {
|
8
|
+
title: '',
|
9
|
+
description: '',
|
10
|
+
icon: '',
|
11
|
+
group_id: '',
|
12
|
+
model_class: '',
|
13
|
+
namespace: nil
|
14
|
+
}
|
15
|
+
class_options( OPTIONS )
|
16
|
+
|
17
|
+
def set_defaults
|
18
|
+
options[:title] = name.titleize if options[:title].blank?
|
19
|
+
end
|
20
|
+
|
21
|
+
def create_screen
|
22
|
+
template "lib/namespace/screen.rb", "lib/#{namespace}/#{name}_screen.rb"
|
23
|
+
template "client/screens/index.js", "#{client_dir}/screens/#{name}/index.js"
|
24
|
+
template "client/screens/styles.scss", "#{client_dir}/screens/#{name}/index.scss"
|
25
|
+
template "client/screens/Screen.coffee", "#{client_dir}/screens/#{name}/#{name.classify}.coffee"
|
26
|
+
template "client/screens/layout.html", "#{client_dir}/screens/#{name}/layout.html"
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
Create the bare-bones definition of a screen
|
2
|
+
|
3
|
+
Screens are a special type of view that have a few extra attributes.
|
4
|
+
Namely, they have a "title" attribute and can be hidden and shown.
|
5
|
+
|
6
|
+
They are dynamically loaded. Initially only the definition for the view
|
7
|
+
is available, and the css and javascript for the view is only loaded
|
8
|
+
when the view is first displayed.
|
9
|
+
|
10
|
+
If the "model-class" option is provided, the screen will only be
|
11
|
+
available to users who have read or write access to the given model.
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require_relative 'model_attribute'
|
2
|
+
|
3
|
+
module Lanes
|
4
|
+
module Command
|
5
|
+
|
6
|
+
class GenerateView < NamedCommand
|
7
|
+
OPTIONS ||= {
|
8
|
+
namespace: nil
|
9
|
+
}
|
10
|
+
class_options( OPTIONS )
|
11
|
+
|
12
|
+
def create_screen
|
13
|
+
template "client/views/View.coffee", "#{client_dir}/views/#{name.classify}.coffee"
|
14
|
+
template "client/views/template.html", "#{client_dir}/views/#{name.dasherize}.html"
|
15
|
+
template "spec/client/views/ViewSpec.coffee", \
|
16
|
+
"spec/client/views/#{class_name}Spec.coffee"
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
Stubs out a new View. Pass the view name, either CamelCased or
|
2
|
+
under_scored
|
3
|
+
|
4
|
+
When executed inside a project called "Blog":
|
5
|
+
|
6
|
+
`lanes generate view comment`
|
7
|
+
|
8
|
+
Lanes will create:
|
9
|
+
|
10
|
+
Client View: client/view/Comment.coffee
|
11
|
+
Template: client/view/comment.html
|
12
|
+
Spec: spec/client/view/CommentSpec.coffee
|
13
|
+
|
@@ -0,0 +1,188 @@
|
|
1
|
+
require 'active_support/time'
|
2
|
+
|
3
|
+
# This is a straight-up copy of railties/lib/rails/generators/generated_attribute.rb
|
4
|
+
|
5
|
+
module Lanes
|
6
|
+
module Command
|
7
|
+
class ModelAttribute # :nodoc:
|
8
|
+
INDEX_OPTIONS = %w(index uniq)
|
9
|
+
UNIQ_INDEX_OPTIONS = %w(uniq)
|
10
|
+
|
11
|
+
attr_accessor :name, :type
|
12
|
+
attr_reader :attr_options
|
13
|
+
attr_writer :index_name
|
14
|
+
|
15
|
+
class << self
|
16
|
+
def parse(column_definition)
|
17
|
+
name, type, has_index = column_definition.split(':')
|
18
|
+
|
19
|
+
# if user provided "name:index" instead of "name:string:index"
|
20
|
+
# type should be set blank so GeneratedAttribute's constructor
|
21
|
+
# could set it to :string
|
22
|
+
has_index, type = type, nil if INDEX_OPTIONS.include?(type)
|
23
|
+
|
24
|
+
type, attr_options = *parse_type_and_options(type)
|
25
|
+
type = type.to_sym if type
|
26
|
+
|
27
|
+
if type && reference?(type)
|
28
|
+
references_index = UNIQ_INDEX_OPTIONS.include?(has_index) ? { unique: true } : true
|
29
|
+
attr_options[:index] = references_index
|
30
|
+
end
|
31
|
+
|
32
|
+
new(name, type, has_index, attr_options)
|
33
|
+
end
|
34
|
+
|
35
|
+
def reference?(type)
|
36
|
+
[:references, :belongs_to].include? type
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
# parse possible attribute options like :limit for string/text/binary/integer, :precision/:scale for decimals or :polymorphic for references/belongs_to
|
42
|
+
# when declaring options curly brackets should be used
|
43
|
+
def parse_type_and_options(type)
|
44
|
+
case type
|
45
|
+
when /(string|text|binary|integer)\{(\d+)\}/
|
46
|
+
return $1, limit: $2.to_i
|
47
|
+
when /decimal\{(\d+)[,.-](\d+)\}/
|
48
|
+
return :decimal, precision: $1.to_i, scale: $2.to_i
|
49
|
+
when /(references|belongs_to)\{(.+)\}/
|
50
|
+
type = $1
|
51
|
+
provided_options = $2.split(/[,.-]/)
|
52
|
+
options = Hash[provided_options.map { |opt| [opt.to_sym, true] }]
|
53
|
+
return type, options
|
54
|
+
else
|
55
|
+
return type, {}
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def initialize(name, type=nil, index_type=false, attr_options={})
|
61
|
+
@name = name
|
62
|
+
@type = type || :string
|
63
|
+
@has_index = INDEX_OPTIONS.include?(index_type)
|
64
|
+
@has_uniq_index = UNIQ_INDEX_OPTIONS.include?(index_type)
|
65
|
+
@attr_options = attr_options
|
66
|
+
end
|
67
|
+
|
68
|
+
def field_type
|
69
|
+
@field_type ||= case type
|
70
|
+
when :integer then :number_field
|
71
|
+
when :float, :decimal then :text_field
|
72
|
+
when :time then :time_select
|
73
|
+
when :datetime, :timestamp then :datetime_select
|
74
|
+
when :date then :date_select
|
75
|
+
when :text then :text_area
|
76
|
+
when :boolean then :check_box
|
77
|
+
else
|
78
|
+
:text_field
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def default
|
83
|
+
@default ||= case type
|
84
|
+
when :integer then 1
|
85
|
+
when :float then 1.5
|
86
|
+
when :decimal then "9.99"
|
87
|
+
when :datetime, :timestamp, :time then Time.now.to_s(:db)
|
88
|
+
when :date then Date.today.to_s(:db)
|
89
|
+
when :string then name == "type" ? "" : "MyString"
|
90
|
+
when :text then "MyText"
|
91
|
+
when :boolean then false
|
92
|
+
when :references, :belongs_to then nil
|
93
|
+
else
|
94
|
+
""
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def plural_name
|
99
|
+
name.sub(/_id$/, '').pluralize
|
100
|
+
end
|
101
|
+
|
102
|
+
def singular_name
|
103
|
+
name.sub(/_id$/, '').singularize
|
104
|
+
end
|
105
|
+
|
106
|
+
def human_name
|
107
|
+
name.humanize
|
108
|
+
end
|
109
|
+
|
110
|
+
def index_name
|
111
|
+
@index_name ||= if polymorphic?
|
112
|
+
%w(id type).map { |t| "#{name}_#{t}" }
|
113
|
+
else
|
114
|
+
column_name
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
def column_name
|
119
|
+
@column_name ||= reference? ? "#{name}_id" : name
|
120
|
+
end
|
121
|
+
|
122
|
+
def foreign_key?
|
123
|
+
!!(name =~ /_id$/)
|
124
|
+
end
|
125
|
+
|
126
|
+
def reference?
|
127
|
+
self.class.reference?(type)
|
128
|
+
end
|
129
|
+
|
130
|
+
def polymorphic?
|
131
|
+
self.attr_options[:polymorphic]
|
132
|
+
end
|
133
|
+
|
134
|
+
def required?
|
135
|
+
self.attr_options[:required]
|
136
|
+
end
|
137
|
+
|
138
|
+
def has_index?
|
139
|
+
@has_index
|
140
|
+
end
|
141
|
+
|
142
|
+
def has_uniq_index?
|
143
|
+
@has_uniq_index
|
144
|
+
end
|
145
|
+
|
146
|
+
def password_digest?
|
147
|
+
name == 'password' && type == :digest
|
148
|
+
end
|
149
|
+
|
150
|
+
def inject_options
|
151
|
+
"".tap { |s| options_for_migration.each { |k,v| s << ", #{k}: #{v.inspect}" } }
|
152
|
+
end
|
153
|
+
|
154
|
+
def inject_index_options
|
155
|
+
has_uniq_index? ? ", unique: true" : ""
|
156
|
+
end
|
157
|
+
|
158
|
+
def options_for_migration
|
159
|
+
@attr_options.dup.tap do |options|
|
160
|
+
if required?
|
161
|
+
options.delete(:required)
|
162
|
+
options[:null] = false
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
def client_type
|
168
|
+
@client_type ||= case type
|
169
|
+
when :datetime then 'date'
|
170
|
+
when :integer then 'integer'
|
171
|
+
when :float then 'number'
|
172
|
+
when :text then 'string'
|
173
|
+
when :string then 'string'
|
174
|
+
when :boolean then 'boolean'
|
175
|
+
when :decimal then 'bigdec'
|
176
|
+
when :hstore then 'object'
|
177
|
+
when :references, :belongs_to then 'integer'
|
178
|
+
else 'any'
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
def belongs_to?
|
183
|
+
:belongs_to == type
|
184
|
+
end
|
185
|
+
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Lanes
|
2
|
+
module Command
|
3
|
+
|
4
|
+
class NamedCommand < Thor::Group
|
5
|
+
include Thor::Actions
|
6
|
+
|
7
|
+
argument :name
|
8
|
+
|
9
|
+
attr_reader :namespace, :class_name, :client_dir
|
10
|
+
|
11
|
+
def self.source_root
|
12
|
+
Pathname.new(__FILE__).dirname.join("templates")
|
13
|
+
end
|
14
|
+
|
15
|
+
def load_namespace
|
16
|
+
@namespace = options[:namespace] || Command.load_current_extension.identifier
|
17
|
+
raise Thor::Error("Unable to locate Lanes environment") unless @namespace
|
18
|
+
end
|
19
|
+
|
20
|
+
def set_variables
|
21
|
+
@class_name = name.classify
|
22
|
+
@client_dir = "client/#{namespace}"
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'guard'
|
2
|
+
|
3
|
+
module Lanes
|
4
|
+
module Command
|
5
|
+
|
6
|
+
class Server < Thor::Group
|
7
|
+
include Thor::Actions
|
8
|
+
|
9
|
+
class_option :port, type: :numeric
|
10
|
+
|
11
|
+
def launch
|
12
|
+
say "Launching testing server at http://localhost:8888/", :green
|
13
|
+
Guard.start
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
gem "guard-jasmine", github: "guard/guard-jasmine", branch: 'master'
|
4
|
+
gem "lanes", github: "argosity/lanes", branch: 'master'
|
5
|
+
|
6
|
+
# Uncomment to enable access control and user administration
|
7
|
+
# gem "lanes-access", github: "argosity/lanes-access", branch: 'master'
|
8
|
+
|
9
|
+
gem "rake"
|
10
|
+
gem 'puma'
|
File without changes
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
class Lanes.<%= namespace.camelize %>.Component.<%= class_name %> extends Lanes.Component.Base
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class <%= namespace.camelize %>.Data.<%= class_name %> extends <%= client_parent %>
|
2
|
+
|
3
|
+
api_path: '<%= name.downcase.pluralize.underscore.dasherize %>'
|
4
|
+
namespace: NAMESPACE
|
5
|
+
|
6
|
+
props:
|
7
|
+
<% fields.each do |field| -%>
|
8
|
+
<% if field.reference? -%>
|
9
|
+
<%= sprintf("%-#{max_field_length}s",field.name+'_id') %>: "<%= field.client_type %>"
|
10
|
+
<% else -%>
|
11
|
+
<%= sprintf("%-#{max_field_length}s",field.name) %>: "<%= field.client_type %>"
|
12
|
+
<% end -%>
|
13
|
+
<% end %>
|
14
|
+
<% if reference_fields.any? -%>
|
15
|
+
|
16
|
+
associations:
|
17
|
+
<% reference_fields.each do |field| -%>
|
18
|
+
<%= sprintf("%-#{max_field_length}s ",field.name) %>: { <%= field.belongs_to? ? 'model' : 'collection' -%>: "Lanes.<%= namespace.camelize %>.<%= field.name.camelize %>" }
|
19
|
+
<% end -%>
|
20
|
+
<% end -%>
|
21
|
+
|
22
|
+
class Lanes.<%= namespace.camelize %>.Data.<%= class_name %>Collection extends <%= options[:client_collection_parent] %>
|
23
|
+
|
24
|
+
model: Lanes.<%= namespace.camelize %>.Data.<%= class_name %>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
//=require_tree ./data
|
2
|
+
//=require_tree ./views
|
3
|
+
//=require_tree ./components
|
4
|
+
//=require ./Extension
|
5
|
+
|
6
|
+
/*
|
7
|
+
Files located in the above directories are part of the default
|
8
|
+
Javascript build and are downloaded to the client on the initial
|
9
|
+
request.
|
10
|
+
|
11
|
+
Accordingly, only essential files should be included here. Code that
|
12
|
+
relates to a screen should be placed in the "screens" directory,
|
13
|
+
where it will be loaded dynamically when the screen is displayed.
|
14
|
+
|
15
|
+
Alternatively, feel free to modify the require statements above to
|
16
|
+
only include the paths you need.
|
17
|
+
*/
|
@@ -0,0 +1 @@
|
|
1
|
+
/* Enter styles for your application in scss format here */
|
File without changes
|
File without changes
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class Create<%= namespace.camelize %><%= class_name.pluralize %> < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :<%= table_name %> do |t|
|
4
|
+
<% fields.each do |attribute| -%>
|
5
|
+
<% if attribute.password_digest? -%>
|
6
|
+
t.string :password_digest<%= attribute.inject_options %>
|
7
|
+
<% else -%>
|
8
|
+
t.<%= attribute.type %> :<%= attribute.name %><%= attribute.inject_options %>
|
9
|
+
<% end -%>
|
10
|
+
<% end -%>
|
11
|
+
<% if options[:timestamps] %>
|
12
|
+
t.timestamps null: false
|
13
|
+
<% end -%>
|
14
|
+
end
|
15
|
+
<% fields_with_index.each do |attribute| -%>
|
16
|
+
add_index :<%= table_name %>, :<%= attribute.index_name %><%= attribute.inject_index_options %>
|
17
|
+
<% end -%>
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
tmp/cache
|