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
data/client/lanes/Boot.coffee
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
class RootView
|
2
|
-
|
3
|
-
constructor: (selector, options)->
|
4
|
-
this.viewport = new Lanes.Views.Viewport({ selector: selector, instance: this })
|
5
|
-
Lanes.config.set(options)
|
6
|
-
Lanes.Models.Bootstrap.initialize(options)
|
7
|
-
Lanes.$(document).ready => @boot(options)
|
8
|
-
|
9
|
-
boot: (options)->
|
10
|
-
this.root = Lanes.$( this.viewport.selector )
|
11
|
-
this.root.data().workspace = this
|
12
|
-
this.viewport.root = this.root
|
13
|
-
|
14
|
-
Lanes.lib.ResizeSensor(this.root[0], _.bind( _.debounce( =>
|
15
|
-
@viewport.set({ width: this.root.width(), height: this.root.height() })
|
16
|
-
, 250 ), this) )
|
17
|
-
|
18
|
-
this.root.addClass('lanes root')
|
19
|
-
this.root.tooltip({
|
20
|
-
viewport: '.lanes'
|
21
|
-
selector: '[data-tooltip-message]'
|
22
|
-
title: -> this.getAttribute('data-tooltip-message')
|
23
|
-
})
|
24
|
-
Lanes.Views.Keys.initialize()
|
25
|
-
Lanes.Models.PubSub.initialize() if options.pub_sub
|
26
|
-
cntrl = Lanes.Extensions.controlling()
|
27
|
-
view = Lanes.u.getPath(options.root_view)
|
28
|
-
if view
|
29
|
-
this.displayInitialView(view)
|
30
|
-
else
|
31
|
-
definition=Lanes.Screens.Definitions.all.findWhere({view: options.root_view})
|
32
|
-
if definition
|
33
|
-
definition.getScreen().then( (screen)=>
|
34
|
-
# break out of the promise so an errors during render get thrown properly
|
35
|
-
_.defer( => @displayInitialView(screen) )
|
36
|
-
,(msg)->
|
37
|
-
Lanes.fatal("Unable to load initial screen ${options.root_view}", msg)
|
38
|
-
)
|
39
|
-
else
|
40
|
-
Lanes.fatal(options.root_view + " doesn't exist!")
|
41
|
-
|
42
|
-
displayInitialView:(view)->
|
43
|
-
this.view = new view({parent: this, model: this.viewport}).render()
|
44
|
-
this.viewport.el = this.view.$el
|
45
|
-
this.root.append( this.view.el )
|
46
|
-
Lanes.Extensions.fireOnAvailable(this)
|
47
|
-
|
48
|
-
|
49
|
-
Lanes.renderScreenTo = (selector, options)->
|
50
|
-
return new RootView(selector, options);
|
@@ -1,46 +0,0 @@
|
|
1
|
-
class Lanes.Access.LoginDialog extends Lanes.Components.ModalDialog
|
2
|
-
|
3
|
-
bodyTemplateName: 'login-dialog'
|
4
|
-
templatePrefix: 'lanes/access'
|
5
|
-
hideOnBackdropClick: false
|
6
|
-
showHideButton: false
|
7
|
-
hideOnEsc: false
|
8
|
-
|
9
|
-
size: 'md'
|
10
|
-
title: 'Please sign in …'
|
11
|
-
|
12
|
-
domEvents:
|
13
|
-
'click .btn-primary': 'onLogin'
|
14
|
-
|
15
|
-
buttons:
|
16
|
-
login: { label: 'Login', type: 'primary' }
|
17
|
-
|
18
|
-
ui:
|
19
|
-
l: '#LoginField',
|
20
|
-
pw: '#PasswordField'
|
21
|
-
alert: '.alert'
|
22
|
-
|
23
|
-
initialize: (options)->
|
24
|
-
super
|
25
|
-
this.listenToAndRun(Lanes.current_user, 'change:isLoggedIn', this.onUserChange)
|
26
|
-
|
27
|
-
onUserChange: ->
|
28
|
-
this.toggleShown(!Lanes.current_user.isLoggedIn)
|
29
|
-
|
30
|
-
onLogin: (ev)->
|
31
|
-
msg = this.ui.alert.hide()
|
32
|
-
mask = new Lanes.Views.TimedMask(this.$el, "Attempting Login …")
|
33
|
-
session = Lanes.Models.User.attemptLogin( @ui.l.val(), @ui.pw.val(), {
|
34
|
-
scope: this
|
35
|
-
success: ->
|
36
|
-
mask.displaySuccess("Login Success!")
|
37
|
-
error: ->
|
38
|
-
msg.show().text(session.lastServerMessage )
|
39
|
-
mask.displayFailure(session.lastServerMessage)
|
40
|
-
})
|
41
|
-
|
42
|
-
onShown: -> @ui.l.focus()
|
43
|
-
|
44
|
-
|
45
|
-
Lanes.Access.createLoginDialog = (view)->
|
46
|
-
new Lanes.Access.LoginDialog( parent: view )
|
@@ -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,26 +0,0 @@
|
|
1
|
-
class Lanes.Access.Screens.UserManagement.GridUserEditor extends Lanes.Components.Grid.PopOverEditor
|
2
|
-
|
3
|
-
writeTemplateName: 'user-management/grid-popover-editor'
|
4
|
-
templatePrefix: 'lanes/access/screens'
|
5
|
-
useFormBindings: true
|
6
|
-
writeTemplateData: ->
|
7
|
-
{ columns: _.reject(this.grid.columnDefinitions,(f)-> f.field=='role_names') }
|
8
|
-
|
9
|
-
subviews:
|
10
|
-
roles:
|
11
|
-
component: 'SelectField'
|
12
|
-
model: 'model'
|
13
|
-
options: 'roleOptions'
|
14
|
-
|
15
|
-
roleOptions: ->
|
16
|
-
{
|
17
|
-
field_name: 'role_names'
|
18
|
-
multiple: true, choices: this.model.allRoles
|
19
|
-
mappings:{ title: 'name', selected: 'member' }
|
20
|
-
}
|
21
|
-
|
22
|
-
persistFields: ->
|
23
|
-
@model.set({
|
24
|
-
role_names: _.pluck(this.$('select option:selected'), 'value'),
|
25
|
-
password: this.$('input[name=password]').val()
|
26
|
-
})
|
@@ -1,23 +0,0 @@
|
|
1
|
-
class Lanes.Access.Screens.UserManagement extends Lanes.Screens.Base
|
2
|
-
|
3
|
-
templateName: 'user-management/screen'
|
4
|
-
templatePrefix: 'lanes/access/screens'
|
5
|
-
|
6
|
-
subviews:
|
7
|
-
grid:
|
8
|
-
component: 'Grid'
|
9
|
-
options: 'gridOptions'
|
10
|
-
|
11
|
-
gridOptions: ->
|
12
|
-
{
|
13
|
-
recordQuery: new Lanes.Models.Query({
|
14
|
-
modelClass: Lanes.Models.User,
|
15
|
-
fields: [ 'login', 'name', 'email', 'role_names' ]
|
16
|
-
}),
|
17
|
-
editorConfig: {}
|
18
|
-
editRecords: true
|
19
|
-
editingController: Lanes.Access.Screens.UserManagement.GridUserEditor
|
20
|
-
selectionMode: 'single',
|
21
|
-
addRecords: true
|
22
|
-
deleteRecords: true
|
23
|
-
}
|
@@ -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.id %>" class="col-sm-3 control-label"><%= field.title %></label>
|
5
|
-
<div class="col-sm-9">
|
6
|
-
<input type="text" name="<%= field.id %>" class="form-control" id="field-<%= field.id %>" 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,39 +0,0 @@
|
|
1
|
-
class BaseComponent
|
2
|
-
abstractClass: true
|
3
|
-
|
4
|
-
constructor: (options={})->
|
5
|
-
super
|
6
|
-
@access ||= this.calculate_access()
|
7
|
-
|
8
|
-
session:
|
9
|
-
field_name: { 'string', setOnce: true }
|
10
|
-
access:
|
11
|
-
type: 'string',
|
12
|
-
values: ['read','write','none']
|
13
|
-
|
14
|
-
derived:
|
15
|
-
readOnly: { deps: ['access'], fn:-> @access=='read' }
|
16
|
-
writeAble: { deps: ['access'], fn:-> @access=='write' }
|
17
|
-
|
18
|
-
emptyTemplateName: -> this.writeTemplate()
|
19
|
-
readTemplateName: -> this.writeTemplate()
|
20
|
-
writeTemplateName: -> 'empty-span'
|
21
|
-
|
22
|
-
renderContextFree: ->
|
23
|
-
tmpl = if this.writeAble
|
24
|
-
'writeTemplate'
|
25
|
-
else if this.readOnly
|
26
|
-
'readTemplate'
|
27
|
-
else
|
28
|
-
'emptyTemplate'
|
29
|
-
this.replaceEl( this.renderTemplateMethod(tmpl) );
|
30
|
-
|
31
|
-
calculate_access:->
|
32
|
-
if ! @field_name || Lanes.Views.RenderContext.canWrite(@field_name)
|
33
|
-
'write'
|
34
|
-
else if Lanes.Views.RenderContext.canRead(@field_name)
|
35
|
-
'read'
|
36
|
-
else
|
37
|
-
'none'
|
38
|
-
|
39
|
-
Lanes.Components.Base = Lanes.Views.Base.extend(BaseComponent)
|
@@ -1,47 +0,0 @@
|
|
1
|
-
class Lanes.Component.ChoicesInput extends Lanes.Component.Base
|
2
|
-
|
3
|
-
session:
|
4
|
-
selections: 'collection'
|
5
|
-
|
6
|
-
subViewOptions: ->
|
7
|
-
{ field_name: @field_name, mappings: @mappings }
|
8
|
-
|
9
|
-
constructor: (options={})->
|
10
|
-
if options.has_many
|
11
|
-
@association = options.model.associations[options.has_many]
|
12
|
-
@field_name = @association.fk
|
13
|
-
else
|
14
|
-
@field_name = options.field_name || options.subViewId
|
15
|
-
|
16
|
-
@mappings = _.extend({
|
17
|
-
id: 'id', title: 'title', selected: 'selected'
|
18
|
-
},options.mappings||{})
|
19
|
-
super
|
20
|
-
|
21
|
-
|
22
|
-
initialize: (options={})->
|
23
|
-
if @association
|
24
|
-
collection = Lanes.Models[@association.model].sharedCollection()
|
25
|
-
collection.fetch().then (m)=>
|
26
|
-
@selections = m
|
27
|
-
this.on('change:model', this.onModelChange )
|
28
|
-
else if options.data
|
29
|
-
@selections = options.data
|
30
|
-
|
31
|
-
selectionForID: (id)->
|
32
|
-
q={}; q[@mappings.id]=id
|
33
|
-
@selections.findWhere( q )
|
34
|
-
|
35
|
-
onAttributeChange: (model,fkid)->
|
36
|
-
this.select( this.selectionForID( fkid ) )
|
37
|
-
|
38
|
-
onModelChange: ->
|
39
|
-
if (old_model = this.previousAttributes()['model'])
|
40
|
-
this.stopListening(old_model,"change:#{@association.fk}", this.onAttributeChange )
|
41
|
-
this.listenTo(@model,"change:#{@association.fk}", this.onAttributeChange )
|
42
|
-
fk_id = @model.get( @association.fk )
|
43
|
-
record = if fk_id
|
44
|
-
this.selectionForID( fk_id )
|
45
|
-
else
|
46
|
-
@model[@association.name]
|
47
|
-
this.select(record)
|
@@ -1,62 +0,0 @@
|
|
1
|
-
class Lanes.Components.Grid.Editor extends Lanes.Components.Base
|
2
|
-
|
3
|
-
session:
|
4
|
-
grid: 'object' # n.b. - not 'state'. Doing so causes stack overflow since grid also has a 'editor' session var
|
5
|
-
|
6
|
-
domEvents:
|
7
|
-
'click .save': 'saveChanges'
|
8
|
-
'click .cancel': 'cancelEditing'
|
9
|
-
|
10
|
-
ui:
|
11
|
-
form: 'form'
|
12
|
-
|
13
|
-
constructor: (config)->
|
14
|
-
super
|
15
|
-
this.grid = this.parent
|
16
|
-
|
17
|
-
move: (row)->
|
18
|
-
if @row
|
19
|
-
this.$el.trigger('cancel-edit',@row)
|
20
|
-
@row=row
|
21
|
-
@model = this.grid.modelForRow(@row)
|
22
|
-
this.render() unless this.rendered
|
23
|
-
this.grid.$('.dataTables_scrollBody').append(this.el)
|
24
|
-
this.updateFields()
|
25
|
-
|
26
|
-
updateFields: ->
|
27
|
-
for input, index in this.$('input')
|
28
|
-
if definition = this.getColumn(input.name)
|
29
|
-
Lanes.dom.setAttribute(input, 'value', this.model.get(definition.field) )
|
30
|
-
this.$('input').first().focus()
|
31
|
-
|
32
|
-
persistFields: ->
|
33
|
-
for input, index in this.$('input')
|
34
|
-
if definition = this.getColumn(input.name)
|
35
|
-
@model.set( definition.field, Lanes.dom.getAttribute(input,'value') )
|
36
|
-
|
37
|
-
getColumn: (name)->
|
38
|
-
_.findWhere(this.grid.columnDefinitions, { field: name })
|
39
|
-
|
40
|
-
saveChanges: ->
|
41
|
-
this.persistFields()
|
42
|
-
@model.save().then => @updateGridRow()
|
43
|
-
|
44
|
-
updateGridRow: ->
|
45
|
-
this.$el.trigger('row-updated', @row)
|
46
|
-
@grid.updateRow(@row,@model)
|
47
|
-
this.cancelEditing()
|
48
|
-
|
49
|
-
cancelEditing: ->
|
50
|
-
this.$el.trigger('cancel-edit',@row)
|
51
|
-
this.detach()
|
52
|
-
this.model = null
|
53
|
-
|
54
|
-
deleteCurrent: ->
|
55
|
-
@model.destroy().then =>
|
56
|
-
@grid.removeRow(@row)
|
57
|
-
@cancelEditing()
|
58
|
-
|
59
|
-
fields: ->
|
60
|
-
_.map(this.ui.form.children(), (input,index)->
|
61
|
-
{ index: index, input: Lanes.$(input), column: this.grid.columnDefinitions[index] }
|
62
|
-
,this)
|
@@ -1,205 +0,0 @@
|
|
1
|
-
# ModelsTables class modifications
|
2
|
-
_.extend( Lanes.$.fn.dataTableExt.oStdClasses,{
|
3
|
-
sTable: "table table-striped"
|
4
|
-
sWrapper: "dataTables_wrapper form-inline"
|
5
|
-
sFilterInput: "form-control input-sm"
|
6
|
-
sLengthSelect: "form-control input-sm"
|
7
|
-
})
|
8
|
-
|
9
|
-
|
10
|
-
class Lanes.Components.Grid extends Lanes.Components.Base
|
11
|
-
|
12
|
-
domEvents:
|
13
|
-
'click button.refresh': 'reload'
|
14
|
-
'click button.delete': 'deleteRow'
|
15
|
-
'click button.create': 'addRow'
|
16
|
-
'click tr': 'onRowClick'
|
17
|
-
'cancel-edit': 'onCancelEdit'
|
18
|
-
'order.dt table': 'onSort'
|
19
|
-
|
20
|
-
writeTemplateName: 'template'
|
21
|
-
|
22
|
-
writeTemplateData: ->
|
23
|
-
data = { grid: this, buttons: ['refresh'] }
|
24
|
-
data['buttons'].push('create') if @addRecords
|
25
|
-
data['buttons'].push('delete') if @deleteRecords
|
26
|
-
data
|
27
|
-
|
28
|
-
derived:
|
29
|
-
columnDefinitions:
|
30
|
-
deps:['recordRuery'], fn: ->
|
31
|
-
@recordQuery.fields.map(this._makeField, this)
|
32
|
-
|
33
|
-
modelClass:
|
34
|
-
deps:['recordQuery'], fn:->
|
35
|
-
@recordQuery?.modelClass
|
36
|
-
|
37
|
-
singleSelectMode:
|
38
|
-
deps:['selectionMode'], fn:-> @selectionMode == 'single'
|
39
|
-
|
40
|
-
session:
|
41
|
-
editRecords: ['boolean',true,false]
|
42
|
-
addRecords: ['boolean',true,false]
|
43
|
-
deleteRecords: ['boolean',true,false]
|
44
|
-
createRecordFn: 'function'
|
45
|
-
recordQuery: 'state'
|
46
|
-
editor: 'state'
|
47
|
-
selectionMode: ['string', true, 'single']
|
48
|
-
editorConfig: { type: 'object' }
|
49
|
-
editingController: 'any' # either string or constructor fn
|
50
|
-
columnWidths: { type: 'array', default: -> [] }
|
51
|
-
|
52
|
-
initialize: ->
|
53
|
-
if this.viewport
|
54
|
-
this.listenTo(this.viewport,'change:screen_enu_size', this.adjustColumnWidth)
|
55
|
-
unless Lanes.current_user.canWrite(this.modelClass)
|
56
|
-
this.editRecords = false
|
57
|
-
this.addRecords = false
|
58
|
-
unless Lanes.current_user.canDelete(this.modelClass)
|
59
|
-
this.deleteRecords = false
|
60
|
-
|
61
|
-
onSort: ->
|
62
|
-
return unless @editor
|
63
|
-
@editor.remove()
|
64
|
-
this.unset('editor')
|
65
|
-
|
66
|
-
onSelect: (ev)->
|
67
|
-
[record,row] = ev.detail
|
68
|
-
this.grid.unselect(row)
|
69
|
-
|
70
|
-
removeRow: (row)->
|
71
|
-
this.dt_api.row(row).remove().draw()
|
72
|
-
|
73
|
-
onCancelEdit: (ev)->
|
74
|
-
model = this.modelForRow(ev.detail)
|
75
|
-
this.removeRow(ev.detail) if model.isNew()
|
76
|
-
|
77
|
-
reload: ->
|
78
|
-
@dt_api.ajax.reload()
|
79
|
-
|
80
|
-
unselect: (row)->
|
81
|
-
this.$el.trigger('unselect-row', [@modelForRow(row), {row:row}])
|
82
|
-
Lanes.dom.removeClass(row,'active')
|
83
|
-
|
84
|
-
beginEdit: (row,ev)->
|
85
|
-
return false unless model = this.modelForRow(row)
|
86
|
-
this.createEditor(row) unless @editor
|
87
|
-
@editor.move(row,ev)
|
88
|
-
|
89
|
-
createEditor: (row)->
|
90
|
-
config = _.extend({ parent: this }, this.editorConfig)
|
91
|
-
@editor = switch this.editingController
|
92
|
-
when 'row' then new Grid.RowEditor(config)
|
93
|
-
when 'popover' then new Grid.PopOverEditor(config)
|
94
|
-
else new this.editingController(config)
|
95
|
-
|
96
|
-
deleteRow: ->
|
97
|
-
@editor.deleteCurrent()
|
98
|
-
|
99
|
-
createNewRecord: ->
|
100
|
-
if @createRecordFn
|
101
|
-
@createRecordFn(this)
|
102
|
-
else
|
103
|
-
new this.modelClass()
|
104
|
-
|
105
|
-
addRow: (record)->
|
106
|
-
# create a record if record argument wasn't given or it's an event
|
107
|
-
record = this.createNewRecord() if !record || record.type == "click"
|
108
|
-
row = this.dt_api.row.add( this._dataFromModel(record) )
|
109
|
-
this.apiSettings().oFeatures.bServerSide=false
|
110
|
-
row.draw(false)
|
111
|
-
this.apiSettings().oFeatures.bServerSide=true
|
112
|
-
tr = row.nodes()[0]
|
113
|
-
this.$( tr.cells[ tr.cells.length/2 ] ).click()
|
114
|
-
|
115
|
-
apiSettings: ->
|
116
|
-
this.dt_api.settings()[0]
|
117
|
-
|
118
|
-
onRowClick: (ev)->
|
119
|
-
row = this.$(ev.target).closest('tr')
|
120
|
-
if this.editRecords
|
121
|
-
this.beginEdit(row,ev)
|
122
|
-
if @singleSelectMode
|
123
|
-
this.unselect(selected) for selected in this.$('tr.active')
|
124
|
-
|
125
|
-
if row.hasClass('active')
|
126
|
-
this.unselect(row)
|
127
|
-
else
|
128
|
-
row.addClass('active')
|
129
|
-
this.$el.trigger('select-row', model, row ) if model = this.modelForRow(row)
|
130
|
-
|
131
|
-
updateRow: (row, model)->
|
132
|
-
row.attr('id', model.id)
|
133
|
-
this.dt_api.row(row).data(this._dataFromModel(model)).draw()
|
134
|
-
|
135
|
-
modelForRow: (row)->
|
136
|
-
data = this.dt_api.row(row).data()
|
137
|
-
return null unless data
|
138
|
-
return data.model if data.model?.isModel
|
139
|
-
attrs = if row.attr('id') then { id: parseInt(row.attr('id')) } else {}
|
140
|
-
for field,i in @columnDefinitions
|
141
|
-
attrs[field.id] = data[i]
|
142
|
-
data.model = new @modelClass(attrs,ignoreUnsaved:true)
|
143
|
-
|
144
|
-
adjustColumnWidth: ->
|
145
|
-
@dt_api.columns.adjust()
|
146
|
-
|
147
|
-
|
148
|
-
onRender: ->
|
149
|
-
breakpointDefinition = {
|
150
|
-
tablet: 1024,
|
151
|
-
phone : 480
|
152
|
-
};
|
153
|
-
this.dataTable=this.$('table').dataTable(
|
154
|
-
deferRender: true
|
155
|
-
scrollY: "300px"
|
156
|
-
scrollX: true
|
157
|
-
serverSide: true
|
158
|
-
oClasses: ['table', 'table-stiped', 'table-hover', 'table-condensed']
|
159
|
-
bProcessing: true
|
160
|
-
bDeferRender: true
|
161
|
-
oScroller: { loadingIndicator: true }
|
162
|
-
ajax:
|
163
|
-
url: @recordQuery.url + ".json"
|
164
|
-
data: (d)=>@buildQuery(d)
|
165
|
-
dataSrc: (d)->
|
166
|
-
d.recordsFiltered = d.recordsTotal = d.total
|
167
|
-
row.DT_RowId = row.shift() for row in d.data
|
168
|
-
d['data']
|
169
|
-
dom: "rtiS"
|
170
|
-
oScroller:
|
171
|
-
rowHeight: 40
|
172
|
-
columns: @columnDefinitions
|
173
|
-
)
|
174
|
-
this.dt_api = this.dataTable.api()
|
175
|
-
this
|
176
|
-
|
177
|
-
buildQuery: (d)->
|
178
|
-
params = {
|
179
|
-
o: {}, s: d.start, l: d.length||100, df:'array',
|
180
|
-
f: ['id'].concat(_.pluck(@columnDefinitions, 'id'))
|
181
|
-
}
|
182
|
-
if ! _.isEmpty( query = @recordQuery.asParams() )
|
183
|
-
params['q']=query
|
184
|
-
for order in d.order
|
185
|
-
column = @recordQuery.fields.at(order.column)
|
186
|
-
params['o'][column.id] = order.dir
|
187
|
-
params
|
188
|
-
|
189
|
-
|
190
|
-
_makeField: (query_field,index)->
|
191
|
-
align = switch query_field.type
|
192
|
-
when 'integer','bigdec' then 'r'
|
193
|
-
else 'l'
|
194
|
-
options = {
|
195
|
-
id: query_field.id, title: query_field.title,
|
196
|
-
className: align, "targets": [ index ]
|
197
|
-
}
|
198
|
-
options['width'] = @columnWidths[index] if @columnWidths[index]
|
199
|
-
options
|
200
|
-
|
201
|
-
_dataFromModel: (model)->
|
202
|
-
data = []
|
203
|
-
for field,i in @columnDefinitions
|
204
|
-
data.push( model.get(field.id) || '' )
|
205
|
-
data
|