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.
Files changed (447) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/client/fonts/fontawesome-webfont.woff +0 -0
  4. data/client/fonts/fontawesome-webfont.woff2 +0 -0
  5. data/client/lanes/Boot.cjsx +9 -0
  6. data/client/lanes/access/Extension.coffee +18 -4
  7. data/client/lanes/access/LoginDialog.cjsx +78 -0
  8. data/client/lanes/access/Roles.coffee +22 -28
  9. data/client/lanes/access/User.coffee +16 -16
  10. data/client/lanes/access/index.js +4 -5
  11. data/client/lanes/access/screens/user-management/Editor.cjsx +20 -0
  12. data/client/lanes/access/screens/user-management/UserManagement.cjsx +41 -0
  13. data/client/lanes/access/screens/user-management/index.js +0 -1
  14. data/client/lanes/components/grid/EditingMixin.cjsx +64 -0
  15. data/client/lanes/components/grid/Grid.cjsx +139 -0
  16. data/client/lanes/components/grid/PopOverMixin.cjsx +28 -0
  17. data/client/lanes/components/grid/PopoverEditor.cjsx +8 -0
  18. data/client/lanes/components/grid/RowEditor.cjsx +10 -0
  19. data/client/lanes/components/grid/Toolbar.cjsx +14 -0
  20. data/client/lanes/components/grid/config.json +1 -1
  21. data/client/lanes/components/grid/editors.scss +94 -53
  22. data/client/lanes/components/grid/index.js +2 -7
  23. data/client/lanes/components/grid/styles.scss +8 -296
  24. data/client/lanes/components/helpers.coffee +2 -0
  25. data/client/lanes/components/index.js +2 -1
  26. data/client/lanes/components/modal/Modal.cjsx +36 -0
  27. data/client/lanes/components/modal/index.js +1 -2
  28. data/client/lanes/components/modal/styles.scss +0 -19
  29. data/client/lanes/components/record-finder/Clause.cjsx +80 -0
  30. data/client/lanes/components/record-finder/Dialog.cjsx +54 -0
  31. data/client/lanes/components/record-finder/RecordFinder.cjsx +38 -0
  32. data/client/lanes/components/record-finder/config.json +1 -1
  33. data/client/lanes/components/record-finder/index.js +1 -2
  34. data/client/lanes/components/request-spinner/index.js +1 -0
  35. data/client/lanes/components/select-field/SelectField.cjsx +78 -0
  36. data/client/lanes/components/select-field/index.js +2 -1
  37. data/client/lanes/components/select-field/styles.scss +1 -0
  38. data/client/lanes/components/shared/CountBadge.cjsx +9 -0
  39. data/client/lanes/components/shared/ErrorDisplay.cjsx +21 -0
  40. data/client/lanes/components/shared/FieldMixin.cjsx +71 -0
  41. data/client/lanes/components/shared/FieldSet.cjsx +58 -0
  42. data/client/lanes/components/shared/GenericField.cjsx +5 -0
  43. data/client/lanes/components/shared/Helpers.coffee +9 -0
  44. data/client/lanes/components/shared/RadioField.cjsx +14 -0
  45. data/client/lanes/components/shared/Resize.cjsx +152 -0
  46. data/client/lanes/components/shared/TextArea.cjsx +19 -0
  47. data/client/lanes/components/shared/TextField.cjsx +25 -0
  48. data/client/lanes/components/shared/Tooltip.cjsx +10 -0
  49. data/client/lanes/components/shared/fields.scss +35 -0
  50. data/client/lanes/components/shared/fieldset.scss +29 -0
  51. data/client/lanes/components/shared/index.js +3 -0
  52. data/client/lanes/components/shared/styles.scss +32 -0
  53. data/client/lanes/components/toolbar/RemoteChangeSets.cjsx +75 -0
  54. data/client/lanes/components/toolbar/SaveButton.cjsx +3 -0
  55. data/client/lanes/components/toolbar/Toolbar.cjsx +58 -0
  56. data/client/lanes/{workspace/styles → components/toolbar}/changes-notification.scss +10 -23
  57. data/client/lanes/components/toolbar/index.js +3 -0
  58. data/client/lanes/components/toolbar/styles.scss +51 -0
  59. data/client/lanes/extension/Extensions.coffee +19 -10
  60. data/client/lanes/extension/LateLoaded.js.erb +4 -3
  61. data/client/lanes/index.js +3 -5
  62. data/client/lanes/index.scss.erb +6 -14
  63. data/client/lanes/lib/HotReload.coffee +35 -0
  64. data/client/lanes/lib/MakeBaseClass.coffee +10 -11
  65. data/client/lanes/lib/development.coffee +3 -0
  66. data/client/lanes/lib/dom.coffee +49 -0
  67. data/client/lanes/lib/el.coffee +23 -0
  68. data/client/lanes/lib/index.js.erb +16 -0
  69. data/client/lanes/lib/loader.coffee +34 -34
  70. data/client/lanes/lib/namespace.coffee +1 -1
  71. data/client/lanes/lib/objToParam.coffee +37 -0
  72. data/client/lanes/{access/views/.gitkeep → lib/production.coffee} +0 -0
  73. data/client/lanes/lib/utilFunctions.coffee +44 -26
  74. data/client/lanes/models/AssociationMap.coffee +51 -38
  75. data/client/lanes/models/Base.coffee +89 -88
  76. data/client/lanes/models/ChangeMonitor.coffee +10 -10
  77. data/client/lanes/models/ChangeSet.coffee +14 -24
  78. data/client/lanes/models/Collection.coffee +40 -41
  79. data/client/lanes/models/PubSub.coffee +28 -19
  80. data/client/lanes/models/Query.coffee +78 -45
  81. data/client/lanes/models/QueryResults.coffee +93 -0
  82. data/client/lanes/models/ServerCache.coffee +12 -12
  83. data/client/lanes/models/Sync.coffee +53 -50
  84. data/client/lanes/models/User.coffee +31 -17
  85. data/client/lanes/react/Component.coffee +31 -0
  86. data/client/lanes/react/DefaultComponentNotFound.cjsx +9 -0
  87. data/client/lanes/{views → react}/FormBindings.coffee +0 -0
  88. data/client/lanes/{views → react}/ModelObserver.coffee +0 -0
  89. data/client/lanes/{views → react}/ModelUpdate.coffee +0 -0
  90. data/client/lanes/{views → react}/PubSub.coffee +0 -0
  91. data/client/lanes/react/Root.cjsx +14 -0
  92. data/client/lanes/react/Router.cjsx +18 -0
  93. data/client/lanes/react/Screen.coffee +15 -0
  94. data/client/lanes/{views → react}/TimedHighlight.coffee +0 -0
  95. data/client/lanes/{views → react}/TimedMask.coffee +0 -0
  96. data/client/lanes/react/TypeValidators.coffee +21 -0
  97. data/client/lanes/{lib/create-namespace.js → react/Utils.coffee} +0 -0
  98. data/client/lanes/react/Viewport.coffee +30 -0
  99. data/client/lanes/react/index.js +8 -0
  100. data/client/lanes/react/mixins/Access.coffee +27 -0
  101. data/client/lanes/react/mixins/Component.coffee +4 -0
  102. data/client/lanes/react/mixins/Data.coffee +136 -0
  103. data/client/lanes/react/mixins/MonitorSize.coffee +11 -0
  104. data/client/lanes/react/mixins/ReadEditingState.coffee +11 -0
  105. data/client/lanes/react/mixins/RelayEditingState.coffee +17 -0
  106. data/client/lanes/react/mixins/RelayFieldChange.coffee +11 -0
  107. data/client/lanes/react/mixins/Screen.coffee +7 -0
  108. data/client/lanes/react/mixins/Viewport.coffee +11 -0
  109. data/client/lanes/screens/ChangeListener.coffee +3 -3
  110. data/client/lanes/screens/Commands.coffee +27 -0
  111. data/client/lanes/screens/Definitions.coffee +74 -65
  112. data/client/lanes/screens/all.js.erb +1 -1
  113. data/client/lanes/screens/index.js +1 -2
  114. data/client/lanes/screens/mixins/index.js +0 -1
  115. data/client/lanes/screens/register.js.erb +0 -1
  116. data/client/lanes/screens/styles.scss +7 -0
  117. data/client/lanes/styles/bootstrap-custom-grid.scss +67 -37
  118. data/client/lanes/styles/bootstrap.scss +4 -5
  119. data/client/lanes/styles/fonts.scss +10 -23
  120. data/client/lanes/styles/fonts/_animated.scss +34 -0
  121. data/client/lanes/styles/fonts/_bordered-pulled.scss +16 -0
  122. data/client/lanes/styles/fonts/_core.scss +13 -0
  123. data/client/lanes/styles/fonts/_fixed-width.scss +6 -0
  124. data/client/lanes/styles/fonts/_icons.scss +596 -0
  125. data/client/lanes/styles/fonts/_larger.scss +13 -0
  126. data/client/lanes/styles/fonts/_list.scss +19 -0
  127. data/client/lanes/styles/fonts/_mixins.scss +27 -0
  128. data/client/lanes/styles/fonts/_path.scss +10 -0
  129. data/client/lanes/styles/fonts/_rotated-flipped.scss +20 -0
  130. data/client/lanes/styles/fonts/_stacked.scss +20 -0
  131. data/client/lanes/styles/fonts/_variables.scss +606 -0
  132. data/client/lanes/styles/fonts/font-awesome.scss +16 -0
  133. data/client/lanes/styles/fonts/index.scss +2 -0
  134. data/client/lanes/styles/global.scss +2 -0
  135. data/client/lanes/styles/global/fancy-header.scss +14 -0
  136. data/client/lanes/testing/BeforeEach.coffee +15 -40
  137. data/client/lanes/testing/Helpers.coffee +27 -0
  138. data/client/lanes/testing/ModelSaver.coffee +14 -24
  139. data/client/lanes/testing/StubRouter.coffee +27 -0
  140. data/client/lanes/testing/TestObjects.coffee +27 -0
  141. data/client/lanes/testing/index.js +3 -1
  142. data/client/lanes/vendor/base.js +85256 -0
  143. data/client/lanes/vendor/commons.js +20579 -0
  144. data/client/lanes/vendor/development.js +2511 -0
  145. data/client/lanes/vendor/grid.js +6689 -0
  146. data/client/lanes/vendor/grid.scss +387 -0
  147. data/client/lanes/vendor/index.js +3 -0
  148. data/client/lanes/vendor/message-bus.coffee +264 -0
  149. data/client/lanes/vendor/widgets.js +8798 -0
  150. data/client/lanes/vendor/widgets.scss +723 -0
  151. data/client/lanes/workspace/ActiveScreenSwitcher.cjsx +38 -0
  152. data/client/lanes/workspace/Extension.coffee +6 -0
  153. data/client/lanes/workspace/Layout.cjsx +28 -0
  154. data/client/lanes/workspace/Navbar.cjsx +25 -0
  155. data/client/lanes/workspace/ScreenView.cjsx +27 -0
  156. data/client/lanes/workspace/ScreensMenu.cjsx +57 -0
  157. data/client/lanes/workspace/UIState.coffee +17 -16
  158. data/client/lanes/workspace/index.js +7 -2
  159. data/client/lanes/workspace/styles.scss +0 -3
  160. data/client/lanes/workspace/styles/forms.scss +2 -73
  161. data/client/lanes/workspace/styles/header.scss +0 -2
  162. data/client/lanes/workspace/styles/layout.scss +9 -2
  163. data/client/lanes/workspace/styles/screens.scss +0 -59
  164. data/client/lanes/workspace/styles/tabs.scss +16 -15
  165. data/coffeelint.json +49 -0
  166. data/config.ru +1 -0
  167. data/config/database.yml +2 -2
  168. data/config/routes.rb +7 -0
  169. data/docs/command.md +11 -8
  170. data/docs/model.md +2 -5
  171. data/docs/react.md +137 -0
  172. data/lanes.gemspec +1 -0
  173. data/lib/lanes.rb +1 -1
  174. data/lib/lanes/access/authentication_provider.rb +1 -0
  175. data/lib/lanes/access/config/routes.rb +2 -0
  176. data/lib/lanes/access/config/screens.rb +15 -12
  177. data/lib/lanes/access/extension.rb +2 -1
  178. data/lib/lanes/access/role.rb +8 -4
  179. data/lib/lanes/api.rb +4 -3
  180. data/lib/lanes/api/coffeescript_processor.rb +47 -6
  181. data/lib/lanes/api/controller.rb +4 -3
  182. data/lib/lanes/api/default_routes.rb +16 -0
  183. data/lib/lanes/api/javascript_processor.rb +14 -68
  184. data/lib/lanes/api/pub_sub.rb +17 -3
  185. data/lib/lanes/api/request_wrapper.rb +2 -2
  186. data/lib/lanes/api/root.rb +16 -13
  187. data/lib/lanes/api/routing.rb +0 -18
  188. data/lib/lanes/api/sprockets_extension.rb +10 -4
  189. data/lib/lanes/api/test_specs.rb +3 -3
  190. data/lib/lanes/cli.rb +6 -1
  191. data/lib/lanes/command/app.rb +7 -11
  192. data/lib/lanes/command/generate.rb +3 -3
  193. data/lib/lanes/command/generate_component.rb +28 -0
  194. data/lib/lanes/command/generate_component.usage +11 -0
  195. data/lib/lanes/command/generate_screen.rb +24 -7
  196. data/lib/lanes/command/generate_screen.usage +5 -8
  197. data/lib/lanes/configuration.rb +3 -2
  198. data/lib/lanes/extension.rb +12 -18
  199. data/lib/lanes/extension/definition.rb +20 -8
  200. data/lib/lanes/guard_tasks.rb +22 -5
  201. data/lib/lanes/hot_reload_plugin.rb +47 -0
  202. data/lib/lanes/logger.rb +41 -5
  203. data/lib/lanes/screen.rb +40 -16
  204. data/lib/lanes/spec_helper.rb +6 -3
  205. data/lib/lanes/version.rb +1 -1
  206. data/lib/lanes/workspace/extension.rb +1 -0
  207. data/npm-build/{template.js → base.js} +17 -17
  208. data/{client/lanes/workspace/tab.html → npm-build/common.js} +0 -0
  209. data/npm-build/compile.coffee +13 -4
  210. data/npm-build/development.js +7 -0
  211. data/npm-build/grid.js +11 -0
  212. data/npm-build/package.json +62 -58
  213. data/npm-build/react-widgets.js +5 -0
  214. data/npm-build/react-widgets.less +35 -0
  215. data/npm-build/webpack.config.js +39 -0
  216. data/spec/command-reference-files/component/client/appy-app/components/Big.cjsx +4 -0
  217. data/spec/command-reference-files/component/spec/appy-app/components/BigSpec.coffee +5 -0
  218. data/spec/command-reference-files/initial/.rubocop.yml +7 -0
  219. data/spec/command-reference-files/initial/Gemfile +1 -1
  220. data/spec/command-reference-files/initial/client/appy-app/Extension.coffee +17 -5
  221. data/spec/command-reference-files/initial/client/appy-app/components/Base.coffee +9 -0
  222. data/spec/command-reference-files/initial/client/appy-app/index.js +1 -3
  223. data/spec/command-reference-files/initial/client/appy-app/screens/Base.coffee +8 -2
  224. data/spec/command-reference-files/initial/coffeelint.json +49 -0
  225. data/spec/command-reference-files/initial/config.ru +2 -0
  226. data/spec/command-reference-files/initial/config/screens.rb +10 -0
  227. data/spec/command-reference-files/initial/lib/appy-app/extension.rb +7 -0
  228. data/spec/command-reference-files/model/client/appy-app/models/TestTest.coffee +0 -1
  229. data/spec/command-reference-files/screen/client/appy-app/Extension.coffee +34 -0
  230. data/spec/command-reference-files/screen/client/appy-app/screens/ready-set-go/ReadySetGo.cjsx +7 -0
  231. data/spec/command-reference-files/screen/config/screens.rb +19 -9
  232. data/spec/command-reference-files/screen/spec/appy-app/screens/ready-set-go/ReadySetGoSpec.coffee +3 -3
  233. data/spec/lanes/components/grid/GridSpec.coffee +26 -26
  234. data/spec/lanes/models/AssociationMapSpec.coffee +6 -6
  235. data/spec/lanes/models/BaseSpec.coffee +24 -35
  236. data/spec/lanes/models/CollectionSpec.coffee +19 -18
  237. data/spec/lanes/models/EnumMapSpec.coffee +1 -1
  238. data/spec/lanes/models/PubSubSpec.coffee +17 -15
  239. data/spec/lanes/models/SyncSpec.coffee +28 -0
  240. data/spec/lanes/models/UserSpec.coffee +17 -0
  241. data/spec/lanes/react/mixins/DataSpec.coffee +72 -0
  242. data/spec/lanes/screens/DefinitionsSpec.coffee +33 -0
  243. data/spec/lanes/views/BaseSpec.coffee +133 -133
  244. data/spec/lanes/views/FormBindingsSpec.coffee +30 -30
  245. data/spec/server/api/coffeescript_processor_spec.rb +2 -2
  246. data/spec/server/command_spec.rb +3 -3
  247. data/templates/client/Extension.coffee +17 -5
  248. data/templates/client/components/BaseComponent.coffee +9 -0
  249. data/templates/client/components/Component.cjsx +4 -0
  250. data/templates/client/{views → components}/template.html +0 -0
  251. data/templates/client/index.js +1 -3
  252. data/templates/client/models/Model.coffee +0 -1
  253. data/templates/client/screens/BaseScreen.coffee +9 -0
  254. data/templates/client/screens/Screen.cjsx +7 -0
  255. data/templates/config.ru +2 -0
  256. data/templates/config/screen.rb +10 -10
  257. data/templates/config/screens.rb +10 -0
  258. data/templates/lib/namespace/extension.rb +7 -0
  259. data/templates/spec/client/Screen.coffee +4 -4
  260. data/templates/spec/client/components/ComponentSpec.coffee +5 -0
  261. metadata +157 -201
  262. data/client/fonts/lanes/icomoon.eot +0 -0
  263. data/client/fonts/lanes/icomoon.svg +0 -160
  264. data/client/fonts/lanes/icomoon.ttf +0 -0
  265. data/client/fonts/lanes/icomoon.woff +0 -0
  266. data/client/fonts/lanes/selection.json +0 -3565
  267. data/client/lanes/Boot.coffee +0 -50
  268. data/client/lanes/access/LoginDialog.coffee +0 -46
  269. data/client/lanes/access/login-dialog.html +0 -16
  270. data/client/lanes/access/screens/user-management/GridUserEditor.coffee +0 -26
  271. data/client/lanes/access/screens/user-management/UserManagement.coffee +0 -23
  272. data/client/lanes/access/screens/user-management/grid-popover-editor.html +0 -33
  273. data/client/lanes/access/screens/user-management/screen.html +0 -7
  274. data/client/lanes/components/Base.coffee +0 -39
  275. data/client/lanes/components/ChoicesInput.coffee +0 -47
  276. data/client/lanes/components/grid/Editor.coffee +0 -62
  277. data/client/lanes/components/grid/Grid.coffee +0 -205
  278. data/client/lanes/components/grid/PopOverEditor.coffee +0 -29
  279. data/client/lanes/components/grid/RowEditor.coffee +0 -30
  280. data/client/lanes/components/grid/popover-editor.html +0 -18
  281. data/client/lanes/components/grid/row-editor.html +0 -16
  282. data/client/lanes/components/grid/template.html +0 -4
  283. data/client/lanes/components/grid/vendor/dataTables.scroller.js +0 -1262
  284. data/client/lanes/components/grid/vendor/index.js +0 -2
  285. data/client/lanes/components/grid/vendor/jquery.dataTables.js +0 -14839
  286. data/client/lanes/components/modal/ModalDialog.coffee +0 -68
  287. data/client/lanes/components/modal/template.html +0 -18
  288. data/client/lanes/components/multi-select/MultiSelect.coffee +0 -65
  289. data/client/lanes/components/popover/PopOver.coffee +0 -55
  290. data/client/lanes/components/popover/index.js +0 -2
  291. data/client/lanes/components/popover/styles.scss +0 -2
  292. data/client/lanes/components/popover/template.html +0 -5
  293. data/client/lanes/components/radio-group/RadioGroup.coffee +0 -47
  294. data/client/lanes/components/radio-group/index.js +0 -1
  295. data/client/lanes/components/radio-group/styles.scss +0 -1
  296. data/client/lanes/components/record-finder/Clause.coffee +0 -37
  297. data/client/lanes/components/record-finder/Dialog.coffee +0 -45
  298. data/client/lanes/components/record-finder/RecordFinder.coffee +0 -61
  299. data/client/lanes/components/record-finder/clause.html +0 -37
  300. data/client/lanes/components/record-finder/dialog.html +0 -4
  301. data/client/lanes/components/record-finder/field.html +0 -8
  302. data/client/lanes/components/select-field/SelectField.coffee +0 -63
  303. data/client/lanes/components/select2/Select2.coffee +0 -8
  304. data/client/lanes/components/select2/index.js +0 -2
  305. data/client/lanes/lib/Templates.coffee +0 -51
  306. data/client/lanes/lib/debounce.coffee +0 -15
  307. data/client/lanes/lib/defer.coffee +0 -7
  308. data/client/lanes/lib/el.js +0 -115
  309. data/client/lanes/lib/index.js +0 -5
  310. data/client/lanes/plugins/overlay.coffee +0 -41
  311. data/client/lanes/screens/Base.coffee +0 -35
  312. data/client/lanes/screens/Router.coffee +0 -4
  313. data/client/lanes/screens/mixins/Editing.coffee +0 -38
  314. data/client/lanes/styles/bootstrap/old/_alerts.scss +0 -68
  315. data/client/lanes/styles/bootstrap/old/_badges.scss +0 -57
  316. data/client/lanes/styles/bootstrap/old/_breadcrumbs.scss +0 -26
  317. data/client/lanes/styles/bootstrap/old/_button-groups.scss +0 -240
  318. data/client/lanes/styles/bootstrap/old/_buttons.scss +0 -157
  319. data/client/lanes/styles/bootstrap/old/_carousel.scss +0 -243
  320. data/client/lanes/styles/bootstrap/old/_close.scss +0 -35
  321. data/client/lanes/styles/bootstrap/old/_code.scss +0 -68
  322. data/client/lanes/styles/bootstrap/old/_component-animations.scss +0 -35
  323. data/client/lanes/styles/bootstrap/old/_dropdowns.scss +0 -215
  324. data/client/lanes/styles/bootstrap/old/_forms.scss +0 -538
  325. data/client/lanes/styles/bootstrap/old/_glyphicons.scss +0 -237
  326. data/client/lanes/styles/bootstrap/old/_grid.scss +0 -84
  327. data/client/lanes/styles/bootstrap/old/_input-groups.scss +0 -166
  328. data/client/lanes/styles/bootstrap/old/_jumbotron.scss +0 -48
  329. data/client/lanes/styles/bootstrap/old/_labels.scss +0 -66
  330. data/client/lanes/styles/bootstrap/old/_list-group.scss +0 -132
  331. data/client/lanes/styles/bootstrap/old/_media.scss +0 -56
  332. data/client/lanes/styles/bootstrap/old/_mixins.scss +0 -39
  333. data/client/lanes/styles/bootstrap/old/_modals.scss +0 -150
  334. data/client/lanes/styles/bootstrap/old/_navbar.scss +0 -659
  335. data/client/lanes/styles/bootstrap/old/_navs.scss +0 -242
  336. data/client/lanes/styles/bootstrap/old/_normalize.scss +0 -425
  337. data/client/lanes/styles/bootstrap/old/_pager.scss +0 -55
  338. data/client/lanes/styles/bootstrap/old/_pagination.scss +0 -88
  339. data/client/lanes/styles/bootstrap/old/_panels.scss +0 -243
  340. data/client/lanes/styles/bootstrap/old/_popovers.scss +0 -133
  341. data/client/lanes/styles/bootstrap/old/_print.scss +0 -101
  342. data/client/lanes/styles/bootstrap/old/_progress-bars.scss +0 -105
  343. data/client/lanes/styles/bootstrap/old/_responsive-embed.scss +0 -34
  344. data/client/lanes/styles/bootstrap/old/_responsive-utilities.scss +0 -174
  345. data/client/lanes/styles/bootstrap/old/_scaffolding.scss +0 -150
  346. data/client/lanes/styles/bootstrap/old/_tables.scss +0 -233
  347. data/client/lanes/styles/bootstrap/old/_theme.scss +0 -258
  348. data/client/lanes/styles/bootstrap/old/_thumbnails.scss +0 -38
  349. data/client/lanes/styles/bootstrap/old/_tooltip.scss +0 -95
  350. data/client/lanes/styles/bootstrap/old/_type.scss +0 -304
  351. data/client/lanes/styles/bootstrap/old/_utilities.scss +0 -57
  352. data/client/lanes/styles/bootstrap/old/_variables.scss +0 -850
  353. data/client/lanes/styles/bootstrap/old/_wells.scss +0 -29
  354. data/client/lanes/styles/bootstrap/old/bootstrap.scss +0 -50
  355. data/client/lanes/styles/bootstrap/old/mixins/_alerts.scss +0 -14
  356. data/client/lanes/styles/bootstrap/old/mixins/_background-variant.scss +0 -11
  357. data/client/lanes/styles/bootstrap/old/mixins/_border-radius.scss +0 -18
  358. data/client/lanes/styles/bootstrap/old/mixins/_buttons.scss +0 -50
  359. data/client/lanes/styles/bootstrap/old/mixins/_center-block.scss +0 -7
  360. data/client/lanes/styles/bootstrap/old/mixins/_clearfix.scss +0 -22
  361. data/client/lanes/styles/bootstrap/old/mixins/_forms.scss +0 -84
  362. data/client/lanes/styles/bootstrap/old/mixins/_gradients.scss +0 -58
  363. data/client/lanes/styles/bootstrap/old/mixins/_grid-framework.scss +0 -81
  364. data/client/lanes/styles/bootstrap/old/mixins/_grid.scss +0 -122
  365. data/client/lanes/styles/bootstrap/old/mixins/_hide-text.scss +0 -21
  366. data/client/lanes/styles/bootstrap/old/mixins/_image.scss +0 -34
  367. data/client/lanes/styles/bootstrap/old/mixins/_labels.scss +0 -12
  368. data/client/lanes/styles/bootstrap/old/mixins/_list-group.scss +0 -31
  369. data/client/lanes/styles/bootstrap/old/mixins/_nav-divider.scss +0 -10
  370. data/client/lanes/styles/bootstrap/old/mixins/_nav-vertical-align.scss +0 -9
  371. data/client/lanes/styles/bootstrap/old/mixins/_opacity.scss +0 -8
  372. data/client/lanes/styles/bootstrap/old/mixins/_pagination.scss +0 -23
  373. data/client/lanes/styles/bootstrap/old/mixins/_panels.scss +0 -24
  374. data/client/lanes/styles/bootstrap/old/mixins/_progress-bar.scss +0 -10
  375. data/client/lanes/styles/bootstrap/old/mixins/_reset-filter.scss +0 -8
  376. data/client/lanes/styles/bootstrap/old/mixins/_resize.scss +0 -6
  377. data/client/lanes/styles/bootstrap/old/mixins/_responsive-visibility.scss +0 -21
  378. data/client/lanes/styles/bootstrap/old/mixins/_size.scss +0 -10
  379. data/client/lanes/styles/bootstrap/old/mixins/_tab-focus.scss +0 -9
  380. data/client/lanes/styles/bootstrap/old/mixins/_table-row.scss +0 -28
  381. data/client/lanes/styles/bootstrap/old/mixins/_text-emphasis.scss +0 -11
  382. data/client/lanes/styles/bootstrap/old/mixins/_text-overflow.scss +0 -8
  383. data/client/lanes/styles/bootstrap/old/mixins/_vendor-prefixes.scss +0 -219
  384. data/client/lanes/styles/font-definitions.scss +0 -451
  385. data/client/lanes/testing/TestModels.coffee +0 -23
  386. data/client/lanes/vendor/bootstrap/affix.js +0 -162
  387. data/client/lanes/vendor/bootstrap/alert.js +0 -94
  388. data/client/lanes/vendor/bootstrap/button.js +0 -116
  389. data/client/lanes/vendor/bootstrap/carousel.js +0 -240
  390. data/client/lanes/vendor/bootstrap/collapse.js +0 -211
  391. data/client/lanes/vendor/bootstrap/dropdown.js +0 -161
  392. data/client/lanes/vendor/bootstrap/modal.js +0 -324
  393. data/client/lanes/vendor/bootstrap/popover.js +0 -119
  394. data/client/lanes/vendor/bootstrap/scrollspy.js +0 -175
  395. data/client/lanes/vendor/bootstrap/tab.js +0 -153
  396. data/client/lanes/vendor/bootstrap/tooltip.js +0 -478
  397. data/client/lanes/vendor/bootstrap/transition.js +0 -59
  398. data/client/lanes/vendor/message-bus.js +0 -285
  399. data/client/lanes/vendor/modern-stack.js +0 -27
  400. data/client/lanes/vendor/packaged.js +0 -19533
  401. data/client/lanes/views/Assets.coffee +0 -9
  402. data/client/lanes/views/Base.coffee +0 -426
  403. data/client/lanes/views/Functions.coffee +0 -13
  404. data/client/lanes/views/Helpers.coffee +0 -76
  405. data/client/lanes/views/Keys.coffee +0 -59
  406. data/client/lanes/views/RenderContext.coffee +0 -32
  407. data/client/lanes/views/SaveNotify.coffee +0 -32
  408. data/client/lanes/views/Viewport.coffee +0 -18
  409. data/client/lanes/views/_button.html +0 -3
  410. data/client/lanes/views/_toolbar.html +0 -23
  411. data/client/lanes/views/empty-span.html +0 -1
  412. data/client/lanes/views/index.js +0 -2
  413. data/client/lanes/views/model-update.html +0 -15
  414. data/client/lanes/workspace/ActiveScreensSwitcher.coffee +0 -112
  415. data/client/lanes/workspace/Layout.coffee +0 -29
  416. data/client/lanes/workspace/Navbar.coffee +0 -31
  417. data/client/lanes/workspace/Pages.coffee +0 -39
  418. data/client/lanes/workspace/ScreensMenu.coffee +0 -126
  419. data/client/lanes/workspace/WorkspaceView.coffee +0 -8
  420. data/client/lanes/workspace/layout.html +0 -4
  421. data/client/lanes/workspace/menu.html +0 -356
  422. data/client/lanes/workspace/menu_toggle.html +0 -9
  423. data/client/lanes/workspace/navbar.html +0 -17
  424. data/client/lanes/workspace/pages.html +0 -6
  425. data/client/lanes/workspace/screens-menu.html +0 -11
  426. data/client/lanes/workspace/screens-switcher.html +0 -7
  427. data/docs/view.md +0 -292
  428. data/lib/lanes/command/generate_view.rb +0 -38
  429. data/lib/lanes/command/generate_view.usage +0 -13
  430. data/spec/command-reference-files/initial/client/appy-app/Router.coffee +0 -4
  431. data/spec/command-reference-files/initial/client/appy-app/controllers/.gitkeep +0 -0
  432. data/spec/command-reference-files/initial/client/appy-app/views/.gitkeep +0 -0
  433. data/spec/command-reference-files/initial/client/appy-app/views/Base.coffee +0 -5
  434. data/spec/command-reference-files/initial/spec/appy-app/screens/Base.coffee +0 -5
  435. data/spec/command-reference-files/screen/client/appy-app/screens/ready-set-go/ReadySetGo.coffee +0 -6
  436. data/spec/command-reference-files/screen/client/appy-app/screens/ready-set-go/layout.html +0 -3
  437. data/spec/command-reference-files/view/client/appy-app/views/BigView.coffee +0 -10
  438. data/spec/command-reference-files/view/spec/appy-app/views/BigViewSpec.coffee +0 -5
  439. data/templates/client/Router.coffee +0 -4
  440. data/templates/client/components/Component.coffee +0 -1
  441. data/templates/client/screens/Base.coffee +0 -3
  442. data/templates/client/screens/Screen.coffee +0 -11
  443. data/templates/client/screens/layout.html +0 -3
  444. data/templates/client/views/.gitkeep +0 -0
  445. data/templates/client/views/BaseView.coffee +0 -5
  446. data/templates/client/views/View.coffee +0 -10
  447. data/templates/spec/client/views/ViewSpec.coffee +0 -5
@@ -1,9 +0,0 @@
1
- Lanes.Views.Assets = {
2
- path: (asset)->
3
- path = @paths[ asset ]
4
- Lanes.log( "Path for #{asset} was not found" ) unless path
5
- path
6
-
7
- setPaths: (paths={})->
8
- @paths = paths;
9
- }
@@ -1,426 +0,0 @@
1
- amp = Lanes.Vendor.Ampersand
2
- delegateEventSplitter = /^(\S+)\s*(.*)$/
3
- class ViewBase
4
-
5
- extendedProperties: ['ui','subviews']
6
-
7
- # Custom datatypes for views
8
- dataTypes:
9
- element:
10
- compare: (a, b)-> a is b
11
- set: (newVal)->
12
- val: newVal
13
- type: (if newVal instanceof Element then "element" else typeof newVal)
14
-
15
- collection:
16
- compare: (currentVal, newVal)-> currentVal is newVal
17
- set: (newVal)->
18
- val: newVal
19
- type: (if newVal and newVal.isCollection then "collection" else typeof newVal)
20
-
21
- session:
22
- el : "element"
23
- model : "state"
24
- collection : "collection"
25
- pubSub : "boolean"
26
- parent : "object"
27
- subviewId : { type: "string", setOnce: true }
28
-
29
- derived:
30
- '$el':
31
- deps: ['el'], cached: false
32
- fn: -> Lanes.$(this.el)
33
-
34
- root_view:
35
- deps: ['parent'], fn: ->
36
- view = this
37
- while view.parent
38
- view = view.parent
39
- if view == this then null else view
40
-
41
- rendered:
42
- deps: ["el"], fn: -> !!@el
43
-
44
- hasModels:
45
- deps: ["model"], fn: -> !!@model
46
-
47
- viewport:
48
- deps: ['parent'], fn:->
49
- this.root_view?.viewport
50
-
51
-
52
- constructor: (options={})->
53
-
54
- this.cid = _.uniqueId('view');
55
- options || (options = {});
56
- parent = options.parent;
57
- delete options.parent;
58
-
59
- this._substituteEventUI()
60
-
61
- Lanes.Vendor.Ampersand.State.call(this, options, {init: false, parent: parent})
62
-
63
- this.on('change:$el', this._onElementChange, this)
64
- this.on('change:model', this._onModelChange, this)
65
- this.on('change:collection', this._onCollectionChange, this)
66
- this._onModelChange() if @model
67
- this._onCollectionChange() if @collection
68
- this._parsedBindings = Lanes.Vendor.Ampersand.Bindings(this.bindings, this)
69
- this._initializeBindings();
70
- if options.el && !this.autoRender
71
- this._onElementChange();
72
-
73
- this._initializeSubviews();
74
-
75
- this.render() if this.autoRender && this.template
76
-
77
- if !this.pubSub? # if it's unset, not true/false; default to parent or true
78
- this.pubSub = if this.parent?.pubSub? then this.parent.pubSub else true
79
-
80
- if @formBindings || options.formBindings || @parent?.formBindings
81
- @formBindings = new Lanes.Views.FormBindings(this, @formBindings||options.formBindings)
82
-
83
- if @keyBindings
84
- Lanes.Views.Keys.add(this, @keyBindings, @keyScope)
85
-
86
- if @pubSub
87
- this._pubSub = new Lanes.Views.PubSub(this)
88
-
89
- # all done, call initialize ourselves since we told state not to via 'init:false'
90
- this.initialize.apply(this, arguments);
91
-
92
- _normalizeUIString: (uiString, ui)->
93
- uiString.replace(/@ui\.[a-zA-Z_$0-9]*/g, (r)->
94
- return ui[r.slice(4)]
95
- )
96
-
97
- _substituteEventUI: ->
98
- return unless @ui
99
- if @domEvents
100
- for selector in _.keys(@domEvents)
101
- replaced_selector = this._normalizeUIString(selector,@ui)
102
- if replaced_selector != selector
103
- @domEvents[replaced_selector] = @domEvents[selector]
104
- delete @domEvents[selector]
105
- # TODO - also apply ui to binding keys
106
-
107
-
108
- # Initialize is an empty function by default. Override it with your own
109
- # initialization logic.
110
- initialize: Lanes.emptyFn
111
-
112
- # **render** is the core function that your view can override, its job is
113
- # to populate its element (`this.el`), with the appropriate HTML.
114
- render: ->
115
- Lanes.Views.RenderContext.push( this, @model )
116
- this.renderContextFree()
117
- Lanes.Views.RenderContext.pop()
118
- this
119
-
120
- renderContextFree: ->
121
- this.replaceEl( this.renderTemplateMethod() );
122
- this
123
-
124
- # ## listenToAndRun
125
- # Shortcut for registering a listener for a model
126
- # and also triggering it right away.
127
- listenToAndRun: (object, events, handler)->
128
- bound = _.bind(handler, this)
129
- this.listenTo(object, events, bound)
130
- bound();
131
-
132
- # Replaces the current root element with the contents of template
133
- replaceEl: (template)->
134
- newDom = Lanes.Vendor.domify(template)
135
- parent = this.el && this.el.parentNode;
136
- parent.replaceChild(newDom, this.el) if parent
137
- if newDom.nodeName == '#document-fragment'
138
- throw new Error("View #{Lanes.u.path(this.FILE)} can only have one root element.")
139
- if newDom.nodeName == '#text'
140
- throw new Error("View #{Lanes.u.path(this.FILE)} must have a root element.")
141
- this.el = newDom;
142
- this.onRender?()
143
- return this;
144
-
145
- # Renders the results of calling method "name"
146
- # to a string and returns it.
147
- #
148
- # The template can either be a string property or a function that returns a string.
149
- renderTemplateMethod:(name="template",data)->
150
- template = if this[name]
151
- _.result(this, name)
152
- else
153
- data ||= _.result(this,"#{name}Data")
154
- template_name = _.result(this, "#{name}Name")
155
- path = this.resultsFor('templatePrefix', template_name) + '/' + template_name
156
- Lanes.Templates.render(this, path, data)
157
- throw new Error("#{Lanes.u.path(this.FILE)} failed to render #{path || name}") unless template
158
- template
159
-
160
- templateName: -> _.dasherize(_.last(this.FILE.path))
161
-
162
- templatePrefix: (template)->
163
- if template == "empty-span"
164
- "lanes/views"
165
- else
166
- Lanes.u.dirname(this.FILE)
167
-
168
- templateData: ->
169
- { model: @model?.toJSON?(), collection: @collection?.toJSON?() }
170
-
171
- FILE: FILE
172
-
173
- # Remove this view by taking the element out of the DOM, and removing any
174
- # applicable events listeners.
175
- remove: ->
176
- parsedBindings = this._parsedBindings;
177
- if this.el && this.el.parentNode then this.el.parentNode.removeChild(this.el);
178
- if this._subviews then _.chain(this._subviews).flatten().invoke('remove');
179
- this.stopListening();
180
- # TODO: Not sure if this is actually necessary.
181
- # Just trying to de-reference this potentially large
182
- # amount of generated functions to avoid memory leaks.
183
- _.each(parsedBindings, (properties, modelName)->
184
- _.each(properties, (value, key)->
185
- delete parsedBindings[modelName][key];
186
- );
187
- delete parsedBindings[modelName];
188
- );
189
- this._unbindFromObject(@model, @modelEvents) if @model and @modelEvents
190
- this._unbindFromObject(@collection, @collectionEvents) if @collection and @collectionEvents
191
-
192
- Lanes.Views.Keys.remove(this, @keyBindings, @keyScope) if @keyBindings
193
- this.trigger('remove', this);
194
- return this;
195
-
196
- # Change the view's element (`this.el` property), including event re-delegation.
197
- _onElementChange: (element, delegate) ->
198
- if changes = this.changedAttributes()
199
- Lanes.$(changes['el']).off('.delegateEvents' + this.cid) if changes['el']
200
- this.bindDomEvents()
201
- this._cacheUI()
202
- this._applyBindingsForKey();
203
-
204
- _cacheUI:->
205
- return unless this.ui
206
- # store the ui hash in _uiBindings so they can be reset later
207
- # and so re-rendering the view will be able to find the bindings
208
- this._uiBindings = this.ui unless this._uiBindings
209
-
210
- # get the bindings result, as a function or otherwise
211
- bindings = _.result(this, '_uiBindings')
212
-
213
- # empty the ui so we don't have anything to start with
214
- this.ui = {};
215
-
216
- # bind each of the selectors
217
- for key, selector of bindings
218
- this.ui[key] = this.$el.filter(selector).add(this.$el.find(selector))
219
-
220
-
221
- # Sets callbacks, where `this.domEvents` is a hash of
222
- #
223
- # *{"event selector": "callback"}*
224
- #
225
- # {
226
- # 'mousedown .title': 'edit',
227
- # 'click .button': 'save',
228
- # 'click .open': function (e) { ... }
229
- # }
230
- #
231
- # pairs. Callbacks will be bound to the view, with `this` set properly.
232
- # Uses event delegation for efficiency.
233
- # Omitting the selector binds the event to `this.el`.
234
- # This only works for delegate-able events: not `focus`, `blur`, and
235
- # not `change`, `submit`, and `reset` in Internet Explorer.
236
- bindDomEvents: (events)->
237
- return this if (!(events || (events = _.result(this, 'domEvents'))))
238
- this.unbindDomEvents();
239
- for key, method of events
240
- method = this[ method ] unless _.isFunction(method);
241
- continue unless method
242
- match = key.match( delegateEventSplitter )
243
- this.bindEvent(match[1], match[2], _.bind(method, this))
244
- return this;
245
-
246
- # Add a single event listener to the view's element (or a child element
247
- # using `selector`). This only works for delegate-able events: not `focus`,
248
- # `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.
249
- bindEvent: (eventName, selector, listener)->
250
- this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener)
251
-
252
- # Clears all callbacks previously bound to the view with `delegateEvents`.
253
- # You usually don't need to use this, but may wish to if you have multiple
254
- # views attached to the same DOM element.
255
- unbindDomEvents: ->
256
- this.$el.off('.delegateEvents' + this.cid) if this.el
257
- return this;
258
-
259
- # A finer-grained `unbind` for removing a single delegated event.
260
- # `selector` and `listener` are both optional.
261
- unbind: (eventName, selector, listener)->
262
- this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener)
263
-
264
-
265
- _applyBindingsForKey: (name)->
266
- return unless this.el
267
- for item, fns of this._parsedBindings.getGrouped(name)
268
- for fn in fns
269
- fn(this.el, _.getPath(this, item), _.last(item.split('.')))
270
-
271
- _initializeBindings: ->
272
- return unless this.bindings
273
- this.on('all', (eventName)->
274
- if eventName.slice(0, 7) == 'change:'
275
- this._applyBindingsForKey(eventName.split(':')[1]);
276
- ,this);
277
-
278
- # ## _initializeSubviews
279
- # this is called at setup and grabs declared subviews
280
- _initializeSubviews: ->
281
- return unless this.subviews
282
- for name, definition of this.subviews
283
- this._parseSubview(definition, name)
284
-
285
- # ## _subviewClass
286
- # helper to detect the class for a given subviev
287
- _subviewClass: (subview)->
288
- klass = if subview.component
289
- Lanes.u.findObject(subview.component, 'Components', this.FILE)
290
- else if subview.view
291
- if _.isString(subview.view)
292
- this.findSubView(subview.view)
293
- else
294
- subview.view
295
- Lanes.warn( "Unable to obtain view for %o", subview) if ! klass
296
- klass
297
-
298
- # ## findSubView
299
- # searches for the named subview in the appropriate location
300
- # normal view will search the Views namespace, screens under the screen
301
- findSubView: (name)->
302
- Lanes.u.findRelative(name, this.FILE) ||
303
- @FILE.namespace['Views']?[name] ||
304
- Lanes.u.getPath(name)
305
-
306
- # ## _parseSubview
307
- # helper for parsing out the subview declaration and registering
308
- # the `waitFor` if need be.
309
- _parseSubview: (subview, name)->
310
- self = this;
311
- opts = {
312
- selector: subview.container || "[data-hook='#{subview.hook||name}']"
313
- waitFor: subview.waitFor || subview.model || subview.collection || ''
314
- prepareView: subview.prepareView || (el,options)->
315
- klass = self._subviewClass(subview)
316
- if subview.collection
317
- new Lanes.Vendor.Ampersand.CollectionView({
318
- el: el, parent: self, viewOptions: options, view: klass,
319
- collection: _.getPath(this, subview.collection)
320
- })
321
- else
322
- options = _.extend(options,{ el: el, parent: self })
323
- for attr in ['model','data']
324
- if subview[attr]
325
- options[attr] = _.getPath(this, subview[attr])
326
- new klass(options)
327
-
328
- }
329
- action = ->
330
- return if (!this.el || !(el = this.query(opts.selector)))
331
- if (!opts.waitFor || _.getPath(this, opts.waitFor))
332
- options = this.subviewOptions(name,subview)
333
- options.subviewId = name
334
- subview = this[name] = opts.prepareView.call(this, el, options);
335
- subview.render();
336
- this.off('change', action);
337
-
338
- # we listen for main `change` items
339
- this.on('change', action, this);
340
-
341
- # ## subviewOptions
342
- # Options to initailize a subview with when it's created
343
- # Subviews will always be passed the parent (this) and the el.
344
- # Additional options can be given by specifying "options" on the definition
345
- # The options can be a method name to call or an object
346
- # This method can also be overridden to specify the same options to all subviews
347
- subviewOptions: (name,definition)->
348
- this.resultsFor(definition.options, name, definition) || {}
349
-
350
- # ## query
351
- # Get an single element based on CSS selector scoped to this.el
352
- # if you pass an empty string it return `this.el`.
353
- # If you pass an element we just return it back.
354
- # This lets us use `get` to handle cases where users
355
- # can pass a selector or an already selected element.
356
- query: (selector)->
357
- return this el unless selector
358
- if typeof selector == 'string'
359
- return this.el if this.$el.is(selector)
360
- return this.el.querySelector(selector) || undefined;
361
- return selector;
362
-
363
- # Called when a different model is set
364
- _onModelChange: ->
365
- for name, definition of this.subviews
366
- continue unless ( view = this[name] )
367
- view.model = Lanes.u.getPath(definition.model, this) if definition.model
368
- view.collection = Lanes.u.getPath(definition.collection, this) if definition.collection
369
- prev = this.previous('model')
370
- return if prev == @model
371
- this._unbindFromObject(prev, @modelEvents) if prev
372
- this._bindToObject(@model, @modelEvents) if @model
373
- this.onModelChange?(prev)
374
- true
375
-
376
- _onCollectionChange: ->
377
- prev = this.previous('collection')
378
- return if prev == @collection
379
- this._unbindFromObject(prev, @collectionEvents) if prev
380
- this._bindToObject(@collection, @collectionEvents)
381
-
382
- _bindToObject: (state_object,events)->
383
- for event, fn of events
384
- fn = this[fn] unless _.isFunction(fn)
385
- this.listenTo(state_object, event, fn, this)
386
-
387
- _unbindFromObject: (state_object,events)->
388
- for event, fn of events
389
- fn = this[fn] unless _.isFunction(fn)
390
- this.stopListening(state_object, event, fn, this)
391
-
392
- initializeKeyBindings: Lanes.emptyFn
393
-
394
-
395
- setFieldsFromBindings: ->
396
- binding.setAllFields() for name, binding of @_form_bindings
397
-
398
- viewpath: ''
399
-
400
- detach: ->
401
- this.el.parentNode.removeChild(this.el) if this.el.parentNode
402
-
403
- $: (selector)->
404
- this.$el.find(selector)
405
-
406
-
407
- parentScreen: ->
408
- view = this
409
- while view and ! ( view instanceof Lanes.Views.Screen )
410
- view = view.parent
411
- view
412
-
413
- @extended: (klass)->
414
- if klass::events && !klass::domEvents
415
- klass::domEvents == klass::events
416
- delete klass::events
417
- # perhaps we should merge 'events','bindings'?
418
-
419
-
420
- Lanes.lib.ModuleSupport.includeInto(@)
421
- @include Lanes.lib.defer
422
- @include Lanes.lib.debounce
423
- @include Lanes.lib.results
424
-
425
-
426
- Lanes.Views.Base = Lanes.lib.MakeBaseClass( Lanes.Vendor.Ampersand.State, ViewBase )
@@ -1,13 +0,0 @@
1
-
2
- Lanes.Views.fn = {
3
-
4
- toggleClass: (class_name, selector='')->
5
- {
6
- selector: '', elAttribute: 'class', converter:
7
- (dir,value)-> if value then class_name else ''
8
- }
9
-
10
- onEnter: (method)->
11
- (ev)->
12
- this[method](ev) if 13 == ev.keyCode
13
- }