lanes 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/client/lanes/Config.coffee +3 -1
- data/client/lanes/access/screens/user-management/UserManagement.cjsx +2 -2
- data/client/lanes/components/grid/Body.cjsx +8 -1
- data/client/lanes/components/grid/EditingMixin.cjsx +5 -2
- data/client/lanes/components/grid/Grid.cjsx +1 -1
- data/client/lanes/components/grid/PopOverMixin.cjsx +1 -1
- data/client/lanes/components/grid/row-editor.scss +6 -0
- data/client/lanes/components/grid/styles.scss +1 -1
- data/client/lanes/components/record-finder/RecordFinder.cjsx +22 -16
- data/client/lanes/components/select-field/SelectField.cjsx +20 -27
- data/client/lanes/components/shared/DateTime.cjsx +12 -23
- data/client/lanes/components/shared/DisplayValue.cjsx +5 -10
- data/client/lanes/components/shared/FieldMixin.cjsx +107 -56
- data/client/lanes/components/shared/FieldWrapper.cjsx +59 -6
- data/client/lanes/components/shared/FormGroup.cjsx +3 -8
- data/client/lanes/components/shared/Helpers.coffee +1 -1
- data/client/lanes/components/shared/Icon.cjsx +1 -1
- data/client/lanes/components/shared/ImageAsset.cjsx +46 -0
- data/client/lanes/components/shared/Input.cjsx +5 -1
- data/client/lanes/components/shared/InputFieldMixin.cjsx +8 -27
- data/client/lanes/components/shared/NumberInput.cjsx +11 -4
- data/client/lanes/components/shared/RadioField.cjsx +18 -8
- data/client/lanes/components/shared/ScreenWrapper.cjsx +1 -1
- data/client/lanes/components/shared/TextArea.cjsx +15 -0
- data/client/lanes/components/shared/ToggleField.cjsx +11 -19
- data/client/lanes/components/shared/fields.scss +22 -76
- data/client/lanes/components/shared/{image-saver.scss → image-asset.scss} +1 -1
- data/client/lanes/components/shared/styles.scss +1 -1
- data/client/lanes/components/toolbar/RemoteChangeSets.cjsx +13 -10
- data/client/lanes/components/toolbar/changes-notification.scss +14 -1
- data/client/lanes/extension/Base.coffee +5 -1
- data/client/lanes/models/Asset.coffee +81 -0
- data/client/lanes/models/AssociationMap.coffee +14 -5
- data/client/lanes/models/AssociationProxy.coffee +9 -6
- data/client/lanes/models/Base.coffee +6 -3
- data/client/lanes/models/Collection.coffee +1 -3
- data/client/lanes/models/JobStatus.coffee +3 -0
- data/client/lanes/models/Query.coffee +3 -2
- data/client/lanes/models/Sync.coffee +6 -4
- data/client/lanes/react/mixins/Access.coffee +1 -1
- data/client/lanes/react/mixins/Data.coffee +33 -31
- data/client/lanes/screens/Commands.coffee +0 -1
- data/client/lanes/screens/Definitions.coffee +1 -1
- data/client/lanes/screens/SystemSettings.cjsx +23 -11
- data/client/lanes/screens/UserPreferences.cjsx +3 -2
- data/client/lanes/styles/bootstrap-custom-grid.scss +6 -4
- data/client/lanes/styles/fonts.scss +9 -0
- data/client/lanes/styles/global/styles.scss +1 -0
- data/client/lanes/styles/variables.scss +1 -1
- data/client/lanes/testing/Helpers.coffee +5 -3
- data/client/lanes/vendor/development/base.js +17206 -19211
- data/client/lanes/vendor/development/calendar.js +67 -471
- data/client/lanes/vendor/development/commons.js +21680 -19814
- data/client/lanes/vendor/development/helpers.js +40 -29
- data/client/lanes/vendor/development/toggle.js +22 -19
- data/client/lanes/vendor/development/widgets.js +2476 -2625
- data/client/lanes/vendor/production/base.js +19034 -21038
- data/client/lanes/vendor/production/calendar.js +67 -471
- data/client/lanes/vendor/production/commons.js +21369 -19136
- data/client/lanes/vendor/production/toggle.js +22 -19
- data/client/lanes/vendor/production/widgets.js +2476 -2625
- data/client/lanes/vendor/styles/widgets.scss +2 -0
- data/client/lanes/workspace/FirstRun.cjsx +69 -0
- data/client/lanes/workspace/Navbar.cjsx +4 -2
- data/client/lanes/workspace/ScreenView.cjsx +9 -1
- data/client/lanes/workspace/index.js +1 -0
- data/client/lanes/workspace/styles/screens.scss +11 -0
- data/config/database.yml +2 -2
- data/db/migrate/01_create_system_settings.rb +0 -1
- data/db/migrate/02_create_assets.rb +15 -0
- data/lanes.gemspec +25 -28
- data/lib/lanes/access/authentication_provider.rb +20 -7
- data/lib/lanes/access/role_collection.rb +9 -2
- data/lib/lanes/api/default_routes.rb +4 -4
- data/lib/lanes/api/formatted_reply.rb +15 -11
- data/lib/lanes/api/handlers/asset.rb +37 -0
- data/lib/lanes/api/request_wrapper.rb +18 -4
- data/lib/lanes/api/routing.rb +17 -6
- data/lib/lanes/api/updates.rb +1 -1
- data/lib/lanes/api.rb +1 -1
- data/lib/lanes/asset.rb +38 -0
- data/lib/lanes/concerns/all.rb +1 -1
- data/lib/lanes/concerns/asset_uploader.rb +60 -0
- data/lib/lanes/configuration.rb +1 -2
- data/lib/lanes/extension.rb +1 -1
- data/lib/lanes/logger.rb +26 -16
- data/lib/lanes/system_settings.rb +13 -8
- data/lib/lanes/version.rb +1 -1
- data/lib/lanes.rb +1 -0
- data/npm-build/base.js +1 -1
- data/npm-build/package.json +9 -9
- data/spec/command-reference-files/initial/Gemfile +1 -1
- data/spec/fixtures/logo.png +0 -0
- data/spec/lanes/components/grid/PopoverEditorSpec.coffee +48 -0
- data/spec/server/asset_spec.rb +34 -0
- data/spec/server/spec_helper.rb +14 -2
- metadata +118 -127
- data/client/lanes/components/shared/ControlLabel.cjsx +0 -45
- data/client/lanes/components/shared/ImageSaver.cjsx +0 -33
- data/client/lanes/models/SystemSettings.coffee +0 -0
- data/client/lanes/models/mixins/FileSupport.coffee +0 -60
- data/lib/lanes/api/handlers/file.rb +0 -26
- 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__(
|
13
|
-
Lanes.Vendor.deepForceUpdate = __webpack_require__(
|
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
|
-
/***/
|
19
|
+
/***/ 1058:
|
20
20
|
/***/ function(module, exports, __webpack_require__) {
|
21
21
|
|
22
|
-
module.exports = __webpack_require__(
|
22
|
+
module.exports = __webpack_require__(1059);
|
23
23
|
|
24
24
|
/***/ },
|
25
25
|
|
26
|
-
/***/
|
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__(
|
43
|
-
|
44
|
-
var EventConstants = __webpack_require__(
|
45
|
-
var EventPluginHub = __webpack_require__(
|
46
|
-
var EventPluginRegistry = __webpack_require__(
|
47
|
-
var EventPropagators = __webpack_require__(
|
48
|
-
var React = __webpack_require__(
|
49
|
-
var ReactDefaultInjection = __webpack_require__(
|
50
|
-
var ReactDOM = __webpack_require__(
|
51
|
-
var ReactDOMComponentTree = __webpack_require__(
|
52
|
-
var ReactElement = __webpack_require__(
|
53
|
-
var ReactBrowserEventEmitter = __webpack_require__(
|
54
|
-
var ReactCompositeComponent = __webpack_require__(
|
55
|
-
var ReactInstanceMap = __webpack_require__(
|
56
|
-
var ReactUpdates = __webpack_require__(
|
57
|
-
var SyntheticEvent = __webpack_require__(
|
58
|
-
|
59
|
-
var emptyObject = __webpack_require__(
|
60
|
-
var findDOMNode = __webpack_require__(
|
61
|
-
var invariant = __webpack_require__(
|
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
|
-
/***/
|
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__(
|
10
|
-
__webpack_require__(
|
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
|
-
/***/
|
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__(
|
25
|
+
var React = _interopRequire(__webpack_require__(206));
|
26
26
|
|
27
|
-
var classNames = _interopRequire(__webpack_require__(
|
27
|
+
var classNames = _interopRequire(__webpack_require__(570));
|
28
28
|
|
29
|
-
var Check = _interopRequire(__webpack_require__(
|
29
|
+
var Check = _interopRequire(__webpack_require__(1062));
|
30
30
|
|
31
|
-
var X = _interopRequire(__webpack_require__(
|
31
|
+
var X = _interopRequire(__webpack_require__(1063));
|
32
32
|
|
33
|
-
var PureRenderMixin = _interopRequire(__webpack_require__(
|
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
|
-
/***/
|
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__(
|
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
|
-
/***/
|
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__(
|
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
|
-
/***/
|
189
|
+
/***/ 1064:
|
190
190
|
/***/ function(module, exports, __webpack_require__) {
|
191
191
|
|
192
|
-
module.exports = __webpack_require__(
|
192
|
+
module.exports = __webpack_require__(1065);
|
193
193
|
|
194
194
|
/***/ },
|
195
195
|
|
196
|
-
/***/
|
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__(
|
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
|
-
/***/
|
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__(
|
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
|
-
/***/
|
281
|
+
/***/ 1067:
|
279
282
|
/***/ function(module, exports) {
|
280
283
|
|
281
284
|
// removed by extract-text-webpack-plugin
|