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
@@ -1,231 +0,0 @@
|
|
1
|
-
class ViewBase
|
2
|
-
|
3
|
-
model_events: {}
|
4
|
-
|
5
|
-
extended_properties: [
|
6
|
-
'subviews', 'events', 'model_events'
|
7
|
-
]
|
8
|
-
|
9
|
-
derived:
|
10
|
-
'$el':
|
11
|
-
deps: ['el'], fn: -> this.$()
|
12
|
-
|
13
|
-
root_view:
|
14
|
-
deps: ['parent'], fn: ->
|
15
|
-
view = this
|
16
|
-
while view.parent
|
17
|
-
view = view.parent
|
18
|
-
view
|
19
|
-
|
20
|
-
session:
|
21
|
-
ui: 'state'
|
22
|
-
parent: 'object'
|
23
|
-
pubSub: 'boolean'
|
24
|
-
|
25
|
-
template: (context)->
|
26
|
-
context.renderTemplateMethod('template')
|
27
|
-
|
28
|
-
constructor: (options={})->
|
29
|
-
if !options.ui && options.parent
|
30
|
-
view = options.parent
|
31
|
-
while view.parent
|
32
|
-
view = view.parent
|
33
|
-
options.ui = view.ui
|
34
|
-
|
35
|
-
Lanes.Vendor.Ampersand.View.apply(this, arguments)
|
36
|
-
if !this.pubSub? # if it's unset, not true/false; default to parent or true
|
37
|
-
this.pubSub = if this.parent?.pubSub? then this.parent.pubSub else true
|
38
|
-
this.on('change:parent', this._onParentSet)
|
39
|
-
this.on('change:model', this._onModelChange)
|
40
|
-
this.subViewId = options.subViewId;
|
41
|
-
this.initializeFormBindings() if @form_bindings
|
42
|
-
|
43
|
-
if @keyBindings
|
44
|
-
Lanes.View.Keys.add(this, @keyBindings, @keyScope)
|
45
|
-
|
46
|
-
if @pubSub
|
47
|
-
this._pubSub = new Lanes.View.PubSub(this)
|
48
|
-
|
49
|
-
_onParentSet: ->
|
50
|
-
if this.root_view.ui
|
51
|
-
this.ui = this.root_view.ui
|
52
|
-
|
53
|
-
unBindModel: (model)->
|
54
|
-
for event, fn of @model_events
|
55
|
-
model.off(event, this[fn], this )
|
56
|
-
|
57
|
-
bindModel: (model)->
|
58
|
-
for event, fn of @model_events
|
59
|
-
model.on(event, this[fn], this )
|
60
|
-
|
61
|
-
remove: ->
|
62
|
-
this.unBindModel( @model ) if @model
|
63
|
-
Lanes.View.Keys.remove(this, @key_bindings, @key_scope) if @key_bindings
|
64
|
-
super
|
65
|
-
|
66
|
-
initializeKeyBindings: ->
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
initializeFormBindings: ->
|
71
|
-
@_form_bindings = {}
|
72
|
-
for data, selector of @form_bindings
|
73
|
-
@_form_bindings[data] = new Lanes.View.FormBindings(this, data, selector)
|
74
|
-
|
75
|
-
setFieldsFromBindings: ->
|
76
|
-
binding.setAllFields() for name, binding of @_form_bindings
|
77
|
-
|
78
|
-
fireEvent: (name, args)->
|
79
|
-
evt = document.createEvent('CustomEvent')
|
80
|
-
evt.initCustomEvent(name, true, true, args )
|
81
|
-
this.el.dispatchEvent(evt)
|
82
|
-
|
83
|
-
prepareSubview: (el, options, identifier)->
|
84
|
-
options.view = this._subviewClass(options) unless _.isFunction(options.view)
|
85
|
-
args = { parent: this, el: el, subViewId: identifier }
|
86
|
-
view_arguments = if options.options
|
87
|
-
@resultsFor(options.options, identifier, options)
|
88
|
-
else
|
89
|
-
{}
|
90
|
-
for access in ['model','data']
|
91
|
-
args[access] = Lanes.getPath(options[access], this) if options[access]
|
92
|
-
if options.collection
|
93
|
-
args.view = options.view
|
94
|
-
args.viewOptions = view_arguments
|
95
|
-
args.collection = Lanes.getPath(options.collection, this)
|
96
|
-
new Lanes.Vendor.Ampersand.CollectionView(args)
|
97
|
-
else
|
98
|
-
new options.view( _.extend(args,view_arguments) )
|
99
|
-
|
100
|
-
viewpath: ''
|
101
|
-
|
102
|
-
detach: ->
|
103
|
-
this.el.parentNode.removeChild(this.el) if this.el.parentNode
|
104
|
-
|
105
|
-
renderTemplate:(name,data={})->
|
106
|
-
template = Lanes.Templates.find(name, @namespace)
|
107
|
-
if template
|
108
|
-
template(data)
|
109
|
-
else
|
110
|
-
Lanes.fatal( "Template #{name} doesn't exist!" )
|
111
|
-
|
112
|
-
renderTemplateMethod: (method)->
|
113
|
-
return '<span></span>' unless name = _.result(this, "#{method}Name")
|
114
|
-
this.renderTemplate(name, _.result(this, "#{method}Data") || @model)
|
115
|
-
|
116
|
-
subViewDefinition: ->
|
117
|
-
if ( definition = this.parent?.subviews?[ @subViewId ] )
|
118
|
-
definition
|
119
|
-
else
|
120
|
-
null
|
121
|
-
|
122
|
-
renderAllSubviews: ->
|
123
|
-
for name, options of this.subviews
|
124
|
-
selector = options.container || '[data-hook="' + options.hook + '"]'
|
125
|
-
this.renderSubview(this[name], selector) unless options.collection
|
126
|
-
|
127
|
-
withRenderContext: (fn)->
|
128
|
-
Lanes.View.RenderContext.push( @subViewId, @model )
|
129
|
-
try
|
130
|
-
returned = fn.apply(this,arguments)
|
131
|
-
catch e
|
132
|
-
Lanes.warn e
|
133
|
-
finally
|
134
|
-
Lanes.View.RenderContext.pop()
|
135
|
-
returned
|
136
|
-
|
137
|
-
renderContextFree: ->
|
138
|
-
previousClass = this.el?.className
|
139
|
-
Lanes.View.Base.__super__.render.apply(this, arguments)
|
140
|
-
if previousClass
|
141
|
-
this.$el.addClass( previousClass )
|
142
|
-
this.onRender?()
|
143
|
-
this
|
144
|
-
|
145
|
-
render: (options={})->
|
146
|
-
this.withRenderContext( this.renderContextFree )
|
147
|
-
|
148
|
-
$: (selector)->
|
149
|
-
if selector then Lanes.$(selector,this.el) else Lanes.$(this.el)
|
150
|
-
|
151
|
-
_onModelChange: (model)->
|
152
|
-
for name, definition of this.subviews
|
153
|
-
continue unless ( view = this[name] )
|
154
|
-
view.model = Lanes.getPath(definition.model, this) if definition.model
|
155
|
-
view.collection = Lanes.getPath(definition.collection, this) if definition.collection
|
156
|
-
old_model = this.previous(@keypath)
|
157
|
-
return if old_model == @model
|
158
|
-
this.unBindModel( old_model ) if old_model
|
159
|
-
this.bindModel( @model ) if @model
|
160
|
-
|
161
|
-
belongsToScreen: ->
|
162
|
-
view = this
|
163
|
-
while view and ! ( view instanceof Lanes.View.Screen )
|
164
|
-
view = view.parent
|
165
|
-
view
|
166
|
-
|
167
|
-
_subviewClass: (subview)->
|
168
|
-
klass = if subview.component
|
169
|
-
Lanes.getPath("Lanes.Component.#{subview.component}")
|
170
|
-
else if subview.view
|
171
|
-
if _.isString(subview.view)
|
172
|
-
Lanes.getPath(subview.view, "Lanes.View")# || Lanes.getPath("Lanes.View.#{subview.view}")
|
173
|
-
else
|
174
|
-
subview.view
|
175
|
-
Lanes.warn( "Unable to obtain view for %o", subview) if ! klass
|
176
|
-
klass
|
177
|
-
|
178
|
-
bindingWriteDefinition: (keypath, options)->
|
179
|
-
switch options.type
|
180
|
-
when 'booleanAttribute'
|
181
|
-
{
|
182
|
-
selector: "change #{options.selector}",
|
183
|
-
handler: (ev)->
|
184
|
-
[model, field] = Lanes.getModelPath(this,keypath)
|
185
|
-
model.set(field,ev.target.checked)
|
186
|
-
}
|
187
|
-
else
|
188
|
-
{}
|
189
|
-
|
190
|
-
cacheElements: (config)->
|
191
|
-
super
|
192
|
-
this
|
193
|
-
|
194
|
-
cacheJqElements: (config)->
|
195
|
-
this.cacheElements(config)
|
196
|
-
for key, _ of config
|
197
|
-
this[key] = Lanes.$(this[key])
|
198
|
-
this
|
199
|
-
|
200
|
-
@configureSubview: (name, subview)->
|
201
|
-
fn = if subview.prepareView
|
202
|
-
subview.prepareView
|
203
|
-
else
|
204
|
-
_.partial(this.prototype.prepareSubview, _, subview, name)
|
205
|
-
subview.hook=name if !subview.hook && !subview.container
|
206
|
-
subview.waitFor=(subview.model || subview.collection ) if ! subview.waitFor
|
207
|
-
subview.prepareView = (el)->
|
208
|
-
this.subViewIntances ||= {}
|
209
|
-
this.subViewIntances[name]=fn.call(this,el)
|
210
|
-
|
211
|
-
@extended: (klass)->
|
212
|
-
if views = klass.prototype.subviews
|
213
|
-
@configureSubview(name, definition) for name, definition of views
|
214
|
-
setupWritableBindings(klass.prototype) if klass.prototype.bindings
|
215
|
-
|
216
|
-
Lanes.lib.ModuleSupport.includeInto(@)
|
217
|
-
@include Lanes.lib.defer
|
218
|
-
@include Lanes.lib.debounce
|
219
|
-
@include Lanes.lib.results
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
setupWritableBindings=(klass)->
|
224
|
-
klass.events ||= {}
|
225
|
-
for keypath, options of klass.bindings
|
226
|
-
continue unless options.write
|
227
|
-
writeFn = ( klass.bindingWriteDefinition || ViewBase.prototype.bindingWriteDefinition )
|
228
|
-
definition = writeFn.call(klass, keypath, options)
|
229
|
-
klass.events[ definition.selector ] = definition.handler
|
230
|
-
|
231
|
-
Lanes.View.Base = Lanes.lib.MakeBaseClass( Lanes.Vendor.Ampersand.View, ViewBase )
|
@@ -1,30 +0,0 @@
|
|
1
|
-
Lanes.namespace( 'Screens' )
|
2
|
-
|
3
|
-
class Lanes.View.Screen extends Lanes.View.Base
|
4
|
-
|
5
|
-
namespace: "Screens"
|
6
|
-
|
7
|
-
mixins:[
|
8
|
-
Lanes.View.mixins.ScreenChangeListener
|
9
|
-
]
|
10
|
-
|
11
|
-
initializeChanges:->
|
12
|
-
@_changeListeners = {}
|
13
|
-
for keypath in ( @usingModels || ['model'] )
|
14
|
-
@_changeListeners[keypath] = new Lanes.View.ScreenChangeListener(this, keypath)
|
15
|
-
|
16
|
-
reset: Lanes.emptyFn
|
17
|
-
|
18
|
-
render: ->
|
19
|
-
previouslyRendered = this.rendered
|
20
|
-
Lanes.View.RenderContext.start(this)
|
21
|
-
# Lanes.re we cheat and skip ViewBase so it doesn't push to context
|
22
|
-
this.reset()
|
23
|
-
this.renderContextFree()
|
24
|
-
#Lanes.View.Base.__super__.render.apply(this, arguments)
|
25
|
-
this.renderAllSubviews() if previouslyRendered
|
26
|
-
Lanes.View.RenderContext.reset()
|
27
|
-
this
|
28
|
-
|
29
|
-
addButton: (config, align='left')->
|
30
|
-
this.$(".toolbar ." + align).append( Lanes.View.Helpers.button(config) )
|
@@ -1,33 +0,0 @@
|
|
1
|
-
class Lanes.View.LoginDialog extends Lanes.Component.ModalDialog
|
2
|
-
|
3
|
-
bodyTemplateName: 'workspace/login-dialog'
|
4
|
-
size: 'md'
|
5
|
-
title: 'Please sign in …'
|
6
|
-
|
7
|
-
events:
|
8
|
-
'click .btn-primary': 'onLogin'
|
9
|
-
|
10
|
-
buttons:
|
11
|
-
login: { label: 'Login', type: 'primary' }
|
12
|
-
|
13
|
-
initialize: (options)->
|
14
|
-
super
|
15
|
-
this.listenTo(Lanes.current_user, 'change:isLoggedIn', this.onUserChange)
|
16
|
-
this.onUserChange()
|
17
|
-
|
18
|
-
onUserChange: ->
|
19
|
-
this.toggleShown(!Lanes.current_user.isLoggedIn)
|
20
|
-
|
21
|
-
onLogin: (ev)->
|
22
|
-
msg = this.$('.alert').hide()
|
23
|
-
mask = new Lanes.View.TimedMask(this.$el, "Attempting Login …")
|
24
|
-
Lanes.Data.User.attemptLogin( this.query('#LoginField').value, this.query('#PasswordField').value, {
|
25
|
-
scope: this
|
26
|
-
success: ->
|
27
|
-
mask.displaySuccess("Login Success!")
|
28
|
-
error: (session,reply)->
|
29
|
-
msg.show().text(session.lastServerMessage )
|
30
|
-
mask.displayFailure(session.lastServerMessage)
|
31
|
-
})
|
32
|
-
|
33
|
-
onShown: -> this.query('.login').focus()
|
@@ -1,16 +0,0 @@
|
|
1
|
-
<div class="row">
|
2
|
-
<div style="display:none" class="alert alert-danger" role="alert"></div>
|
3
|
-
<div class="<%= h.grid_offsets(0,2) %> <%= h.grid_widths 12, 8%>">
|
4
|
-
<form role="form">
|
5
|
-
<div class="form-group">
|
6
|
-
<label for="LoginField">Login</label>
|
7
|
-
<input type="email" id="LoginField" value="admin" class="form-control login" placeholder="Enter Login">
|
8
|
-
</div>
|
9
|
-
<div class="form-group">
|
10
|
-
<label for="PasswordField">Password <a href="/sessions/forgot_password">(forgot password)</a></label>
|
11
|
-
<input type="password" id="PasswordField" value="password" class="form-control password" placeholder="Password">
|
12
|
-
</div>
|
13
|
-
|
14
|
-
</form>
|
15
|
-
</div>
|
16
|
-
</div>
|
@@ -1,21 +0,0 @@
|
|
1
|
-
class Lanes.Screens.UserEditScreen extends Lanes.Component.Grid.PopOverEditor
|
2
|
-
|
3
|
-
templateName: 'user-management/grid-popover-editor'
|
4
|
-
templateData: ->
|
5
|
-
{ columns: _.reject(this.grid.column_definitions,(f)-> f.field=='role_names') }
|
6
|
-
|
7
|
-
subviews:
|
8
|
-
roles:
|
9
|
-
component: 'SelectField'
|
10
|
-
model: 'model'
|
11
|
-
options: 'roleOptions'
|
12
|
-
|
13
|
-
roleOptions: ->
|
14
|
-
{ multiple: true, data: this.model.allRoles, mappings:{ title: 'name', selected: 'member' } }
|
15
|
-
|
16
|
-
persistFields: ->
|
17
|
-
super
|
18
|
-
@model.set({
|
19
|
-
role_names: _.pluck(this.$('select option:selected'), 'value'),
|
20
|
-
password: this.$('input[name=password]').val()
|
21
|
-
})
|
@@ -1,24 +0,0 @@
|
|
1
|
-
class Lanes.Screens.UserManagement extends Lanes.View.Screen
|
2
|
-
|
3
|
-
templateName: 'user-management/user-management'
|
4
|
-
|
5
|
-
subviews:
|
6
|
-
grid:
|
7
|
-
component: 'Grid'
|
8
|
-
options: 'gridOptions'
|
9
|
-
|
10
|
-
gridOptions: ->
|
11
|
-
{
|
12
|
-
record_query: new Lanes.Data.Query({
|
13
|
-
collection_class: Lanes.Data.User.Collection,
|
14
|
-
fields: [ 'login', 'name', 'email', 'role_names' ]
|
15
|
-
}),
|
16
|
-
editor_config: {
|
17
|
-
foo: 1
|
18
|
-
}
|
19
|
-
editing_controller: Lanes.Screens.UserEditScreen
|
20
|
-
selectionMode: 'single',
|
21
|
-
edit_records: true
|
22
|
-
add_records: true
|
23
|
-
delete_records: true
|
24
|
-
}
|
@@ -1,33 +0,0 @@
|
|
1
|
-
<form class="user-edit form-horizontal" role="form">
|
2
|
-
<% for field in @columns: %>
|
3
|
-
<div class="form-group">
|
4
|
-
<label for="field-<%= field.field %>" class="col-sm-3 control-label"><%= field.title %></label>
|
5
|
-
<div class="col-sm-9">
|
6
|
-
<input type="text" name="<%= field.field %>" class="form-control" id="field-<%= field.field %>" placeholder="">
|
7
|
-
</div>
|
8
|
-
</div>
|
9
|
-
<% end %>
|
10
|
-
|
11
|
-
<div class="form-group">
|
12
|
-
<label for="field-password" class="col-sm-3 control-label">Roles</label>
|
13
|
-
<div class="col-sm-9">
|
14
|
-
<div data-hook="roles"></div>
|
15
|
-
</div>
|
16
|
-
</div>
|
17
|
-
|
18
|
-
<div class="form-group">
|
19
|
-
<label for="field-password" class="col-sm-3 control-label">Password</label>
|
20
|
-
<div class="col-sm-9">
|
21
|
-
<input type="password" name="password" class="form-control" id="field-password" placeholder="">
|
22
|
-
</div>
|
23
|
-
</div>
|
24
|
-
|
25
|
-
<div class="buttons">
|
26
|
-
<button type="button" class="btn btn-default cancel">
|
27
|
-
<i class="icon-cancel-circle"> Cancel</i>
|
28
|
-
</button>
|
29
|
-
<button type="button" class="btn btn-primary save">
|
30
|
-
<i class="icon-save"> Save</i>
|
31
|
-
</button>
|
32
|
-
</div>
|
33
|
-
</form>
|
@@ -1,23 +0,0 @@
|
|
1
|
-
.modal-backdrop{
|
2
|
-
position: absolute;
|
3
|
-
}
|
4
|
-
|
5
|
-
.modal-dialog{
|
6
|
-
position: absolute;
|
7
|
-
top: 30px;
|
8
|
-
z-index: 28;
|
9
|
-
right: 5%;
|
10
|
-
left: 5%;
|
11
|
-
|
12
|
-
&.tiny {
|
13
|
-
height: 100%;
|
14
|
-
left: 0;
|
15
|
-
right: 0;
|
16
|
-
top: 0;
|
17
|
-
}
|
18
|
-
|
19
|
-
&.modal-lg{
|
20
|
-
width: 800px;
|
21
|
-
}
|
22
|
-
|
23
|
-
}
|
@@ -1,17 +0,0 @@
|
|
1
|
-
@import "fonts";
|
2
|
-
@import "vendor/bootstrap";
|
3
|
-
|
4
|
-
.lanes {
|
5
|
-
padding: 0px;
|
6
|
-
margin: 0px;
|
7
|
-
background-color: $body-bg;
|
8
|
-
position: relative;
|
9
|
-
min-height: 10px; // needs height for resizing sensor to function
|
10
|
-
@import "compoonents/all";
|
11
|
-
@import "plugins/all";
|
12
|
-
@import "layout";
|
13
|
-
@import "tabs";
|
14
|
-
@import "screens";
|
15
|
-
@import "forms";
|
16
|
-
@import "keybindings";
|
17
|
-
}
|
data/config/puma.rb
DELETED
data/db/seed.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
Lanes::DB::Seed.add do
|
2
|
-
|
3
|
-
# This could totes be better written
|
4
|
-
|
5
|
-
unless Lanes::User.exists?(1)
|
6
|
-
u = Lanes::User.new( name: "Administrator Tester", email: "admin-test@stockor.org",
|
7
|
-
login: "admin", role_names: ['administrator'] )
|
8
|
-
u.id = 1
|
9
|
-
u.password = "password"
|
10
|
-
u.save!
|
11
|
-
end
|
12
|
-
|
13
|
-
unless Lanes::User.exists?(2)
|
14
|
-
u = Lanes::User.new( name: "Accounting Tester", email: "accounting-test@stockor.org",
|
15
|
-
login: "accounting", role_names: ['accounting'] )
|
16
|
-
u.id = 2
|
17
|
-
u.password = "password"
|
18
|
-
u.save!
|
19
|
-
end
|
20
|
-
|
21
|
-
unless Lanes::User.exists?(3)
|
22
|
-
u = Lanes::User.new( name: "Customer Support Tester", email: "support-test@stockor.org",
|
23
|
-
login: "support", role_names: ['customer_support'] )
|
24
|
-
u.id = 3
|
25
|
-
u.password = "password"
|
26
|
-
u.save!
|
27
|
-
end
|
28
|
-
|
29
|
-
unless Lanes::User.exists?(4)
|
30
|
-
u = Lanes::User.new( name: "Purchasing Tester", email: "purchasing-test@stockor.org",
|
31
|
-
login: "purchasing", role_names: ['purchasing'] )
|
32
|
-
u.id = 4
|
33
|
-
u.password = "password"
|
34
|
-
u.save!
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|
data/foo/Gemfile
DELETED
data/foo/Guardfile
DELETED
data/foo/foo/Gemfile
DELETED
data/foo/foo/lib/foo.rb
DELETED
data/foo/lib/foo/version.rb
DELETED
data/foo/lib/foo.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
module Lanes
|
2
|
-
module Access
|
3
|
-
|
4
|
-
class LockedFields
|
5
|
-
|
6
|
-
@definitions = Hash.new{ |fields,klass|
|
7
|
-
fields[klass] = Hash.new{ |grants,field| grants[field] = [] }
|
8
|
-
}
|
9
|
-
class << self
|
10
|
-
|
11
|
-
# @param klass [Lanes::Model]
|
12
|
-
# @param field [Symbol]
|
13
|
-
# @param access_type [:read, :write]
|
14
|
-
# @return [Array<Role>] Roles that are allowed to access the field.
|
15
|
-
# An empty array indicates that the field is not locked and the Model
|
16
|
-
# should be used for determining access
|
17
|
-
def roles_needed_for(klass, attribute, access_type)
|
18
|
-
if @definitions.has_key?(klass) && @definitions[klass].has_key?(attribute)
|
19
|
-
@definitions[klass][attribute].each_with_object([]) do | grant, result |
|
20
|
-
result.push(grant[:role]) if grant[:only].nil? || grant[:only] == access_type
|
21
|
-
end
|
22
|
-
else
|
23
|
-
[]
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
# Lock a given class and attribute to a given role
|
28
|
-
# @param klass [Lanes::Model]
|
29
|
-
# @param field [Symbol]
|
30
|
-
# @param only [:read, :write]
|
31
|
-
def lock(klass, field, role, only=nil)
|
32
|
-
@definitions[klass][field] << { role: role, only: only }
|
33
|
-
end
|
34
|
-
|
35
|
-
def definitions
|
36
|
-
@definitions
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
41
|
-
|
42
|
-
end
|
43
|
-
end
|
data/lib/lanes/access/role.rb
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
# N.B. Keep in sync with js/user-extension/lanes/extensions/user-access/Roles.coffee
|
2
|
-
|
3
|
-
module Lanes
|
4
|
-
module Access
|
5
|
-
|
6
|
-
class Role
|
7
|
-
class_attribute :read, :write, :delete
|
8
|
-
|
9
|
-
def initialize(user)
|
10
|
-
@user = user
|
11
|
-
end
|
12
|
-
|
13
|
-
def can_read?(model)
|
14
|
-
read.include?(model)
|
15
|
-
end
|
16
|
-
|
17
|
-
def can_write?(model)
|
18
|
-
write.include?(model)
|
19
|
-
end
|
20
|
-
|
21
|
-
def can_delete?(model)
|
22
|
-
delete.include?(model)
|
23
|
-
end
|
24
|
-
|
25
|
-
class << self
|
26
|
-
def grant_global_access(klass,types=[:read,:write,:delete])
|
27
|
-
types = [*types]
|
28
|
-
descendants.each do | child |
|
29
|
-
types.each{ |type| child.send(type).push(klass) }
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def inherited(sub)
|
34
|
-
sub.read = []; sub.write = []; sub.delete = []
|
35
|
-
end
|
36
|
-
|
37
|
-
def grant( *klasses )
|
38
|
-
self.read.push( *klasses )
|
39
|
-
write.push( *klasses )
|
40
|
-
delete.push( *klasses )
|
41
|
-
end
|
42
|
-
|
43
|
-
def lock(klass, attribute)
|
44
|
-
LockedFields.lock( klass, attribute, self)
|
45
|
-
end
|
46
|
-
|
47
|
-
def lock_writes(klass, attribute)
|
48
|
-
LockedFields.lock( klass, attribute, self, :write)
|
49
|
-
end
|
50
|
-
|
51
|
-
def all_available
|
52
|
-
descendants.map{ |klass| klass.to_s.demodulize }
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
end
|
58
|
-
end
|