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
@@ -0,0 +1,33 @@
1
+ module Lanes
2
+
3
+ module API
4
+
5
+ class DummyUser
6
+ def can_read?(*args)
7
+ true
8
+ end
9
+ def can_write?(*args)
10
+ true
11
+ end
12
+ def can_delete?(*args)
13
+ true
14
+ end
15
+ end
16
+
17
+ class AuthenticationProvider
18
+ USER = DummyUser.new
19
+
20
+ def initialize(session:nil, params:nil, request_type: type)
21
+ end
22
+
23
+ def current_user
24
+ USER
25
+ end
26
+
27
+ def wrap_request(model)
28
+ yield
29
+ end
30
+
31
+ end
32
+ end
33
+ end
@@ -1,42 +1,63 @@
1
- module Sinatra
1
+ module Lanes
2
+ module API
2
3
 
3
- module RequestWrapper
4
+ module RequestWrapper
5
+ class << self
4
6
 
5
- def wrap_request(model, params, parent_attribute)
6
-
7
- authentication = Lanes::API::AuthenticationProvider.new(
8
- request_type: request.request_method,
9
- session: session,
10
- params: params
11
- )
7
+ def get(*args)
8
+ wrap_request(*args) do |controller|
9
+ controller.perform_retrieval
10
+ end
11
+ end
12
12
 
13
- unless authentication.allowed_access_to?(model)
14
- halt( 401, Oj.dump({
15
- success:false, errors: {user: "Access Denied"}, message: authentication.error_message
16
- }))
17
- end
18
- ::Lanes::User.scoped_to(authentication.current_user) do | user |
19
- Lanes.logger.debug "User : #{user.id} (#{user.login})"
20
- Lanes.logger.debug "Params : #{request.params}"
13
+ def post(*args)
14
+ wrap_request(*args) do |controller|
15
+ controller.perform_creation
16
+ end
17
+ end
21
18
 
22
- params[:nested_attribute] = Hash[ parent_attribute, params[parent_attribute] ] if parent_attribute
19
+ def update(*args)
20
+ wrap_request(*args) do |controller|
21
+ controller.perform_update
22
+ end
23
+ end
23
24
 
24
- wrap_json_reply do
25
- yield authentication
25
+ def delete(*args)
26
+ wrap_request(*args) do |controller|
27
+ controller.perform_destroy
28
+ end
26
29
  end
27
30
 
31
+ def wrap_request(model, controller, parent_attribute)
32
+ lambda do
33
+ authentication = Lanes::API::AuthenticationProvider.new(
34
+ request_type: request.request_method,
35
+ session: session,
36
+ params: params
37
+ )
38
+ authentication.wrap_request(model) do
39
+ if parent_attribute
40
+ params[:nested_attribute] = Hash[ parent_attribute,
41
+ params[parent_attribute] ]
42
+ end
43
+ wrap_json_reply do
44
+ yield controller.new(model, authentication, params, data)
45
+ end
46
+ end
47
+ end
48
+ end
28
49
  end
29
- end
30
50
 
31
- def wrap_json_reply
32
- response = yield
33
- if false == response[:success]
34
- status(406)
51
+ def wrap_json_reply
52
+ response = yield
53
+ if false == response[:success]
54
+ status(406)
55
+ end
56
+ Oj.dump(response, mode: :compat)
35
57
  end
36
- Oj.dump(response, mode: :compat)
37
- end
38
58
 
39
- end
59
+ end
40
60
 
41
61
 
62
+ end
42
63
  end
@@ -3,7 +3,7 @@ require 'oj'
3
3
  require 'rack/csrf'
4
4
  require 'sprockets-helpers'
5
5
  require 'message_bus'
6
- require_relative 'asset_pipeline'
6
+ require_relative 'sprockets_extension'
7
7
  require_relative 'helper_methods'
8
8
  require_relative 'pub_sub'
9
9
 
@@ -14,8 +14,8 @@ module Lanes
14
14
  Lanes.config.get(:environment) do | env |
15
15
  set :environment, env
16
16
  end
17
- register AssetPipeline
18
- helpers Sinatra::RequestWrapper
17
+ register SprocketsExtension
18
+ helpers RequestWrapper
19
19
  helpers HelperMethods
20
20
  not_found do
21
21
  Oj.dump({ message: "endpoint not found", success: false })
@@ -41,10 +41,13 @@ module Lanes
41
41
  set :show_exceptions, false
42
42
  DB.establish_connection
43
43
  PubSub.initialize
44
+ Extensions.load_current_config
45
+ # late load in case an extension has provided an alternative implementation
46
+ require "lanes/api/null_authentication_provider" unless API.const_defined?(:AuthenticationProvider)
44
47
  # use Rack::Csrf, :skip=>['GET:/'], :raise => true
45
48
  end
46
49
 
47
- def self.build_route(model, options = {})
50
+ def self.resources(model, options = {})
48
51
 
49
52
  path = options[:path] || model.api_path
50
53
  controller = options[:controller] || Lanes::API::Controller
@@ -56,42 +59,21 @@ module Lanes
56
59
  ''
57
60
  end
58
61
 
59
-
60
62
  # index
61
- get "#{prefix}/#{path}/?:id?.json" do
62
- wrap_request(model, params, parent_attribute) do |authentication|
63
- controller.new(model, authentication, params).perform_retrieval
64
- end
65
- end
63
+ get "#{prefix}/#{path}/?:id?.json", &RequestWrapper.get(model, controller, parent_attribute)
66
64
 
67
65
  # create
68
- post "#{prefix}/#{path}.json" do
69
- wrap_request(model, params, parent_attribute) do |authentication|
70
- controller.new(model, authentication, params, data).perform_creation
71
- end
72
- end
66
+ post "#{prefix}/#{path}.json", &RequestWrapper.post(model, controller, parent_attribute)
73
67
 
74
68
  unless options[:immutable]
75
- patch "#{prefix}/#{path}/:id.json" do
76
- perform_request(model, params, parent_attribute) do |authentication|
77
- controller.new(model, authentication, params, data).perform_update
78
- end
79
- end
80
69
 
81
70
  # update
82
- put "#{prefix}/#{path}/:id.json" do
83
- wrap_request(model, params, parent_attribute) do |authentication|
84
- controller.new(model, authentication, params, data).perform_update
85
- end
86
- end
71
+ patch "#{prefix}/#{path}/?:id?.json", &RequestWrapper.update(model, controller, parent_attribute)
72
+ put "#{prefix}/#{path}/?:id?.json", &RequestWrapper.update(model, controller, parent_attribute)
87
73
 
88
74
  unless options[:indestructible]
89
75
  # destroy
90
- delete "#{prefix}/#{path}/:id.json" do
91
- wrap_request(model, params, parent_attribute) do |authentication|
92
- controller.new(model, authentication, params).perform_destroy
93
- end
94
- end
76
+ delete "#{prefix}/#{path}/?:id?.json", &RequestWrapper.delete(model, controller, parent_attribute)
95
77
  end
96
78
 
97
79
  end
@@ -0,0 +1,37 @@
1
+ module Lanes
2
+ module API
3
+
4
+
5
+ class RouteSet
6
+ def initialize(root)
7
+ @root = root
8
+ end
9
+
10
+ def draw(&block)
11
+ @root.instance_eval(&block)
12
+ end
13
+ end
14
+
15
+ def self.routes(&block)
16
+ @routes ||= RouteSet.new(API::Root)
17
+ end
18
+
19
+ self.routes.draw do
20
+ get '/' do
21
+ content_type 'text/html'
22
+ erb :index
23
+ end
24
+
25
+ get "default-records" do
26
+ { success: true, data: Lanes::API.default_records }
27
+ end
28
+
29
+ Extensions.each do | ext |
30
+ ext.route(self)
31
+ end
32
+
33
+ end
34
+
35
+
36
+ end
37
+ end
@@ -0,0 +1,35 @@
1
+ require "yui/compressor"
2
+
3
+ module Lanes
4
+ module API
5
+ class AssetCompressor < Tilt::Template
6
+ def self.engine_initialized?
7
+ defined?(::YUI)
8
+ end
9
+
10
+ def initialize_engine
11
+ require_template_library 'yui/compressor'
12
+ end
13
+
14
+ def prepare
15
+ end
16
+
17
+ def js
18
+ @js||=YUI::JavaScriptCompressor.new(:munge => true, :java_opts=>'-client')
19
+ end
20
+ def css
21
+ @css ||= YUI::CssCompressor.new( :java_opts=>'-client' )
22
+ end
23
+ def evaluate(context, locals, &block)
24
+ case context.content_type
25
+ when 'application/javascript'
26
+ js.compress(data)
27
+ when 'text/css'
28
+ css.compress(data)
29
+ else
30
+ data
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,69 @@
1
+ require 'sprockets'
2
+ require 'sass'
3
+ require 'sinatra/sprockets-helpers'
4
+ require_relative 'javascript_processor'
5
+ require_relative 'sprockets_compressor'
6
+ require 'compass/import-once/activate'
7
+
8
+ module Lanes
9
+ module API
10
+ module SprocketsExtension
11
+ class << self
12
+
13
+ def compile!
14
+ env = ::Sprockets::Environment.new
15
+ Lanes::API::SprocketsExtension.configure(env, compress:true)
16
+ comp = Sprockets::Manifest.new( env.index, "public/assets" )
17
+ comp.compile( 'lanes/workspace.js', 'lanes/workspace.css' )
18
+ env
19
+ end
20
+
21
+ def configure(env, compress:false)
22
+ root = Pathname.new(__FILE__).dirname.join("../../..")
23
+ Lanes.config.get(:environment) do
24
+ unless Lanes.env.production?
25
+ env.cache = ::Sprockets::Cache::FileStore.new(Pathname.pwd.join('tmp','cache'))
26
+ end
27
+ end
28
+ Lanes::Extensions.each do | ext |
29
+ ext.client_paths.each{ |path| env.append_path(path) }
30
+ end
31
+ if compress
32
+ env.js_compressor = AssetCompressor
33
+ env.css_compressor = AssetCompressor
34
+ end
35
+ env.append_path root.join('client')
36
+ JsAssetCompiler.register(env)
37
+ end
38
+
39
+ def registered(app)
40
+ app.register Sinatra::Sprockets::Helpers
41
+ app.set :sprockets, ::Sprockets::Environment.new
42
+ configure(app.sprockets)
43
+
44
+ # The url for client
45
+ app.set :digest_assets, false
46
+
47
+ app.configure do
48
+ ::Sprockets::Helpers.configure do |config|
49
+ config.environment = app.sprockets
50
+ config.prefix = Lanes.config.assets_path_prefix
51
+ config.digest = app.digest_assets
52
+ config.public_path = app.public_folder
53
+ config.debug = true
54
+ end
55
+ end
56
+
57
+ app.configure :test, :development do
58
+ app.get "#{Lanes.config.assets_path_prefix}/*" do |path|
59
+ env_sprockets = request.env.dup
60
+ env_sprockets['PATH_INFO'] = path
61
+ settings.sprockets.call env_sprockets
62
+ end
63
+ end
64
+ end
65
+
66
+ end
67
+ end
68
+ end
69
+ end
@@ -36,24 +36,28 @@ module Lanes
36
36
  end
37
37
  end
38
38
 
39
+
39
40
  Lanes.config.get(:specs_root) do | root |
40
41
  TestSpecs.current = TestSpecs.new(root)
41
42
  Root.sprockets.append_path(root.join("spec"))
42
43
  end
43
44
 
45
+
44
46
  Root.sprockets.append_path(Jasmine::Core.path)
45
47
 
46
- Root.get '/spec' do
47
- content_type 'text/html'
48
- erb :specs, locals: { specs: TestSpecs.current }
49
- end
48
+ routes.draw do
50
49
 
51
- Root.get "/spec/*" do |path|
52
- env_sprockets = request.env.dup
53
- env_sprockets['PATH_INFO'] = path
54
- settings.sprockets.call env_sprockets
55
- end
50
+ get '/spec' do
51
+ content_type 'text/html'
52
+ erb :specs, locals: { specs: TestSpecs.current }
53
+ end
56
54
 
55
+ get "/spec/*" do |path|
56
+ env_sprockets = request.env.dup
57
+ env_sprockets['PATH_INFO'] = path
58
+ settings.sprockets.call env_sprockets
59
+ end
57
60
 
61
+ end
58
62
  end
59
63
  end
data/lib/lanes/api.rb CHANGED
@@ -1,27 +1,11 @@
1
- require_relative 'api/authentication_helper'
2
- require_relative 'api/authentication_provider'
3
-
1
+ require_relative '../lanes'
4
2
  require_relative 'api/request_wrapper'
5
3
  require_relative 'api/error_formatter'
6
4
  require_relative 'api/controller'
7
5
  require_relative 'api/root'
8
- require_relative 'api/default_routes'
9
- # require_relative 'api/login_sessions_controller'
10
- # require_relative 'api/users_controller'
11
-
6
+ require_relative 'api/routing'
12
7
  require_relative "api/pub_sub"
13
8
 
14
-
15
9
  Lanes.config.get(:environment) do
16
10
  require_relative("api/test_specs") if Lanes.env.test?
17
11
  end
18
-
19
- # Lanes::API::Root.routes['GET'].each do |route|
20
- # puts route[0]
21
- # end
22
-
23
- # require_relative "api/skr_templates"
24
- # if defined?(::Rails)
25
- # require_relative "api/engine"
26
- # require_relative "api/route_helper"
27
- # end
data/lib/lanes/cli.rb CHANGED
@@ -1,12 +1,32 @@
1
1
  require 'thor'
2
+ require 'require_all'
2
3
  require_relative '../lanes'
3
- require_relative 'generators/app'
4
+ require_relative 'command'
5
+ require_relative 'command/named_command'
6
+ require_rel 'command/*.rb'
4
7
 
5
8
  module Lanes
6
9
 
10
+ # This is the main interface to Lanes that is called by the command
11
+ # `bin/lanes`. Do not put any logic in here, create a class and delegate
12
+ # instead.
7
13
  class CLI < Thor
8
14
 
9
- register Generators::App, 'new', 'new [NAME]', 'Creates a new Lanes based application'
15
+ register Command::App, 'new', 'new [NAME]', 'Creates a new Lanes based application'
16
+
17
+ desc "generate SUBCOMMAND ...ARGS", "Generate a component"
18
+ subcommand "generate", Command::Generate
19
+
20
+ desc "update SUBCOMMAND ...ARGS", "Update a component"
21
+ subcommand "update", Command::Update
22
+
23
+ long_desc Command.usage_from_file("server")
24
+ register Command::Server, 'serve', 'serve', 'Run the app in development/testing mode'
25
+
26
+ long_desc Command.usage_from_file("db")
27
+ register Command::Db, 'db', 'db', 'Database commands'
28
+
29
+ register Command::Console, "console", "console", "Start IRB console"
10
30
 
11
31
  end
12
32
 
@@ -0,0 +1,49 @@
1
+ module Lanes
2
+ module Command
3
+
4
+ class App < NamedCommand
5
+
6
+ class_options :force => :boolean
7
+
8
+ class_option :directory, :type=>:string
9
+
10
+
11
+ def load_namespace # override
12
+ @namespace = name
13
+ end
14
+
15
+ def set_variables
16
+ super
17
+ self.destination_root = options[:directory] || name
18
+ end
19
+
20
+ def create_files
21
+ ["Gemfile", "Rakefile", "Guardfile", "config.ru", "config/database.yml"].each do | file |
22
+ template file
23
+ end
24
+ template "lib/namespace.rb", "lib/#{name}.rb"
25
+ template "lib/namespace/version.rb", "lib/#{name}/version.rb"
26
+ template "lib/namespace/extension.rb", "lib/#{name}/extension.rb"
27
+ template "config/routes.rb"
28
+ template "config/lanes.rb"
29
+ template "gitignore",".gitignore"
30
+ create_file "tmp/.gitkeep",""
31
+ create_file "db/.gitkeep", ""
32
+ end
33
+
34
+ def create_client_files
35
+ self.class.source_root.join('client').children.each do | path |
36
+ empty_directory "#{client_dir}/#{path.basename}" if path.directory?
37
+ end
38
+ template "client/namespace-extension.js", "#{client_dir}/index.js"
39
+ template "client/Extension.coffee", "#{client_dir}/Extension.coffee"
40
+ template "client/styles/styles.scss", "client/#{name}-styles.scss"
41
+ end
42
+
43
+ def create_first_screen
44
+ invoke GenerateScreen, [name], title: name.titleize, namespace: name
45
+ end
46
+ end
47
+
48
+ end
49
+ end
@@ -0,0 +1,65 @@
1
+ module Lanes
2
+ module Command
3
+
4
+ module ClientModelUpdate
5
+ # @param file [Pathname] file to replace the props on
6
+ def replace_props(file, columns)
7
+ contents = file.read
8
+ match = contents.match(/\n(\s+props\s*:\s*)\n+(\s+)\w/m)
9
+ if !match
10
+ raise Thor::Error.new("Unable to detect existing props section")
11
+ end
12
+ (props,indent) = match.capture3
13
+ p match
14
+ maxlen = columns.map{|field| field.name.length }.max
15
+
16
+ contents = "#{props}"
17
+ columns.each do | column |
18
+ contents << sprintf("#{indent}%-#{maxlen+1}s",column.name+':') + type_specification(column) + "\n"
19
+ end
20
+ puts contents
21
+ # gsub_file file, /\n\s+props\s*:\s*\n.*?\n\n/m, contents
22
+
23
+ # props:
24
+ # <% len = max_name_length(@columns)
25
+ # @columns.each do | column | -%>
26
+ # <%= sprintf("%-#{len+1}s",column.name+':') -%> <%= type_specification(column) %>
27
+ # <% end -%>
28
+
29
+ # <% if @associations.any? -%>
30
+ # associations:
31
+ # <% len = max_name_length(@associations)
32
+ # @associations.each do | assoc | -%>
33
+ # <%= sprintf("%-#{len+2}s",assoc.name.to_s+':') -%> { <%= assoc.collection? ? 'collection' : 'model' -%>: "<%= assoc.class_name.demodulize %>" }
34
+ # <% end -%>
35
+ # <% end -%>
36
+
37
+
38
+
39
+
40
+ end
41
+
42
+
43
+
44
+ end
45
+ end
46
+ end
47
+
48
+
49
+ __END__
50
+
51
+ props:
52
+ <% fields.each do |field| -%>
53
+ <% if field.reference? -%>
54
+ <%= sprintf("%-#{max_field_length}s",field.name+'_id') %>: "<%= field.client_type %>"
55
+ <% else -%>
56
+ <%= sprintf("%-#{max_field_length}s",field.name) %>: "<%= field.client_type %>"
57
+ <% end -%>
58
+ <% end %>
59
+ <% if reference_fields.any? -%>
60
+
61
+ associations:
62
+ <% reference_fields.each do |field| -%>
63
+ <%= sprintf("%-#{max_field_length}s ",field.name) %>: { <%= field.belongs_to? ? 'model' : 'collection' -%>: "Lanes.<%= namespace.camelize %>.<%= field.name.camelize %>" }
64
+ <% end -%>
65
+ <% end -%>
@@ -0,0 +1,20 @@
1
+ module Lanes
2
+ module Command
3
+
4
+ class Console < Thor::Group
5
+ include Thor::Actions
6
+
7
+ def start
8
+ Command.load_current_extension
9
+ require 'irb'
10
+ require 'irb/completion'
11
+ require 'pp'
12
+ DB.establish_connection
13
+ ActiveRecord::Base.logger = Logger.new STDOUT
14
+ ARGV.clear
15
+ IRB.start
16
+ end
17
+
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,33 @@
1
+ require 'rake'
2
+ require 'find'
3
+
4
+ module Lanes
5
+ module Command
6
+
7
+ class Db < Thor
8
+
9
+ desc 'migrate', 'Run database migrations for all loaded extensions'
10
+ def migrate
11
+ run_task "db:migrate"
12
+ end
13
+
14
+ desc "seed", "seed the database with data from all extensions"
15
+ def seed
16
+ run_task "db:seed"
17
+ end
18
+
19
+ private
20
+
21
+ def run_task(task)
22
+ Command.load_current_extension
23
+ require_relative "../rake_tasks"
24
+ Extensions.each do |ext|
25
+ Dir.chdir(ext.root_path) do
26
+ Rake::Task[task].invoke
27
+ end
28
+ end
29
+ end
30
+
31
+ end
32
+ end
33
+ end
@@ -0,0 +1 @@
1
+ Some use inst for db
@@ -0,0 +1,21 @@
1
+ module Lanes
2
+ module Command
3
+
4
+ class Generate < Thor
5
+
6
+ long_desc Command.usage_from_file("generate_model")
7
+ method_options( GenerateModel::OPTIONS )
8
+ register Command::GenerateModel, 'model', 'model [NAME] ...FIELDS', 'Creates a new model'
9
+
10
+ long_desc Command.usage_from_file("generate_screen")
11
+ method_options( GenerateScreen::OPTIONS )
12
+ register Command::GenerateScreen, 'screen', 'screen [NAME]', 'Creates a new Screen'
13
+
14
+ long_desc Command.usage_from_file("generate_view")
15
+ method_options( GenerateView::OPTIONS )
16
+ register Command::GenerateView, 'view', 'view [NAME]', 'Creates a new View'
17
+
18
+ end
19
+
20
+ end
21
+ end