modularity-rails 0.12.3 → 0.14.0
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.
- data/README.md +7 -9
- data/demo/spec/javascripts/data/ajax_loader_spec.coffee +3 -23
- data/demo/spec/javascripts/data/persistence_manager_spec.coffee +0 -47
- data/demo/spec/javascripts/modularity_spec.coffee +15 -6
- data/demo/spec/javascripts/spec_helper.coffee +0 -1
- data/demo/spec/javascripts/templates/modularity.jst.ejs +5 -2
- data/lib/modularity-rails/version.rb +1 -1
- data/vendor/assets/javascripts/modularity.js.coffee +28 -10
- data/vendor/assets/javascripts/modularity/data/ajax_loader.coffee +0 -12
- data/vendor/assets/javascripts/modularity/data/persistence_manager.coffee +10 -33
- data/vendor/assets/javascripts/modularity/tools/object_tools.coffee +5 -6
- metadata +38 -14
- data/vendor/assets/javascripts/modularity/modules/ajax_indicator.coffee +0 -24
data/README.md
CHANGED
@@ -1,13 +1,11 @@
|
|
1
|
-
# Modularity::Rails [](http://travis-ci.org/#!/kevgo/modularity-rails)
|
1
|
+
# Modularity::Rails [](http://travis-ci.org/#!/kevgo/modularity-rails) <a href="https://codeclimate.com/github/kevgo/modularity-rails" target="_blank"><img src="https://codeclimate.com/badge.png" /></a>
|
2
2
|
|
3
|
-
|
3
|
+
Makes the [Modularity CoffeeScript](http://github.com/kevgo/modularity-coffeescript) library and related modules available to
|
4
|
+
Rails 3.1 applications.
|
4
5
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
Modularity is a pattern and framework for lightweight object-oriented JavaScript
|
9
|
-
that allows to compose functionally rich web pages in a clean and testable way
|
10
|
-
out of well structured and reusable components.
|
6
|
+
Modularity is a framework for lightweight component-oriented CoffeeScript.
|
7
|
+
It allows to compose functionally rich web pages in a clean, intuitive, and testable way
|
8
|
+
out of well structured and reusable components. It scales very well with complexity.
|
11
9
|
|
12
10
|
|
13
11
|
## Authors
|
@@ -17,7 +15,7 @@ out of well structured and reusable components.
|
|
17
15
|
|
18
16
|
# Installation
|
19
17
|
|
20
|
-
|
18
|
+
Load modularity in your application's Gemfile:
|
21
19
|
|
22
20
|
```ruby
|
23
21
|
gem 'modularity-rails'
|
@@ -17,18 +17,6 @@ describe 'ajax_loader', ->
|
|
17
17
|
loader = new modularity.AjaxLoader {caching: yes}
|
18
18
|
loader.caching.should.be.true
|
19
19
|
|
20
|
-
describe 'ajax', ->
|
21
|
-
|
22
|
-
describe 'GET request', ->
|
23
|
-
|
24
|
-
it 'buffers the request'
|
25
|
-
|
26
|
-
it 'fires the events'
|
27
|
-
|
28
|
-
it ''
|
29
|
-
|
30
|
-
describe 'other requests'
|
31
|
-
|
32
20
|
|
33
21
|
describe 'get', ->
|
34
22
|
url = "/users/4"
|
@@ -54,8 +42,6 @@ describe 'ajax_loader', ->
|
|
54
42
|
it 'returns without calling the callback', ->
|
55
43
|
spy.should.not.have.been.called
|
56
44
|
|
57
|
-
it 'fires the LOADING event'
|
58
|
-
|
59
45
|
describe 'the request is already in progress', ->
|
60
46
|
|
61
47
|
beforeEach ->
|
@@ -74,8 +60,6 @@ describe 'ajax_loader', ->
|
|
74
60
|
it 'does not make another ajax request', ->
|
75
61
|
jQuery.get.should.not.have.been.called
|
76
62
|
|
77
|
-
it "doesn't fire the LOADING event again"
|
78
|
-
|
79
63
|
describe 'ajax request successful', ->
|
80
64
|
|
81
65
|
beforeEach ->
|
@@ -85,13 +69,11 @@ describe 'ajax_loader', ->
|
|
85
69
|
jquery_callback('result')
|
86
70
|
|
87
71
|
it 'calls the given callbacks with the server data', ->
|
88
|
-
spy.
|
72
|
+
expect(spy.calledWith('result')).to.be.true
|
89
73
|
|
90
74
|
it 'replaces the cache callbacks with returned data', ->
|
91
75
|
ajax_loader.cache.get(url).should.equal 'result'
|
92
76
|
|
93
|
-
it 'fires the LOADED event'
|
94
|
-
|
95
77
|
describe 'the data has already been loaded', ->
|
96
78
|
|
97
79
|
it 'calls the callback with the cached data', ->
|
@@ -100,9 +82,7 @@ describe 'ajax_loader', ->
|
|
100
82
|
ajax_loader.get(url, spy)
|
101
83
|
|
102
84
|
spy.should.have.been.called
|
103
|
-
spy.
|
104
|
-
|
105
|
-
it "doesn't fire any events"
|
85
|
+
expect(spy.calledWith('my data')).to.be.true
|
106
86
|
|
107
87
|
|
108
88
|
describe 'with caching disabled', ->
|
@@ -149,7 +129,7 @@ describe 'ajax_loader', ->
|
|
149
129
|
jquery_callback('result')
|
150
130
|
|
151
131
|
it 'calls the given callbacks with the server data', ->
|
152
|
-
spy.
|
132
|
+
expect(spy.calledWith "result").to.be.true
|
153
133
|
|
154
134
|
it 'replaces the cache callbacks with returned data', ->
|
155
135
|
expect(ajax_loader.cache.get(url)).to.be.undefined
|
@@ -41,7 +41,6 @@ describe 'PersistenceManager', ->
|
|
41
41
|
persistence_manager.add_all data
|
42
42
|
spy.should.have.been.calledOnce
|
43
43
|
|
44
|
-
|
45
44
|
describe 'create', ->
|
46
45
|
new_obj = {value: 'foo'}
|
47
46
|
|
@@ -137,52 +136,6 @@ describe 'PersistenceManager', ->
|
|
137
136
|
loading_done_callback.should.have.been.calledOnce
|
138
137
|
|
139
138
|
|
140
|
-
describe 'load_local', ->
|
141
|
-
|
142
|
-
describe 'entry exists in client data cache', ->
|
143
|
-
it 'returns the entry from the @client_data cache if it exists there', ->
|
144
|
-
persistence_manager.client_data.add entry_1
|
145
|
-
result = persistence_manager.load_local 1
|
146
|
-
result.should.equal entry_1
|
147
|
-
|
148
|
-
describe 'entry exists in server data cache', ->
|
149
|
-
|
150
|
-
beforeEach ->
|
151
|
-
persistence_manager.server_data.add entry_1
|
152
|
-
|
153
|
-
it 'adds the entry to the client data cache', ->
|
154
|
-
persistence_manager.load_local 1
|
155
|
-
persistence_manager.client_data.length().should.equal 1
|
156
|
-
persistence_manager.client_data.get(1).should.eql entry_1
|
157
|
-
|
158
|
-
it 'returns the entry from the client data cache', ->
|
159
|
-
result = persistence_manager.load_local 1
|
160
|
-
client_cache_entry = persistence_manager.client_data.get 1
|
161
|
-
result.should.equal client_cache_entry
|
162
|
-
|
163
|
-
it 'returns a different hash than the server data, so that the user can make changes to it', ->
|
164
|
-
result = persistence_manager.load_local 1
|
165
|
-
server_cache_entry = persistence_manager.server_data.get 1
|
166
|
-
result.should.not.equal server_cache_entry
|
167
|
-
|
168
|
-
describe "entry doesn't exist in any cache", ->
|
169
|
-
|
170
|
-
it 'returns undefined', ->
|
171
|
-
expect(persistence_manager.load_local(1)).to.be.undefined
|
172
|
-
|
173
|
-
|
174
|
-
describe 'load_many', ->
|
175
|
-
|
176
|
-
describe 'all entries exists in the cache', ->
|
177
|
-
it 'returns the entries immediately', (done) ->
|
178
|
-
persistence_manager.add_all [entry_1, entry_2]
|
179
|
-
persistence_manager.load_many [1,2], (entries) ->
|
180
|
-
entries.length.should.equal 2
|
181
|
-
entries[0].should.eql entry_1
|
182
|
-
entries[1].should.eql entry_2
|
183
|
-
done()
|
184
|
-
|
185
|
-
|
186
139
|
describe 'load', ->
|
187
140
|
|
188
141
|
describe 'entry exists in client data cache', ->
|
@@ -48,23 +48,23 @@ describe 'modularity', ->
|
|
48
48
|
|
49
49
|
it 'shows an alert with the given message if the given condition is false', ->
|
50
50
|
modularity.assert false, 'Message'
|
51
|
-
window.alert.
|
51
|
+
expect(window.alert.calledWith "Message").to.be.true
|
52
52
|
|
53
53
|
it 'fails when the condition is null', ->
|
54
54
|
modularity.assert null, 'Message'
|
55
|
-
window.alert.
|
55
|
+
expect(window.alert.calledWith "Message").to.be.true
|
56
56
|
|
57
57
|
it 'fails when the condition is undefined', ->
|
58
58
|
modularity.assert undefined, 'Message'
|
59
|
-
window.alert.
|
59
|
+
expect(window.alert.calledWith "Message").to.be.true
|
60
60
|
|
61
61
|
it 'fails when the condition is an empty array', ->
|
62
62
|
modularity.assert [], 'Message'
|
63
|
-
window.alert.
|
63
|
+
expect(window.alert.calledWith "Message").to.be.true
|
64
64
|
|
65
65
|
it 'fails when the condition is an empty string', ->
|
66
66
|
modularity.assert '', 'Message'
|
67
|
-
window.alert.
|
67
|
+
expect(window.alert.calledWith "Message").to.be.true
|
68
68
|
|
69
69
|
it 'passes when the condition is a string', ->
|
70
70
|
modularity.assert '123', 'Message'
|
@@ -77,6 +77,15 @@ describe 'modularity', ->
|
|
77
77
|
modularity.assert('123').should.be.true
|
78
78
|
|
79
79
|
|
80
|
+
describe '@$ notation', ->
|
81
|
+
|
82
|
+
it 'returns a new jQuery object relative to container', ->
|
83
|
+
module = new TestModule $ '#module_container'
|
84
|
+
insideObject = module.$ '.inside_module,.outside_module'
|
85
|
+
insideObject.length.should.equal 1
|
86
|
+
insideObject.hasClass('inside_module').should.be.true
|
87
|
+
|
88
|
+
|
80
89
|
describe 'jQuery Integration', ->
|
81
90
|
|
82
91
|
it 'works', ->
|
@@ -299,7 +308,7 @@ describe 'modularity', ->
|
|
299
308
|
sinon.spy myMixin, 'method1'
|
300
309
|
instance = new Test('testing')
|
301
310
|
instance.method1("arg1", "arg2")
|
302
|
-
myMixin.method1.
|
311
|
+
expect(myMixin.method1.calledWith("arg1", "arg2")).to.be.true
|
303
312
|
myMixin.method1.restore()
|
304
313
|
|
305
314
|
|
@@ -2,7 +2,8 @@
|
|
2
2
|
#
|
3
3
|
# Use UglifyJS (http://github.com/mishoo/UglifyJS) for compression.
|
4
4
|
#
|
5
|
-
# Please see https://github.com/kevgo/modularity for more information
|
5
|
+
# Please see https://github.com/kevgo/modularity for more information on Modularity,
|
6
|
+
# and https://github.com/kevgo/modularity-rails for Rails integration.
|
6
7
|
|
7
8
|
|
8
9
|
window.modularity = {
|
@@ -10,9 +11,10 @@ window.modularity = {
|
|
10
11
|
# Checks whether the given condition is true.
|
11
12
|
# Shows an alert with the given message if not.
|
12
13
|
assert: (condition, message) ->
|
13
|
-
|
14
|
-
|
15
|
-
|
14
|
+
if !condition or condition?.length == 0
|
15
|
+
alert message
|
16
|
+
return false
|
17
|
+
true
|
16
18
|
|
17
19
|
|
18
20
|
# GLOBAL EVENTS.
|
@@ -20,7 +22,7 @@ window.modularity = {
|
|
20
22
|
# Subscribes to the given global event,
|
21
23
|
# i.e. calls the given function when the given global event type happens.
|
22
24
|
bind_global_event: (event_type, callback) ->
|
23
|
-
return unless modularity.assert event_type, "modularity.bind_global_event: parameter 'event_type' is empty"
|
25
|
+
return unless modularity.assert typeof event_type == 'string', "modularity.bind_global_event: parameter 'event_type' is empty"
|
24
26
|
return alert "modularity.bind_global_event: parameter 'callback' must be a function, #{callback} (#{typeof callback}) given." unless typeof callback == 'function'
|
25
27
|
modularity.global_event_container().bind event_type, callback
|
26
28
|
|
@@ -33,8 +35,8 @@ window.modularity = {
|
|
33
35
|
# Returns the DOM object that is used to fire global events on.
|
34
36
|
global_event_container: -> modularity.global_event_container_cache or= $(window)
|
35
37
|
}
|
36
|
-
modularity.bindGlobalEvent = modularity.bind_global_event
|
37
|
-
modularity.fireGlobalEvent = modularity.fire_global_event
|
38
|
+
window.modularity.bindGlobalEvent = window.modularity.bind_global_event
|
39
|
+
window.modularity.fireGlobalEvent = window.modularity.fire_global_event
|
38
40
|
|
39
41
|
|
40
42
|
class window.modularity.Module
|
@@ -54,7 +56,7 @@ class window.modularity.Module
|
|
54
56
|
# Attach mixins.
|
55
57
|
if @mixins?
|
56
58
|
for mixin_data in @mixins
|
57
|
-
|
59
|
+
|
58
60
|
# Attach all properties from mixin to the prototype.
|
59
61
|
for methodName, method of mixin_data.mixin
|
60
62
|
do (methodName, method) => unless @[methodName]
|
@@ -64,11 +66,16 @@ class window.modularity.Module
|
|
64
66
|
mixin_data.mixin?.constructor?.apply(@, arguments)
|
65
67
|
|
66
68
|
|
69
|
+
# Runs the given query within the container element.
|
70
|
+
$: (query) ->
|
71
|
+
@container.find query
|
72
|
+
|
73
|
+
|
67
74
|
# MODULE EVENTS.
|
68
75
|
|
69
76
|
# Calls the given function when this widget fires the given local event.
|
70
77
|
bind_event: (event_type, callback) =>
|
71
|
-
return unless modularity.assert event_type, "Module.bind_event: parameter 'event_type' is empty"
|
78
|
+
return unless modularity.assert typeof event_type == 'string', "Module.bind_event: parameter 'event_type' is empty"
|
72
79
|
return alert "Module.bind_event: parameter 'callback' must be a function, #{callback} (#{typeof callback}) given." unless typeof callback == 'function'
|
73
80
|
@container.bind event_type, callback
|
74
81
|
bindEvent: Module::bind_event
|
@@ -80,6 +87,12 @@ class window.modularity.Module
|
|
80
87
|
@container.trigger event_type, data ?= {}
|
81
88
|
fireEvent: Module::fire_event
|
82
89
|
|
90
|
+
|
91
|
+
# Hides this module.
|
92
|
+
hide: ->
|
93
|
+
@container.hide()
|
94
|
+
|
95
|
+
|
83
96
|
# mixin = constructor of Draggable
|
84
97
|
# self = Card
|
85
98
|
@mixin: (mixin, p...) ->
|
@@ -88,6 +101,11 @@ class window.modularity.Module
|
|
88
101
|
@prototype.mixins.push({mixin: mixin, params: p})
|
89
102
|
|
90
103
|
|
104
|
+
# Shows this module.
|
105
|
+
show: ->
|
106
|
+
@container.show()
|
107
|
+
|
108
|
+
|
91
109
|
# jQuery integration for creating Modules.
|
92
110
|
#
|
93
111
|
# Call like this: myModule = $('...').module(MyModuleClass)
|
@@ -103,7 +121,7 @@ jQuery.fn.module = (klass, args...) ->
|
|
103
121
|
|
104
122
|
# Check parameters.
|
105
123
|
if typeof klass != 'function'
|
106
|
-
return alert "ERROR!\n\nYou must provide the Module class when calling $.module().\n\nExample: $('...').module(MyModuleClass)\n\nYou provided: #{klass} (#{typeof klass})"
|
124
|
+
return alert "ERROR!\n\nYou must provide the Module class when calling $.module().\n\nExample: $('...').module(MyModuleClass)\n\nYou provided: #{klass} (#{typeof klass})"
|
107
125
|
|
108
126
|
# Instantiate the class and return the instance.
|
109
127
|
new klass(this, args...)
|
@@ -18,18 +18,6 @@ class window.modularity.AjaxLoader
|
|
18
18
|
@caching = params.caching
|
19
19
|
|
20
20
|
|
21
|
-
# The different events that this widget can fire.
|
22
|
-
@events =
|
23
|
-
AJAX_LOADING: 'AJAX_LOADING' # Called when an AJAX request starts.
|
24
|
-
AJAX_LOADED: 'AJAX_LOADED' # Called when an AJAX request finishes.
|
25
|
-
|
26
|
-
|
27
|
-
# Makes the given AJAX call.
|
28
|
-
# Buffers the call if it's a GET request.
|
29
|
-
# Fires the AJAX events.
|
30
|
-
ajax: (options) ->
|
31
|
-
|
32
|
-
|
33
21
|
get: (url, callback) ->
|
34
22
|
cached_value = @cache.get url
|
35
23
|
|
@@ -63,8 +63,16 @@ class modularity.PersistenceManager
|
|
63
63
|
# Returns the entry with the given key.
|
64
64
|
load: (key, callback) ->
|
65
65
|
|
66
|
-
|
67
|
-
|
66
|
+
# Try to use client_data cache.
|
67
|
+
client_obj = @client_data.get key
|
68
|
+
return callback(client_obj) if client_obj
|
69
|
+
|
70
|
+
# No data in client cache --> try to use server cache.
|
71
|
+
server_obj = @server_data.get key
|
72
|
+
if server_obj
|
73
|
+
client_obj = modularity.clone_hash server_obj
|
74
|
+
@client_data.add client_obj
|
75
|
+
return callback client_obj
|
68
76
|
|
69
77
|
# No data on client at all --> load data from server.
|
70
78
|
@loader.get "#{@base_url}/#{key}", (server_entry) =>
|
@@ -86,38 +94,7 @@ class modularity.PersistenceManager
|
|
86
94
|
callback()
|
87
95
|
}
|
88
96
|
|
89
|
-
|
90
|
-
# Loads the entry synchronously from the cache.
|
91
|
-
# Doesn't fall back to the server.
|
92
|
-
load_local: (key) ->
|
93
|
-
|
94
|
-
# Try to use client_data cache.
|
95
|
-
client_obj = @client_data.get key
|
96
|
-
return client_obj if client_obj
|
97
|
-
|
98
|
-
# No data in client cache --> try to use server cache.
|
99
|
-
server_obj = @server_data.get key
|
100
|
-
return null unless server_obj
|
101
|
-
client_obj = modularity.clone_hash server_obj
|
102
|
-
@client_data.add client_obj
|
103
|
-
client_obj
|
104
97
|
|
105
|
-
|
106
|
-
# Returns all entries with the given keys.
|
107
|
-
load_many: (keys, callback) ->
|
108
|
-
result = []
|
109
|
-
missing_keys = []
|
110
|
-
for key in keys
|
111
|
-
do (key) =>
|
112
|
-
entry = @load_local key
|
113
|
-
if entry
|
114
|
-
result.push entry
|
115
|
-
else
|
116
|
-
missing_keys.push key
|
117
|
-
alert "modularity.PersistenceManager.load_many(): Missing functionality to load from the server." if missing_keys.length > 0
|
118
|
-
callback result
|
119
|
-
|
120
|
-
|
121
98
|
# Saves the given object.
|
122
99
|
# Does the right thing (create or update) dependent on
|
123
100
|
# whether the object already has a key parameter.
|
@@ -1,8 +1,3 @@
|
|
1
|
-
# Returns an object that contains only the attributes
|
2
|
-
# that are different between obj_1 and obj_2.
|
3
|
-
# Only looks for changed attributes, not missing attributes.
|
4
|
-
|
5
|
-
|
6
1
|
# Returns a replica of the given hash.
|
7
2
|
# Don't use this method for real objects with superclasses, prototypes, and stuff.
|
8
3
|
modularity.clone_hash = (obj) ->
|
@@ -11,6 +6,9 @@ modularity.clone_hash = (obj) ->
|
|
11
6
|
result
|
12
7
|
|
13
8
|
|
9
|
+
# Returns an object that contains only the attributes
|
10
|
+
# that are different between obj_1 and obj_2.
|
11
|
+
# Only looks for changed attributes, not missing attributes.
|
14
12
|
modularity.object_diff = (obj_1, obj_2) ->
|
15
13
|
result = {}
|
16
14
|
for own key, value_2 of obj_2
|
@@ -20,7 +18,8 @@ modularity.object_diff = (obj_1, obj_2) ->
|
|
20
18
|
result
|
21
19
|
|
22
20
|
|
21
|
+
# Returns the number of attributes of the given object.
|
22
|
+
# NOTE(KG): This doesn't work in IE8.
|
23
23
|
modularity.object_length = (obj) ->
|
24
|
-
# NOTE(KG): This doesn't work in IE8.
|
25
24
|
Object.keys(obj).length
|
26
25
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: modularity-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-11-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: 3.1.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 3.1.0
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: capybara-webkit
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: '0'
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: evergreen
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
@@ -43,10 +53,15 @@ dependencies:
|
|
43
53
|
version: '0'
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: rb-fsevent
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ! '>='
|
@@ -54,10 +69,15 @@ dependencies:
|
|
54
69
|
version: '0'
|
55
70
|
type: :development
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: guard-livereload
|
60
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
83
|
- - ! '>='
|
@@ -65,7 +85,12 @@ dependencies:
|
|
65
85
|
version: '0'
|
66
86
|
type: :development
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
69
94
|
description: Description of ModularityRails.
|
70
95
|
email:
|
71
96
|
- kevin.goslar@gmail.com
|
@@ -155,7 +180,6 @@ files:
|
|
155
180
|
- vendor/assets/javascripts/modularity/data/persistence_manager.coffee
|
156
181
|
- vendor/assets/javascripts/modularity/mixins/clickable.coffee
|
157
182
|
- vendor/assets/javascripts/modularity/mixins/closable.coffee
|
158
|
-
- vendor/assets/javascripts/modularity/modules/ajax_indicator.coffee
|
159
183
|
- vendor/assets/javascripts/modularity/modules/autogrow_textarea.coffee
|
160
184
|
- vendor/assets/javascripts/modularity/modules/button.coffee
|
161
185
|
- vendor/assets/javascripts/modularity/modules/counter_button.coffee
|
@@ -181,7 +205,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
181
205
|
version: '0'
|
182
206
|
requirements: []
|
183
207
|
rubyforge_project:
|
184
|
-
rubygems_version: 1.8.
|
208
|
+
rubygems_version: 1.8.24
|
185
209
|
signing_key:
|
186
210
|
specification_version: 3
|
187
211
|
summary: Summary of ModularityRails.
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# Indicates that an AJAX request is running.
|
2
|
-
class sn.AjaxIndicator extends modularity.Module
|
3
|
-
|
4
|
-
constructor: ->
|
5
|
-
|
6
|
-
# The number of currently running ajax requests.
|
7
|
-
@ajax_counter = 0
|
8
|
-
|
9
|
-
@searchManager.bind_event sn.SearchManager.events.AJAX_LOADING, @ajax_loading
|
10
|
-
@searchManager.bind_event sn.SearchManager.events.AJAX_LOADED, @ajax_loaded
|
11
|
-
|
12
|
-
|
13
|
-
# Called when an ajax request starts.
|
14
|
-
ajax_loading: =>
|
15
|
-
@container.addClass 'loading' if @ajax_counter == 0
|
16
|
-
@ajax_counter += 1
|
17
|
-
|
18
|
-
|
19
|
-
# Called when the ajax request is done.
|
20
|
-
ajax_loaded: =>
|
21
|
-
@ajax_counter -= 1
|
22
|
-
@ajax_counter = 0 if @ajax_counter <= 0
|
23
|
-
@container.removeClass 'loading'
|
24
|
-
|