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
@@ -9,6 +9,19 @@ CommonMethods = {
|
|
9
9
|
break
|
10
10
|
break if found != -1
|
11
11
|
found
|
12
|
+
|
13
|
+
|
14
|
+
destroyAll: (options={})->
|
15
|
+
success = options.success
|
16
|
+
_.extend( options, {
|
17
|
+
data: this.map( (model)-> { id: model.id } )
|
18
|
+
success: =>
|
19
|
+
for model in @models
|
20
|
+
model.trigger('destroy', model, model.collection, options)
|
21
|
+
success.apply(@,arguments) if success
|
22
|
+
})
|
23
|
+
Lanes.Data.Sync('delete', this, options)
|
24
|
+
|
12
25
|
}
|
13
26
|
|
14
27
|
class DataCollection
|
@@ -18,14 +31,19 @@ class DataCollection
|
|
18
31
|
@errors=[]
|
19
32
|
Lanes.Vendor.Ampersand.Collection.apply(this, arguments)
|
20
33
|
|
21
|
-
|
22
|
-
|
23
|
-
|
34
|
+
@fetch: (options)->
|
35
|
+
collection = new this
|
36
|
+
collection.fetch(options)
|
37
|
+
collection
|
38
|
+
|
24
39
|
fetch: (options={})->
|
25
40
|
@isLoaded = true
|
26
41
|
wrapRequest(this,options)
|
27
42
|
super(options).then => @
|
28
43
|
|
44
|
+
isLoaded:->
|
45
|
+
@isLoaded
|
46
|
+
|
29
47
|
ensureLoaded: ( callback )->
|
30
48
|
if ! @isLoaded && ! this.length
|
31
49
|
this.fetch({ success: callback })
|
@@ -33,6 +51,8 @@ class DataCollection
|
|
33
51
|
callback()
|
34
52
|
|
35
53
|
isDirty: ->
|
54
|
+
for model in @models
|
55
|
+
return true if model.isDirty()
|
36
56
|
false
|
37
57
|
|
38
58
|
parse:(resp)->
|
@@ -44,10 +64,18 @@ class DataCollection
|
|
44
64
|
)
|
45
65
|
|
46
66
|
url: ->
|
47
|
-
@model::urlRoot()
|
67
|
+
@model::urlRoot()
|
68
|
+
|
69
|
+
sync: Lanes.Data.Sync
|
48
70
|
|
49
|
-
|
50
|
-
Lanes.Data.Sync
|
71
|
+
save: (options)->
|
72
|
+
Lanes.Data.Sync('update', this, options)
|
73
|
+
|
74
|
+
dataForSave: (options)->
|
75
|
+
unsaved = []
|
76
|
+
for model in @models
|
77
|
+
unsaved.push( model.unsavedData() ) if model.isDirty()
|
78
|
+
unsaved
|
51
79
|
|
52
80
|
_prepareModel: (attrs, options={})->
|
53
81
|
options.collection = this;
|
@@ -97,6 +125,9 @@ class SubCollection
|
|
97
125
|
CommonMethods
|
98
126
|
]
|
99
127
|
|
128
|
+
url: ->
|
129
|
+
this.collection.url()
|
130
|
+
|
100
131
|
filter: ->
|
101
132
|
this._runFilters()
|
102
133
|
|
File without changes
|
@@ -1,8 +1,8 @@
|
|
1
1
|
class DataModel
|
2
2
|
isModel: true
|
3
3
|
|
4
|
-
constructor: (attrs,options)->
|
5
|
-
this._unsaved = if attrs then _.keys(attrs) else []
|
4
|
+
constructor: (attrs,options={})->
|
5
|
+
this._unsaved = if attrs and !options.xhr then _.keys(attrs) else []
|
6
6
|
super
|
7
7
|
this.on('change', this._recordUnsaved )
|
8
8
|
|
@@ -82,7 +82,7 @@ class DataModel
|
|
82
82
|
if _.isEmpty( needed )
|
83
83
|
options.success.call(scope, this ) if options.success
|
84
84
|
options.complete.call(scope,this ) if options.complete
|
85
|
-
return
|
85
|
+
return _.Promise.resolve(this)
|
86
86
|
else
|
87
87
|
options['include']=needed
|
88
88
|
this.fetch(options)
|
@@ -185,8 +185,7 @@ class DataModel
|
|
185
185
|
else
|
186
186
|
''
|
187
187
|
|
188
|
-
sync:
|
189
|
-
Lanes.Data.Sync.apply(this,arguments)
|
188
|
+
sync: Lanes.Data.Sync
|
190
189
|
|
191
190
|
_recordUnsaved: (record,options)->
|
192
191
|
attrs = this.changedAttributes()
|
@@ -230,19 +229,19 @@ setupStandardProps=(klass)->
|
|
230
229
|
klass.associations['updated_by'] ||= { model: 'Lanes.Data.User' }
|
231
230
|
|
232
231
|
copyServerResp = (record,resp)->
|
233
|
-
record.errors = resp
|
234
|
-
record.lastServerMessage = resp
|
232
|
+
record.errors = resp?.errors
|
233
|
+
record.lastServerMessage = resp?.message
|
235
234
|
{ record: record, response: resp }
|
236
235
|
|
237
236
|
wrapRequest = (record, options)->
|
238
237
|
error = options.error
|
239
238
|
success = options.success
|
240
|
-
options.promise = new
|
239
|
+
options.promise = new _.Promise( (resolve,reject)->
|
241
240
|
options.resolvePromise = resolve
|
242
241
|
options.rejectPromise = reject
|
243
242
|
)
|
244
243
|
options.error = (record, resp, req)->
|
245
|
-
options.rejectPromise( copyServerResp(record,resp.responseJSON) )
|
244
|
+
options.rejectPromise( copyServerResp(record,resp.responseJSON || {error: resp.responseText}) )
|
246
245
|
error?.apply(options.scope, arguments)
|
247
246
|
|
248
247
|
options.success = (record,resp,req)->
|
File without changes
|
File without changes
|
@@ -5,12 +5,15 @@ class ScreenView extends Lanes.Data.BasicModel
|
|
5
5
|
|
6
6
|
session:
|
7
7
|
active: ['boolean', true, false]
|
8
|
-
|
8
|
+
viewport: 'state'
|
9
9
|
|
10
10
|
derived:
|
11
11
|
view:
|
12
12
|
deps: ['screen'], fn: ->
|
13
|
-
|
13
|
+
if @screen?.viewModel?
|
14
|
+
new @screen.viewModel( screen: this.screen, viewport: this.viewport )
|
15
|
+
else
|
16
|
+
Lanes.warn("Undefined screen for #{this}")
|
14
17
|
|
15
18
|
initialize: (options)->
|
16
19
|
super
|
@@ -26,7 +29,7 @@ class ScreenView extends Lanes.Data.BasicModel
|
|
26
29
|
|
27
30
|
|
28
31
|
|
29
|
-
class
|
32
|
+
class ScreenDefinition extends Lanes.Data.BasicModel
|
30
33
|
|
31
34
|
session:
|
32
35
|
id: 'string'
|
@@ -42,28 +45,54 @@ class Screen extends Lanes.Data.BasicModel
|
|
42
45
|
derived:
|
43
46
|
model_type:
|
44
47
|
deps: ['model'], fn: ->
|
45
|
-
Lanes.
|
48
|
+
Lanes.getPath(this.model,"Lanes.Data")
|
46
49
|
|
47
50
|
initialize: ->
|
48
51
|
@views = []
|
49
52
|
|
50
|
-
_setDisplaying: (
|
51
|
-
@views.push( new ScreenView( screen: this,
|
53
|
+
_setDisplaying: (viewport)->
|
54
|
+
@views.push( new ScreenView( screen: this, viewport: viewport ) )
|
52
55
|
|
53
|
-
|
54
|
-
@viewModel ||= Lanes.
|
56
|
+
getScreen: ->
|
57
|
+
@viewModel ||= Lanes.getPath(this.view,"Lanes.Screens")
|
55
58
|
if @viewModel?
|
56
|
-
|
59
|
+
_.Promise.resolve(@viewMOdel)
|
57
60
|
else
|
58
|
-
this.
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
61
|
+
this.loadScreen()
|
62
|
+
|
63
|
+
loadScreen: ->
|
64
|
+
me=this
|
65
|
+
return new _.Promise( (resolve,reject)->
|
66
|
+
me.loading=true
|
67
|
+
Lanes.lib.Request(me.files)
|
68
|
+
.then ->
|
69
|
+
me.loading=false
|
70
|
+
me.viewModel = Lanes.getPath(me.view)
|
71
|
+
if me.viewModel then resolve(me.viewModel)
|
72
|
+
else reject("Screen #{me.view} not definied after file retrieval")
|
73
|
+
,(msg)->
|
74
|
+
Lanes.warn(msg)
|
75
|
+
me.loading=false
|
76
|
+
reject(msg)
|
77
|
+
)
|
78
|
+
|
79
|
+
|
80
|
+
display: (ui)->
|
81
|
+
this.getScreen().then => @_setDisplaying(ui)
|
82
|
+
|
83
|
+
# @viewModel ||= Lanes.Screens[this.view]
|
84
|
+
# if @viewModel?
|
85
|
+
# this._setDisplaying(ui)
|
86
|
+
# else
|
87
|
+
# this.loading=true
|
88
|
+
# Lanes.lib.Request(this.files)
|
89
|
+
# .then =>
|
90
|
+
# @viewModel = Lanes.Screens[this.view]
|
91
|
+
# @_setDisplaying(ui)
|
92
|
+
# @loading=false
|
93
|
+
# .catch (failures)=>
|
94
|
+
# @loading=false
|
95
|
+
# Lanes.warn(failures)
|
67
96
|
|
68
97
|
|
69
98
|
class ScreenViewSet extends Lanes.Data.BasicCollection
|
@@ -106,7 +135,7 @@ class ScreenViewSet extends Lanes.Data.BasicCollection
|
|
106
135
|
|
107
136
|
class ScreenSet extends Lanes.Data.BasicCollection
|
108
137
|
|
109
|
-
model:
|
138
|
+
model: ScreenDefinition
|
110
139
|
|
111
140
|
register: (spec)->
|
112
141
|
|
@@ -29,7 +29,7 @@ paramsMap = {
|
|
29
29
|
start : 's'
|
30
30
|
}
|
31
31
|
|
32
|
-
Lanes.Data.Sync = (method, model, options)->
|
32
|
+
Lanes.Data.Sync = (method, model, options={})->
|
33
33
|
|
34
34
|
query = {}
|
35
35
|
for key, value of options
|
@@ -48,10 +48,10 @@ Lanes.Data.Sync = (method, model, options)->
|
|
48
48
|
params.headers = {
|
49
49
|
X_CSRF_TOKEN: Lanes.Data.Config.csrf_token
|
50
50
|
}
|
51
|
-
|
52
|
-
if
|
53
|
-
params.
|
54
|
-
|
51
|
+
params.contentType = "application/json"
|
52
|
+
if options.data || _.contains(['create','update','patch'], method)
|
53
|
+
params.data = JSON.stringify( options.data || model.dataForSave(options) )
|
54
|
+
delete options.data
|
55
55
|
|
56
56
|
# Don't process data on a non-GET request.
|
57
57
|
#params.processData = false if params.type isnt "GET"
|
@@ -0,0 +1,46 @@
|
|
1
|
+
unless Lanes.Data.Roles
|
2
|
+
|
3
|
+
class Lanes.Data.Role extends Lanes.Data.BasicModel
|
4
|
+
props:
|
5
|
+
id: 'string'
|
6
|
+
name: 'string'
|
7
|
+
member: { type: 'boolean', default: false }
|
8
|
+
|
9
|
+
class Lanes.Data.Roles extends Lanes.Data.BasicCollection
|
10
|
+
model: Lanes.Data.Role
|
11
|
+
|
12
|
+
|
13
|
+
unless Lanes.Data.User
|
14
|
+
class Lanes.Data.User extends Lanes.Data.Model
|
15
|
+
|
16
|
+
constructor: (attributes,access)->
|
17
|
+
super
|
18
|
+
this.access_data = access
|
19
|
+
|
20
|
+
api_path: 'users'
|
21
|
+
derived:
|
22
|
+
roles:
|
23
|
+
fn: -> []
|
24
|
+
isLoggedIn:
|
25
|
+
fn: -> false
|
26
|
+
allRoles:
|
27
|
+
fn: -> new Lanes.Data.Roles
|
28
|
+
|
29
|
+
session:
|
30
|
+
access_data: 'object'
|
31
|
+
|
32
|
+
session:
|
33
|
+
id: "integer"
|
34
|
+
login: 'string'
|
35
|
+
name: 'string'
|
36
|
+
email: 'string'
|
37
|
+
role_names: 'array'
|
38
|
+
options: 'object'
|
39
|
+
password: 'string'
|
40
|
+
|
41
|
+
canRead: (model,field) -> true
|
42
|
+
canWrite: (model,field) -> true
|
43
|
+
canDelete: (model) -> true
|
44
|
+
|
45
|
+
unless Lanes.current_user
|
46
|
+
Lanes.current_user = new Lanes.Data.User
|
@@ -14,4 +14,9 @@ Lanes.Extensions = {
|
|
14
14
|
for identifier,data of bootstrap_data
|
15
15
|
instance.setBootstrapData(data) if instance = this.instances[identifier]
|
16
16
|
|
17
|
+
makeNamespace: (identifier)->
|
18
|
+
for ns in ['Data','Views','Controllers','Screens']
|
19
|
+
Lanes.ns("#{identifier}.#{ns}")
|
20
|
+
|
21
|
+
|
17
22
|
}
|
File without changes
|
@@ -0,0 +1,11 @@
|
|
1
|
+
//= require ./lib/noConflict
|
2
|
+
//= require ./vendor/modern-stack
|
3
|
+
//= require ./lib
|
4
|
+
//= require ./extension
|
5
|
+
//= require ./data
|
6
|
+
//= require ./plugins
|
7
|
+
//= require ./views
|
8
|
+
//= require ./screens
|
9
|
+
//= require ./components/Base
|
10
|
+
//= require ./components/enabled
|
11
|
+
//= require ./extension/LateLoaded
|
File without changes
|
File without changes
|
@@ -1,6 +1,3 @@
|
|
1
|
-
Lanes.namespace "Templates"
|
2
|
-
|
3
|
-
|
4
1
|
ns2path = (ns)->
|
5
2
|
ns.replace(".","/").toLowerCase()
|
6
3
|
|
@@ -13,13 +10,13 @@ Lanes.Templates.find = (name, namespace) ->
|
|
13
10
|
|
14
11
|
# scribbed from eco's compiler.coffee
|
15
12
|
# we include the functions here rather than on every single template
|
16
|
-
Lanes.
|
13
|
+
Lanes.Templates.Wrapper = {
|
17
14
|
|
18
15
|
sanitize: (value) ->
|
19
16
|
if value and value.HTMLSafe
|
20
17
|
value
|
21
18
|
else if typeof value isnt "undefined" and value?
|
22
|
-
Lanes.
|
19
|
+
Lanes.Templates.Wrapper.escape value
|
23
20
|
else
|
24
21
|
""
|
25
22
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,3 +1,7 @@
|
|
1
|
+
# inspiration from https://github.com/ramitos/lazyload/blob/master/src/lazyload.js
|
2
|
+
#
|
3
|
+
GECKO = /Gecko\//.test(navigator.userAgent)
|
4
|
+
|
1
5
|
class Loader
|
2
6
|
|
3
7
|
constructor: (urls,cb)->
|
@@ -36,10 +40,12 @@ class Loader
|
|
36
40
|
)
|
37
41
|
return fn(url, true) if exists
|
38
42
|
called = false
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
+
tag = "link" #if GECKO then "style" else "link"
|
44
|
+
node = _.el( tag,
|
45
|
+
type: "text/css"
|
46
|
+
href: url
|
47
|
+
media: "screen"
|
48
|
+
rel: "stylesheet"
|
43
49
|
)
|
44
50
|
|
45
51
|
onloaded=(success,err)->
|
@@ -48,15 +54,14 @@ class Loader
|
|
48
54
|
fn(url, success, err)
|
49
55
|
node.onload = ()-> onloaded(true,false)
|
50
56
|
node.onerror = (err)-> onloaded(false,err)
|
51
|
-
|
52
|
-
|
53
57
|
node.onreadystatechange = ->
|
54
58
|
return if not (/loaded|complete/.test(node.readyState)) or called
|
55
59
|
called=true
|
56
60
|
fn(url, true)
|
57
|
-
|
58
61
|
@head.appendChild node
|
59
|
-
|
62
|
+
# GECKO cannot query the node immediatly after it's created
|
63
|
+
if GECKO then _.delay(poll,250) else poll()
|
64
|
+
|
60
65
|
|
61
66
|
|
62
67
|
loadJS: (url, fn) ->
|
@@ -81,9 +86,9 @@ class Loader
|
|
81
86
|
this.body.appendChild(node)
|
82
87
|
|
83
88
|
|
84
|
-
Lanes.lib.
|
89
|
+
Lanes.lib.Request = (urls...)->
|
85
90
|
urls = urls[0] if urls.length == 1 && _.isArray(urls[0])
|
86
|
-
new
|
91
|
+
new _.Promise( (resolve,reject)->
|
87
92
|
new Loader(urls, (completed)->
|
88
93
|
failures = _.pick(completed, (status,url)-> !status.success )
|
89
94
|
if _.isEmpty(failures)
|
@@ -7,3 +7,6 @@ Lanes.namespace = (target, name, block) ->
|
|
7
7
|
top = target
|
8
8
|
target = target[item] or= {} for item in name.split '.'
|
9
9
|
block( target, top ) if typeof block == 'function'
|
10
|
+
|
11
|
+
for ns in ['Components', 'Data.Mixins', 'Views.Mixins', 'Screens', 'Vendor', 'Templates', 'Extensions','lib']
|
12
|
+
Lanes.namespace(ns)
|
File without changes
|
File without changes
|
@@ -5,11 +5,18 @@ Lanes.fatal = (args...)->
|
|
5
5
|
throw new Error(args...)
|
6
6
|
|
7
7
|
Lanes.warn = (msg...)->
|
8
|
-
|
8
|
+
return unless console
|
9
|
+
console.warn(msg...)
|
10
|
+
if msg[0] instanceof Error
|
11
|
+
console.warn(msg[0].stack)
|
12
|
+
else console.warn(msg...)
|
9
13
|
null
|
10
14
|
|
11
15
|
Lanes.log = (msg...)->
|
12
|
-
|
16
|
+
return unless console
|
17
|
+
if msg[0] instanceof Error
|
18
|
+
console.warn(msg[0].stack)
|
19
|
+
else console.log(msg...)
|
13
20
|
null
|
14
21
|
|
15
22
|
distillTypes = (type, ns)->
|
@@ -20,15 +27,12 @@ distillTypes = (type, ns)->
|
|
20
27
|
# or with ns being an object, which will dref name inside it
|
21
28
|
Lanes.getPath = ( name, ns='Lanes' ) ->
|
22
29
|
return name unless _.isString(name)
|
30
|
+
ns = "Lanes.#{ns}" if _.isString(ns) && !ns.match("Lanes")
|
23
31
|
if _.isObject(ns)
|
24
|
-
distillTypes(name,ns)
|
32
|
+
distillTypes(name,ns) || distillTypes(name, Lanes)
|
25
33
|
else
|
26
34
|
distillTypes(name,window) || distillTypes(name, distillTypes(ns, window))
|
27
35
|
|
28
|
-
Lanes.getModelPath = (scope,name)->
|
29
|
-
[model..., field] = name.split('.')
|
30
|
-
[ Lanes.getPath( model.join('.'), scope), field ]
|
31
|
-
|
32
36
|
_.mixin({
|
33
37
|
|
34
38
|
toSentence: (words=[], comma=', ', nd=' and ')->
|
@@ -40,12 +44,6 @@ _.mixin({
|
|
40
44
|
last
|
41
45
|
else
|
42
46
|
''
|
43
|
-
|
44
|
-
sprintfArray: (array, format)->
|
45
|
-
_.map( array, (field)->
|
46
|
-
_.sprintf( format, field )
|
47
|
-
)
|
48
|
-
|
49
47
|
evaluateFunction: (fn,args)->
|
50
48
|
if this.isFunction(fn) then fn(args) else fn
|
51
49
|
})
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
//= require_tree .
|
File without changes
|
File without changes
|
@@ -0,0 +1,40 @@
|
|
1
|
+
#= require ./ChangeListener
|
2
|
+
|
3
|
+
class ScreenBase
|
4
|
+
|
5
|
+
constructor: -> super
|
6
|
+
|
7
|
+
namespace: "Screens"
|
8
|
+
|
9
|
+
mixins:[
|
10
|
+
Lanes.Screens.ChangeListener
|
11
|
+
]
|
12
|
+
|
13
|
+
initializeChanges:->
|
14
|
+
@_changeListeners = {}
|
15
|
+
for keypath in ( @usingModels || ['model'] )
|
16
|
+
@_changeListeners[keypath] = new Lanes.Views.ScreenChangeListener(this, keypath)
|
17
|
+
|
18
|
+
reset: Lanes.emptyFn
|
19
|
+
|
20
|
+
template: ->
|
21
|
+
this.namespace.name.toLowerCase() + "/screens/" + this.constructor.name.toLowerCase() + "/layout";
|
22
|
+
|
23
|
+
render: ->
|
24
|
+
previouslyRendered = this.rendered
|
25
|
+
Lanes.Views.RenderContext.start(this)
|
26
|
+
# Lanes.re we cheat and skip ViewBase so it doesn't push to context
|
27
|
+
this.reset()
|
28
|
+
this.renderContextFree()
|
29
|
+
#Lanes.Views.Base.__super__.render.apply(this, arguments)
|
30
|
+
this.renderAllSubviews() if previouslyRendered
|
31
|
+
Lanes.Views.RenderContext.reset()
|
32
|
+
this
|
33
|
+
|
34
|
+
addButton: (config, align='left')->
|
35
|
+
this.$(".toolbar ." + align).append( Lanes.Views.Helpers.button(config) )
|
36
|
+
|
37
|
+
|
38
|
+
# By doing extending in this fashion, the class will appear as ScreenBase
|
39
|
+
# during debugging, allowing it to be easily identified
|
40
|
+
Lanes.Screens.Base = Lanes.Views.Base.extend( ScreenBase )
|
@@ -1,4 +1,4 @@
|
|
1
|
-
Lanes.
|
1
|
+
Lanes.Screens.ChangeListener = {
|
2
2
|
|
3
3
|
model_events:
|
4
4
|
'remote-update': 'onChange'
|
@@ -32,7 +32,7 @@ Lanes.View.mixins.ScreenChangeListener = {
|
|
32
32
|
@change_count += 1
|
33
33
|
|
34
34
|
bindModel: (model)->
|
35
|
-
Lanes.
|
35
|
+
Lanes.Views.Base.prototype.bindModel.call(this, model)
|
36
36
|
@changes.reset([])
|
37
37
|
@change_count = 0
|
38
38
|
|
@@ -0,0 +1 @@
|
|
1
|
+
//= require_tree .
|
File without changes
|