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
@@ -1,231 +0,0 @@
1
- class ViewBase
2
-
3
- model_events: {}
4
-
5
- extended_properties: [
6
- 'subviews', 'events', 'model_events'
7
- ]
8
-
9
- derived:
10
- '$el':
11
- deps: ['el'], fn: -> this.$()
12
-
13
- root_view:
14
- deps: ['parent'], fn: ->
15
- view = this
16
- while view.parent
17
- view = view.parent
18
- view
19
-
20
- session:
21
- ui: 'state'
22
- parent: 'object'
23
- pubSub: 'boolean'
24
-
25
- template: (context)->
26
- context.renderTemplateMethod('template')
27
-
28
- constructor: (options={})->
29
- if !options.ui && options.parent
30
- view = options.parent
31
- while view.parent
32
- view = view.parent
33
- options.ui = view.ui
34
-
35
- Lanes.Vendor.Ampersand.View.apply(this, arguments)
36
- if !this.pubSub? # if it's unset, not true/false; default to parent or true
37
- this.pubSub = if this.parent?.pubSub? then this.parent.pubSub else true
38
- this.on('change:parent', this._onParentSet)
39
- this.on('change:model', this._onModelChange)
40
- this.subViewId = options.subViewId;
41
- this.initializeFormBindings() if @form_bindings
42
-
43
- if @keyBindings
44
- Lanes.View.Keys.add(this, @keyBindings, @keyScope)
45
-
46
- if @pubSub
47
- this._pubSub = new Lanes.View.PubSub(this)
48
-
49
- _onParentSet: ->
50
- if this.root_view.ui
51
- this.ui = this.root_view.ui
52
-
53
- unBindModel: (model)->
54
- for event, fn of @model_events
55
- model.off(event, this[fn], this )
56
-
57
- bindModel: (model)->
58
- for event, fn of @model_events
59
- model.on(event, this[fn], this )
60
-
61
- remove: ->
62
- this.unBindModel( @model ) if @model
63
- Lanes.View.Keys.remove(this, @key_bindings, @key_scope) if @key_bindings
64
- super
65
-
66
- initializeKeyBindings: ->
67
-
68
-
69
-
70
- initializeFormBindings: ->
71
- @_form_bindings = {}
72
- for data, selector of @form_bindings
73
- @_form_bindings[data] = new Lanes.View.FormBindings(this, data, selector)
74
-
75
- setFieldsFromBindings: ->
76
- binding.setAllFields() for name, binding of @_form_bindings
77
-
78
- fireEvent: (name, args)->
79
- evt = document.createEvent('CustomEvent')
80
- evt.initCustomEvent(name, true, true, args )
81
- this.el.dispatchEvent(evt)
82
-
83
- prepareSubview: (el, options, identifier)->
84
- options.view = this._subviewClass(options) unless _.isFunction(options.view)
85
- args = { parent: this, el: el, subViewId: identifier }
86
- view_arguments = if options.options
87
- @resultsFor(options.options, identifier, options)
88
- else
89
- {}
90
- for access in ['model','data']
91
- args[access] = Lanes.getPath(options[access], this) if options[access]
92
- if options.collection
93
- args.view = options.view
94
- args.viewOptions = view_arguments
95
- args.collection = Lanes.getPath(options.collection, this)
96
- new Lanes.Vendor.Ampersand.CollectionView(args)
97
- else
98
- new options.view( _.extend(args,view_arguments) )
99
-
100
- viewpath: ''
101
-
102
- detach: ->
103
- this.el.parentNode.removeChild(this.el) if this.el.parentNode
104
-
105
- renderTemplate:(name,data={})->
106
- template = Lanes.Templates.find(name, @namespace)
107
- if template
108
- template(data)
109
- else
110
- Lanes.fatal( "Template #{name} doesn't exist!" )
111
-
112
- renderTemplateMethod: (method)->
113
- return '<span></span>' unless name = _.result(this, "#{method}Name")
114
- this.renderTemplate(name, _.result(this, "#{method}Data") || @model)
115
-
116
- subViewDefinition: ->
117
- if ( definition = this.parent?.subviews?[ @subViewId ] )
118
- definition
119
- else
120
- null
121
-
122
- renderAllSubviews: ->
123
- for name, options of this.subviews
124
- selector = options.container || '[data-hook="' + options.hook + '"]'
125
- this.renderSubview(this[name], selector) unless options.collection
126
-
127
- withRenderContext: (fn)->
128
- Lanes.View.RenderContext.push( @subViewId, @model )
129
- try
130
- returned = fn.apply(this,arguments)
131
- catch e
132
- Lanes.warn e
133
- finally
134
- Lanes.View.RenderContext.pop()
135
- returned
136
-
137
- renderContextFree: ->
138
- previousClass = this.el?.className
139
- Lanes.View.Base.__super__.render.apply(this, arguments)
140
- if previousClass
141
- this.$el.addClass( previousClass )
142
- this.onRender?()
143
- this
144
-
145
- render: (options={})->
146
- this.withRenderContext( this.renderContextFree )
147
-
148
- $: (selector)->
149
- if selector then Lanes.$(selector,this.el) else Lanes.$(this.el)
150
-
151
- _onModelChange: (model)->
152
- for name, definition of this.subviews
153
- continue unless ( view = this[name] )
154
- view.model = Lanes.getPath(definition.model, this) if definition.model
155
- view.collection = Lanes.getPath(definition.collection, this) if definition.collection
156
- old_model = this.previous(@keypath)
157
- return if old_model == @model
158
- this.unBindModel( old_model ) if old_model
159
- this.bindModel( @model ) if @model
160
-
161
- belongsToScreen: ->
162
- view = this
163
- while view and ! ( view instanceof Lanes.View.Screen )
164
- view = view.parent
165
- view
166
-
167
- _subviewClass: (subview)->
168
- klass = if subview.component
169
- Lanes.getPath("Lanes.Component.#{subview.component}")
170
- else if subview.view
171
- if _.isString(subview.view)
172
- Lanes.getPath(subview.view, "Lanes.View")# || Lanes.getPath("Lanes.View.#{subview.view}")
173
- else
174
- subview.view
175
- Lanes.warn( "Unable to obtain view for %o", subview) if ! klass
176
- klass
177
-
178
- bindingWriteDefinition: (keypath, options)->
179
- switch options.type
180
- when 'booleanAttribute'
181
- {
182
- selector: "change #{options.selector}",
183
- handler: (ev)->
184
- [model, field] = Lanes.getModelPath(this,keypath)
185
- model.set(field,ev.target.checked)
186
- }
187
- else
188
- {}
189
-
190
- cacheElements: (config)->
191
- super
192
- this
193
-
194
- cacheJqElements: (config)->
195
- this.cacheElements(config)
196
- for key, _ of config
197
- this[key] = Lanes.$(this[key])
198
- this
199
-
200
- @configureSubview: (name, subview)->
201
- fn = if subview.prepareView
202
- subview.prepareView
203
- else
204
- _.partial(this.prototype.prepareSubview, _, subview, name)
205
- subview.hook=name if !subview.hook && !subview.container
206
- subview.waitFor=(subview.model || subview.collection ) if ! subview.waitFor
207
- subview.prepareView = (el)->
208
- this.subViewIntances ||= {}
209
- this.subViewIntances[name]=fn.call(this,el)
210
-
211
- @extended: (klass)->
212
- if views = klass.prototype.subviews
213
- @configureSubview(name, definition) for name, definition of views
214
- setupWritableBindings(klass.prototype) if klass.prototype.bindings
215
-
216
- Lanes.lib.ModuleSupport.includeInto(@)
217
- @include Lanes.lib.defer
218
- @include Lanes.lib.debounce
219
- @include Lanes.lib.results
220
-
221
-
222
-
223
- setupWritableBindings=(klass)->
224
- klass.events ||= {}
225
- for keypath, options of klass.bindings
226
- continue unless options.write
227
- writeFn = ( klass.bindingWriteDefinition || ViewBase.prototype.bindingWriteDefinition )
228
- definition = writeFn.call(klass, keypath, options)
229
- klass.events[ definition.selector ] = definition.handler
230
-
231
- Lanes.View.Base = Lanes.lib.MakeBaseClass( Lanes.Vendor.Ampersand.View, ViewBase )
@@ -1,30 +0,0 @@
1
- Lanes.namespace( 'Screens' )
2
-
3
- class Lanes.View.Screen extends Lanes.View.Base
4
-
5
- namespace: "Screens"
6
-
7
- mixins:[
8
- Lanes.View.mixins.ScreenChangeListener
9
- ]
10
-
11
- initializeChanges:->
12
- @_changeListeners = {}
13
- for keypath in ( @usingModels || ['model'] )
14
- @_changeListeners[keypath] = new Lanes.View.ScreenChangeListener(this, keypath)
15
-
16
- reset: Lanes.emptyFn
17
-
18
- render: ->
19
- previouslyRendered = this.rendered
20
- Lanes.View.RenderContext.start(this)
21
- # Lanes.re we cheat and skip ViewBase so it doesn't push to context
22
- this.reset()
23
- this.renderContextFree()
24
- #Lanes.View.Base.__super__.render.apply(this, arguments)
25
- this.renderAllSubviews() if previouslyRendered
26
- Lanes.View.RenderContext.reset()
27
- this
28
-
29
- addButton: (config, align='left')->
30
- this.$(".toolbar ." + align).append( Lanes.View.Helpers.button(config) )
@@ -1,10 +0,0 @@
1
- //= require_self
2
- //= require_tree ./mixins
3
- //= require ./RenderContext
4
- //= require_tree .
5
-
6
- Lanes.namespace( 'View.mixins' );
7
-
8
-
9
- //= require ./ModelObserver
10
- //= require ./FormBindings
@@ -1,33 +0,0 @@
1
- class Lanes.View.LoginDialog extends Lanes.Component.ModalDialog
2
-
3
- bodyTemplateName: 'workspace/login-dialog'
4
- size: 'md'
5
- title: 'Please sign in …'
6
-
7
- events:
8
- 'click .btn-primary': 'onLogin'
9
-
10
- buttons:
11
- login: { label: 'Login', type: 'primary' }
12
-
13
- initialize: (options)->
14
- super
15
- this.listenTo(Lanes.current_user, 'change:isLoggedIn', this.onUserChange)
16
- this.onUserChange()
17
-
18
- onUserChange: ->
19
- this.toggleShown(!Lanes.current_user.isLoggedIn)
20
-
21
- onLogin: (ev)->
22
- msg = this.$('.alert').hide()
23
- mask = new Lanes.View.TimedMask(this.$el, "Attempting Login …")
24
- Lanes.Data.User.attemptLogin( this.query('#LoginField').value, this.query('#PasswordField').value, {
25
- scope: this
26
- success: ->
27
- mask.displaySuccess("Login Success!")
28
- error: (session,reply)->
29
- msg.show().text(session.lastServerMessage )
30
- mask.displayFailure(session.lastServerMessage)
31
- })
32
-
33
- onShown: -> this.query('.login').focus()
@@ -1,16 +0,0 @@
1
- <div class="row">
2
- <div style="display:none" class="alert alert-danger" role="alert"></div>
3
- <div class="<%= h.grid_offsets(0,2) %> <%= h.grid_widths 12, 8%>">
4
- <form role="form">
5
- <div class="form-group">
6
- <label for="LoginField">Login</label>
7
- <input type="email" id="LoginField" value="admin" class="form-control login" placeholder="Enter Login">
8
- </div>
9
- <div class="form-group">
10
- <label for="PasswordField">Password <a href="/sessions/forgot_password">(forgot password)</a></label>
11
- <input type="password" id="PasswordField" value="password" class="form-control password" placeholder="Password">
12
- </div>
13
-
14
- </form>
15
- </div>
16
- </div>
@@ -1,21 +0,0 @@
1
- class Lanes.Screens.UserEditScreen extends Lanes.Component.Grid.PopOverEditor
2
-
3
- templateName: 'user-management/grid-popover-editor'
4
- templateData: ->
5
- { columns: _.reject(this.grid.column_definitions,(f)-> f.field=='role_names') }
6
-
7
- subviews:
8
- roles:
9
- component: 'SelectField'
10
- model: 'model'
11
- options: 'roleOptions'
12
-
13
- roleOptions: ->
14
- { multiple: true, data: this.model.allRoles, mappings:{ title: 'name', selected: 'member' } }
15
-
16
- persistFields: ->
17
- super
18
- @model.set({
19
- role_names: _.pluck(this.$('select option:selected'), 'value'),
20
- password: this.$('input[name=password]').val()
21
- })
@@ -1,24 +0,0 @@
1
- class Lanes.Screens.UserManagement extends Lanes.View.Screen
2
-
3
- templateName: 'user-management/user-management'
4
-
5
- subviews:
6
- grid:
7
- component: 'Grid'
8
- options: 'gridOptions'
9
-
10
- gridOptions: ->
11
- {
12
- record_query: new Lanes.Data.Query({
13
- collection_class: Lanes.Data.User.Collection,
14
- fields: [ 'login', 'name', 'email', 'role_names' ]
15
- }),
16
- editor_config: {
17
- foo: 1
18
- }
19
- editing_controller: Lanes.Screens.UserEditScreen
20
- selectionMode: 'single',
21
- edit_records: true
22
- add_records: true
23
- delete_records: true
24
- }
@@ -1,33 +0,0 @@
1
- <form class="user-edit form-horizontal" role="form">
2
- <% for field in @columns: %>
3
- <div class="form-group">
4
- <label for="field-<%= field.field %>" class="col-sm-3 control-label"><%= field.title %></label>
5
- <div class="col-sm-9">
6
- <input type="text" name="<%= field.field %>" class="form-control" id="field-<%= field.field %>" placeholder="">
7
- </div>
8
- </div>
9
- <% end %>
10
-
11
- <div class="form-group">
12
- <label for="field-password" class="col-sm-3 control-label">Roles</label>
13
- <div class="col-sm-9">
14
- <div data-hook="roles"></div>
15
- </div>
16
- </div>
17
-
18
- <div class="form-group">
19
- <label for="field-password" class="col-sm-3 control-label">Password</label>
20
- <div class="col-sm-9">
21
- <input type="password" name="password" class="form-control" id="field-password" placeholder="">
22
- </div>
23
- </div>
24
-
25
- <div class="buttons">
26
- <button type="button" class="btn btn-default cancel">
27
- <i class="icon-cancel-circle"> Cancel</i>
28
- </button>
29
- <button type="button" class="btn btn-primary save">
30
- <i class="icon-save"> Save</i>
31
- </button>
32
- </div>
33
- </form>
@@ -1,4 +0,0 @@
1
- /*
2
- *= require_self
3
- *= require ./user-management-styles.scss
4
- */
@@ -1,7 +0,0 @@
1
- .lanes {
2
- .grid-popover-editor {
3
- width: 350px;
4
-
5
- }
6
-
7
- }
@@ -1,8 +0,0 @@
1
- <div class="users">
2
- <h1>Hello Users</h1>
3
-
4
-
5
- <div class="grid" data-hook="grid">
6
- </div>
7
-
8
- </div>
@@ -1,23 +0,0 @@
1
- .modal-backdrop{
2
- position: absolute;
3
- }
4
-
5
- .modal-dialog{
6
- position: absolute;
7
- top: 30px;
8
- z-index: 28;
9
- right: 5%;
10
- left: 5%;
11
-
12
- &.tiny {
13
- height: 100%;
14
- left: 0;
15
- right: 0;
16
- top: 0;
17
- }
18
-
19
- &.modal-lg{
20
- width: 800px;
21
- }
22
-
23
- }
@@ -1,17 +0,0 @@
1
- @import "fonts";
2
- @import "vendor/bootstrap";
3
-
4
- .lanes {
5
- padding: 0px;
6
- margin: 0px;
7
- background-color: $body-bg;
8
- position: relative;
9
- min-height: 10px; // needs height for resizing sensor to function
10
- @import "compoonents/all";
11
- @import "plugins/all";
12
- @import "layout";
13
- @import "tabs";
14
- @import "screens";
15
- @import "forms";
16
- @import "keybindings";
17
- }
data/config/puma.rb DELETED
@@ -1,7 +0,0 @@
1
- #daemonize
2
-
3
- workers 1 # should be same number of your CPU core
4
- threads 1, 6
5
-
6
- pidfile "tmp/lanes.pid"
7
- #stdout_redirect 'log/lanes.log', 'log/lanes-error.log', true
data/db/seed.rb DELETED
@@ -1,37 +0,0 @@
1
- Lanes::DB::Seed.add do
2
-
3
- # This could totes be better written
4
-
5
- unless Lanes::User.exists?(1)
6
- u = Lanes::User.new( name: "Administrator Tester", email: "admin-test@stockor.org",
7
- login: "admin", role_names: ['administrator'] )
8
- u.id = 1
9
- u.password = "password"
10
- u.save!
11
- end
12
-
13
- unless Lanes::User.exists?(2)
14
- u = Lanes::User.new( name: "Accounting Tester", email: "accounting-test@stockor.org",
15
- login: "accounting", role_names: ['accounting'] )
16
- u.id = 2
17
- u.password = "password"
18
- u.save!
19
- end
20
-
21
- unless Lanes::User.exists?(3)
22
- u = Lanes::User.new( name: "Customer Support Tester", email: "support-test@stockor.org",
23
- login: "support", role_names: ['customer_support'] )
24
- u.id = 3
25
- u.password = "password"
26
- u.save!
27
- end
28
-
29
- unless Lanes::User.exists?(4)
30
- u = Lanes::User.new( name: "Purchasing Tester", email: "purchasing-test@stockor.org",
31
- login: "purchasing", role_names: ['purchasing'] )
32
- u.id = 4
33
- u.password = "password"
34
- u.save!
35
- end
36
-
37
- end
data/foo/Gemfile DELETED
@@ -1,5 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem "lanes", "~>0.2"
4
-
5
- gemspec
data/foo/Guardfile DELETED
@@ -1,13 +0,0 @@
1
- require "lanes/guard_tasks"
2
-
3
- Lanes::GuardTasks.run(self, name: "foo") do | tests |
4
-
5
- tests.client do
6
-
7
- end
8
-
9
- tests.server do
10
-
11
- end
12
-
13
- end
data/foo/foo/Gemfile DELETED
@@ -1,5 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem "lanes", "~>0.2"
4
-
5
- gemspec
data/foo/foo/lib/foo.rb DELETED
@@ -1,7 +0,0 @@
1
- require 'lanes'
2
-
3
- # The main entry point for Foo
4
- class Foo
5
-
6
-
7
- end
@@ -1,3 +0,0 @@
1
- module Foo
2
- VERSION=0.1
3
- end
data/foo/lib/foo.rb DELETED
@@ -1,8 +0,0 @@
1
- require "lanes"
2
- require "foo/version.rb"
3
-
4
- # The main namespace for Foo
5
- module Foo
6
-
7
-
8
- end
@@ -1,43 +0,0 @@
1
- module Lanes
2
- module Access
3
-
4
- class LockedFields
5
-
6
- @definitions = Hash.new{ |fields,klass|
7
- fields[klass] = Hash.new{ |grants,field| grants[field] = [] }
8
- }
9
- class << self
10
-
11
- # @param klass [Lanes::Model]
12
- # @param field [Symbol]
13
- # @param access_type [:read, :write]
14
- # @return [Array<Role>] Roles that are allowed to access the field.
15
- # An empty array indicates that the field is not locked and the Model
16
- # should be used for determining access
17
- def roles_needed_for(klass, attribute, access_type)
18
- if @definitions.has_key?(klass) && @definitions[klass].has_key?(attribute)
19
- @definitions[klass][attribute].each_with_object([]) do | grant, result |
20
- result.push(grant[:role]) if grant[:only].nil? || grant[:only] == access_type
21
- end
22
- else
23
- []
24
- end
25
- end
26
-
27
- # Lock a given class and attribute to a given role
28
- # @param klass [Lanes::Model]
29
- # @param field [Symbol]
30
- # @param only [:read, :write]
31
- def lock(klass, field, role, only=nil)
32
- @definitions[klass][field] << { role: role, only: only }
33
- end
34
-
35
- def definitions
36
- @definitions
37
- end
38
- end
39
-
40
- end
41
-
42
- end
43
- end
@@ -1,58 +0,0 @@
1
- # N.B. Keep in sync with js/user-extension/lanes/extensions/user-access/Roles.coffee
2
-
3
- module Lanes
4
- module Access
5
-
6
- class Role
7
- class_attribute :read, :write, :delete
8
-
9
- def initialize(user)
10
- @user = user
11
- end
12
-
13
- def can_read?(model)
14
- read.include?(model)
15
- end
16
-
17
- def can_write?(model)
18
- write.include?(model)
19
- end
20
-
21
- def can_delete?(model)
22
- delete.include?(model)
23
- end
24
-
25
- class << self
26
- def grant_global_access(klass,types=[:read,:write,:delete])
27
- types = [*types]
28
- descendants.each do | child |
29
- types.each{ |type| child.send(type).push(klass) }
30
- end
31
- end
32
-
33
- def inherited(sub)
34
- sub.read = []; sub.write = []; sub.delete = []
35
- end
36
-
37
- def grant( *klasses )
38
- self.read.push( *klasses )
39
- write.push( *klasses )
40
- delete.push( *klasses )
41
- end
42
-
43
- def lock(klass, attribute)
44
- LockedFields.lock( klass, attribute, self)
45
- end
46
-
47
- def lock_writes(klass, attribute)
48
- LockedFields.lock( klass, attribute, self, :write)
49
- end
50
-
51
- def all_available
52
- descendants.map{ |klass| klass.to_s.demodulize }
53
- end
54
- end
55
- end
56
-
57
- end
58
- end