lanes 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/client/lanes/Config.coffee +3 -1
  4. data/client/lanes/access/screens/user-management/UserManagement.cjsx +2 -2
  5. data/client/lanes/components/grid/Body.cjsx +8 -1
  6. data/client/lanes/components/grid/EditingMixin.cjsx +5 -2
  7. data/client/lanes/components/grid/Grid.cjsx +1 -1
  8. data/client/lanes/components/grid/PopOverMixin.cjsx +1 -1
  9. data/client/lanes/components/grid/row-editor.scss +6 -0
  10. data/client/lanes/components/grid/styles.scss +1 -1
  11. data/client/lanes/components/record-finder/RecordFinder.cjsx +22 -16
  12. data/client/lanes/components/select-field/SelectField.cjsx +20 -27
  13. data/client/lanes/components/shared/DateTime.cjsx +12 -23
  14. data/client/lanes/components/shared/DisplayValue.cjsx +5 -10
  15. data/client/lanes/components/shared/FieldMixin.cjsx +107 -56
  16. data/client/lanes/components/shared/FieldWrapper.cjsx +59 -6
  17. data/client/lanes/components/shared/FormGroup.cjsx +3 -8
  18. data/client/lanes/components/shared/Helpers.coffee +1 -1
  19. data/client/lanes/components/shared/Icon.cjsx +1 -1
  20. data/client/lanes/components/shared/ImageAsset.cjsx +46 -0
  21. data/client/lanes/components/shared/Input.cjsx +5 -1
  22. data/client/lanes/components/shared/InputFieldMixin.cjsx +8 -27
  23. data/client/lanes/components/shared/NumberInput.cjsx +11 -4
  24. data/client/lanes/components/shared/RadioField.cjsx +18 -8
  25. data/client/lanes/components/shared/ScreenWrapper.cjsx +1 -1
  26. data/client/lanes/components/shared/TextArea.cjsx +15 -0
  27. data/client/lanes/components/shared/ToggleField.cjsx +11 -19
  28. data/client/lanes/components/shared/fields.scss +22 -76
  29. data/client/lanes/components/shared/{image-saver.scss → image-asset.scss} +1 -1
  30. data/client/lanes/components/shared/styles.scss +1 -1
  31. data/client/lanes/components/toolbar/RemoteChangeSets.cjsx +13 -10
  32. data/client/lanes/components/toolbar/changes-notification.scss +14 -1
  33. data/client/lanes/extension/Base.coffee +5 -1
  34. data/client/lanes/models/Asset.coffee +81 -0
  35. data/client/lanes/models/AssociationMap.coffee +14 -5
  36. data/client/lanes/models/AssociationProxy.coffee +9 -6
  37. data/client/lanes/models/Base.coffee +6 -3
  38. data/client/lanes/models/Collection.coffee +1 -3
  39. data/client/lanes/models/JobStatus.coffee +3 -0
  40. data/client/lanes/models/Query.coffee +3 -2
  41. data/client/lanes/models/Sync.coffee +6 -4
  42. data/client/lanes/react/mixins/Access.coffee +1 -1
  43. data/client/lanes/react/mixins/Data.coffee +33 -31
  44. data/client/lanes/screens/Commands.coffee +0 -1
  45. data/client/lanes/screens/Definitions.coffee +1 -1
  46. data/client/lanes/screens/SystemSettings.cjsx +23 -11
  47. data/client/lanes/screens/UserPreferences.cjsx +3 -2
  48. data/client/lanes/styles/bootstrap-custom-grid.scss +6 -4
  49. data/client/lanes/styles/fonts.scss +9 -0
  50. data/client/lanes/styles/global/styles.scss +1 -0
  51. data/client/lanes/styles/variables.scss +1 -1
  52. data/client/lanes/testing/Helpers.coffee +5 -3
  53. data/client/lanes/vendor/development/base.js +17206 -19211
  54. data/client/lanes/vendor/development/calendar.js +67 -471
  55. data/client/lanes/vendor/development/commons.js +21680 -19814
  56. data/client/lanes/vendor/development/helpers.js +40 -29
  57. data/client/lanes/vendor/development/toggle.js +22 -19
  58. data/client/lanes/vendor/development/widgets.js +2476 -2625
  59. data/client/lanes/vendor/production/base.js +19034 -21038
  60. data/client/lanes/vendor/production/calendar.js +67 -471
  61. data/client/lanes/vendor/production/commons.js +21369 -19136
  62. data/client/lanes/vendor/production/toggle.js +22 -19
  63. data/client/lanes/vendor/production/widgets.js +2476 -2625
  64. data/client/lanes/vendor/styles/widgets.scss +2 -0
  65. data/client/lanes/workspace/FirstRun.cjsx +69 -0
  66. data/client/lanes/workspace/Navbar.cjsx +4 -2
  67. data/client/lanes/workspace/ScreenView.cjsx +9 -1
  68. data/client/lanes/workspace/index.js +1 -0
  69. data/client/lanes/workspace/styles/screens.scss +11 -0
  70. data/config/database.yml +2 -2
  71. data/db/migrate/01_create_system_settings.rb +0 -1
  72. data/db/migrate/02_create_assets.rb +15 -0
  73. data/lanes.gemspec +25 -28
  74. data/lib/lanes/access/authentication_provider.rb +20 -7
  75. data/lib/lanes/access/role_collection.rb +9 -2
  76. data/lib/lanes/api/default_routes.rb +4 -4
  77. data/lib/lanes/api/formatted_reply.rb +15 -11
  78. data/lib/lanes/api/handlers/asset.rb +37 -0
  79. data/lib/lanes/api/request_wrapper.rb +18 -4
  80. data/lib/lanes/api/routing.rb +17 -6
  81. data/lib/lanes/api/updates.rb +1 -1
  82. data/lib/lanes/api.rb +1 -1
  83. data/lib/lanes/asset.rb +38 -0
  84. data/lib/lanes/concerns/all.rb +1 -1
  85. data/lib/lanes/concerns/asset_uploader.rb +60 -0
  86. data/lib/lanes/configuration.rb +1 -2
  87. data/lib/lanes/extension.rb +1 -1
  88. data/lib/lanes/logger.rb +26 -16
  89. data/lib/lanes/system_settings.rb +13 -8
  90. data/lib/lanes/version.rb +1 -1
  91. data/lib/lanes.rb +1 -0
  92. data/npm-build/base.js +1 -1
  93. data/npm-build/package.json +9 -9
  94. data/spec/command-reference-files/initial/Gemfile +1 -1
  95. data/spec/fixtures/logo.png +0 -0
  96. data/spec/lanes/components/grid/PopoverEditorSpec.coffee +48 -0
  97. data/spec/server/asset_spec.rb +34 -0
  98. data/spec/server/spec_helper.rb +14 -2
  99. metadata +118 -127
  100. data/client/lanes/components/shared/ControlLabel.cjsx +0 -45
  101. data/client/lanes/components/shared/ImageSaver.cjsx +0 -33
  102. data/client/lanes/models/SystemSettings.coffee +0 -0
  103. data/client/lanes/models/mixins/FileSupport.coffee +0 -60
  104. data/lib/lanes/api/handlers/file.rb +0 -26
  105. data/lib/lanes/concerns/image_uploader.rb +0 -42
@@ -9,21 +9,21 @@ webpackJsonp([2],{
9
9
  // "react-proxy": "git@github.com:gaearon/react-proxy.git#react-0.15",
10
10
  // Lanes.Vendor.ReactProxy = require("react-proxy");
11
11
 
12
- Lanes.Vendor.ReactTestUtils = __webpack_require__(926);
13
- Lanes.Vendor.deepForceUpdate = __webpack_require__(928);
12
+ Lanes.Vendor.ReactTestUtils = __webpack_require__(1058);
13
+ Lanes.Vendor.deepForceUpdate = __webpack_require__(1060);
14
14
 
15
15
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
16
16
 
17
17
  /***/ },
18
18
 
19
- /***/ 926:
19
+ /***/ 1058:
20
20
  /***/ function(module, exports, __webpack_require__) {
21
21
 
22
- module.exports = __webpack_require__(927);
22
+ module.exports = __webpack_require__(1059);
23
23
 
24
24
  /***/ },
25
25
 
26
- /***/ 927:
26
+ /***/ 1059:
27
27
  /***/ function(module, exports, __webpack_require__) {
28
28
 
29
29
  /**
@@ -39,26 +39,26 @@ webpackJsonp([2],{
39
39
 
40
40
  'use strict';
41
41
 
42
- var _assign = __webpack_require__(68);
43
-
44
- var EventConstants = __webpack_require__(103);
45
- var EventPluginHub = __webpack_require__(105);
46
- var EventPluginRegistry = __webpack_require__(106);
47
- var EventPropagators = __webpack_require__(104);
48
- var React = __webpack_require__(67);
49
- var ReactDefaultInjection = __webpack_require__(101);
50
- var ReactDOM = __webpack_require__(97);
51
- var ReactDOMComponentTree = __webpack_require__(98);
52
- var ReactElement = __webpack_require__(72);
53
- var ReactBrowserEventEmitter = __webpack_require__(166);
54
- var ReactCompositeComponent = __webpack_require__(179);
55
- var ReactInstanceMap = __webpack_require__(180);
56
- var ReactUpdates = __webpack_require__(118);
57
- var SyntheticEvent = __webpack_require__(115);
58
-
59
- var emptyObject = __webpack_require__(84);
60
- var findDOMNode = __webpack_require__(227);
61
- var invariant = __webpack_require__(71);
42
+ var _assign = __webpack_require__(208);
43
+
44
+ var EventConstants = __webpack_require__(249);
45
+ var EventPluginHub = __webpack_require__(251);
46
+ var EventPluginRegistry = __webpack_require__(252);
47
+ var EventPropagators = __webpack_require__(250);
48
+ var React = __webpack_require__(207);
49
+ var ReactDefaultInjection = __webpack_require__(247);
50
+ var ReactDOM = __webpack_require__(243);
51
+ var ReactDOMComponentTree = __webpack_require__(244);
52
+ var ReactElement = __webpack_require__(212);
53
+ var ReactBrowserEventEmitter = __webpack_require__(310);
54
+ var ReactCompositeComponent = __webpack_require__(324);
55
+ var ReactInstanceMap = __webpack_require__(325);
56
+ var ReactUpdates = __webpack_require__(263);
57
+ var SyntheticEvent = __webpack_require__(260);
58
+
59
+ var emptyObject = __webpack_require__(230);
60
+ var findDOMNode = __webpack_require__(369);
61
+ var invariant = __webpack_require__(211);
62
62
 
63
63
  var topLevelTypes = EventConstants.topLevelTypes;
64
64
 
@@ -91,6 +91,10 @@ webpackJsonp([2],{
91
91
  }
92
92
 
93
93
  /**
94
+ * Utilities for making it easy to test React components.
95
+ *
96
+ * See https://facebook.github.io/react/docs/test-utils.html
97
+ *
94
98
  * Todo: Support the entire DOM.scry query syntax. For now, these simple
95
99
  * utilities will suffice for testing purposes.
96
100
  * @lends ReactTestUtils
@@ -180,9 +184,6 @@ webpackJsonp([2],{
180
184
  * @return {array} an array of all the matches.
181
185
  */
182
186
  scryRenderedDOMComponentsWithClass: function (root, classNames) {
183
- if (!Array.isArray(classNames)) {
184
- classNames = classNames.split(/\s+/);
185
- }
186
187
  return ReactTestUtils.findAllInRenderedTree(root, function (inst) {
187
188
  if (ReactTestUtils.isDOMComponent(inst)) {
188
189
  var className = inst.className;
@@ -191,6 +192,11 @@ webpackJsonp([2],{
191
192
  className = inst.getAttribute('class') || '';
192
193
  }
193
194
  var classList = className.split(/\s+/);
195
+
196
+ if (!Array.isArray(classNames)) {
197
+ !(classNames !== undefined) ? true ? invariant(false, 'TestUtils.scryRenderedDOMComponentsWithClass expects a ' + 'className as a second argument.') : invariant(false) : void 0;
198
+ classNames = classNames.split(/\s+/);
199
+ }
194
200
  return classNames.every(function (name) {
195
201
  return classList.indexOf(name) !== -1;
196
202
  });
@@ -333,9 +339,12 @@ webpackJsonp([2],{
333
339
  return this._instance ? this._instance._instance : null;
334
340
  };
335
341
 
342
+ var nextDebugID = 1;
343
+
336
344
  var NoopInternalComponent = function (element) {
337
345
  this._renderedOutput = element;
338
346
  this._currentElement = element;
347
+ this._debugID = nextDebugID++;
339
348
  };
340
349
 
341
350
  NoopInternalComponent.prototype = {
@@ -359,9 +368,11 @@ webpackJsonp([2],{
359
368
  };
360
369
 
361
370
  var ShallowComponentWrapper = function (element) {
371
+ this._debugID = nextDebugID++;
362
372
  this.construct(element);
363
373
  };
364
374
  _assign(ShallowComponentWrapper.prototype, ReactCompositeComponent.Mixin, {
375
+ _constructComponent: ReactCompositeComponent.Mixin._constructComponentWithoutOwner,
365
376
  _instantiateReactComponent: function (element) {
366
377
  return new NoopInternalComponent(element);
367
378
  },
@@ -525,7 +536,7 @@ webpackJsonp([2],{
525
536
 
526
537
  /***/ },
527
538
 
528
- /***/ 928:
539
+ /***/ 1060:
529
540
  /***/ function(module, exports) {
530
541
 
531
542
  'use strict';
@@ -6,14 +6,14 @@ webpackJsonp([3],{
6
6
  /* WEBPACK VAR INJECTION */(function(global) {var Lanes = ( global.Lanes || (global.Lanes = {}) );
7
7
  Lanes.Vendor = ( Lanes.Vendor || {} );
8
8
 
9
- Lanes.Vendor.ReactToggle = __webpack_require__(929)
10
- __webpack_require__(935);
9
+ Lanes.Vendor.ReactToggle = __webpack_require__(1061)
10
+ __webpack_require__(1067);
11
11
 
12
12
  /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
13
13
 
14
14
  /***/ },
15
15
 
16
- /***/ 929:
16
+ /***/ 1061:
17
17
  /***/ function(module, exports, __webpack_require__) {
18
18
 
19
19
  "use strict";
@@ -22,15 +22,15 @@ webpackJsonp([3],{
22
22
 
23
23
  var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
24
24
 
25
- var React = _interopRequire(__webpack_require__(66));
25
+ var React = _interopRequire(__webpack_require__(206));
26
26
 
27
- var classNames = _interopRequire(__webpack_require__(457));
27
+ var classNames = _interopRequire(__webpack_require__(570));
28
28
 
29
- var Check = _interopRequire(__webpack_require__(930));
29
+ var Check = _interopRequire(__webpack_require__(1062));
30
30
 
31
- var X = _interopRequire(__webpack_require__(931));
31
+ var X = _interopRequire(__webpack_require__(1063));
32
32
 
33
- var PureRenderMixin = _interopRequire(__webpack_require__(932));
33
+ var PureRenderMixin = _interopRequire(__webpack_require__(1064));
34
34
 
35
35
  module.exports = React.createClass({
36
36
  mixins: [PureRenderMixin],
@@ -128,14 +128,14 @@ webpackJsonp([3],{
128
128
 
129
129
  /***/ },
130
130
 
131
- /***/ 930:
131
+ /***/ 1062:
132
132
  /***/ function(module, exports, __webpack_require__) {
133
133
 
134
134
  "use strict";
135
135
 
136
136
  var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
137
137
 
138
- var React = _interopRequire(__webpack_require__(66));
138
+ var React = _interopRequire(__webpack_require__(206));
139
139
 
140
140
  module.exports = React.createClass({
141
141
  displayName: "check.es6",
@@ -157,14 +157,14 @@ webpackJsonp([3],{
157
157
 
158
158
  /***/ },
159
159
 
160
- /***/ 931:
160
+ /***/ 1063:
161
161
  /***/ function(module, exports, __webpack_require__) {
162
162
 
163
163
  "use strict";
164
164
 
165
165
  var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
166
166
 
167
- var React = _interopRequire(__webpack_require__(66));
167
+ var React = _interopRequire(__webpack_require__(206));
168
168
 
169
169
  module.exports = React.createClass({
170
170
  displayName: "x.es6",
@@ -186,14 +186,14 @@ webpackJsonp([3],{
186
186
 
187
187
  /***/ },
188
188
 
189
- /***/ 932:
189
+ /***/ 1064:
190
190
  /***/ function(module, exports, __webpack_require__) {
191
191
 
192
- module.exports = __webpack_require__(933);
192
+ module.exports = __webpack_require__(1065);
193
193
 
194
194
  /***/ },
195
195
 
196
- /***/ 933:
196
+ /***/ 1065:
197
197
  /***/ function(module, exports, __webpack_require__) {
198
198
 
199
199
  /**
@@ -209,7 +209,7 @@ webpackJsonp([3],{
209
209
 
210
210
  'use strict';
211
211
 
212
- var shallowCompare = __webpack_require__(934);
212
+ var shallowCompare = __webpack_require__(1066);
213
213
 
214
214
  /**
215
215
  * If your React component's render function is "pure", e.g. it will render the
@@ -234,6 +234,8 @@ webpackJsonp([3],{
234
234
  * complex data structures this mixin may have false-negatives for deeper
235
235
  * differences. Only mixin to components which have simple props and state, or
236
236
  * use `forceUpdate()` when you know deep data structures have changed.
237
+ *
238
+ * See https://facebook.github.io/react/docs/pure-render-mixin.html
237
239
  */
238
240
  var ReactComponentWithPureRenderMixin = {
239
241
  shouldComponentUpdate: function (nextProps, nextState) {
@@ -245,7 +247,7 @@ webpackJsonp([3],{
245
247
 
246
248
  /***/ },
247
249
 
248
- /***/ 934:
250
+ /***/ 1066:
249
251
  /***/ function(module, exports, __webpack_require__) {
250
252
 
251
253
  /**
@@ -261,11 +263,12 @@ webpackJsonp([3],{
261
263
 
262
264
  'use strict';
263
265
 
264
- var shallowEqual = __webpack_require__(187);
266
+ var shallowEqual = __webpack_require__(333);
265
267
 
266
268
  /**
267
269
  * Does a shallow comparison for props and state.
268
270
  * See ReactComponentWithPureRenderMixin
271
+ * See also https://facebook.github.io/react/docs/shallow-compare.html
269
272
  */
270
273
  function shallowCompare(instance, nextProps, nextState) {
271
274
  return !shallowEqual(instance.props, nextProps) || !shallowEqual(instance.state, nextState);
@@ -275,7 +278,7 @@ webpackJsonp([3],{
275
278
 
276
279
  /***/ },
277
280
 
278
- /***/ 935:
281
+ /***/ 1067:
279
282
  /***/ function(module, exports) {
280
283
 
281
284
  // removed by extract-text-webpack-plugin