lanes 0.1.9.5 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (304) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -0
  3. data/Rakefile +1 -1
  4. data/client/lanes/Boot.cjsx +3 -3
  5. data/client/lanes/Config.coffee +38 -3
  6. data/client/lanes/access/Extension.coffee +1 -1
  7. data/client/lanes/access/LoginDialog.cjsx +57 -47
  8. data/client/lanes/access/Roles.coffee +2 -2
  9. data/client/lanes/access/User.coffee +4 -3
  10. data/client/lanes/access/screens/user-management/UserManagement.cjsx +12 -11
  11. data/client/lanes/components/calendar/Calendar.cjsx +16 -0
  12. data/client/lanes/components/calendar/index.js +3 -0
  13. data/client/lanes/components/calendar/styles.scss +3 -0
  14. data/client/lanes/components/grid/Body.cjsx +86 -0
  15. data/client/lanes/components/grid/CellStyles.coffee +20 -0
  16. data/client/lanes/components/grid/EditingMixin.cjsx +84 -24
  17. data/client/lanes/components/grid/Editor.cjsx +45 -0
  18. data/client/lanes/components/grid/Grid.cjsx +62 -104
  19. data/client/lanes/components/grid/Header.cjsx +35 -0
  20. data/client/lanes/components/grid/PopOverMixin.cjsx +19 -9
  21. data/client/lanes/components/grid/PopoverEditor.cjsx +7 -1
  22. data/client/lanes/components/grid/RowEditor.cjsx +1 -1
  23. data/client/lanes/components/grid/Selections.cjsx +39 -0
  24. data/client/lanes/components/grid/Toolbar.cjsx +24 -5
  25. data/client/lanes/components/grid/editors.scss +22 -50
  26. data/client/lanes/components/grid/index.js +0 -1
  27. data/client/lanes/components/grid/row-editor.scss +68 -0
  28. data/client/lanes/components/grid/styles.scss +79 -3
  29. data/client/lanes/components/modal/Modal.cjsx +64 -24
  30. data/client/lanes/components/modal/styles.scss +12 -0
  31. data/client/lanes/components/record-finder/Clause.cjsx +11 -4
  32. data/client/lanes/components/record-finder/Dialog.cjsx +23 -24
  33. data/client/lanes/components/record-finder/RecordFinder.cjsx +45 -14
  34. data/client/lanes/components/record-finder/styles.scss +9 -6
  35. data/client/lanes/components/select-field/SelectField.cjsx +108 -53
  36. data/client/lanes/components/select-field/styles.scss +19 -0
  37. data/client/lanes/components/shared/ControlLabel.cjsx +45 -0
  38. data/client/lanes/components/shared/DateTime.cjsx +48 -0
  39. data/client/lanes/components/shared/DisplayValue.cjsx +16 -0
  40. data/client/lanes/components/shared/FieldMixin.cjsx +54 -23
  41. data/client/lanes/components/shared/FieldSet.cjsx +12 -35
  42. data/client/lanes/components/shared/FieldWrapper.cjsx +13 -0
  43. data/client/lanes/components/shared/FormGroup.cjsx +37 -0
  44. data/client/lanes/components/shared/Icon.cjsx +20 -0
  45. data/client/lanes/components/shared/ImageSaver.cjsx +33 -0
  46. data/client/lanes/components/shared/Input.cjsx +19 -0
  47. data/client/lanes/components/shared/InputFieldMixin.cjsx +48 -0
  48. data/client/lanes/components/shared/JobProgress.cjsx +27 -0
  49. data/client/lanes/components/shared/NetworkActivityOverlay.cjsx +58 -0
  50. data/client/lanes/components/shared/NumberInput.cjsx +29 -0
  51. data/client/lanes/components/shared/ResizeSensor.cjsx +11 -0
  52. data/client/lanes/components/shared/ScreenWrapper.cjsx +13 -0
  53. data/client/lanes/components/shared/Throbber.cjsx +3 -0
  54. data/client/lanes/components/shared/ToggleField.cjsx +33 -0
  55. data/client/lanes/components/shared/Tooltip.cjsx +2 -2
  56. data/client/lanes/components/shared/fields.scss +75 -13
  57. data/client/lanes/components/shared/fieldset.scss +3 -5
  58. data/client/lanes/components/shared/image-saver.scss +38 -0
  59. data/client/lanes/components/shared/index.js +2 -0
  60. data/client/lanes/{styles/plugins → components/shared}/overlay.scss +17 -4
  61. data/client/lanes/components/shared/resize-sensor.scss +30 -0
  62. data/client/lanes/components/shared/styles.scss +13 -0
  63. data/client/lanes/components/shared/throbber.scss +53 -0
  64. data/client/lanes/components/toolbar/RemoteChangeSets.cjsx +21 -48
  65. data/client/lanes/components/toolbar/SaveButton.cjsx +24 -0
  66. data/client/lanes/components/toolbar/Toolbar.cjsx +24 -37
  67. data/client/lanes/components/toolbar/changes-notification.scss +10 -6
  68. data/client/lanes/components/toolbar/styles.scss +29 -9
  69. data/client/lanes/extension/Base.coffee +4 -5
  70. data/client/lanes/index.js +0 -1
  71. data/client/lanes/index.scss.erb +10 -1
  72. data/client/lanes/lib/HotReload.coffee +13 -15
  73. data/client/lanes/lib/MakeBaseClass.coffee +6 -1
  74. data/client/lanes/lib/development.coffee +2 -0
  75. data/client/lanes/lib/dom-polyfills.coffee +5 -0
  76. data/client/lanes/lib/dom.coffee +38 -9
  77. data/client/lanes/lib/format.coffee +11 -0
  78. data/client/lanes/lib/index.js.erb +2 -0
  79. data/client/lanes/lib/production.coffee +6 -0
  80. data/client/lanes/lib/utilFunctions.coffee +50 -15
  81. data/client/lanes/models/AssociationMap.coffee +122 -46
  82. data/client/lanes/models/AssociationProxy.coffee +147 -0
  83. data/client/lanes/models/Base.coffee +97 -85
  84. data/client/lanes/models/ChangeMonitor.coffee +7 -3
  85. data/client/lanes/models/ChangeSet.coffee +2 -2
  86. data/client/lanes/models/Collection.coffee +49 -6
  87. data/client/lanes/models/JobStatus.coffee +32 -0
  88. data/client/lanes/models/PubSub.coffee +7 -5
  89. data/client/lanes/models/Query.coffee +115 -34
  90. data/client/lanes/models/ServerCache.coffee +67 -52
  91. data/client/lanes/models/State.coffee +97 -0
  92. data/client/lanes/models/Sync.coffee +18 -13
  93. data/client/lanes/models/SystemSettings.coffee +0 -0
  94. data/client/lanes/models/index.js +1 -0
  95. data/client/lanes/models/mixins/FileSupport.coffee +60 -0
  96. data/client/lanes/models/mixins/HasCodeField.coffee +13 -6
  97. data/client/lanes/models/query/ArrayResult.coffee +188 -0
  98. data/client/lanes/models/query/CollectionResult.coffee +71 -0
  99. data/client/lanes/models/query/Result.coffee +9 -0
  100. data/client/lanes/react/Component.coffee +7 -3
  101. data/client/lanes/react/PubSub.coffee +7 -7
  102. data/client/lanes/react/Root.cjsx +1 -4
  103. data/client/lanes/react/Screen.coffee +1 -0
  104. data/client/lanes/react/TypeValidators.coffee +3 -3
  105. data/client/lanes/react/Viewport.coffee +41 -7
  106. data/client/lanes/react/index.js +0 -1
  107. data/client/lanes/react/mixins/Access.coffee +4 -1
  108. data/client/lanes/react/mixins/Data.coffee +40 -25
  109. data/client/lanes/react/mixins/FieldErrors.coffee +27 -0
  110. data/client/lanes/react/mixins/RelayEditingState.coffee +4 -0
  111. data/client/lanes/react/mixins/Screen.coffee +14 -0
  112. data/client/lanes/react/mixins/Viewport.coffee +9 -3
  113. data/client/lanes/screens/ChangeListener.coffee +3 -3
  114. data/client/lanes/screens/Commands.coffee +14 -7
  115. data/client/lanes/screens/CommonComponents.cjsx +20 -0
  116. data/client/lanes/screens/Definitions.coffee +64 -20
  117. data/client/lanes/screens/SystemSettings.cjsx +56 -0
  118. data/client/lanes/screens/UserPreferences.cjsx +38 -0
  119. data/client/lanes/screens/index.js +3 -0
  120. data/client/lanes/screens/styles.scss +2 -1
  121. data/client/lanes/styles/fonts.scss +1 -0
  122. data/client/lanes/styles/global.scss +2 -1
  123. data/client/lanes/styles/global/flexbox.scss +16 -0
  124. data/client/lanes/styles/global/styles.scss +1 -0
  125. data/client/lanes/styles/mixins/_dropdown.scss +21 -0
  126. data/client/lanes/styles/mixins/_flexbox.scss +394 -0
  127. data/client/lanes/styles/mixins/all.scss +2 -0
  128. data/client/lanes/styles/variables.scss +28 -0
  129. data/client/lanes/testing/BeforeEach.coffee +15 -14
  130. data/client/lanes/testing/Helpers.coffee +14 -5
  131. data/client/lanes/testing/TestObjects.coffee +10 -2
  132. data/client/lanes/testing/index.js +1 -0
  133. data/client/lanes/testing/jasmine-react.js +125 -0
  134. data/client/lanes/vendor/base.js +56049 -74987
  135. data/client/lanes/vendor/calendar.js +17301 -0
  136. data/client/lanes/vendor/calendar.scss +303 -0
  137. data/client/lanes/vendor/commons.js +14990 -15847
  138. data/client/lanes/vendor/development.js +4912 -1952
  139. data/client/lanes/vendor/grid.js +14246 -5551
  140. data/client/lanes/vendor/grid.scss +876 -335
  141. data/client/lanes/vendor/index.js +1 -0
  142. data/client/lanes/vendor/message-bus-ajax.js +44 -0
  143. data/client/lanes/vendor/message-bus.js +414 -0
  144. data/client/lanes/vendor/rw-widgets.eot +0 -0
  145. data/client/lanes/vendor/rw-widgets.svg +18 -0
  146. data/client/lanes/vendor/rw-widgets.ttf +0 -0
  147. data/client/lanes/vendor/rw-widgets.woff +0 -0
  148. data/client/lanes/vendor/toggle.js +345 -0
  149. data/client/lanes/vendor/toggle.scss +138 -0
  150. data/client/lanes/vendor/widgets.js +21245 -6839
  151. data/client/lanes/vendor/widgets.scss +83 -67
  152. data/client/lanes/workspace/Layout.cjsx +18 -8
  153. data/client/lanes/workspace/Modal.cjsx +47 -0
  154. data/client/lanes/workspace/Navbar.cjsx +16 -2
  155. data/client/lanes/workspace/ScreenView.cjsx +10 -3
  156. data/client/lanes/workspace/ScreensMenu.cjsx +23 -7
  157. data/client/lanes/workspace/Tabs.cjsx +55 -0
  158. data/client/lanes/workspace/UIState.coffee +7 -8
  159. data/client/lanes/workspace/index.js +2 -1
  160. data/client/lanes/workspace/mixin.coffee +11 -0
  161. data/client/lanes/workspace/mixins/UIState.coffee +8 -0
  162. data/client/lanes/workspace/mixins/index.js +3 -0
  163. data/client/lanes/workspace/styles.scss +2 -1
  164. data/client/lanes/workspace/styles/header.scss +23 -1
  165. data/client/lanes/workspace/styles/layout.scss +26 -24
  166. data/client/lanes/workspace/styles/screens.scss +0 -4
  167. data/client/lanes/workspace/styles/tabs.scss +3 -10
  168. data/config/routes.rb +10 -4
  169. data/config/screens.rb +25 -0
  170. data/db/migrate/01_create_system_settings.rb +10 -0
  171. data/docs/todo-example-part-1.md +18 -20
  172. data/lanes.gemspec +15 -6
  173. data/lib/lanes.rb +4 -2
  174. data/lib/lanes/access/config/routes.rb +5 -3
  175. data/lib/lanes/access/config/screens.rb +1 -0
  176. data/lib/lanes/access/db/migrate/20140615031600_create_lanes_users.rb +1 -1
  177. data/lib/lanes/access/user.rb +1 -1
  178. data/lib/lanes/api.rb +2 -1
  179. data/lib/lanes/api/controller.rb +32 -71
  180. data/lib/lanes/api/default_routes.rb +10 -8
  181. data/lib/lanes/api/formatted_reply.rb +53 -0
  182. data/lib/lanes/api/handlers/file.rb +26 -0
  183. data/lib/lanes/api/helper_methods.rb +29 -5
  184. data/lib/lanes/api/javascript_processor.rb +36 -17
  185. data/lib/lanes/api/pub_sub.rb +6 -9
  186. data/lib/lanes/api/request_wrapper.rb +1 -2
  187. data/lib/lanes/api/root.rb +11 -43
  188. data/lib/lanes/api/routing.rb +63 -0
  189. data/lib/lanes/api/sprockets_extension.rb +15 -7
  190. data/lib/lanes/api/updates.rb +1 -2
  191. data/lib/lanes/command.rb +0 -1
  192. data/lib/lanes/command/app.rb +6 -5
  193. data/lib/lanes/command/console.rb +1 -0
  194. data/lib/lanes/command/generate.rb +3 -0
  195. data/lib/lanes/command/generate_migration.rb +33 -0
  196. data/lib/lanes/command/generate_model.rb +4 -26
  197. data/lib/lanes/command/migration_support.rb +29 -0
  198. data/lib/lanes/command/update_model.rb +14 -5
  199. data/lib/lanes/concerns/all.rb +2 -0
  200. data/lib/lanes/concerns/api_path.rb +4 -2
  201. data/lib/lanes/concerns/association_extensions.rb +1 -1
  202. data/lib/lanes/concerns/attr_accessor_with_default.rb +3 -1
  203. data/lib/lanes/concerns/code_identifier.rb +1 -1
  204. data/lib/lanes/concerns/image_uploader.rb +42 -0
  205. data/lib/lanes/concerns/pub_sub.rb +0 -1
  206. data/lib/lanes/concerns/queries.rb +2 -2
  207. data/lib/lanes/concerns/set_attribute_data.rb +4 -13
  208. data/lib/lanes/concerns/sorting_expressions.rb +34 -0
  209. data/lib/lanes/configuration.rb +48 -9
  210. data/lib/lanes/extension.rb +16 -7
  211. data/lib/lanes/extension/definition.rb +8 -2
  212. data/lib/lanes/job.rb +78 -0
  213. data/lib/lanes/job/failure_logger.rb +33 -0
  214. data/lib/lanes/model.rb +4 -0
  215. data/lib/lanes/rake_tasks.rb +6 -0
  216. data/lib/lanes/redis.rb +13 -0
  217. data/lib/lanes/screen.rb +34 -18
  218. data/lib/lanes/system_settings.rb +66 -0
  219. data/lib/lanes/version.rb +1 -1
  220. data/lib/lanes/workspace/extension.rb +1 -1
  221. data/npm-build/base.js +10 -3
  222. data/npm-build/calendar.js +6 -0
  223. data/npm-build/development.js +4 -5
  224. data/npm-build/grid.js +3 -5
  225. data/npm-build/package.json +40 -29
  226. data/npm-build/react-toggle.js +5 -0
  227. data/npm-build/react-widgets.js +6 -0
  228. data/npm-build/update-dayz +14 -0
  229. data/npm-build/webpack.config.js +5 -2
  230. data/spec/command-reference-files/initial/Gemfile +1 -1
  231. data/spec/command-reference-files/initial/config/routes.rb +2 -0
  232. data/spec/command-reference-files/initial/lib/appy-app.rb +4 -0
  233. data/spec/command-reference-files/initial/lib/appy-app/extension.rb +2 -0
  234. data/spec/command-reference-files/initial/spec/server/{spec_helpers.rb → spec_helper.rb} +0 -0
  235. data/spec/command-reference-files/model/config/routes.rb +2 -0
  236. data/spec/command-reference-files/model/spec/server/test_test_spec.rb +1 -1
  237. data/spec/command-reference-files/screen/client/appy-app/screens/ready-set-go/ReadySetGo.cjsx +6 -4
  238. data/spec/command-reference-files/screen/client/appy-app/screens/ready-set-go/index.scss +4 -3
  239. data/spec/command-reference-files/screen/config/screens.rb +4 -2
  240. data/spec/command-reference-files/screen/spec/appy-app/screens/ready-set-go/ReadySetGoSpec.coffee +1 -1
  241. data/spec/fixtures/system_settings.yml +1 -0
  242. data/spec/lanes/components/grid/GridSpec.coffee +56 -31
  243. data/spec/lanes/components/grid/RowEditorSpec.coffee +96 -0
  244. data/spec/lanes/components/select-field/SelectFieldSpec.coffee +99 -0
  245. data/spec/lanes/components/shared/NetworkActivityOverlaySpec.coffee +34 -0
  246. data/spec/lanes/models/AssociationMapSpec.coffee +36 -2
  247. data/spec/lanes/models/AssociationProxySpec.coffee +77 -0
  248. data/spec/lanes/models/BaseSpec.coffee +37 -4
  249. data/spec/lanes/models/CollectionSpec.coffee +11 -17
  250. data/spec/lanes/models/PubSubSpec.coffee +1 -1
  251. data/spec/lanes/models/ServerCacheSpec.coffee +65 -0
  252. data/spec/server/api/coffeescript_processor_spec.rb +1 -1
  253. data/spec/server/concerns/pub_sub_spec.rb +9 -10
  254. data/spec/server/concerns/sorting_expressions_spec.rb +34 -0
  255. data/spec/server/configuration_spec.rb +3 -3
  256. data/spec/server/job_spec.rb +54 -0
  257. data/spec/server/spec_helper.rb +0 -5
  258. data/spec/server/system_settings_spec.rb +23 -0
  259. data/templates/client/screens/Screen.cjsx +6 -4
  260. data/templates/client/screens/styles.scss +4 -3
  261. data/templates/config/routes.rb +2 -0
  262. data/templates/config/screen.rb +4 -2
  263. data/templates/lib/namespace.rb +4 -0
  264. data/templates/lib/namespace/extension.rb +2 -0
  265. data/templates/spec/client/Screen.coffee +1 -1
  266. data/templates/spec/server/model_spec.rb +1 -1
  267. data/templates/spec/server/{spec_helpers.rb → spec_helper.rb} +0 -0
  268. data/views/lanes_root_view.erb +70 -0
  269. data/views/specs.erb +2 -2
  270. metadata +207 -68
  271. data/client/images/lanes/dataTables/Sorting icons.psd +0 -0
  272. data/client/images/lanes/dataTables/back_disabled.png +0 -0
  273. data/client/images/lanes/dataTables/back_enabled.png +0 -0
  274. data/client/images/lanes/dataTables/back_enabled_hover.png +0 -0
  275. data/client/images/lanes/dataTables/favicon.ico +0 -0
  276. data/client/images/lanes/dataTables/forward_disabled.png +0 -0
  277. data/client/images/lanes/dataTables/forward_enabled.png +0 -0
  278. data/client/images/lanes/dataTables/forward_enabled_hover.png +0 -0
  279. data/client/images/lanes/dataTables/loading-background.png +0 -0
  280. data/client/images/lanes/dataTables/sort_asc.png +0 -0
  281. data/client/images/lanes/dataTables/sort_asc_disabled.png +0 -0
  282. data/client/images/lanes/dataTables/sort_both.png +0 -0
  283. data/client/images/lanes/dataTables/sort_desc.png +0 -0
  284. data/client/images/lanes/dataTables/sort_desc_disabled.png +0 -0
  285. data/client/lanes/components/shared/Resize.cjsx +0 -152
  286. data/client/lanes/components/shared/TextArea.cjsx +0 -19
  287. data/client/lanes/components/shared/TextField.cjsx +0 -25
  288. data/client/lanes/models/Bootstrap.coffee +0 -5
  289. data/client/lanes/models/QueryResults.coffee +0 -93
  290. data/client/lanes/react/FormBindings.coffee +0 -103
  291. data/client/lanes/react/Router.cjsx +0 -18
  292. data/client/lanes/styles/dataTables.scss +0 -4
  293. data/client/lanes/styles/plugins/all.scss +0 -2
  294. data/client/lanes/styles/plugins/resize-sensor.scss +0 -24
  295. data/client/lanes/vendor/jquery-2.js +0 -9190
  296. data/client/lanes/vendor/jquery.tap.js +0 -401
  297. data/client/lanes/vendor/magicsuggest.js +0 -1565
  298. data/client/lanes/vendor/message-bus.coffee +0 -264
  299. data/client/lanes/workspace/ActiveScreenSwitcher.cjsx +0 -38
  300. data/client/lanes/workspace/styles/toolbar.scss +0 -4
  301. data/lib/lanes/api/eco.js +0 -516
  302. data/lib/lanes/api/sprockets_compressor.rb +0 -39
  303. data/spec/command-reference-files/model/lib/appy-app.rb +0 -11
  304. data/views/index.erb +0 -19
@@ -0,0 +1,6 @@
1
+ var Lanes = ( global.Lanes || (global.Lanes = {}) );
2
+ Lanes.Vendor = ( Lanes.Vendor || {} );
3
+
4
+ Lanes.Vendor.Dayz = require("dayz");
5
+
6
+ require("file?name=calendar.scss!dayz/style/dayz.scss");
@@ -1,7 +1,6 @@
1
1
  var Lanes = ( global.Lanes || (global.Lanes = {}) );
2
2
  Lanes.Vendor = ( Lanes.Vendor || {} );
3
- var React = require('react/addons');
4
- Lanes.Vendor.ReactTestUtils = React.addons.TestUtils;
5
- Lanes.Vendor.hotRL = require('react-hot-api')(function () {
6
- return require('react/lib/ReactMount')._instancesByReactRootID;
7
- });
3
+
4
+ Lanes.Vendor.ReactProxy = require("react-proxy").default;
5
+ Lanes.Vendor.ReactTestUtils = require('react-addons-test-utils');
6
+ Lanes.Vendor.deepForceUpdate = require('react-deep-force-update');
data/npm-build/grid.js CHANGED
@@ -3,9 +3,7 @@ Lanes.Vendor = ( Lanes.Vendor || {} );
3
3
  if (! Object.assign){
4
4
  Object.assign = require('object-assign');
5
5
  }
6
- Lanes.Vendor.React = require("react");
7
- var FDT = require('fixed-data-table');
8
- Lanes.Vendor.Grid = FDT.Table;
9
- Lanes.Vendor.Grid.Column = FDT.Column;
10
6
 
11
- require("fixed-data-table/dist/fixed-data-table.css");
7
+ Lanes.Vendor.Grid = require("react-datagrid");
8
+
9
+ require("react-datagrid/index-no-normalize.css");
@@ -1,46 +1,57 @@
1
1
  {
2
2
  "name": "lanes-vendor-modules",
3
3
  "author": "Nathan Stitt",
4
+ "license": "MIT",
4
5
  "description": "Build for deploy",
5
- "version": "0.0.0",
6
+ "version": "0.0.1",
6
7
  "main": "vendor.js",
7
8
  "dependencies": {
8
- "ampersand-collection": "~1.4",
9
+ "ampersand-collection": "~1.5",
9
10
  "ampersand-collection-underscore-mixin": "~1.0",
10
11
  "ampersand-dom": "~1.4",
11
- "ampersand-rest-collection": "~2.0",
12
- "ampersand-state": "~4.5",
12
+ "ampersand-rest-collection": "~5.0",
13
+ "ampersand-state": "~4.8",
13
14
  "ampersand-subcollection": "~2.0",
14
15
  "backbone-events-standalone": "~0.2",
15
- "big.js": "~2.5",
16
- "classnames": "~2.1",
17
- "css-loader": "^0.14.2",
18
- "extract-text-webpack-plugin": "^0.8.0",
19
- "file-loader": "^0.8.4",
20
- "fixed-data-table": "^0.3.0",
16
+ "big.js": "~3.1",
17
+ "classnames": "~2.2",
18
+ "dayz": "git://github.com/nathanstitt/dayz.git#master",
21
19
  "get-object-path": "~0.0.2",
22
- "less": "^2.5.1",
23
- "less-loader": "^2.2.0",
24
- "lodash": "~3.8.0",
25
- "moment": "~2.8",
26
- "node-libs-browser": "^0.5.2",
27
- "object-assign": "^2.0.0",
28
- "react": "~0.13.2",
29
- "react-bootstrap": "^0.21.2",
30
- "react-hot-api": "^0.4.4",
31
- "react-router": "^0.13.3",
32
- "react-widgets": "^2.7.2",
33
- "rsvp": "~3.0",
20
+ "history": "^1.13.1",
21
+ "lodash": "^3.10.1",
22
+ "loglevel": "1.4.0",
23
+ "moment": "^2.11.1",
24
+ "moment-range": "^2.1.0",
25
+ "object-assign": "^4.0.1",
26
+ "react": "~0.14.6",
27
+ "react-addons-test-utils": "^0.14.2",
28
+ "react-bootstrap": "^0.28.3",
29
+ "react-component-resizable": "^0.3.0",
30
+ "react-deep-force-update": "^2.0.1",
31
+ "react-dom": "^0.14.6",
32
+ "react-list": "^0.7.11",
33
+ "react-proxy": "^2.0.1",
34
+ "react-toggle": "^2.0.1",
35
+ "react-widgets": "^3.1.7",
36
+ "rsvp": "~3.1",
34
37
  "sorty": "^1.2.0",
35
- "style-loader": "^0.12.3",
36
- "underscore.inflection": "~1.2",
37
- "underscore.string": "^3.0.3",
38
- "webpack": "^1.9.9",
39
- "xhr": "^1.17.1"
38
+ "sprintf-js": "^1.0.3",
39
+ "style-loader": "^0.13.0",
40
+ "underscore.inflection": "~1.3",
41
+ "underscore.string": "^3.2.2",
42
+ "xhr": "^2.2.0"
43
+ },
44
+ "peerDependencies": {
45
+ "react-overlays": "*"
40
46
  },
41
47
  "devDependencies": {
42
- "aliasify": "~1.4.0",
43
- "remapify": "~1.3"
48
+ "css-loader": "^0.23.0",
49
+ "extract-text-webpack-plugin": "^0.9.1",
50
+ "file-loader": "^0.8.4",
51
+ "less": "^2.5.3",
52
+ "less-loader": "^2.2.1",
53
+ "url-loader": "^0.5.6",
54
+ "webpack": "^1.12.6"
44
55
  },
45
56
  "jshintConfig": {
46
57
  "asi": false,
@@ -0,0 +1,5 @@
1
+ var Lanes = ( global.Lanes || (global.Lanes = {}) );
2
+ Lanes.Vendor = ( Lanes.Vendor || {} );
3
+
4
+ Lanes.Vendor.ReactToggle = require('react-toggle')
5
+ require("react-toggle/style.css");
@@ -3,3 +3,9 @@ Lanes.Vendor = ( Lanes.Vendor || {} );
3
3
 
4
4
  Lanes.Vendor.ReactWidgets = require('react-widgets')
5
5
  require("./react-widgets.less");
6
+ var Moment = require('moment');
7
+ var momentLocalizer = require('react-widgets/lib/localizers/moment');
8
+ momentLocalizer(Moment);
9
+
10
+ var numberLocalizer = require('react-widgets/lib/localizers/simple-number')
11
+ numberLocalizer();
@@ -0,0 +1,14 @@
1
+ #!/bin/sh
2
+
3
+ set -e
4
+
5
+ cd ~/code/dayz
6
+
7
+ npm run build
8
+
9
+ cd -
10
+
11
+ cp -r ~/code/dayz/lib/* ./node_modules/dayz/lib/
12
+ cp -r ~/code/dayz/style/* ./node_modules/dayz/style/
13
+
14
+ webpack
@@ -10,8 +10,9 @@ module.exports = {
10
10
  cache: false,
11
11
  entry: {
12
12
  base: "./base.js",
13
- grid: "./grid.js",
14
13
  widgets: "./react-widgets.js",
14
+ toggle: "./react-toggle.js",
15
+ calendar: "./calendar.js",
15
16
  development: "./development.js"
16
17
  },
17
18
  'resolve': {
@@ -25,7 +26,8 @@ module.exports = {
25
26
  },
26
27
  plugins: [
27
28
  new CommonsChunkPlugin("commons.js"),
28
- new ExtractTextPlugin("[name].scss")
29
+ new ExtractTextPlugin("[name].scss"),
30
+ new webpack.optimize.DedupePlugin()
29
31
  ],
30
32
  module: {
31
33
  loaders: [
@@ -33,6 +35,7 @@ module.exports = {
33
35
  { test: /\.(png|woff|woff2|eot|ttf|svg)/, loader: "file-loader?name=[name].[ext]" },
34
36
  { test: /\.less$/, loader: ExtractTextPlugin.extract("style-loader",
35
37
  "css-loader!less-loader") },
38
+
36
39
  { test: /\.css$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader") }
37
40
  ]
38
41
  }
@@ -3,7 +3,7 @@ source 'https://rubygems.org'
3
3
  # For development while Lanes is evolving track master branch
4
4
  gem "lanes", github: 'argosity/lanes', branch: 'master'
5
5
 
6
- # gem "lanes", '0.1.9-1'
6
+ # gem "lanes", '0.1.9.5'
7
7
 
8
8
  gem "rake"
9
9
  gem 'puma'
@@ -1,2 +1,4 @@
1
1
  Lanes::API.routes.draw do
2
+ # Set default view for the site root. Adjust to fit your needs
3
+ root_view :lanes_root_view
2
4
  end
@@ -6,6 +6,10 @@ require_relative "appy-app/extension.rb"
6
6
  # The main namespace for AppyApp
7
7
  module AppyApp
8
8
 
9
+ def self.system_settings
10
+ Lanes::SystemSettings.for_ext('appy-app')
11
+ end
12
+
9
13
  end
10
14
 
11
15
  require_relative "appy-app/model"
@@ -17,6 +17,8 @@ module AppyApp
17
17
 
18
18
  identifier "appy-app"
19
19
 
20
+ title "AppyApp"
21
+
20
22
  root_path Pathname.new(__FILE__).dirname.join("..","..").expand_path
21
23
 
22
24
  # If a data structure that can be represented as JSON
@@ -1,3 +1,5 @@
1
1
  Lanes::API.routes.draw do
2
2
  resources AppyApp::TestTest
3
+ # Set default view for the site root. Adjust to fit your needs
4
+ root_view :lanes_root_view
3
5
  end
@@ -1,4 +1,4 @@
1
- require_relative 'spec_helpers'
1
+ require_relative 'spec_helper'
2
2
 
3
3
  class TestTestSpec < AppyApp::TestCase
4
4
 
@@ -1,7 +1,9 @@
1
1
  class AppyApp.Screens.ReadySetGo extends AppyApp.Screens.Base
2
2
 
3
3
  render: ->
4
- <div className="fancy-header">
5
- <h1>Hello bright shiny world</h1>
6
- <h2>Served by the AppyApp extension&rsquo;s ReadySetGo screen</h2>
7
- </div>
4
+ <LC.ScreenWrapper identifier="ready-set-go">
5
+ <div className="fancy-header">
6
+ <h1>Hello bright shiny world</h1>
7
+ <h2>Served by the AppyApp extension&rsquo;s ReadySetGo screen</h2>
8
+ </div>
9
+ </LC.ScreenWrapper>
@@ -1,8 +1,9 @@
1
1
  /*
2
- If your screen does not use any custom styles
3
-
4
- You should remove this file and it's reference from config/screens.rb
2
+ You should remove this file if your screen does not use any custom styles
5
3
 
6
4
  Otherwise Lanes will continue to fetch an empty file whenever
7
5
  the screen is displayed
8
6
  */
7
+ .ready-set-go {
8
+
9
+ }
@@ -13,8 +13,10 @@ Lanes::Screen.for_extension 'AppyApp' do | screens |
13
13
  screen.group_id = ""
14
14
  screen.model_class = ""
15
15
  screen.view_class = "ReadySetGo"
16
- screen.js = "ready-set-go.js"
17
- screen.css = "ready-set-go.css"
16
+ # Can optionally explicity set files to be included
17
+ # screen.model_access = "write" # defaults to "read"
18
+ # screen.js = "ready-set-go.js"
19
+ # screen.css = "ready-set-go.css"
18
20
  end
19
21
 
20
22
  end
@@ -2,4 +2,4 @@ describe "AppyApp.Screens.ReadySetGo", ->
2
2
 
3
3
  it "can be rendered", ->
4
4
  screen = LT.renderComponent(AppyApp.Screens.ReadySetGo)
5
- expect(screen.getDOMNode().textContent).toMatch("Hello")
5
+ expect(_.dom(screen).text).toMatch("Hello")
@@ -0,0 +1 @@
1
+
@@ -1,31 +1,56 @@
1
- # # require lanes/components/grid
2
- # # require lanes/access/User
3
-
4
- # describe "Lanes.Components.Grid", ->
5
-
6
- # DATA = {total:1,success:true,message:"Retrieve succeeded",data:[
7
- # [1,"TEST","Nathan Stitt",null,"0.0"]
8
- # ]}
9
- # RESPONSE = {
10
- # status:200,
11
- # contentType: "application/json"
12
- # responseText: JSON.stringify(DATA)
13
- # }
14
-
15
- # beforeEach ->
16
- # jasmine.Ajax.install()
17
- # afterEach ->
18
- # jasmine.Ajax.uninstall()
19
-
20
- # it "loads", ->
21
- # query = new Lanes.Models.Query(
22
- # fields: [ 'code', 'name', 'notes' ]
23
- # modelClass: Lanes.Models.User
24
- # )
25
- # grid = new Lanes.Components.Grid(recordQuery:query)
26
- # expect( grid.render() ).toBe( grid )
27
- # request = jasmine.Ajax.requests.mostRecent()
28
- # expect(request.url).toMatch(/^\/users.json/)
29
-
30
- # request.respondWith(RESPONSE)
31
- # expect( grid.dt_api.rows().length ).toEqual(1)
1
+ #= require lanes/components/grid
2
+
3
+
4
+ DATA = {total:2, success:true, message:"Retrieve succeeded", data:[
5
+ [1, "TEST1", "Nathan Stitt", "swell guy"]
6
+ [2, "TEST2", "Nathan Stitt", "Dupe of id #1"]
7
+ ]}
8
+
9
+ Model = Lanes.Test.defineModel(
10
+ props: {id: 'integer', code: 'string', name: 'string', notes: 'string'}
11
+ )
12
+
13
+ renderGrid = (q, done) ->
14
+ loaded = spyOn(q.results, 'ensureLoaded').and.callThrough()
15
+ grid = LT.renderComponent(LC.Grid, props: query: q)
16
+ expect(loaded).toHaveBeenCalled()
17
+ _.defer ->
18
+ expect(_.dom(grid).qsa('.r').length)
19
+ .toEqual( q.results.length )
20
+ done()
21
+
22
+ describe "Lanes.Components.Grid", ->
23
+
24
+ beforeEach (done) ->
25
+ LT.syncRespondWith(DATA)
26
+ @query = new Lanes.Models.Query(
27
+ src: Model, fields: [ 'id', 'code', 'name', 'notes' ]
28
+ )
29
+ @collection = new Model.Collection
30
+ @query.ensureLoaded().then => @collection.ensureLoaded().then -> done()
31
+
32
+ describe "loading", ->
33
+
34
+ it "from a result set", (d) ->
35
+ renderGrid(@query, d)
36
+
37
+ it "from a collection", (d) ->
38
+ @query.src = @collection
39
+ renderGrid(@query, d)
40
+
41
+ it 'renders toolbar', ->
42
+ grid = LT.renderComponent(LC.Grid, props: {
43
+ query: @query, editor: true, allowCreate: true
44
+ })
45
+ tb = _.dom(grid).qs('.toolbar')
46
+ expect(tb).not.toBeUndefined()
47
+
48
+ it 'notifies when selection changes', (done) ->
49
+ spy = jasmine.createSpy('selection')
50
+ grid = LT.renderComponent(LC.Grid, props: {
51
+ query: @query, editor: true, onSelectionChange: spy
52
+ })
53
+ _.defer ->
54
+ _.dom(grid).qs('.grid-body .c').click()
55
+ expect(spy).toHaveBeenCalled()
56
+ done()
@@ -0,0 +1,96 @@
1
+ #= require lanes/components/grid
2
+
3
+ COLLECTION_DATA = [
4
+ {id:1, code:'TEST1', name: 'Nathan Stitt', notes: 'swell guy'}
5
+ {id:2, code:'TEST2', name: 'Nathan Stitt', notes: 'Dupe of id #1'}
6
+ ]
7
+
8
+ ROW_DATA = _.map COLLECTION_DATA, (r) -> _.values(r)
9
+
10
+ Model = Lanes.Test.defineModel(
11
+ props: {id: 'integer', code: 'string', name: 'string', notes: 'string'}
12
+ )
13
+
14
+ LAST_ROW_SELECTOR = '.grid-body .r:last-child'
15
+ ADD_ROW_SELECTOR = 'button.add-row'
16
+
17
+ RenderGrid = (q) ->
18
+ LT.renderComponent(LC.Grid, props: {
19
+ query: q, editor: true, allowCreate: true
20
+ })
21
+
22
+ RenderEdit = (q, value) ->
23
+ Lanes.Test.syncSucceedWith(ROW_DATA)
24
+ grid = RenderGrid(q)
25
+
26
+ new _.Promise (res, rej) -> _.defer ->
27
+ _.dom(grid).qs(LAST_ROW_SELECTOR).click()
28
+ editor = Lanes.Test.Utils.findRenderedComponentWithType(
29
+ grid, Lanes.Components.Grid.RowEditor
30
+ )
31
+ _.dom(editor).qs('.field:nth-of-type(2) input').setValue(value)
32
+ res({grid, editor})
33
+
34
+
35
+ CommonSpecs = ->
36
+
37
+ it 'sets the props', (done) ->
38
+ grid = LT.renderComponent(LC.Grid, props: {
39
+ query: @query, editor: true
40
+ })
41
+ _.defer ->
42
+ _.dom(grid).qs(LAST_ROW_SELECTOR).click()
43
+ editor = Lanes.Test.Utils.findRenderedComponentWithType(grid, LC.Grid.RowEditor)
44
+ expect(editor.props.rowIndex).toEqual(1)
45
+ expect(editor.props.model).toEqual(jasmine.any(Model))
46
+ expect(editor.props.model.id).toEqual(2)
47
+ done()
48
+
49
+ it 'can edit', (done) ->
50
+ RenderEdit(@query, 'BOB').then ({editor}) =>
51
+ _.dom(editor).qs('.btn.save').click()
52
+ expect( @query.results.rowAt(1)[1] ).toEqual('BOB')
53
+ done()
54
+
55
+ it 'does not update when edit is canceled', (done) ->
56
+ RenderEdit(@query, 'CANCKED').then ({editor}) =>
57
+ _.dom(editor).qs('.btn.cancel').click()
58
+ expect( @query.results.rowAt(1)[1] ).toEqual('TEST2')
59
+ done()
60
+
61
+ it 'removes an unsaved row when editing is canceled', (done) ->
62
+ grid = RenderGrid(@query)
63
+ _.defer =>
64
+ addRow = spyOn(@query.results, 'addBlankRow').and.callThrough()
65
+ removeRow = spyOn(@query.results, 'removeRow').and.callThrough()
66
+ expect(@query.results.length).toEqual(2)
67
+ _.dom(grid).qs(ADD_ROW_SELECTOR).click()
68
+ expect(@query.results.addBlankRow).toHaveBeenCalled()
69
+ editor = Lanes.Test.Utils.findRenderedComponentWithType(
70
+ grid, Lanes.Components.Grid.RowEditor
71
+ )
72
+ expect(@query.results.length).toEqual(3)
73
+ _.dom(editor).qs('.btn.cancel').click()
74
+ expect(@query.results.removeRow).toHaveBeenCalled()
75
+ expect(@query.results.length).toEqual(2)
76
+ done()
77
+
78
+ describe "Lanes.Components.Grid.RowEditor", ->
79
+
80
+ describe "using row based result set", ->
81
+ beforeEach (done) ->
82
+ @query = new Lanes.Models.Query(
83
+ fields: [ 'id', 'code', 'name', 'notes' ], src: Model
84
+ )
85
+ Lanes.Test.syncSucceedWith(ROW_DATA)
86
+ @query.ensureLoaded().then(done)
87
+ CommonSpecs()
88
+
89
+
90
+ describe "using a collection", ->
91
+ beforeEach ->
92
+ @query = new Lanes.Models.Query(
93
+ fields: [ 'id', 'code', 'name', 'notes' ],
94
+ src: new Model.Collection(COLLECTION_DATA)
95
+ )
96
+ CommonSpecs()