joosy 1.2.0.alpha.67 → 1.2.0.alpha.68

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dbc407e588673ab084cd80005526da25fca3be3d
4
- data.tar.gz: 0a983ab54409d053fbe6fdc35171852bc0ddc76c
3
+ metadata.gz: 007fa5ba359b8c5f4c5e52a53b483a285149c575
4
+ data.tar.gz: 15ac5b0c7eaf9eb93b08b487b0e493fcd8ec7075
5
5
  SHA512:
6
- metadata.gz: 8ee60dfccb024011cf8ab8f3d108386d813c54253c1d69e89b5718270c9cc5e9935e393882b37bd48628e42ae7c01754b4dd9e60808b687873032dbe3f8b04d2
7
- data.tar.gz: 8b309f54f2acced3241d5e485161c4a304a99747ac8f040219d2a3c14010372bdbb1e5f49e647728a1306881eeef756f8573e0b07d8afc40ec02fa4498e82813
6
+ metadata.gz: b33c07dd76c9a907ff66ce830a55f321b3ae54f9d9e5598e0d5c48aeab9d98c9a4ddfbe11a766fbff3c6b80173c22b90716bbabbdcf6fa1b8328361989a8148f
7
+ data.tar.gz: 9548d59875b23556613071537c1c09893ac777a7782dfb1fa2284e5de26c0ab3ceffb88f8b60aac3564c76eca419e992ab35529f96a7dce4cd6208782959deb2
data/Gruntfile.coffee CHANGED
@@ -101,7 +101,7 @@ module.exports = (grunt) ->
101
101
  #
102
102
  grunt.registerTask 'default', 'testem'
103
103
 
104
- grunt.registerTask 'build', 'grill:compile'
104
+ grunt.registerTask 'build', ['bowerize', 'grill:compile']
105
105
 
106
106
  grunt.registerTask 'test', ->
107
107
  grunt.task.run 'coffeelint'
data/bower.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "joosy",
3
- "version": "1.2.0-alpha.67",
3
+ "version": "1.2.0-alpha.68",
4
4
  "main": "build/joosy.js",
5
5
  "ignore": [
6
6
  "lib",
data/build/joosy.js CHANGED
@@ -511,26 +511,33 @@
511
511
  if (!events) {
512
512
  return;
513
513
  }
514
- return Object.each(events, function(key, method) {
515
- var callback, eventName, match, selector;
516
- if (!Object.isFunction(method)) {
517
- method = _this[method];
518
- }
519
- callback = function(event) {
520
- return method.call(module, $(this), event);
521
- };
522
- match = key.match(_this.eventSplitter);
523
- eventName = match[1];
524
- selector = _this.__extractSelector(match[2]);
525
- if (selector === "") {
526
- _this.$container.bind(eventName, callback);
527
- return Joosy.Modules.Log.debugAs(_this, "" + eventName + " binded on container");
528
- } else if (selector === void 0) {
529
- throw new Error("Unknown element " + match[2] + " in " + (Joosy.Module.__className(_this.constructor)) + " (maybe typo?)");
530
- } else {
531
- _this.$container.on(eventName, selector, callback);
532
- return Joosy.Modules.Log.debugAs(_this, "" + eventName + " binded on " + selector);
514
+ return Object.each(events, function(keys, method) {
515
+ var callback, eventName, key, match, selector, _i, _len, _ref, _results;
516
+ _ref = keys.split(',');
517
+ _results = [];
518
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
519
+ key = _ref[_i];
520
+ key = key.replace(/^\s+/, '');
521
+ if (!Object.isFunction(method)) {
522
+ method = _this[method];
523
+ }
524
+ callback = function(event) {
525
+ return method.call(module, $(this), event);
526
+ };
527
+ match = key.match(_this.eventSplitter);
528
+ eventName = match[1];
529
+ selector = _this.__extractSelector(match[2]);
530
+ if (selector === "") {
531
+ _this.$container.bind(eventName, callback);
532
+ _results.push(Joosy.Modules.Log.debugAs(_this, "" + eventName + " binded on container"));
533
+ } else if (selector === void 0) {
534
+ throw new Error("Unknown element " + match[2] + " in " + (Joosy.Module.__className(_this.constructor)) + " (maybe typo?)");
535
+ } else {
536
+ _this.$container.on(eventName, selector, callback);
537
+ _results.push(Joosy.Modules.Log.debugAs(_this, "" + eventName + " binded on " + selector));
538
+ }
533
539
  }
540
+ return _results;
534
541
  });
535
542
  },
536
543
  __clearContainer: function() {
@@ -2370,7 +2377,7 @@
2370
2377
  } else if (Object.isFunction(action)) {
2371
2378
  return action(params);
2372
2379
  } else {
2373
- throw new "Unknown kind of route action";
2380
+ throw new Error("Unknown kind of route action: " + action);
2374
2381
  }
2375
2382
  });
2376
2383
  return this.initialized = true;
@@ -9,18 +9,15 @@
9
9
 
10
10
  Base.include(Joosy.Modules.Events);
11
11
 
12
+ Base.include(Joosy.Modules.Filters);
13
+
12
14
  Base.prototype.__primaryKey = 'id';
13
15
 
14
16
  Base.resetIdentity = function() {
15
17
  return Joosy.Resources.Base.identity = {};
16
18
  };
17
19
 
18
- Base.beforeLoad = function(action) {
19
- if (!this.prototype.hasOwnProperty('__beforeLoads')) {
20
- this.prototype.__beforeLoads = [].concat(this.__super__.__beforeLoads || []);
21
- }
22
- return this.prototype.__beforeLoads.push(action);
23
- };
20
+ Base.registerPlainFilters('beforeLoad');
24
21
 
25
22
  Base.primaryKey = function(primaryKey) {
26
23
  return this.prototype.__primaryKey = primaryKey;
@@ -93,6 +90,10 @@
93
90
  return shim;
94
91
  };
95
92
 
93
+ Base.grab = function(form) {
94
+ return this.build({}).grab(form);
95
+ };
96
+
96
97
  Base.__makeShim = function(proto) {
97
98
  var key, shim, value;
98
99
  shim = function() {
@@ -137,6 +138,24 @@
137
138
  return this;
138
139
  };
139
140
 
141
+ Base.prototype.grab = function(form) {
142
+ var data, field, _i, _len, _ref;
143
+ data = {};
144
+ _ref = $(form).serializeArray();
145
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
146
+ field = _ref[_i];
147
+ if (!data[field.name]) {
148
+ data[field.name] = field.value;
149
+ } else {
150
+ if (!(data[field.name] instanceof Array)) {
151
+ data[field.name] = [data[field.name]];
152
+ }
153
+ data[field.name].push(field.value);
154
+ }
155
+ }
156
+ return this.load(data);
157
+ };
158
+
140
159
  Base.prototype.__get = function(path) {
141
160
  var target;
142
161
  target = this.__callTarget(path, true);
@@ -696,7 +715,6 @@
696
715
  this.prototype.__requestOptions(options);
697
716
  } else if (this.prototype.__requestOptions) {
698
717
  Joosy.Module.merge(options, this.prototype.__requestOptions);
699
- console.log(this.prototype.__requestOptions);
700
718
  }
701
719
  return $.ajax(options);
702
720
  };
data/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "keywords": [
5
5
  "joosy"
6
6
  ],
7
- "version": "1.2.0-alpha.67",
7
+ "version": "1.2.0-alpha.68",
8
8
  "author": "Boris Staal <boris@staal.io>",
9
9
  "homepage": "http://joosy.ws/",
10
10
  "repository": {
@@ -50,7 +50,7 @@ class Joosy.Application
50
50
  else if Object.isFunction(action)
51
51
  action(params)
52
52
  else
53
- throw new "Unknown kind of route action"
53
+ throw new Error "Unknown kind of route action: #{action}"
54
54
 
55
55
  @initialized = true
56
56
 
@@ -17,10 +17,18 @@
17
17
  #
18
18
  # @include Joosy.Modules.Log
19
19
  # @include Joosy.Modules.Events
20
+ # @include Joosy.Modules.Filters
21
+ #
22
+ # @method .beforeLoad(callback)
23
+ # Allows to modify data before it gets stored.
24
+ # You can define several beforeLoad filters that will be chained.
25
+ # @param [Function] action `(Object) -> Object` to call
26
+ #
20
27
  #
21
28
  class Joosy.Resources.Base extends Joosy.Module
22
29
  @include Joosy.Modules.Log
23
30
  @include Joosy.Modules.Events
31
+ @include Joosy.Modules.Filters
24
32
 
25
33
  #
26
34
  # Default primary key field 'id'
@@ -34,16 +42,7 @@ class Joosy.Resources.Base extends Joosy.Module
34
42
  @resetIdentity: ->
35
43
  Joosy.Resources.Base.identity = {}
36
44
 
37
- #
38
- # Allows to modify data before it gets stored.
39
- # You can define several beforeLoad filters that will be chained.
40
- #
41
- # @param [Function] action `(Object) -> Object` to call
42
- #
43
- @beforeLoad: (action) ->
44
- unless @::hasOwnProperty '__beforeLoads'
45
- @::__beforeLoads = [].concat @.__super__.__beforeLoads || []
46
- @::__beforeLoads.push action
45
+ @registerPlainFilters 'beforeLoad'
47
46
 
48
47
  #
49
48
  # Sets the field containing primary key.
@@ -149,6 +148,14 @@ class Joosy.Resources.Base extends Joosy.Module
149
148
 
150
149
  shim
151
150
 
151
+ #
152
+ # Creates new instance of Resource using values from form
153
+ #
154
+ # @param [DOMElement] form Form to grab
155
+ #
156
+ @grab: (form) ->
157
+ @build({}).grab form
158
+
152
159
  #
153
160
  # Makes base shim-function for making instances through build or making instance clones
154
161
  #
@@ -193,7 +200,23 @@ class Joosy.Resources.Base extends Joosy.Module
193
200
  load: (data, clear=false) ->
194
201
  @data = {} if clear
195
202
  @__fillData data
196
- return this
203
+ return @
204
+
205
+ #
206
+ # Updates the Resource with a data from given form
207
+ #
208
+ # @param [DOMElement] form Form to grab
209
+ #
210
+ grab: (form) ->
211
+ data = {}
212
+ for field in $(form).serializeArray()
213
+ unless data[field.name]
214
+ data[field.name] = field.value
215
+ else
216
+ data[field.name] = [data[field.name]] unless data[field.name] instanceof Array
217
+ data[field.name].push field.value
218
+
219
+ @load data
197
220
 
198
221
  #
199
222
  # Getter for wrapped data
@@ -321,7 +321,6 @@ class Joosy.Resources.REST extends Joosy.Resources.Base
321
321
  @::__requestOptions(options)
322
322
  else if @::__requestOptions
323
323
  Joosy.Module.merge options, @::__requestOptions
324
- console.log @::__requestOptions
325
324
 
326
325
  $.ajax options
327
326
 
@@ -110,24 +110,27 @@ Joosy.Modules.DOM =
110
110
 
111
111
  return unless events
112
112
 
113
- Object.each events, (key, method) =>
114
- unless Object.isFunction method
115
- method = @[method]
116
- callback = (event) ->
117
- method.call module, $(this), event
118
-
119
- match = key.match @eventSplitter
120
- eventName = match[1]
121
- selector = @__extractSelector match[2]
122
-
123
- if selector == ""
124
- @$container.bind eventName, callback
125
- Joosy.Modules.Log.debugAs @, "#{eventName} binded on container"
126
- else if selector == undefined
127
- throw new Error "Unknown element #{match[2]} in #{Joosy.Module.__className @constructor} (maybe typo?)"
128
- else
129
- @$container.on eventName, selector, callback
130
- Joosy.Modules.Log.debugAs @, "#{eventName} binded on #{selector}"
113
+ Object.each events, (keys, method) =>
114
+ for key in keys.split(',')
115
+ key = key.replace(/^\s+/, '')
116
+
117
+ unless Object.isFunction method
118
+ method = @[method]
119
+ callback = (event) ->
120
+ method.call module, $(this), event
121
+
122
+ match = key.match @eventSplitter
123
+ eventName = match[1]
124
+ selector = @__extractSelector match[2]
125
+
126
+ if selector == ""
127
+ @$container.bind eventName, callback
128
+ Joosy.Modules.Log.debugAs @, "#{eventName} binded on container"
129
+ else if selector == undefined
130
+ throw new Error "Unknown element #{match[2]} in #{Joosy.Module.__className @constructor} (maybe typo?)"
131
+ else
132
+ @$container.on eventName, selector, callback
133
+ Joosy.Modules.Log.debugAs @, "#{eventName} binded on #{selector}"
131
134
 
132
135
  # @private
133
136
  __clearContainer: ->
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: joosy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0.alpha.67
4
+ version: 1.2.0.alpha.68
5
5
  platform: ruby
6
6
  authors:
7
7
  - Boris Staal
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-08-28 00:00:00.000000000 Z
13
+ date: 2013-08-30 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: sprockets