lanes 0.1.9 → 0.1.9.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/client/fonts/fontawesome-webfont.woff +0 -0
- data/client/fonts/fontawesome-webfont.woff2 +0 -0
- data/client/lanes/Boot.cjsx +9 -0
- data/client/lanes/access/Extension.coffee +18 -4
- data/client/lanes/access/LoginDialog.cjsx +78 -0
- data/client/lanes/access/Roles.coffee +22 -28
- data/client/lanes/access/User.coffee +16 -16
- data/client/lanes/access/index.js +4 -5
- data/client/lanes/access/screens/user-management/Editor.cjsx +20 -0
- data/client/lanes/access/screens/user-management/UserManagement.cjsx +41 -0
- data/client/lanes/access/screens/user-management/index.js +0 -1
- data/client/lanes/components/grid/EditingMixin.cjsx +64 -0
- data/client/lanes/components/grid/Grid.cjsx +139 -0
- data/client/lanes/components/grid/PopOverMixin.cjsx +28 -0
- data/client/lanes/components/grid/PopoverEditor.cjsx +8 -0
- data/client/lanes/components/grid/RowEditor.cjsx +10 -0
- data/client/lanes/components/grid/Toolbar.cjsx +14 -0
- data/client/lanes/components/grid/config.json +1 -1
- data/client/lanes/components/grid/editors.scss +94 -53
- data/client/lanes/components/grid/index.js +2 -7
- data/client/lanes/components/grid/styles.scss +8 -296
- data/client/lanes/components/helpers.coffee +2 -0
- data/client/lanes/components/index.js +2 -1
- data/client/lanes/components/modal/Modal.cjsx +36 -0
- data/client/lanes/components/modal/index.js +1 -2
- data/client/lanes/components/modal/styles.scss +0 -19
- data/client/lanes/components/record-finder/Clause.cjsx +80 -0
- data/client/lanes/components/record-finder/Dialog.cjsx +54 -0
- data/client/lanes/components/record-finder/RecordFinder.cjsx +38 -0
- data/client/lanes/components/record-finder/config.json +1 -1
- data/client/lanes/components/record-finder/index.js +1 -2
- data/client/lanes/components/request-spinner/index.js +1 -0
- data/client/lanes/components/select-field/SelectField.cjsx +78 -0
- data/client/lanes/components/select-field/index.js +2 -1
- data/client/lanes/components/select-field/styles.scss +1 -0
- data/client/lanes/components/shared/CountBadge.cjsx +9 -0
- data/client/lanes/components/shared/ErrorDisplay.cjsx +21 -0
- data/client/lanes/components/shared/FieldMixin.cjsx +71 -0
- data/client/lanes/components/shared/FieldSet.cjsx +58 -0
- data/client/lanes/components/shared/GenericField.cjsx +5 -0
- data/client/lanes/components/shared/Helpers.coffee +9 -0
- data/client/lanes/components/shared/RadioField.cjsx +14 -0
- data/client/lanes/components/shared/Resize.cjsx +152 -0
- data/client/lanes/components/shared/TextArea.cjsx +19 -0
- data/client/lanes/components/shared/TextField.cjsx +25 -0
- data/client/lanes/components/shared/Tooltip.cjsx +10 -0
- data/client/lanes/components/shared/fields.scss +35 -0
- data/client/lanes/components/shared/fieldset.scss +29 -0
- data/client/lanes/components/shared/index.js +3 -0
- data/client/lanes/components/shared/styles.scss +32 -0
- data/client/lanes/components/toolbar/RemoteChangeSets.cjsx +75 -0
- data/client/lanes/components/toolbar/SaveButton.cjsx +3 -0
- data/client/lanes/components/toolbar/Toolbar.cjsx +58 -0
- data/client/lanes/{workspace/styles → components/toolbar}/changes-notification.scss +10 -23
- data/client/lanes/components/toolbar/index.js +3 -0
- data/client/lanes/components/toolbar/styles.scss +51 -0
- data/client/lanes/extension/Extensions.coffee +19 -10
- data/client/lanes/extension/LateLoaded.js.erb +4 -3
- data/client/lanes/index.js +3 -5
- data/client/lanes/index.scss.erb +6 -14
- data/client/lanes/lib/HotReload.coffee +35 -0
- data/client/lanes/lib/MakeBaseClass.coffee +10 -11
- data/client/lanes/lib/development.coffee +3 -0
- data/client/lanes/lib/dom.coffee +49 -0
- data/client/lanes/lib/el.coffee +23 -0
- data/client/lanes/lib/index.js.erb +16 -0
- data/client/lanes/lib/loader.coffee +34 -34
- data/client/lanes/lib/namespace.coffee +1 -1
- data/client/lanes/lib/objToParam.coffee +37 -0
- data/client/lanes/{access/views/.gitkeep → lib/production.coffee} +0 -0
- data/client/lanes/lib/utilFunctions.coffee +44 -26
- data/client/lanes/models/AssociationMap.coffee +51 -38
- data/client/lanes/models/Base.coffee +89 -88
- data/client/lanes/models/ChangeMonitor.coffee +10 -10
- data/client/lanes/models/ChangeSet.coffee +14 -24
- data/client/lanes/models/Collection.coffee +40 -41
- data/client/lanes/models/PubSub.coffee +28 -19
- data/client/lanes/models/Query.coffee +78 -45
- data/client/lanes/models/QueryResults.coffee +93 -0
- data/client/lanes/models/ServerCache.coffee +12 -12
- data/client/lanes/models/Sync.coffee +53 -50
- data/client/lanes/models/User.coffee +31 -17
- data/client/lanes/react/Component.coffee +31 -0
- data/client/lanes/react/DefaultComponentNotFound.cjsx +9 -0
- data/client/lanes/{views → react}/FormBindings.coffee +0 -0
- data/client/lanes/{views → react}/ModelObserver.coffee +0 -0
- data/client/lanes/{views → react}/ModelUpdate.coffee +0 -0
- data/client/lanes/{views → react}/PubSub.coffee +0 -0
- data/client/lanes/react/Root.cjsx +14 -0
- data/client/lanes/react/Router.cjsx +18 -0
- data/client/lanes/react/Screen.coffee +15 -0
- data/client/lanes/{views → react}/TimedHighlight.coffee +0 -0
- data/client/lanes/{views → react}/TimedMask.coffee +0 -0
- data/client/lanes/react/TypeValidators.coffee +21 -0
- data/client/lanes/{lib/create-namespace.js → react/Utils.coffee} +0 -0
- data/client/lanes/react/Viewport.coffee +30 -0
- data/client/lanes/react/index.js +8 -0
- data/client/lanes/react/mixins/Access.coffee +27 -0
- data/client/lanes/react/mixins/Component.coffee +4 -0
- data/client/lanes/react/mixins/Data.coffee +136 -0
- data/client/lanes/react/mixins/MonitorSize.coffee +11 -0
- data/client/lanes/react/mixins/ReadEditingState.coffee +11 -0
- data/client/lanes/react/mixins/RelayEditingState.coffee +17 -0
- data/client/lanes/react/mixins/RelayFieldChange.coffee +11 -0
- data/client/lanes/react/mixins/Screen.coffee +7 -0
- data/client/lanes/react/mixins/Viewport.coffee +11 -0
- data/client/lanes/screens/ChangeListener.coffee +3 -3
- data/client/lanes/screens/Commands.coffee +27 -0
- data/client/lanes/screens/Definitions.coffee +74 -65
- data/client/lanes/screens/all.js.erb +1 -1
- data/client/lanes/screens/index.js +1 -2
- data/client/lanes/screens/mixins/index.js +0 -1
- data/client/lanes/screens/register.js.erb +0 -1
- data/client/lanes/screens/styles.scss +7 -0
- data/client/lanes/styles/bootstrap-custom-grid.scss +67 -37
- data/client/lanes/styles/bootstrap.scss +4 -5
- data/client/lanes/styles/fonts.scss +10 -23
- data/client/lanes/styles/fonts/_animated.scss +34 -0
- data/client/lanes/styles/fonts/_bordered-pulled.scss +16 -0
- data/client/lanes/styles/fonts/_core.scss +13 -0
- data/client/lanes/styles/fonts/_fixed-width.scss +6 -0
- data/client/lanes/styles/fonts/_icons.scss +596 -0
- data/client/lanes/styles/fonts/_larger.scss +13 -0
- data/client/lanes/styles/fonts/_list.scss +19 -0
- data/client/lanes/styles/fonts/_mixins.scss +27 -0
- data/client/lanes/styles/fonts/_path.scss +10 -0
- data/client/lanes/styles/fonts/_rotated-flipped.scss +20 -0
- data/client/lanes/styles/fonts/_stacked.scss +20 -0
- data/client/lanes/styles/fonts/_variables.scss +606 -0
- data/client/lanes/styles/fonts/font-awesome.scss +16 -0
- data/client/lanes/styles/fonts/index.scss +2 -0
- data/client/lanes/styles/global.scss +2 -0
- data/client/lanes/styles/global/fancy-header.scss +14 -0
- data/client/lanes/testing/BeforeEach.coffee +15 -40
- data/client/lanes/testing/Helpers.coffee +27 -0
- data/client/lanes/testing/ModelSaver.coffee +14 -24
- data/client/lanes/testing/StubRouter.coffee +27 -0
- data/client/lanes/testing/TestObjects.coffee +27 -0
- data/client/lanes/testing/index.js +3 -1
- data/client/lanes/vendor/base.js +85256 -0
- data/client/lanes/vendor/commons.js +20579 -0
- data/client/lanes/vendor/development.js +2511 -0
- data/client/lanes/vendor/grid.js +6689 -0
- data/client/lanes/vendor/grid.scss +387 -0
- data/client/lanes/vendor/index.js +3 -0
- data/client/lanes/vendor/message-bus.coffee +264 -0
- data/client/lanes/vendor/widgets.js +8798 -0
- data/client/lanes/vendor/widgets.scss +723 -0
- data/client/lanes/workspace/ActiveScreenSwitcher.cjsx +38 -0
- data/client/lanes/workspace/Extension.coffee +6 -0
- data/client/lanes/workspace/Layout.cjsx +28 -0
- data/client/lanes/workspace/Navbar.cjsx +25 -0
- data/client/lanes/workspace/ScreenView.cjsx +27 -0
- data/client/lanes/workspace/ScreensMenu.cjsx +57 -0
- data/client/lanes/workspace/UIState.coffee +17 -16
- data/client/lanes/workspace/index.js +7 -2
- data/client/lanes/workspace/styles.scss +0 -3
- data/client/lanes/workspace/styles/forms.scss +2 -73
- data/client/lanes/workspace/styles/header.scss +0 -2
- data/client/lanes/workspace/styles/layout.scss +9 -2
- data/client/lanes/workspace/styles/screens.scss +0 -59
- data/client/lanes/workspace/styles/tabs.scss +16 -15
- data/coffeelint.json +49 -0
- data/config.ru +1 -0
- data/config/database.yml +2 -2
- data/config/routes.rb +7 -0
- data/docs/command.md +11 -8
- data/docs/model.md +2 -5
- data/docs/react.md +137 -0
- data/lanes.gemspec +1 -0
- data/lib/lanes.rb +1 -1
- data/lib/lanes/access/authentication_provider.rb +1 -0
- data/lib/lanes/access/config/routes.rb +2 -0
- data/lib/lanes/access/config/screens.rb +15 -12
- data/lib/lanes/access/extension.rb +2 -1
- data/lib/lanes/access/role.rb +8 -4
- data/lib/lanes/api.rb +4 -3
- data/lib/lanes/api/coffeescript_processor.rb +47 -6
- data/lib/lanes/api/controller.rb +4 -3
- data/lib/lanes/api/default_routes.rb +16 -0
- data/lib/lanes/api/javascript_processor.rb +14 -68
- data/lib/lanes/api/pub_sub.rb +17 -3
- data/lib/lanes/api/request_wrapper.rb +2 -2
- data/lib/lanes/api/root.rb +16 -13
- data/lib/lanes/api/routing.rb +0 -18
- data/lib/lanes/api/sprockets_extension.rb +10 -4
- data/lib/lanes/api/test_specs.rb +3 -3
- data/lib/lanes/cli.rb +6 -1
- data/lib/lanes/command/app.rb +7 -11
- data/lib/lanes/command/generate.rb +3 -3
- data/lib/lanes/command/generate_component.rb +28 -0
- data/lib/lanes/command/generate_component.usage +11 -0
- data/lib/lanes/command/generate_screen.rb +24 -7
- data/lib/lanes/command/generate_screen.usage +5 -8
- data/lib/lanes/configuration.rb +3 -2
- data/lib/lanes/extension.rb +12 -18
- data/lib/lanes/extension/definition.rb +20 -8
- data/lib/lanes/guard_tasks.rb +22 -5
- data/lib/lanes/hot_reload_plugin.rb +47 -0
- data/lib/lanes/logger.rb +41 -5
- data/lib/lanes/screen.rb +40 -16
- data/lib/lanes/spec_helper.rb +6 -3
- data/lib/lanes/version.rb +1 -1
- data/lib/lanes/workspace/extension.rb +1 -0
- data/npm-build/{template.js → base.js} +17 -17
- data/{client/lanes/workspace/tab.html → npm-build/common.js} +0 -0
- data/npm-build/compile.coffee +13 -4
- data/npm-build/development.js +7 -0
- data/npm-build/grid.js +11 -0
- data/npm-build/package.json +62 -58
- data/npm-build/react-widgets.js +5 -0
- data/npm-build/react-widgets.less +35 -0
- data/npm-build/webpack.config.js +39 -0
- data/spec/command-reference-files/component/client/appy-app/components/Big.cjsx +4 -0
- data/spec/command-reference-files/component/spec/appy-app/components/BigSpec.coffee +5 -0
- data/spec/command-reference-files/initial/.rubocop.yml +7 -0
- data/spec/command-reference-files/initial/Gemfile +1 -1
- data/spec/command-reference-files/initial/client/appy-app/Extension.coffee +17 -5
- data/spec/command-reference-files/initial/client/appy-app/components/Base.coffee +9 -0
- data/spec/command-reference-files/initial/client/appy-app/index.js +1 -3
- data/spec/command-reference-files/initial/client/appy-app/screens/Base.coffee +8 -2
- data/spec/command-reference-files/initial/coffeelint.json +49 -0
- data/spec/command-reference-files/initial/config.ru +2 -0
- data/spec/command-reference-files/initial/config/screens.rb +10 -0
- data/spec/command-reference-files/initial/lib/appy-app/extension.rb +7 -0
- data/spec/command-reference-files/model/client/appy-app/models/TestTest.coffee +0 -1
- data/spec/command-reference-files/screen/client/appy-app/Extension.coffee +34 -0
- data/spec/command-reference-files/screen/client/appy-app/screens/ready-set-go/ReadySetGo.cjsx +7 -0
- data/spec/command-reference-files/screen/config/screens.rb +19 -9
- data/spec/command-reference-files/screen/spec/appy-app/screens/ready-set-go/ReadySetGoSpec.coffee +3 -3
- data/spec/lanes/components/grid/GridSpec.coffee +26 -26
- data/spec/lanes/models/AssociationMapSpec.coffee +6 -6
- data/spec/lanes/models/BaseSpec.coffee +24 -35
- data/spec/lanes/models/CollectionSpec.coffee +19 -18
- data/spec/lanes/models/EnumMapSpec.coffee +1 -1
- data/spec/lanes/models/PubSubSpec.coffee +17 -15
- data/spec/lanes/models/SyncSpec.coffee +28 -0
- data/spec/lanes/models/UserSpec.coffee +17 -0
- data/spec/lanes/react/mixins/DataSpec.coffee +72 -0
- data/spec/lanes/screens/DefinitionsSpec.coffee +33 -0
- data/spec/lanes/views/BaseSpec.coffee +133 -133
- data/spec/lanes/views/FormBindingsSpec.coffee +30 -30
- data/spec/server/api/coffeescript_processor_spec.rb +2 -2
- data/spec/server/command_spec.rb +3 -3
- data/templates/client/Extension.coffee +17 -5
- data/templates/client/components/BaseComponent.coffee +9 -0
- data/templates/client/components/Component.cjsx +4 -0
- data/templates/client/{views → components}/template.html +0 -0
- data/templates/client/index.js +1 -3
- data/templates/client/models/Model.coffee +0 -1
- data/templates/client/screens/BaseScreen.coffee +9 -0
- data/templates/client/screens/Screen.cjsx +7 -0
- data/templates/config.ru +2 -0
- data/templates/config/screen.rb +10 -10
- data/templates/config/screens.rb +10 -0
- data/templates/lib/namespace/extension.rb +7 -0
- data/templates/spec/client/Screen.coffee +4 -4
- data/templates/spec/client/components/ComponentSpec.coffee +5 -0
- metadata +157 -201
- data/client/fonts/lanes/icomoon.eot +0 -0
- data/client/fonts/lanes/icomoon.svg +0 -160
- data/client/fonts/lanes/icomoon.ttf +0 -0
- data/client/fonts/lanes/icomoon.woff +0 -0
- data/client/fonts/lanes/selection.json +0 -3565
- data/client/lanes/Boot.coffee +0 -50
- data/client/lanes/access/LoginDialog.coffee +0 -46
- data/client/lanes/access/login-dialog.html +0 -16
- data/client/lanes/access/screens/user-management/GridUserEditor.coffee +0 -26
- data/client/lanes/access/screens/user-management/UserManagement.coffee +0 -23
- data/client/lanes/access/screens/user-management/grid-popover-editor.html +0 -33
- data/client/lanes/access/screens/user-management/screen.html +0 -7
- data/client/lanes/components/Base.coffee +0 -39
- data/client/lanes/components/ChoicesInput.coffee +0 -47
- data/client/lanes/components/grid/Editor.coffee +0 -62
- data/client/lanes/components/grid/Grid.coffee +0 -205
- data/client/lanes/components/grid/PopOverEditor.coffee +0 -29
- data/client/lanes/components/grid/RowEditor.coffee +0 -30
- data/client/lanes/components/grid/popover-editor.html +0 -18
- data/client/lanes/components/grid/row-editor.html +0 -16
- data/client/lanes/components/grid/template.html +0 -4
- data/client/lanes/components/grid/vendor/dataTables.scroller.js +0 -1262
- data/client/lanes/components/grid/vendor/index.js +0 -2
- data/client/lanes/components/grid/vendor/jquery.dataTables.js +0 -14839
- data/client/lanes/components/modal/ModalDialog.coffee +0 -68
- data/client/lanes/components/modal/template.html +0 -18
- data/client/lanes/components/multi-select/MultiSelect.coffee +0 -65
- data/client/lanes/components/popover/PopOver.coffee +0 -55
- data/client/lanes/components/popover/index.js +0 -2
- data/client/lanes/components/popover/styles.scss +0 -2
- data/client/lanes/components/popover/template.html +0 -5
- data/client/lanes/components/radio-group/RadioGroup.coffee +0 -47
- data/client/lanes/components/radio-group/index.js +0 -1
- data/client/lanes/components/radio-group/styles.scss +0 -1
- data/client/lanes/components/record-finder/Clause.coffee +0 -37
- data/client/lanes/components/record-finder/Dialog.coffee +0 -45
- data/client/lanes/components/record-finder/RecordFinder.coffee +0 -61
- data/client/lanes/components/record-finder/clause.html +0 -37
- data/client/lanes/components/record-finder/dialog.html +0 -4
- data/client/lanes/components/record-finder/field.html +0 -8
- data/client/lanes/components/select-field/SelectField.coffee +0 -63
- data/client/lanes/components/select2/Select2.coffee +0 -8
- data/client/lanes/components/select2/index.js +0 -2
- data/client/lanes/lib/Templates.coffee +0 -51
- data/client/lanes/lib/debounce.coffee +0 -15
- data/client/lanes/lib/defer.coffee +0 -7
- data/client/lanes/lib/el.js +0 -115
- data/client/lanes/lib/index.js +0 -5
- data/client/lanes/plugins/overlay.coffee +0 -41
- data/client/lanes/screens/Base.coffee +0 -35
- data/client/lanes/screens/Router.coffee +0 -4
- data/client/lanes/screens/mixins/Editing.coffee +0 -38
- data/client/lanes/styles/bootstrap/old/_alerts.scss +0 -68
- data/client/lanes/styles/bootstrap/old/_badges.scss +0 -57
- data/client/lanes/styles/bootstrap/old/_breadcrumbs.scss +0 -26
- data/client/lanes/styles/bootstrap/old/_button-groups.scss +0 -240
- data/client/lanes/styles/bootstrap/old/_buttons.scss +0 -157
- data/client/lanes/styles/bootstrap/old/_carousel.scss +0 -243
- data/client/lanes/styles/bootstrap/old/_close.scss +0 -35
- data/client/lanes/styles/bootstrap/old/_code.scss +0 -68
- data/client/lanes/styles/bootstrap/old/_component-animations.scss +0 -35
- data/client/lanes/styles/bootstrap/old/_dropdowns.scss +0 -215
- data/client/lanes/styles/bootstrap/old/_forms.scss +0 -538
- data/client/lanes/styles/bootstrap/old/_glyphicons.scss +0 -237
- data/client/lanes/styles/bootstrap/old/_grid.scss +0 -84
- data/client/lanes/styles/bootstrap/old/_input-groups.scss +0 -166
- data/client/lanes/styles/bootstrap/old/_jumbotron.scss +0 -48
- data/client/lanes/styles/bootstrap/old/_labels.scss +0 -66
- data/client/lanes/styles/bootstrap/old/_list-group.scss +0 -132
- data/client/lanes/styles/bootstrap/old/_media.scss +0 -56
- data/client/lanes/styles/bootstrap/old/_mixins.scss +0 -39
- data/client/lanes/styles/bootstrap/old/_modals.scss +0 -150
- data/client/lanes/styles/bootstrap/old/_navbar.scss +0 -659
- data/client/lanes/styles/bootstrap/old/_navs.scss +0 -242
- data/client/lanes/styles/bootstrap/old/_normalize.scss +0 -425
- data/client/lanes/styles/bootstrap/old/_pager.scss +0 -55
- data/client/lanes/styles/bootstrap/old/_pagination.scss +0 -88
- data/client/lanes/styles/bootstrap/old/_panels.scss +0 -243
- data/client/lanes/styles/bootstrap/old/_popovers.scss +0 -133
- data/client/lanes/styles/bootstrap/old/_print.scss +0 -101
- data/client/lanes/styles/bootstrap/old/_progress-bars.scss +0 -105
- data/client/lanes/styles/bootstrap/old/_responsive-embed.scss +0 -34
- data/client/lanes/styles/bootstrap/old/_responsive-utilities.scss +0 -174
- data/client/lanes/styles/bootstrap/old/_scaffolding.scss +0 -150
- data/client/lanes/styles/bootstrap/old/_tables.scss +0 -233
- data/client/lanes/styles/bootstrap/old/_theme.scss +0 -258
- data/client/lanes/styles/bootstrap/old/_thumbnails.scss +0 -38
- data/client/lanes/styles/bootstrap/old/_tooltip.scss +0 -95
- data/client/lanes/styles/bootstrap/old/_type.scss +0 -304
- data/client/lanes/styles/bootstrap/old/_utilities.scss +0 -57
- data/client/lanes/styles/bootstrap/old/_variables.scss +0 -850
- data/client/lanes/styles/bootstrap/old/_wells.scss +0 -29
- data/client/lanes/styles/bootstrap/old/bootstrap.scss +0 -50
- data/client/lanes/styles/bootstrap/old/mixins/_alerts.scss +0 -14
- data/client/lanes/styles/bootstrap/old/mixins/_background-variant.scss +0 -11
- data/client/lanes/styles/bootstrap/old/mixins/_border-radius.scss +0 -18
- data/client/lanes/styles/bootstrap/old/mixins/_buttons.scss +0 -50
- data/client/lanes/styles/bootstrap/old/mixins/_center-block.scss +0 -7
- data/client/lanes/styles/bootstrap/old/mixins/_clearfix.scss +0 -22
- data/client/lanes/styles/bootstrap/old/mixins/_forms.scss +0 -84
- data/client/lanes/styles/bootstrap/old/mixins/_gradients.scss +0 -58
- data/client/lanes/styles/bootstrap/old/mixins/_grid-framework.scss +0 -81
- data/client/lanes/styles/bootstrap/old/mixins/_grid.scss +0 -122
- data/client/lanes/styles/bootstrap/old/mixins/_hide-text.scss +0 -21
- data/client/lanes/styles/bootstrap/old/mixins/_image.scss +0 -34
- data/client/lanes/styles/bootstrap/old/mixins/_labels.scss +0 -12
- data/client/lanes/styles/bootstrap/old/mixins/_list-group.scss +0 -31
- data/client/lanes/styles/bootstrap/old/mixins/_nav-divider.scss +0 -10
- data/client/lanes/styles/bootstrap/old/mixins/_nav-vertical-align.scss +0 -9
- data/client/lanes/styles/bootstrap/old/mixins/_opacity.scss +0 -8
- data/client/lanes/styles/bootstrap/old/mixins/_pagination.scss +0 -23
- data/client/lanes/styles/bootstrap/old/mixins/_panels.scss +0 -24
- data/client/lanes/styles/bootstrap/old/mixins/_progress-bar.scss +0 -10
- data/client/lanes/styles/bootstrap/old/mixins/_reset-filter.scss +0 -8
- data/client/lanes/styles/bootstrap/old/mixins/_resize.scss +0 -6
- data/client/lanes/styles/bootstrap/old/mixins/_responsive-visibility.scss +0 -21
- data/client/lanes/styles/bootstrap/old/mixins/_size.scss +0 -10
- data/client/lanes/styles/bootstrap/old/mixins/_tab-focus.scss +0 -9
- data/client/lanes/styles/bootstrap/old/mixins/_table-row.scss +0 -28
- data/client/lanes/styles/bootstrap/old/mixins/_text-emphasis.scss +0 -11
- data/client/lanes/styles/bootstrap/old/mixins/_text-overflow.scss +0 -8
- data/client/lanes/styles/bootstrap/old/mixins/_vendor-prefixes.scss +0 -219
- data/client/lanes/styles/font-definitions.scss +0 -451
- data/client/lanes/testing/TestModels.coffee +0 -23
- data/client/lanes/vendor/bootstrap/affix.js +0 -162
- data/client/lanes/vendor/bootstrap/alert.js +0 -94
- data/client/lanes/vendor/bootstrap/button.js +0 -116
- data/client/lanes/vendor/bootstrap/carousel.js +0 -240
- data/client/lanes/vendor/bootstrap/collapse.js +0 -211
- data/client/lanes/vendor/bootstrap/dropdown.js +0 -161
- data/client/lanes/vendor/bootstrap/modal.js +0 -324
- data/client/lanes/vendor/bootstrap/popover.js +0 -119
- data/client/lanes/vendor/bootstrap/scrollspy.js +0 -175
- data/client/lanes/vendor/bootstrap/tab.js +0 -153
- data/client/lanes/vendor/bootstrap/tooltip.js +0 -478
- data/client/lanes/vendor/bootstrap/transition.js +0 -59
- data/client/lanes/vendor/message-bus.js +0 -285
- data/client/lanes/vendor/modern-stack.js +0 -27
- data/client/lanes/vendor/packaged.js +0 -19533
- data/client/lanes/views/Assets.coffee +0 -9
- data/client/lanes/views/Base.coffee +0 -426
- data/client/lanes/views/Functions.coffee +0 -13
- data/client/lanes/views/Helpers.coffee +0 -76
- data/client/lanes/views/Keys.coffee +0 -59
- data/client/lanes/views/RenderContext.coffee +0 -32
- data/client/lanes/views/SaveNotify.coffee +0 -32
- data/client/lanes/views/Viewport.coffee +0 -18
- data/client/lanes/views/_button.html +0 -3
- data/client/lanes/views/_toolbar.html +0 -23
- data/client/lanes/views/empty-span.html +0 -1
- data/client/lanes/views/index.js +0 -2
- data/client/lanes/views/model-update.html +0 -15
- data/client/lanes/workspace/ActiveScreensSwitcher.coffee +0 -112
- data/client/lanes/workspace/Layout.coffee +0 -29
- data/client/lanes/workspace/Navbar.coffee +0 -31
- data/client/lanes/workspace/Pages.coffee +0 -39
- data/client/lanes/workspace/ScreensMenu.coffee +0 -126
- data/client/lanes/workspace/WorkspaceView.coffee +0 -8
- data/client/lanes/workspace/layout.html +0 -4
- data/client/lanes/workspace/menu.html +0 -356
- data/client/lanes/workspace/menu_toggle.html +0 -9
- data/client/lanes/workspace/navbar.html +0 -17
- data/client/lanes/workspace/pages.html +0 -6
- data/client/lanes/workspace/screens-menu.html +0 -11
- data/client/lanes/workspace/screens-switcher.html +0 -7
- data/docs/view.md +0 -292
- data/lib/lanes/command/generate_view.rb +0 -38
- data/lib/lanes/command/generate_view.usage +0 -13
- data/spec/command-reference-files/initial/client/appy-app/Router.coffee +0 -4
- data/spec/command-reference-files/initial/client/appy-app/controllers/.gitkeep +0 -0
- data/spec/command-reference-files/initial/client/appy-app/views/.gitkeep +0 -0
- data/spec/command-reference-files/initial/client/appy-app/views/Base.coffee +0 -5
- data/spec/command-reference-files/initial/spec/appy-app/screens/Base.coffee +0 -5
- data/spec/command-reference-files/screen/client/appy-app/screens/ready-set-go/ReadySetGo.coffee +0 -6
- data/spec/command-reference-files/screen/client/appy-app/screens/ready-set-go/layout.html +0 -3
- data/spec/command-reference-files/view/client/appy-app/views/BigView.coffee +0 -10
- data/spec/command-reference-files/view/spec/appy-app/views/BigViewSpec.coffee +0 -5
- data/templates/client/Router.coffee +0 -4
- data/templates/client/components/Component.coffee +0 -1
- data/templates/client/screens/Base.coffee +0 -3
- data/templates/client/screens/Screen.coffee +0 -11
- data/templates/client/screens/layout.html +0 -3
- data/templates/client/views/.gitkeep +0 -0
- data/templates/client/views/BaseView.coffee +0 -5
- data/templates/client/views/View.coffee +0 -10
- data/templates/spec/client/views/ViewSpec.coffee +0 -5
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
.header-top {
|
6
6
|
|
7
|
-
|
7
|
+
|
8
8
|
.menu-container {
|
9
9
|
position:absolute;
|
10
10
|
left: 0;
|
@@ -16,16 +16,18 @@
|
|
16
16
|
transition: all 0.15s ease-in-out 0s;
|
17
17
|
overflow-x: visible;
|
18
18
|
overflow-y: auto;
|
19
|
-
left:
|
19
|
+
left: 215px;
|
20
20
|
right: 35px;
|
21
21
|
}
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
23
|
+
.screens-menu-toggle {
|
24
|
+
margin-left: 20px;
|
25
|
+
.icon {
|
26
|
+
@extend .icon;
|
27
|
+
@extend .icon-navicon;
|
28
|
+
@extend .icon-rotate-90;
|
29
|
+
}
|
30
|
+
}
|
29
31
|
|
30
32
|
.active-screens {
|
31
33
|
display: inline-block;
|
@@ -47,7 +49,6 @@
|
|
47
49
|
left:0px;
|
48
50
|
top: 1px;
|
49
51
|
min-width:3000px;
|
50
|
-
/* margin-left:12px; */
|
51
52
|
margin-top:0px;
|
52
53
|
|
53
54
|
li {
|
@@ -77,11 +78,11 @@
|
|
77
78
|
visibility: visible;
|
78
79
|
}
|
79
80
|
}
|
80
|
-
|
81
|
+
|
81
82
|
.scroller-right{
|
82
83
|
float:right;
|
83
84
|
&:before {
|
84
|
-
@extend .
|
85
|
+
@extend .icon;
|
85
86
|
@extend .icon-arrow-right:before;
|
86
87
|
}
|
87
88
|
}
|
@@ -89,7 +90,7 @@
|
|
89
90
|
.scroller-left {
|
90
91
|
float:left;
|
91
92
|
&:before {
|
92
|
-
@extend .
|
93
|
+
@extend .icon;
|
93
94
|
@extend .icon-arrow-left:before;
|
94
95
|
}
|
95
96
|
}
|
@@ -103,7 +104,7 @@
|
|
103
104
|
overflow: hidden;
|
104
105
|
}
|
105
106
|
.screens-menu {
|
106
|
-
|
107
|
+
|
107
108
|
}
|
108
109
|
}
|
109
110
|
|
@@ -121,7 +122,7 @@
|
|
121
122
|
}
|
122
123
|
|
123
124
|
.active-screens {
|
124
|
-
|
125
|
+
|
125
126
|
height: 45px;
|
126
127
|
padding: 0 5px;
|
127
128
|
|
@@ -134,7 +135,7 @@
|
|
134
135
|
.close {
|
135
136
|
position: absolute;
|
136
137
|
right: 7px;
|
137
|
-
top: 0px;
|
138
|
+
top: 0px;
|
138
139
|
}
|
139
140
|
|
140
141
|
/* a { */
|
data/coffeelint.json
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
{
|
2
|
+
"coffeelint": {
|
3
|
+
"transforms": [
|
4
|
+
"coffee-react-transform"
|
5
|
+
]
|
6
|
+
},
|
7
|
+
"indentation": {
|
8
|
+
"level": "error",
|
9
|
+
"value": 4
|
10
|
+
},
|
11
|
+
"line_endings": {
|
12
|
+
"value": "unix",
|
13
|
+
"level": "error"
|
14
|
+
},
|
15
|
+
"arrow_spacing": {
|
16
|
+
"level": "error"
|
17
|
+
},
|
18
|
+
"no_empty_functions": {
|
19
|
+
"level": "error"
|
20
|
+
},
|
21
|
+
"no_empty_param_list": {
|
22
|
+
"level": "error"
|
23
|
+
},
|
24
|
+
"no_interpolation_in_single_quotes": {
|
25
|
+
"level": "error"
|
26
|
+
},
|
27
|
+
"no_throwing_strings": {
|
28
|
+
"level": "error"
|
29
|
+
},
|
30
|
+
"no_unnecessary_double_quotes": {
|
31
|
+
"level": "ignore"
|
32
|
+
},
|
33
|
+
"no_unnecessary_fat_arrows": {
|
34
|
+
"level": "error"
|
35
|
+
},
|
36
|
+
"prefer_english_operator": {
|
37
|
+
"level": "ignore"
|
38
|
+
},
|
39
|
+
"space_operators": {
|
40
|
+
"level": "error"
|
41
|
+
},
|
42
|
+
"spacing_after_comma": {
|
43
|
+
"level": "error"
|
44
|
+
},
|
45
|
+
"max_line_length": {
|
46
|
+
"value": 135,
|
47
|
+
"level": "error"
|
48
|
+
}
|
49
|
+
}
|
data/config.ru
CHANGED
data/config/database.yml
CHANGED
data/config/routes.rb
ADDED
data/docs/command.md
CHANGED
@@ -60,13 +60,13 @@ Notable directories created are:
|
|
60
60
|
|
61
61
|
# lanes generate
|
62
62
|
|
63
|
-
Constructs either a model,
|
63
|
+
Constructs either a model, component or screen.
|
64
64
|
|
65
|
-
##
|
65
|
+
## Component
|
66
66
|
|
67
|
-
`lanes generate
|
67
|
+
`lanes generate component <name>`
|
68
68
|
|
69
|
-
Will create a new
|
69
|
+
Will create a new component file along with an accompanying spec. By default the content will only render a simple [I am a {class_name} component] message.
|
70
70
|
|
71
71
|
|
72
72
|
## Model
|
@@ -87,11 +87,9 @@ For instance, `lanes generate model comment user:references title:string{80} con
|
|
87
87
|
|
88
88
|
`lanes generate screen <name>`
|
89
89
|
|
90
|
-
In the Lanes lexicon, a screen is a
|
90
|
+
In the Lanes lexicon, a screen is a Component that is able to be loaded on demand. By default, the styles and Javascript code that make up a screen are not loaded as part of the applications main bundles. Instead the screen is loaded on demand when the user clicks on a menu.
|
91
91
|
|
92
|
-
|
93
|
-
|
94
|
-
Remote data events for all subviews are applied by the view, and then bubble up to the screen. This allows the screen to display a notification to the user alerting them that another user edited the data that is being currently displayed.
|
92
|
+
Remote data events for all sub components bubble up to the screen. This allows the screen to display a notification to the user alerting them that another user edited data that is being currently displayed somewhere on the view.
|
95
93
|
|
96
94
|
# lanes update
|
97
95
|
|
@@ -109,3 +107,8 @@ When developing a data driven application, the data model usually undergoes seve
|
|
109
107
|
|
110
108
|
Calls rake db:migrate for each extension that is loaded. Since lanes extensions ship with migrations, this provides an easy way to install their data structures as well as keep them up to date.
|
111
109
|
|
110
|
+
## Seed
|
111
|
+
|
112
|
+
`lanes db seed`
|
113
|
+
|
114
|
+
Calls rake db:seed for each extension that is loaded. Often an extension will need to ship with certain default records. This provides a way to provision them on install. Commands can be placed in db/seeds.rb to be executed.
|
data/docs/model.md
CHANGED
@@ -9,17 +9,14 @@ Lanes provides a Lanes.Models.Base class that all other models extend from.
|
|
9
9
|
A Model is an extension of [Ampersand State](http://ampersandjs.com/docs#ampersand-state), and supports all the features that AmpersandState does.
|
10
10
|
|
11
11
|
<aside class="note">
|
12
|
-
Unlike the Models in Backbonejs, Lanes' Models track
|
12
|
+
Unlike the Models in Backbonejs, Lanes' Models track their "dirty" state. This allows them to perform true HTTP "patch" requests and only send the attributes that have been modified to the server. They can also be interogated and only saved if they contain unsaved data.
|
13
13
|
</aside>
|
14
14
|
|
15
|
-
Models also have associations, which are lazily
|
16
|
-
|
17
|
-
Models and collections use an Identity Map that stores models that are bound to {% doc_link view title:Views %%}
|
15
|
+
Models also have associations, which are lazily instantiated and can be optionally fetched along with the model/collection.
|
18
16
|
|
19
17
|
Model methods that make requests to the server can specify options to control what data is returned. An explanation of the options can be found under [Request Options](#request-options)
|
20
18
|
|
21
19
|
|
22
|
-
|
23
20
|
### API Reference
|
24
21
|
|
25
22
|
# @where
|
data/docs/react.md
ADDED
@@ -0,0 +1,137 @@
|
|
1
|
+
---
|
2
|
+
title: React
|
3
|
+
heading: Lanes.React.Component
|
4
|
+
---
|
5
|
+
|
6
|
+
Lanes uses [React](reactjs.com) for the view layer. It provides an easy-to-use data bindings between it and the data layouer's {% doc_link model %}
|
7
|
+
|
8
|
+
A simple example of a React component bound to a data model:
|
9
|
+
|
10
|
+
``` coffee
|
11
|
+
|
12
|
+
class MyView extends Lanes.React.Component
|
13
|
+
|
14
|
+
propTypes:
|
15
|
+
model: Lanes.PropTypes.Model.isRequired
|
16
|
+
|
17
|
+
render: ->
|
18
|
+
<h1>Hello {@model.name}</h1>
|
19
|
+
|
20
|
+
```
|
21
|
+
|
22
|
+
Note a few interesting things about this component compared to a standard React one. The first is the non-standard "model" propType, and the second is the @model instance variable used in the `render` method.
|
23
|
+
|
24
|
+
# propType validators
|
25
|
+
|
26
|
+
As show above, Lanes provides validators for it's data types. These include:
|
27
|
+
|
28
|
+
|
29
|
+
* `Lanes.PropTypes.Model` Verifies that the property is an instance of `Lanes.Models.Base`
|
30
|
+
* `Lanes.PropTypes.State` Checks that the property is an instance of `Lanes.Models.State`. State objects are like models, but do not have the ability to be retreived from or saved to the server. They're usefull for storing lightweight session objects.
|
31
|
+
* `Lanes.PropTypes.Collection` Like the models above but for collections.
|
32
|
+
|
33
|
+
Each of the validators also has a `.isRequired` helper, just like React's built in ones.
|
34
|
+
|
35
|
+
# dataObjects
|
36
|
+
|
37
|
+
Lanes data bindings for components will be automatically setup for any prop that is named `model`.
|
38
|
+
|
39
|
+
If a property named `model` is given, it will be mapped to the `@model` instance. Other properties can also be setup by specifying attributes for `dataObject` In this example, a '@bank` and `@customer` objects are mapped.
|
40
|
+
|
41
|
+
``` coffee
|
42
|
+
|
43
|
+
class MyView extends Lanes.React.Component
|
44
|
+
|
45
|
+
dataObjects:
|
46
|
+
bank: 'props'
|
47
|
+
customer: -> GlobalCustomer.lookup('foo')
|
48
|
+
|
49
|
+
render: ->
|
50
|
+
<h1>{@customer.name} has {@bank.balance}</h1>
|
51
|
+
|
52
|
+
```
|
53
|
+
|
54
|
+
As you can see, the bank mapping will be read from the props, while the customer uses a custom lookup strategy. It's function will be called to obtain the value whenever the component is mounted.
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
# events
|
59
|
+
|
60
|
+
By default, Lanes will listen for all events on both models and collections.
|
61
|
+
|
62
|
+
Every time the events fires, Lanes will call `setState` on the component, causing a re-render. While React is great about making the re-render as efficient as possible, it can sometimes be a good idea to only listen for events that the compoent will be interested int.
|
63
|
+
|
64
|
+
The events bound can be modified by using the `bindDataEvents` attribute. For instance this component will only render when the name is changed. This makes sense since that's the only attribute of the model that is used.
|
65
|
+
|
66
|
+
|
67
|
+
``` coffee
|
68
|
+
|
69
|
+
class MyView extends Lanes.React.Component
|
70
|
+
|
71
|
+
bindDataEvents:
|
72
|
+
model: 'change:name'
|
73
|
+
|
74
|
+
|
75
|
+
render: ->
|
76
|
+
<h1>Your name is: {@model.name}</h1>
|
77
|
+
|
78
|
+
```
|
79
|
+
|
80
|
+
The complete list of events Lanes listens to is:
|
81
|
+
|
82
|
+
* Models:
|
83
|
+
* `change`: an attribute was modified
|
84
|
+
* `request`: A network request was began
|
85
|
+
* `sync`: The network request completed
|
86
|
+
* `invalid`: An attempted update failed validation
|
87
|
+
* `error`: An error was encountered, usually only fired during network access.
|
88
|
+
* Collections:
|
89
|
+
* `add`: A model was added
|
90
|
+
* `remove`: Model removed
|
91
|
+
* `change`: one of the models was changed
|
92
|
+
* `sort`: The collection was re-sorted
|
93
|
+
* `reset`: All models were removed
|
94
|
+
* `request`: A network request was started
|
95
|
+
* `sync`: Network request completed
|
96
|
+
* `error`: An error occured, usually during network access
|
97
|
+
|
98
|
+
# setDataState
|
99
|
+
|
100
|
+
When a bound event is fired for a model, Lanes will call setState on the model with the affected model as the key. Sometimes a component would rather have other information injected into state, or perhaps wants to selectively ignore some changes.
|
101
|
+
|
102
|
+
Components can do so by implementing a `setDataState` method. If this method exists, it is soley responsible for calling `setState` to trigger a `render`
|
103
|
+
|
104
|
+
``` coffee
|
105
|
+
|
106
|
+
class MyView extends Lanes.React.Component
|
107
|
+
|
108
|
+
setDataState: (newState) ->
|
109
|
+
if newState.model?.name == 'Bob'
|
110
|
+
this.setState(wasBob: true)
|
111
|
+
|
112
|
+
render: ->
|
113
|
+
<h1>Has Bob been seen? {if @state.wasBob then 'Yes' else 'No'}</h1>
|
114
|
+
|
115
|
+
```
|
116
|
+
|
117
|
+
# PubSub
|
118
|
+
|
119
|
+
Publish/Subscribe often abbreviated as simply PubSub is a mechanism where amodel can subscribe to updates for itself and be notified when other users modify it.
|
120
|
+
|
121
|
+
By default whenever a model is bound to a React component, Lanes will also subscribe that model to updates. When model is unbound or the component is unmounted, Lanes will remove the model from receiving updates as well. This applies only to Models, not State object or Collections.
|
122
|
+
|
123
|
+
Set `pubsub: false` if Lanes should not bind any models, or to an object with keys for the models that should not be bound
|
124
|
+
|
125
|
+
|
126
|
+
``` coffee
|
127
|
+
|
128
|
+
class MyView extends Lanes.React.Component
|
129
|
+
|
130
|
+
pubsub:
|
131
|
+
model: false
|
132
|
+
|
133
|
+
# could also have just been:
|
134
|
+
pubsub: false
|
135
|
+
|
136
|
+
|
137
|
+
```
|
data/lanes.gemspec
CHANGED
@@ -33,6 +33,7 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.add_dependency "rack_csrf", "~> 2.5"
|
34
34
|
spec.add_dependency "sprockets", "~> 2.0"
|
35
35
|
spec.add_dependency "coffee-script", "~> 2.3"
|
36
|
+
spec.add_dependency "coffee-react", "~> 3.0"
|
36
37
|
spec.add_dependency "execjs", "~> 2.2"
|
37
38
|
spec.add_dependency "thor", "~> 0.19"
|
38
39
|
spec.add_dependency "sass", "~> 3.4"
|
data/lib/lanes.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'active_record'
|
2
2
|
|
3
3
|
require_relative "lanes/version"
|
4
|
-
require_relative "lanes/logger"
|
5
4
|
require_relative "lanes/environment"
|
6
5
|
require_relative "lanes/configuration"
|
6
|
+
require_relative "lanes/logger"
|
7
7
|
if defined?(::Rails)
|
8
8
|
require_relative "lanes/rails_engine"
|
9
9
|
end
|
@@ -4,6 +4,8 @@ module Lanes
|
|
4
4
|
post "/user-session.json" do
|
5
5
|
wrap_reply do
|
6
6
|
user = User.where(login: data['login']).first
|
7
|
+
Lanes.logger.warn "Found User: #{user}"
|
8
|
+
|
7
9
|
if user && user.authenticate(data['password'])
|
8
10
|
session[:user_id] = user.id
|
9
11
|
{ success: true, message: "Login succeeded", data: user.workspace_data }
|
@@ -1,16 +1,19 @@
|
|
1
|
-
Lanes::Screen.define "user-management" do | screen |
|
2
|
-
screen.title = "User Management"
|
3
|
-
screen.description = "Add/Remove/Modify User Accounts"
|
4
|
-
screen.icon = "icon-group"
|
5
|
-
screen.group_id = "system-settings"
|
6
|
-
screen.model_class = "User"
|
7
|
-
screen.view_class = "Lanes.Access.Screens.UserManagement"
|
8
|
-
screen.js = 'lanes/access/screens/user-management.js'
|
9
|
-
screen.css = 'lanes/access/screens/user-management.css'
|
10
|
-
end
|
11
|
-
|
12
1
|
Lanes::Screen.define_group "system-settings" do | group |
|
13
2
|
group.title = "System Settings"
|
14
3
|
group.description = "Modify system settings"
|
15
|
-
group.icon = "
|
4
|
+
group.icon = "wrench"
|
5
|
+
end
|
6
|
+
|
7
|
+
Lanes::Screen.for_extension 'access' do | screens |
|
8
|
+
screens.define "user-management" do | screen |
|
9
|
+
screen.title = "User Management"
|
10
|
+
screen.description = "Add/Remove/Modify User Accounts"
|
11
|
+
screen.icon = "group"
|
12
|
+
screen.group_id = "system-settings"
|
13
|
+
screen.model_class = "User"
|
14
|
+
screen.view_class = "UserManagement"
|
15
|
+
screen.url_prefix = 'lanes/access/screens'
|
16
|
+
screen.js = 'user-management.js'
|
17
|
+
screen.css = 'user-management.css'
|
18
|
+
end
|
16
19
|
end
|
@@ -6,7 +6,7 @@ module Lanes
|
|
6
6
|
|
7
7
|
identifier "lanes-access"
|
8
8
|
|
9
|
-
components '
|
9
|
+
components 'grid', 'modal'
|
10
10
|
|
11
11
|
root_path Pathname.new(__FILE__).dirname.expand_path
|
12
12
|
|
@@ -25,6 +25,7 @@ module Lanes
|
|
25
25
|
def client_paths
|
26
26
|
[]
|
27
27
|
end
|
28
|
+
|
28
29
|
def roles_for_client
|
29
30
|
Lanes::Access::Role.all_available.map do |role|
|
30
31
|
{ id: role.to_s.demodulize.underscore, name: role.to_s.demodulize }
|