lanes 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (446) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/Gemfile +1 -1
  4. data/Rakefile +0 -42
  5. data/client/{javascripts/component → lanes/components}/Base.coffee +10 -10
  6. data/client/{javascripts/component → lanes/components}/ChoicesInput.coffee +0 -0
  7. data/client/lanes/components/enabled.js.erb +3 -0
  8. data/client/{javascripts/lib/create-namespace.js → lanes/components/enabled.scss.erb} +0 -0
  9. data/client/{javascripts/component → lanes/components}/grid/Editor.coffee +10 -13
  10. data/client/{javascripts/component → lanes/components/grid}/Grid.coffee +6 -6
  11. data/client/{javascripts/component → lanes/components}/grid/PopOverEditor.coffee +3 -3
  12. data/client/{javascripts/component → lanes/components}/grid/RowEditor.coffee +2 -3
  13. data/client/lanes/components/grid/config.json +3 -0
  14. data/client/{stylesheets/compoonents/grid-editors.scss → lanes/components/grid/editors.scss} +0 -0
  15. data/client/{stylesheets/compoonents → lanes/components/grid}/grid.scss +8 -6
  16. data/client/lanes/components/grid/index.js +8 -0
  17. data/client/{javascripts/component → lanes/components}/grid/popover-editor.html +0 -0
  18. data/client/{javascripts/component → lanes/components}/grid/row-editor.html +0 -0
  19. data/client/{javascripts/component/grid.html → lanes/components/grid/template.html} +0 -0
  20. data/client/{javascripts/vendor/dataTables → lanes/components/grid/vendor}/dataTables.bootstrap.js +0 -0
  21. data/client/{javascripts/vendor/dataTables → lanes/components/grid/vendor}/dataTables.scroller.js +0 -0
  22. data/client/{javascripts/vendor/dataTables → lanes/components/grid/vendor}/datatables.responsive.js +0 -0
  23. data/client/{javascripts/vendor/dataTables → lanes/components/grid/vendor}/index.js +0 -0
  24. data/client/{javascripts/vendor/dataTables → lanes/components/grid/vendor}/jquery.dataTables.js +1 -0
  25. data/client/lanes/components/index.js +2 -0
  26. data/client/lanes/components/modal/ModalDialog.coffee +47 -0
  27. data/client/lanes/components/modal/index.js +2 -0
  28. data/client/lanes/components/modal/modal.scss +20 -0
  29. data/client/{javascripts/component/modal.html → lanes/components/modal/template.html} +5 -4
  30. data/client/{javascripts/component → lanes/components/popover}/PopOver.coffee +4 -4
  31. data/client/lanes/components/popover/index.js +2 -0
  32. data/client/lanes/components/popover/popover.scss +1 -0
  33. data/client/{javascripts/component/popover.html → lanes/components/popover/template.html} +0 -0
  34. data/client/{javascripts/component → lanes/components/radio_group}/RadioGroup.coffee +1 -1
  35. data/client/{javascripts/component → lanes/components/record_finder}/RecordFinder.coffee +4 -4
  36. data/client/{javascripts/component/record-finder → lanes/components/record_finder}/clause.skr +0 -0
  37. data/client/{javascripts/component/record-finder → lanes/components/record_finder}/dialog.skr +0 -0
  38. data/client/{javascripts/component/record-finder → lanes/components/record_finder}/field.skr +0 -0
  39. data/client/lanes/components/select_field/SelectField.coffee +87 -0
  40. data/client/{screens/user-management → lanes/components/select_field}/index.js +0 -1
  41. data/client/{javascripts/workspace/tab.html → lanes/components/select_field/select_field.scss} +0 -0
  42. data/client/{javascripts → lanes}/data/Bootstrap.coffee +0 -0
  43. data/client/{javascripts → lanes}/data/ChangeSet.coffee +0 -0
  44. data/client/{javascripts → lanes}/data/Collection.coffee +37 -6
  45. data/client/{javascripts → lanes}/data/Config.coffee +0 -0
  46. data/client/{javascripts → lanes}/data/Model.coffee +8 -9
  47. data/client/{javascripts → lanes}/data/PubSub.coffee +0 -0
  48. data/client/{javascripts → lanes}/data/Query.coffee +0 -0
  49. data/client/{javascripts → lanes}/data/Screens.coffee +48 -19
  50. data/client/{javascripts → lanes}/data/Sync.coffee +5 -5
  51. data/client/lanes/data/User.coffee +46 -0
  52. data/client/{javascripts → lanes}/data/index.js +1 -2
  53. data/client/{javascripts → lanes}/data/mixins/HasCodeField.coffee +1 -1
  54. data/client/{javascripts → lanes}/extension/Base.coffee +1 -1
  55. data/client/lanes/extension/EarlyExtensions.js.erb +3 -0
  56. data/client/{javascripts → lanes}/extension/Extensions.coffee +5 -0
  57. data/client/{javascripts → lanes}/extension/GlAccounts.coffee +0 -0
  58. data/client/lanes/extension/LateLoaded.js.erb +3 -0
  59. data/client/lanes/extension/index.js +5 -0
  60. data/client/lanes/extension/namespace-available.js.erb +3 -0
  61. data/client/lanes/index.js +11 -0
  62. data/client/{javascripts → lanes}/lib/MakeBaseClass.coffee +0 -0
  63. data/client/{javascripts → lanes}/lib/ModuleSupport.coffee +0 -0
  64. data/client/{javascripts → lanes}/lib/Templates.coffee +2 -5
  65. data/{spec/client/foo_spec.js → client/lanes/lib/create-namespace.js} +0 -0
  66. data/client/{javascripts → lanes}/lib/debounce.coffee +0 -0
  67. data/client/{javascripts → lanes}/lib/defer.coffee +0 -0
  68. data/client/{javascripts → lanes}/lib/el.js +0 -0
  69. data/client/{javascripts → lanes}/lib/index.js +0 -4
  70. data/client/{javascripts → lanes}/lib/loader.coffee +15 -10
  71. data/client/{javascripts → lanes}/lib/namespace.coffee +3 -0
  72. data/client/{javascripts → lanes}/lib/noConflict.coffee +1 -0
  73. data/client/{javascripts → lanes}/lib/promise_helpers.coffee +0 -0
  74. data/client/{javascripts → lanes}/lib/results.coffee +0 -0
  75. data/client/{javascripts → lanes}/lib/utilFunctions.coffee +11 -13
  76. data/client/{javascripts → lanes}/plugins/ResizeSensor.js +0 -0
  77. data/client/lanes/plugins/index.js +1 -0
  78. data/client/{javascripts → lanes}/plugins/overlay.coffee +0 -0
  79. data/client/{javascripts → lanes}/plugins/trigger.coffee +0 -0
  80. data/client/lanes/screens/Base.coffee +40 -0
  81. data/client/{javascripts/view/mixins/ScreenChangeListener.coffee → lanes/screens/ChangeListener.coffee} +2 -2
  82. data/client/lanes/screens/Router.coffee +6 -0
  83. data/client/lanes/screens/index.js +1 -0
  84. data/client/{javascripts/view → lanes/screens}/screen-definitions.js.erb +0 -0
  85. data/client/{javascripts → lanes}/vendor/bootstrap/affix.js +43 -23
  86. data/client/{javascripts → lanes}/vendor/bootstrap/alert.js +6 -4
  87. data/client/{javascripts → lanes}/vendor/bootstrap/button.js +16 -10
  88. data/client/{javascripts → lanes}/vendor/bootstrap/carousel.js +27 -10
  89. data/client/{javascripts → lanes}/vendor/bootstrap/collapse.js +69 -28
  90. data/client/{javascripts → lanes}/vendor/bootstrap/dropdown.js +20 -10
  91. data/client/{javascripts → lanes}/vendor/bootstrap/modal.js +67 -23
  92. data/client/{javascripts → lanes}/vendor/bootstrap/popover.js +13 -7
  93. data/client/{javascripts → lanes}/vendor/bootstrap/scrollspy.js +12 -7
  94. data/client/{javascripts → lanes}/vendor/bootstrap/tab.js +41 -16
  95. data/client/{javascripts → lanes}/vendor/bootstrap/tooltip.js +60 -39
  96. data/client/{javascripts → lanes}/vendor/bootstrap/transition.js +1 -1
  97. data/client/{javascripts → lanes}/vendor/jquery-2.js +0 -0
  98. data/client/{javascripts → lanes}/vendor/jquery.tap.js +0 -0
  99. data/client/{javascripts → lanes}/vendor/magicsuggest.js +0 -0
  100. data/client/{javascripts → lanes}/vendor/message-bus.js +0 -0
  101. data/client/lanes/vendor/modern-stack.js +27 -0
  102. data/client/lanes/vendor/packaged.js +13698 -0
  103. data/client/{javascripts/view → lanes/views}/Assets.coffee +1 -1
  104. data/client/lanes/views/Base.coffee +426 -0
  105. data/client/{javascripts/view → lanes/views}/FormBindings.coffee +1 -1
  106. data/client/{javascripts/view → lanes/views}/Functions.coffee +1 -1
  107. data/client/{javascripts/view → lanes/views}/Helpers.coffee +6 -6
  108. data/client/{javascripts/view → lanes/views}/Keys.coffee +3 -3
  109. data/client/{javascripts/view → lanes/views}/ModelObserver.coffee +1 -1
  110. data/client/{javascripts/view → lanes/views}/ModelUpdate.coffee +2 -2
  111. data/client/{javascripts/view → lanes/views}/PubSub.coffee +3 -3
  112. data/client/{javascripts/view → lanes/views}/RenderContext.coffee +1 -1
  113. data/client/{javascripts/view → lanes/views}/SaveNotify.coffee +2 -2
  114. data/client/{javascripts/view → lanes/views}/TimedHighlight.coffee +1 -1
  115. data/client/{javascripts/view → lanes/views}/TimedMask.coffee +1 -1
  116. data/client/{javascripts/view/InterfaceState.coffee → lanes/views/Viewport.coffee} +18 -18
  117. data/client/{javascripts/view → lanes/views}/_button.html +0 -0
  118. data/client/{javascripts/view → lanes/views}/_toolbar.html +0 -0
  119. data/client/lanes/views/index.js +2 -0
  120. data/client/{javascripts/view → lanes/views}/model-update.html +0 -0
  121. data/client/{javascripts → lanes}/workspace/ActiveScreensSwitcher.coffee +23 -27
  122. data/client/{javascripts → lanes}/workspace/Instance.es6 +25 -21
  123. data/client/{javascripts → lanes}/workspace/Layout.coffee +6 -5
  124. data/client/{javascripts → lanes}/workspace/Navbar.coffee +2 -2
  125. data/client/{javascripts → lanes}/workspace/Pages.coffee +9 -13
  126. data/client/{javascripts → lanes}/workspace/ScreensMenu.coffee +11 -11
  127. data/client/{javascripts → lanes}/workspace/index.js +7 -5
  128. data/client/{javascripts → lanes}/workspace/layout.html +0 -0
  129. data/client/{javascripts → lanes}/workspace/menu.html +0 -0
  130. data/client/{javascripts → lanes}/workspace/menu_toggle.html +0 -0
  131. data/client/{javascripts → lanes}/workspace/navbar.html +0 -0
  132. data/client/{javascripts → lanes}/workspace/pages.html +0 -0
  133. data/client/{javascripts → lanes}/workspace/screens-menu.html +0 -0
  134. data/client/{javascripts → lanes}/workspace/screens-switcher.html +0 -0
  135. data/client/lanes/workspace/tab.html +0 -0
  136. data/client/lanes/workspace.scss.erb +21 -0
  137. data/client/{javascripts/lanes-complete.js → lanes-complete.js} +0 -0
  138. data/client/lanes-workspace.scss.erb +21 -0
  139. data/client/{stylesheets/compoonents → styles/components}/all.scss +0 -0
  140. data/client/{stylesheets/compoonents → styles/components}/changes-notification.scss +0 -0
  141. data/client/{stylesheets/compoonents → styles/components}/record-finder.scss +0 -0
  142. data/client/{stylesheets/compoonents → styles/components}/suggest.scss +0 -0
  143. data/client/{stylesheets → styles}/fonts/icomoon.eot +0 -0
  144. data/client/{stylesheets → styles}/fonts/icomoon.svg +0 -0
  145. data/client/{stylesheets → styles}/fonts/icomoon.ttf +0 -0
  146. data/client/{stylesheets → styles}/fonts/icomoon.woff +0 -0
  147. data/client/{stylesheets → styles}/fonts/selection.json +0 -0
  148. data/client/{stylesheets/fonts/style.css → styles/fonts/style.scss} +0 -0
  149. data/client/{stylesheets → styles}/fonts.scss +6 -6
  150. data/client/{stylesheets → styles}/forms.scss +0 -0
  151. data/client/{stylesheets → styles}/index.css +0 -0
  152. data/client/{stylesheets → styles}/keybindings.scss +0 -0
  153. data/client/{stylesheets → styles}/layout.scss +1 -1
  154. data/client/{stylesheets → styles}/plugins/all.scss +0 -0
  155. data/client/{stylesheets → styles}/plugins/overlay.scss +1 -1
  156. data/client/{stylesheets → styles}/plugins/resize-sensor.scss +0 -0
  157. data/client/{stylesheets → styles}/screens.scss +0 -0
  158. data/client/{stylesheets → styles}/tabs.scss +0 -0
  159. data/client/{stylesheets → styles}/vendor/bootstrap/_alerts.scss +0 -0
  160. data/client/styles/vendor/bootstrap/_badges.scss +63 -0
  161. data/client/{stylesheets → styles}/vendor/bootstrap/_breadcrumbs.scss +0 -0
  162. data/client/styles/vendor/bootstrap/_button-groups.scss +243 -0
  163. data/client/styles/vendor/bootstrap/_buttons.scss +160 -0
  164. data/client/styles/vendor/bootstrap/_carousel.scss +267 -0
  165. data/client/{stylesheets → styles}/vendor/bootstrap/_close.scss +0 -0
  166. data/client/styles/vendor/bootstrap/_code.scss +69 -0
  167. data/client/styles/vendor/bootstrap/_component-animations.scss +38 -0
  168. data/client/styles/vendor/bootstrap/_dropdowns.scss +213 -0
  169. data/client/styles/vendor/bootstrap/_forms.scss +548 -0
  170. data/client/styles/vendor/bootstrap/_glyphicons.scss +234 -0
  171. data/client/styles/vendor/bootstrap/_grid.scss +84 -0
  172. data/client/{stylesheets → styles}/vendor/bootstrap/_input-groups.scss +0 -0
  173. data/client/styles/vendor/bootstrap/_jumbotron.scss +49 -0
  174. data/client/{stylesheets → styles}/vendor/bootstrap/_labels.scss +0 -0
  175. data/client/styles/vendor/bootstrap/_list-group.scss +124 -0
  176. data/client/styles/vendor/bootstrap/_media.scss +47 -0
  177. data/client/{stylesheets → styles}/vendor/bootstrap/_mixins.scss +0 -0
  178. data/client/styles/vendor/bootstrap/_modals.scss +148 -0
  179. data/client/styles/vendor/bootstrap/_navbar.scss +662 -0
  180. data/client/styles/vendor/bootstrap/_navs.scss +244 -0
  181. data/client/styles/vendor/bootstrap/_normalize.scss +427 -0
  182. data/client/styles/vendor/bootstrap/_pager.scss +54 -0
  183. data/client/styles/vendor/bootstrap/_pagination.scss +88 -0
  184. data/client/styles/vendor/bootstrap/_panels.scss +261 -0
  185. data/client/styles/vendor/bootstrap/_popovers.scss +135 -0
  186. data/client/styles/vendor/bootstrap/_print.scss +107 -0
  187. data/client/styles/vendor/bootstrap/_progress-bars.scss +87 -0
  188. data/client/styles/vendor/bootstrap/_responsive-embed.scss +35 -0
  189. data/client/{stylesheets → styles}/vendor/bootstrap/_responsive-utilities.scss +0 -0
  190. data/client/styles/vendor/bootstrap/_scaffolding.scss +150 -0
  191. data/client/styles/vendor/bootstrap/_tables.scss +234 -0
  192. data/client/styles/vendor/bootstrap/_theme.scss +272 -0
  193. data/client/styles/vendor/bootstrap/_thumbnails.scss +38 -0
  194. data/client/styles/vendor/bootstrap/_tooltip.scss +103 -0
  195. data/client/styles/vendor/bootstrap/_type.scss +298 -0
  196. data/client/styles/vendor/bootstrap/_utilities.scss +56 -0
  197. data/client/styles/vendor/bootstrap/_variables.scss +864 -0
  198. data/client/{stylesheets → styles}/vendor/bootstrap/_wells.scss +0 -0
  199. data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_alerts.scss +0 -0
  200. data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_background-variant.scss +0 -0
  201. data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_border-radius.scss +0 -0
  202. data/client/styles/vendor/bootstrap/mixins/_buttons.scss +52 -0
  203. data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_center-block.scss +0 -0
  204. data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_clearfix.scss +0 -0
  205. data/client/styles/vendor/bootstrap/mixins/_forms.scss +88 -0
  206. data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_gradients.scss +0 -0
  207. data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_grid-framework.scss +0 -0
  208. data/client/styles/vendor/bootstrap/mixins/_grid.scss +122 -0
  209. data/client/styles/vendor/bootstrap/mixins/_hide-text.scss +21 -0
  210. data/client/styles/vendor/bootstrap/mixins/_image.scss +33 -0
  211. data/client/styles/vendor/bootstrap/mixins/_labels.scss +12 -0
  212. data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_list-group.scss +0 -0
  213. data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_nav-divider.scss +0 -0
  214. data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_nav-vertical-align.scss +0 -0
  215. data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_opacity.scss +0 -0
  216. data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_pagination.scss +0 -0
  217. data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_panels.scss +0 -0
  218. data/client/styles/vendor/bootstrap/mixins/_progress-bar.scss +10 -0
  219. data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_reset-filter.scss +0 -0
  220. data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_resize.scss +0 -0
  221. data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_responsive-visibility.scss +0 -0
  222. data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_size.scss +0 -0
  223. data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_tab-focus.scss +0 -0
  224. data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_table-row.scss +0 -0
  225. data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_text-emphasis.scss +0 -0
  226. data/client/{stylesheets → styles}/vendor/bootstrap/mixins/_text-overflow.scss +0 -0
  227. data/client/styles/vendor/bootstrap/mixins/_vendor-prefixes.scss +222 -0
  228. data/client/styles/vendor/bootstrap/old/_alerts.scss +68 -0
  229. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_badges.scss +0 -0
  230. data/client/styles/vendor/bootstrap/old/_breadcrumbs.scss +26 -0
  231. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_button-groups.scss +0 -0
  232. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_buttons.scss +0 -0
  233. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_carousel.scss +0 -0
  234. data/client/styles/vendor/bootstrap/old/_close.scss +35 -0
  235. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_code.scss +0 -0
  236. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_component-animations.scss +0 -0
  237. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_dropdowns.scss +0 -0
  238. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_forms.scss +0 -0
  239. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_glyphicons.scss +0 -0
  240. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_grid.scss +0 -0
  241. data/client/styles/vendor/bootstrap/old/_input-groups.scss +166 -0
  242. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_jumbotron.scss +0 -0
  243. data/client/styles/vendor/bootstrap/old/_labels.scss +66 -0
  244. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_list-group.scss +0 -0
  245. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_media.scss +0 -0
  246. data/client/styles/vendor/bootstrap/old/_mixins.scss +39 -0
  247. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_modals.scss +0 -0
  248. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_navbar.scss +0 -0
  249. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_navs.scss +0 -0
  250. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_normalize.scss +0 -0
  251. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_pager.scss +0 -0
  252. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_pagination.scss +0 -0
  253. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_panels.scss +0 -0
  254. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_popovers.scss +0 -0
  255. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_print.scss +0 -0
  256. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_progress-bars.scss +0 -0
  257. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_responsive-embed.scss +0 -0
  258. data/client/styles/vendor/bootstrap/old/_responsive-utilities.scss +174 -0
  259. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_scaffolding.scss +0 -0
  260. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_tables.scss +0 -0
  261. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_theme.scss +0 -0
  262. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_thumbnails.scss +0 -0
  263. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_tooltip.scss +0 -0
  264. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_type.scss +0 -0
  265. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_utilities.scss +0 -0
  266. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/_variables.scss +0 -0
  267. data/client/styles/vendor/bootstrap/old/_wells.scss +29 -0
  268. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/bootstrap.scss +0 -0
  269. data/client/styles/vendor/bootstrap/old/mixins/_alerts.scss +14 -0
  270. data/client/styles/vendor/bootstrap/old/mixins/_background-variant.scss +11 -0
  271. data/client/styles/vendor/bootstrap/old/mixins/_border-radius.scss +18 -0
  272. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/mixins/_buttons.scss +0 -0
  273. data/client/styles/vendor/bootstrap/old/mixins/_center-block.scss +7 -0
  274. data/client/styles/vendor/bootstrap/old/mixins/_clearfix.scss +22 -0
  275. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/mixins/_forms.scss +0 -0
  276. data/client/styles/vendor/bootstrap/old/mixins/_gradients.scss +58 -0
  277. data/client/styles/vendor/bootstrap/old/mixins/_grid-framework.scss +81 -0
  278. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/mixins/_grid.scss +0 -0
  279. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/mixins/_hide-text.scss +0 -0
  280. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/mixins/_image.scss +0 -0
  281. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/mixins/_labels.scss +0 -0
  282. data/client/styles/vendor/bootstrap/old/mixins/_list-group.scss +31 -0
  283. data/client/styles/vendor/bootstrap/old/mixins/_nav-divider.scss +10 -0
  284. data/client/styles/vendor/bootstrap/old/mixins/_nav-vertical-align.scss +9 -0
  285. data/client/styles/vendor/bootstrap/old/mixins/_opacity.scss +8 -0
  286. data/client/styles/vendor/bootstrap/old/mixins/_pagination.scss +23 -0
  287. data/client/styles/vendor/bootstrap/old/mixins/_panels.scss +24 -0
  288. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/mixins/_progress-bar.scss +0 -0
  289. data/client/styles/vendor/bootstrap/old/mixins/_reset-filter.scss +8 -0
  290. data/client/styles/vendor/bootstrap/old/mixins/_resize.scss +6 -0
  291. data/client/styles/vendor/bootstrap/old/mixins/_responsive-visibility.scss +21 -0
  292. data/client/styles/vendor/bootstrap/old/mixins/_size.scss +10 -0
  293. data/client/styles/vendor/bootstrap/old/mixins/_tab-focus.scss +9 -0
  294. data/client/styles/vendor/bootstrap/old/mixins/_table-row.scss +28 -0
  295. data/client/styles/vendor/bootstrap/old/mixins/_text-emphasis.scss +11 -0
  296. data/client/styles/vendor/bootstrap/old/mixins/_text-overflow.scss +8 -0
  297. data/client/{stylesheets/vendor/bootstrap → styles/vendor/bootstrap/old}/mixins/_vendor-prefixes.scss +0 -0
  298. data/client/{stylesheets → styles}/vendor/bootstrap-custom-grid.scss +0 -0
  299. data/client/{stylesheets → styles}/vendor/bootstrap-custom-modals.scss +0 -0
  300. data/client/{stylesheets → styles}/vendor/bootstrap.scss +14 -9
  301. data/client/{stylesheets → styles}/vendor/dataTables.scss +0 -0
  302. data/lanes.gemspec +5 -1
  303. data/lib/lanes/api/controller.rb +47 -6
  304. data/lib/lanes/api/helper_methods.rb +2 -10
  305. data/lib/lanes/api/javascript_processor.rb +17 -7
  306. data/lib/lanes/api/null_authentication_provider.rb +33 -0
  307. data/lib/lanes/api/request_wrapper.rb +49 -28
  308. data/lib/lanes/api/root.rb +12 -30
  309. data/lib/lanes/api/routing.rb +37 -0
  310. data/lib/lanes/api/sprockets_compressor.rb +35 -0
  311. data/lib/lanes/api/sprockets_extension.rb +69 -0
  312. data/lib/lanes/api/test_specs.rb +13 -9
  313. data/lib/lanes/api.rb +2 -18
  314. data/lib/lanes/cli.rb +22 -2
  315. data/lib/lanes/command/app.rb +49 -0
  316. data/lib/lanes/command/client_model_update.rb +65 -0
  317. data/lib/lanes/command/console.rb +20 -0
  318. data/lib/lanes/command/db.rb +33 -0
  319. data/lib/lanes/command/db.usage +1 -0
  320. data/lib/lanes/command/generate.rb +21 -0
  321. data/lib/lanes/command/generate_model.rb +105 -0
  322. data/lib/lanes/command/generate_model.usage +45 -0
  323. data/lib/lanes/command/generate_screen.rb +31 -0
  324. data/lib/lanes/command/generate_screen.usage +11 -0
  325. data/lib/lanes/command/generate_view.rb +22 -0
  326. data/lib/lanes/command/generate_view.usage +13 -0
  327. data/lib/lanes/command/model_attribute.rb +188 -0
  328. data/lib/lanes/command/named_command.rb +27 -0
  329. data/lib/lanes/command/server.rb +19 -0
  330. data/lib/lanes/command/server.usage +3 -0
  331. data/lib/lanes/command/templates/Gemfile +10 -0
  332. data/lib/lanes/{generators/app → command/templates}/Guardfile +0 -0
  333. data/lib/lanes/command/templates/Rakefile +2 -0
  334. data/lib/lanes/command/templates/client/Extension.coffee +5 -0
  335. data/lib/lanes/command/templates/client/components/.gitkeep +0 -0
  336. data/lib/lanes/command/templates/client/components/Component.coffee +1 -0
  337. data/lib/lanes/command/templates/client/data/Model.coffee +24 -0
  338. data/lib/lanes/command/templates/client/namespace-extension.js +17 -0
  339. data/lib/lanes/command/templates/client/screens/Screen.coffee +9 -0
  340. data/lib/lanes/command/templates/client/screens/index.js +5 -0
  341. data/lib/lanes/command/templates/client/screens/layout.html +3 -0
  342. data/lib/lanes/command/templates/client/screens/styles.scss +9 -0
  343. data/lib/lanes/command/templates/client/styles/styles.scss +1 -0
  344. data/lib/lanes/command/templates/client/views/.gitkeep +0 -0
  345. data/lib/lanes/command/templates/client/views/View.coffee +9 -0
  346. data/lib/lanes/command/templates/client/views/template.html +3 -0
  347. data/lib/lanes/{generators/app → command/templates}/config/database.yml +0 -0
  348. data/lib/lanes/command/templates/config/lanes.rb +7 -0
  349. data/lib/lanes/command/templates/config/routes.rb +2 -0
  350. data/lib/lanes/{generators/app → command/templates}/config.ru +1 -0
  351. data/lib/lanes/command/templates/db/create_table_migration.rb +19 -0
  352. data/lib/lanes/command/templates/gitignore +1 -0
  353. data/lib/lanes/command/templates/lib/namespace/extension.rb +13 -0
  354. data/lib/lanes/command/templates/lib/namespace/model.rb +7 -0
  355. data/lib/lanes/command/templates/lib/namespace/screen.rb +17 -0
  356. data/lib/lanes/command/templates/lib/namespace/version.rb +3 -0
  357. data/lib/lanes/command/templates/lib/namespace.rb +12 -0
  358. data/lib/lanes/command/templates/spec/client/data/ModelSpec.coffee +5 -0
  359. data/lib/lanes/command/templates/spec/client/views/ViewSpec.coffee +5 -0
  360. data/lib/lanes/command/templates/spec/fixtures/namespace/model.yml +16 -0
  361. data/lib/lanes/command/templates/spec/namespace/model_spec.rb +10 -0
  362. data/lib/lanes/command/templates/spec/spec_helper.rb +15 -0
  363. data/lib/lanes/command/update.rb +13 -0
  364. data/lib/lanes/command/update_model.rb +125 -0
  365. data/lib/lanes/command/update_model.usage +2 -0
  366. data/lib/lanes/command.rb +37 -0
  367. data/lib/lanes/components.rb +45 -0
  368. data/lib/lanes/concerns/set_attribute_data.rb +2 -2
  369. data/lib/lanes/configuration.rb +3 -3
  370. data/lib/lanes/db.rb +5 -39
  371. data/lib/lanes/extension.rb +64 -19
  372. data/lib/lanes/guard_tasks.rb +7 -5
  373. data/lib/lanes/rake_tasks.rb +47 -0
  374. data/lib/lanes/screens.rb +1 -48
  375. data/{spec → lib/lanes}/spec_helper.rb +0 -0
  376. data/lib/lanes/version.rb +1 -1
  377. data/lib/lanes.rb +1 -3
  378. data/npm-build/compile.coffee +1 -1
  379. data/npm-build/package.json +5 -5
  380. data/npm-build/template.js +13 -13
  381. data/spec/api/javascript_processor_spec.rb +1 -1
  382. data/spec/client/view/BaseSpec.coffee +166 -0
  383. data/spec/helpers/jasmine-jquery.js +813 -0
  384. data/spec/helpers/jasmine-matchers.js +1586 -0
  385. data/tasks/migrations.rake +1 -1
  386. data/views/index.erb +9 -13
  387. metadata +419 -268
  388. data/client/javascripts/component/ModalDialog.coffee +0 -44
  389. data/client/javascripts/component/SelectField.coffee +0 -43
  390. data/client/javascripts/component/TaggedField.coffee +0 -27
  391. data/client/javascripts/component/index.js +0 -5
  392. data/client/javascripts/data/Roles.coffee +0 -91
  393. data/client/javascripts/data/User.coffee +0 -70
  394. data/client/javascripts/extension/index.js +0 -6
  395. data/client/javascripts/extension/load.js.erb +0 -3
  396. data/client/javascripts/lanes-workspace.js +0 -1
  397. data/client/javascripts/lib/underscore.inflection.js +0 -210
  398. data/client/javascripts/plugins/index.js +0 -4
  399. data/client/javascripts/vendor/modern-stack.js +0 -14
  400. data/client/javascripts/vendor/packaged.js +0 -13769
  401. data/client/javascripts/view/Base.coffee +0 -231
  402. data/client/javascripts/view/Screen.coffee +0 -30
  403. data/client/javascripts/view/index.js +0 -10
  404. data/client/javascripts/workspace/LoginDialog.coffee +0 -33
  405. data/client/javascripts/workspace/login-dialog.html +0 -16
  406. data/client/screens/user-management/UserEditScreen.coffee +0 -21
  407. data/client/screens/user-management/UserManagement.coffee +0 -24
  408. data/client/screens/user-management/grid-popover-editor.html +0 -33
  409. data/client/screens/user-management/index.css +0 -4
  410. data/client/screens/user-management/user-management-styles.scss +0 -7
  411. data/client/screens/user-management/user-management.html +0 -8
  412. data/client/stylesheets/compoonents/modal-dialog.scss +0 -23
  413. data/client/stylesheets/lanes-workspace.scss +0 -17
  414. data/config/puma.rb +0 -7
  415. data/db/seed.rb +0 -37
  416. data/foo/Gemfile +0 -5
  417. data/foo/Guardfile +0 -13
  418. data/foo/foo/Gemfile +0 -5
  419. data/foo/foo/lib/foo.rb +0 -7
  420. data/foo/lib/foo/version.rb +0 -3
  421. data/foo/lib/foo.rb +0 -8
  422. data/lib/lanes/access/locked_fields.rb +0 -43
  423. data/lib/lanes/access/role.rb +0 -58
  424. data/lib/lanes/access/role_collection.rb +0 -75
  425. data/lib/lanes/access/roles/administrator.rb +0 -25
  426. data/lib/lanes/access/roles/support.rb +0 -13
  427. data/lib/lanes/access/user_maint_screen.rb +0 -32
  428. data/lib/lanes/access.rb +0 -50
  429. data/lib/lanes/api/asset_pipeline.rb +0 -59
  430. data/lib/lanes/api/authentication_helper.rb +0 -21
  431. data/lib/lanes/api/authentication_provider.rb +0 -45
  432. data/lib/lanes/api/default_routes.rb +0 -35
  433. data/lib/lanes/api/skr_templates.rb +0 -60
  434. data/lib/lanes/concerns/track_modifications.rb +0 -51
  435. data/lib/lanes/db/seed.rb +0 -27
  436. data/lib/lanes/generators/app/Gemfile +0 -5
  437. data/lib/lanes/generators/app/Rakefile +0 -9
  438. data/lib/lanes/generators/app/lib/main_class/version.rb +0 -3
  439. data/lib/lanes/generators/app/lib/main_class.rb +0 -8
  440. data/lib/lanes/generators/app.rb +0 -36
  441. data/lib/lanes/user.rb +0 -127
  442. data/spec/client/component/ChoicesInputSpec.coffee +0 -12
  443. data/spec/client/component/foo_spec.coffee +0 -4
  444. data/spec/client/support/jasmine.yml +0 -128
  445. data/spec/client/support/jasmine_helper.rb +0 -15
  446. data/spec/helpers/SpecHelper.js +0 -18
@@ -9,6 +9,19 @@ CommonMethods = {
9
9
  break
10
10
  break if found != -1
11
11
  found
12
+
13
+
14
+ destroyAll: (options={})->
15
+ success = options.success
16
+ _.extend( options, {
17
+ data: this.map( (model)-> { id: model.id } )
18
+ success: =>
19
+ for model in @models
20
+ model.trigger('destroy', model, model.collection, options)
21
+ success.apply(@,arguments) if success
22
+ })
23
+ Lanes.Data.Sync('delete', this, options)
24
+
12
25
  }
13
26
 
14
27
  class DataCollection
@@ -18,14 +31,19 @@ class DataCollection
18
31
  @errors=[]
19
32
  Lanes.Vendor.Ampersand.Collection.apply(this, arguments)
20
33
 
21
- isLoaded:->
22
- @isLoaded
23
-
34
+ @fetch: (options)->
35
+ collection = new this
36
+ collection.fetch(options)
37
+ collection
38
+
24
39
  fetch: (options={})->
25
40
  @isLoaded = true
26
41
  wrapRequest(this,options)
27
42
  super(options).then => @
28
43
 
44
+ isLoaded:->
45
+ @isLoaded
46
+
29
47
  ensureLoaded: ( callback )->
30
48
  if ! @isLoaded && ! this.length
31
49
  this.fetch({ success: callback })
@@ -33,6 +51,8 @@ class DataCollection
33
51
  callback()
34
52
 
35
53
  isDirty: ->
54
+ for model in @models
55
+ return true if model.isDirty()
36
56
  false
37
57
 
38
58
  parse:(resp)->
@@ -44,10 +64,18 @@ class DataCollection
44
64
  )
45
65
 
46
66
  url: ->
47
- @model::urlRoot() + '.json'
67
+ @model::urlRoot()
68
+
69
+ sync: Lanes.Data.Sync
48
70
 
49
- sync: ->
50
- Lanes.Data.Sync.apply(this,arguments)
71
+ save: (options)->
72
+ Lanes.Data.Sync('update', this, options)
73
+
74
+ dataForSave: (options)->
75
+ unsaved = []
76
+ for model in @models
77
+ unsaved.push( model.unsavedData() ) if model.isDirty()
78
+ unsaved
51
79
 
52
80
  _prepareModel: (attrs, options={})->
53
81
  options.collection = this;
@@ -97,6 +125,9 @@ class SubCollection
97
125
  CommonMethods
98
126
  ]
99
127
 
128
+ url: ->
129
+ this.collection.url()
130
+
100
131
  filter: ->
101
132
  this._runFilters()
102
133
 
File without changes
@@ -1,8 +1,8 @@
1
1
  class DataModel
2
2
  isModel: true
3
3
 
4
- constructor: (attrs,options)->
5
- this._unsaved = if attrs then _.keys(attrs) else []
4
+ constructor: (attrs,options={})->
5
+ this._unsaved = if attrs and !options.xhr then _.keys(attrs) else []
6
6
  super
7
7
  this.on('change', this._recordUnsaved )
8
8
 
@@ -82,7 +82,7 @@ class DataModel
82
82
  if _.isEmpty( needed )
83
83
  options.success.call(scope, this ) if options.success
84
84
  options.complete.call(scope,this ) if options.complete
85
- return Lanes.Promise.resolve(this)
85
+ return _.Promise.resolve(this)
86
86
  else
87
87
  options['include']=needed
88
88
  this.fetch(options)
@@ -185,8 +185,7 @@ class DataModel
185
185
  else
186
186
  ''
187
187
 
188
- sync: ->
189
- Lanes.Data.Sync.apply(this,arguments)
188
+ sync: Lanes.Data.Sync
190
189
 
191
190
  _recordUnsaved: (record,options)->
192
191
  attrs = this.changedAttributes()
@@ -230,19 +229,19 @@ setupStandardProps=(klass)->
230
229
  klass.associations['updated_by'] ||= { model: 'Lanes.Data.User' }
231
230
 
232
231
  copyServerResp = (record,resp)->
233
- record.errors = resp.errors
234
- record.lastServerMessage = resp.message
232
+ record.errors = resp?.errors
233
+ record.lastServerMessage = resp?.message
235
234
  { record: record, response: resp }
236
235
 
237
236
  wrapRequest = (record, options)->
238
237
  error = options.error
239
238
  success = options.success
240
- options.promise = new Lanes.Promise( (resolve,reject)->
239
+ options.promise = new _.Promise( (resolve,reject)->
241
240
  options.resolvePromise = resolve
242
241
  options.rejectPromise = reject
243
242
  )
244
243
  options.error = (record, resp, req)->
245
- options.rejectPromise( copyServerResp(record,resp.responseJSON) )
244
+ options.rejectPromise( copyServerResp(record,resp.responseJSON || {error: resp.responseText}) )
246
245
  error?.apply(options.scope, arguments)
247
246
 
248
247
  options.success = (record,resp,req)->
File without changes
File without changes
@@ -5,12 +5,15 @@ class ScreenView extends Lanes.Data.BasicModel
5
5
 
6
6
  session:
7
7
  active: ['boolean', true, false]
8
- ui: 'state'
8
+ viewport: 'state'
9
9
 
10
10
  derived:
11
11
  view:
12
12
  deps: ['screen'], fn: ->
13
- new @screen.viewModel( screen: this.screen, ui: @ui )
13
+ if @screen?.viewModel?
14
+ new @screen.viewModel( screen: this.screen, viewport: this.viewport )
15
+ else
16
+ Lanes.warn("Undefined screen for #{this}")
14
17
 
15
18
  initialize: (options)->
16
19
  super
@@ -26,7 +29,7 @@ class ScreenView extends Lanes.Data.BasicModel
26
29
 
27
30
 
28
31
 
29
- class Screen extends Lanes.Data.BasicModel
32
+ class ScreenDefinition extends Lanes.Data.BasicModel
30
33
 
31
34
  session:
32
35
  id: 'string'
@@ -42,28 +45,54 @@ class Screen extends Lanes.Data.BasicModel
42
45
  derived:
43
46
  model_type:
44
47
  deps: ['model'], fn: ->
45
- Lanes.Data[this.model]
48
+ Lanes.getPath(this.model,"Lanes.Data")
46
49
 
47
50
  initialize: ->
48
51
  @views = []
49
52
 
50
- _setDisplaying: (ui)->
51
- @views.push( new ScreenView( screen: this, ui: ui ) )
53
+ _setDisplaying: (viewport)->
54
+ @views.push( new ScreenView( screen: this, viewport: viewport ) )
52
55
 
53
- display: (ui)->
54
- @viewModel ||= Lanes.Screens[this.view]
56
+ getScreen: ->
57
+ @viewModel ||= Lanes.getPath(this.view,"Lanes.Screens")
55
58
  if @viewModel?
56
- this._setDisplaying(ui)
59
+ _.Promise.resolve(@viewMOdel)
57
60
  else
58
- this.loading=true
59
- Lanes.lib.Loader(this.files)
60
- .then =>
61
- @viewModel = Lanes.Screens[this.view]
62
- @_setDisplaying(ui)
63
- @loading=false
64
- .catch (failures)=>
65
- @loading=false
66
- Lanes.warn(failures)
61
+ this.loadScreen()
62
+
63
+ loadScreen: ->
64
+ me=this
65
+ return new _.Promise( (resolve,reject)->
66
+ me.loading=true
67
+ Lanes.lib.Request(me.files)
68
+ .then ->
69
+ me.loading=false
70
+ me.viewModel = Lanes.getPath(me.view)
71
+ if me.viewModel then resolve(me.viewModel)
72
+ else reject("Screen #{me.view} not definied after file retrieval")
73
+ ,(msg)->
74
+ Lanes.warn(msg)
75
+ me.loading=false
76
+ reject(msg)
77
+ )
78
+
79
+
80
+ display: (ui)->
81
+ this.getScreen().then => @_setDisplaying(ui)
82
+
83
+ # @viewModel ||= Lanes.Screens[this.view]
84
+ # if @viewModel?
85
+ # this._setDisplaying(ui)
86
+ # else
87
+ # this.loading=true
88
+ # Lanes.lib.Request(this.files)
89
+ # .then =>
90
+ # @viewModel = Lanes.Screens[this.view]
91
+ # @_setDisplaying(ui)
92
+ # @loading=false
93
+ # .catch (failures)=>
94
+ # @loading=false
95
+ # Lanes.warn(failures)
67
96
 
68
97
 
69
98
  class ScreenViewSet extends Lanes.Data.BasicCollection
@@ -106,7 +135,7 @@ class ScreenViewSet extends Lanes.Data.BasicCollection
106
135
 
107
136
  class ScreenSet extends Lanes.Data.BasicCollection
108
137
 
109
- model: Screen
138
+ model: ScreenDefinition
110
139
 
111
140
  register: (spec)->
112
141
 
@@ -29,7 +29,7 @@ paramsMap = {
29
29
  start : 's'
30
30
  }
31
31
 
32
- Lanes.Data.Sync = (method, model, options)->
32
+ Lanes.Data.Sync = (method, model, options={})->
33
33
 
34
34
  query = {}
35
35
  for key, value of options
@@ -48,10 +48,10 @@ Lanes.Data.Sync = (method, model, options)->
48
48
  params.headers = {
49
49
  X_CSRF_TOKEN: Lanes.Data.Config.csrf_token
50
50
  }
51
- # Ensure that we have the appropriate request data.
52
- if !options.data? && model && _.contains([ "create", "update", "patch" ], method )
53
- params.contentType = "application/json"
54
- params.data = JSON.stringify( model.dataForSave(options) )
51
+ params.contentType = "application/json"
52
+ if options.data || _.contains(['create','update','patch'], method)
53
+ params.data = JSON.stringify( options.data || model.dataForSave(options) )
54
+ delete options.data
55
55
 
56
56
  # Don't process data on a non-GET request.
57
57
  #params.processData = false if params.type isnt "GET"
@@ -0,0 +1,46 @@
1
+ unless Lanes.Data.Roles
2
+
3
+ class Lanes.Data.Role extends Lanes.Data.BasicModel
4
+ props:
5
+ id: 'string'
6
+ name: 'string'
7
+ member: { type: 'boolean', default: false }
8
+
9
+ class Lanes.Data.Roles extends Lanes.Data.BasicCollection
10
+ model: Lanes.Data.Role
11
+
12
+
13
+ unless Lanes.Data.User
14
+ class Lanes.Data.User extends Lanes.Data.Model
15
+
16
+ constructor: (attributes,access)->
17
+ super
18
+ this.access_data = access
19
+
20
+ api_path: 'users'
21
+ derived:
22
+ roles:
23
+ fn: -> []
24
+ isLoggedIn:
25
+ fn: -> false
26
+ allRoles:
27
+ fn: -> new Lanes.Data.Roles
28
+
29
+ session:
30
+ access_data: 'object'
31
+
32
+ session:
33
+ id: "integer"
34
+ login: 'string'
35
+ name: 'string'
36
+ email: 'string'
37
+ role_names: 'array'
38
+ options: 'object'
39
+ password: 'string'
40
+
41
+ canRead: (model,field) -> true
42
+ canWrite: (model,field) -> true
43
+ canDelete: (model) -> true
44
+
45
+ unless Lanes.current_user
46
+ Lanes.current_user = new Lanes.Data.User
@@ -1,7 +1,6 @@
1
1
  //= require_self
2
+ //= require ./Sync
2
3
  //= require ./Model
3
4
  //= require ./Collection
4
5
  //= require_tree ./mixins
5
6
  //= require_tree .
6
-
7
- Lanes.namespace( 'Data.mixins' );
@@ -1,4 +1,4 @@
1
- Lanes.Data.mixins.HasCodeField = {
1
+ Lanes.Data.Mixins.HasCodeField = {
2
2
 
3
3
  INVALID: /[^A-Z0-9a-z]/
4
4
 
@@ -6,4 +6,4 @@ class BaseExtension
6
6
  Lanes.Extensions.register(klass)
7
7
 
8
8
 
9
- Lanes.Extension.Base = Lanes.lib.MakeBaseClass( Lanes.Vendor.Ampersand.State, BaseExtension )
9
+ Lanes.Extensions.Base = Lanes.lib.MakeBaseClass( Lanes.Vendor.Ampersand.State, BaseExtension )
@@ -0,0 +1,3 @@
1
+ <% Lanes::Extensions.early_loaded do | ext | %>
2
+ <% require_asset ext.javascript_include %>
3
+ <% end %>
@@ -14,4 +14,9 @@ Lanes.Extensions = {
14
14
  for identifier,data of bootstrap_data
15
15
  instance.setBootstrapData(data) if instance = this.instances[identifier]
16
16
 
17
+ makeNamespace: (identifier)->
18
+ for ns in ['Data','Views','Controllers','Screens']
19
+ Lanes.ns("#{identifier}.#{ns}")
20
+
21
+
17
22
  }
@@ -0,0 +1,3 @@
1
+ <% Lanes::Extensions.late_loaded do | ext | %>
2
+ <% require_asset ext.javascript_include %>
3
+ <% end %>
@@ -0,0 +1,5 @@
1
+ //= require_self
2
+ //= require ./Extensions
3
+ //= require ./Base
4
+ //= require ./namespace-available
5
+ //= require ./EarlyExtensions
@@ -0,0 +1,3 @@
1
+ <% Lanes::Extensions.each do | ext | %>
2
+ Lanes.Extensions.makeNamespace('<%= ext.client_namespace %>');
3
+ <% end %>
@@ -0,0 +1,11 @@
1
+ //= require ./lib/noConflict
2
+ //= require ./vendor/modern-stack
3
+ //= require ./lib
4
+ //= require ./extension
5
+ //= require ./data
6
+ //= require ./plugins
7
+ //= require ./views
8
+ //= require ./screens
9
+ //= require ./components/Base
10
+ //= require ./components/enabled
11
+ //= require ./extension/LateLoaded
@@ -1,6 +1,3 @@
1
- Lanes.namespace "Templates"
2
-
3
-
4
1
  ns2path = (ns)->
5
2
  ns.replace(".","/").toLowerCase()
6
3
 
@@ -13,13 +10,13 @@ Lanes.Templates.find = (name, namespace) ->
13
10
 
14
11
  # scribbed from eco's compiler.coffee
15
12
  # we include the functions here rather than on every single template
16
- Lanes.TemplateWrapper = {
13
+ Lanes.Templates.Wrapper = {
17
14
 
18
15
  sanitize: (value) ->
19
16
  if value and value.HTMLSafe
20
17
  value
21
18
  else if typeof value isnt "undefined" and value?
22
- Lanes.TemplateWrapper.escape value
19
+ Lanes.Templates.Wrapper.escape value
23
20
  else
24
21
  ""
25
22
 
File without changes
File without changes
File without changes
@@ -1,9 +1,5 @@
1
1
  //= require ./noConflict
2
2
  //= require ./namespace
3
3
  //= require ./utilFunctions
4
- //= require ./underscore.inflection
5
4
  //= require ./ModuleSupport
6
5
  //= require_tree .
7
-
8
-
9
- Lanes.namespace('lib');
@@ -1,3 +1,7 @@
1
+ # inspiration from https://github.com/ramitos/lazyload/blob/master/src/lazyload.js
2
+ #
3
+ GECKO = /Gecko\//.test(navigator.userAgent)
4
+
1
5
  class Loader
2
6
 
3
7
  constructor: (urls,cb)->
@@ -36,10 +40,12 @@ class Loader
36
40
  )
37
41
  return fn(url, true) if exists
38
42
  called = false
39
- node = _.el("link",
40
- type: "text/css"
41
- href: url
42
- rel: "stylesheet"
43
+ tag = "link" #if GECKO then "style" else "link"
44
+ node = _.el( tag,
45
+ type: "text/css"
46
+ href: url
47
+ media: "screen"
48
+ rel: "stylesheet"
43
49
  )
44
50
 
45
51
  onloaded=(success,err)->
@@ -48,15 +54,14 @@ class Loader
48
54
  fn(url, success, err)
49
55
  node.onload = ()-> onloaded(true,false)
50
56
  node.onerror = (err)-> onloaded(false,err)
51
-
52
-
53
57
  node.onreadystatechange = ->
54
58
  return if not (/loaded|complete/.test(node.readyState)) or called
55
59
  called=true
56
60
  fn(url, true)
57
-
58
61
  @head.appendChild node
59
- poll()
62
+ # GECKO cannot query the node immediatly after it's created
63
+ if GECKO then _.delay(poll,250) else poll()
64
+
60
65
 
61
66
 
62
67
  loadJS: (url, fn) ->
@@ -81,9 +86,9 @@ class Loader
81
86
  this.body.appendChild(node)
82
87
 
83
88
 
84
- Lanes.lib.Loader = (urls...)->
89
+ Lanes.lib.Request = (urls...)->
85
90
  urls = urls[0] if urls.length == 1 && _.isArray(urls[0])
86
- new Lanes.Promise( (resolve,reject)->
91
+ new _.Promise( (resolve,reject)->
87
92
  new Loader(urls, (completed)->
88
93
  failures = _.pick(completed, (status,url)-> !status.success )
89
94
  if _.isEmpty(failures)
@@ -7,3 +7,6 @@ Lanes.namespace = (target, name, block) ->
7
7
  top = target
8
8
  target = target[item] or= {} for item in name.split '.'
9
9
  block( target, top ) if typeof block == 'function'
10
+
11
+ for ns in ['Components', 'Data.Mixins', 'Views.Mixins', 'Screens', 'Vendor', 'Templates', 'Extensions','lib']
12
+ Lanes.namespace(ns)
@@ -7,6 +7,7 @@ if (!Lanes){
7
7
  }
8
8
 
9
9
  Lanes.noConflict = function(){
10
+ Lanes.$ = window.jQuery.noConflict(true);
10
11
  window.Lanes = previousLanes;
11
12
  return Lanes;
12
13
  };
File without changes
@@ -5,11 +5,18 @@ Lanes.fatal = (args...)->
5
5
  throw new Error(args...)
6
6
 
7
7
  Lanes.warn = (msg...)->
8
- console.warn(msg...) if console
8
+ return unless console
9
+ console.warn(msg...)
10
+ if msg[0] instanceof Error
11
+ console.warn(msg[0].stack)
12
+ else console.warn(msg...)
9
13
  null
10
14
 
11
15
  Lanes.log = (msg...)->
12
- console.log(msg...) if console
16
+ return unless console
17
+ if msg[0] instanceof Error
18
+ console.warn(msg[0].stack)
19
+ else console.log(msg...)
13
20
  null
14
21
 
15
22
  distillTypes = (type, ns)->
@@ -20,15 +27,12 @@ distillTypes = (type, ns)->
20
27
  # or with ns being an object, which will dref name inside it
21
28
  Lanes.getPath = ( name, ns='Lanes' ) ->
22
29
  return name unless _.isString(name)
30
+ ns = "Lanes.#{ns}" if _.isString(ns) && !ns.match("Lanes")
23
31
  if _.isObject(ns)
24
- distillTypes(name,ns)
32
+ distillTypes(name,ns) || distillTypes(name, Lanes)
25
33
  else
26
34
  distillTypes(name,window) || distillTypes(name, distillTypes(ns, window))
27
35
 
28
- Lanes.getModelPath = (scope,name)->
29
- [model..., field] = name.split('.')
30
- [ Lanes.getPath( model.join('.'), scope), field ]
31
-
32
36
  _.mixin({
33
37
 
34
38
  toSentence: (words=[], comma=', ', nd=' and ')->
@@ -40,12 +44,6 @@ _.mixin({
40
44
  last
41
45
  else
42
46
  ''
43
-
44
- sprintfArray: (array, format)->
45
- _.map( array, (field)->
46
- _.sprintf( format, field )
47
- )
48
-
49
47
  evaluateFunction: (fn,args)->
50
48
  if this.isFunction(fn) then fn(args) else fn
51
49
  })
@@ -0,0 +1 @@
1
+ //= require_tree .
@@ -0,0 +1,40 @@
1
+ #= require ./ChangeListener
2
+
3
+ class ScreenBase
4
+
5
+ constructor: -> super
6
+
7
+ namespace: "Screens"
8
+
9
+ mixins:[
10
+ Lanes.Screens.ChangeListener
11
+ ]
12
+
13
+ initializeChanges:->
14
+ @_changeListeners = {}
15
+ for keypath in ( @usingModels || ['model'] )
16
+ @_changeListeners[keypath] = new Lanes.Views.ScreenChangeListener(this, keypath)
17
+
18
+ reset: Lanes.emptyFn
19
+
20
+ template: ->
21
+ this.namespace.name.toLowerCase() + "/screens/" + this.constructor.name.toLowerCase() + "/layout";
22
+
23
+ render: ->
24
+ previouslyRendered = this.rendered
25
+ Lanes.Views.RenderContext.start(this)
26
+ # Lanes.re we cheat and skip ViewBase so it doesn't push to context
27
+ this.reset()
28
+ this.renderContextFree()
29
+ #Lanes.Views.Base.__super__.render.apply(this, arguments)
30
+ this.renderAllSubviews() if previouslyRendered
31
+ Lanes.Views.RenderContext.reset()
32
+ this
33
+
34
+ addButton: (config, align='left')->
35
+ this.$(".toolbar ." + align).append( Lanes.Views.Helpers.button(config) )
36
+
37
+
38
+ # By doing extending in this fashion, the class will appear as ScreenBase
39
+ # during debugging, allowing it to be easily identified
40
+ Lanes.Screens.Base = Lanes.Views.Base.extend( ScreenBase )
@@ -1,4 +1,4 @@
1
- Lanes.View.mixins.ScreenChangeListener = {
1
+ Lanes.Screens.ChangeListener = {
2
2
 
3
3
  model_events:
4
4
  'remote-update': 'onChange'
@@ -32,7 +32,7 @@ Lanes.View.mixins.ScreenChangeListener = {
32
32
  @change_count += 1
33
33
 
34
34
  bindModel: (model)->
35
- Lanes.View.Base.prototype.bindModel.call(this, model)
35
+ Lanes.Views.Base.prototype.bindModel.call(this, model)
36
36
  @changes.reset([])
37
37
  @change_count = 0
38
38
 
@@ -0,0 +1,6 @@
1
+
2
+ class Router
3
+ constructor: -> super
4
+
5
+
6
+ Lanes.Screens.Router = Lanes.lib.MakeBaseClass( Lanes.Vendor.Ampersand.Router, Router )
@@ -0,0 +1 @@
1
+ //= require_tree .