nali 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,6 +10,7 @@ Nali.extend Collection:
10
10
  @adaptations = apply: [], cancel: []
11
11
  @ordering = {}
12
12
  @adaptCollection()
13
+ @model.each ( model ) => @add model if model.isCorrect @filters
13
14
  @
14
15
 
15
16
  new: ( model, filters ) ->
@@ -102,9 +103,8 @@ Nali.extend Collection:
102
103
  @
103
104
 
104
105
  where: ( filters ) ->
105
- result = []
106
- result.push model for model in @ when model.isCorrect filters
107
- result
106
+ filters[ name ] = value for name, value of @filters
107
+ @model.where filters
108
108
 
109
109
  order: ( @ordering ) ->
110
110
  @reorder()
@@ -63,6 +63,6 @@ Nali.extend Controller:
63
63
  @
64
64
 
65
65
  redirect: ( args... ) ->
66
- @Router.go args...
66
+ @Router.redirect args...
67
67
  @stop()
68
68
  @
@@ -32,10 +32,10 @@ Nali.extend Model:
32
32
  for name, view of @View.extensions when name.indexOf( @_name ) >= 0
33
33
  do ( name, view ) =>
34
34
  @views[ short = view._shortName ] = view
35
- unless @[ short ]?
36
- @[ short ] = ->
37
- @show short
38
- @
35
+ shortCap = short.capitalize()
36
+ unless @[ viewMethod = 'view' + shortCap ]? then @[ viewMethod ] = -> @view short
37
+ unless @[ showMethod = 'show' + shortCap ]? then @[ showMethod ] = ( insertTo ) -> @show short, insertTo
38
+ unless @[ hideMethod = 'hide' + shortCap ]? then @[ hideMethod ] = -> @hide short
39
39
  @
40
40
 
41
41
  notice: ( params ) ->
@@ -149,8 +149,8 @@ Nali.extend Model:
149
149
  updateAttribute: ( name, value ) ->
150
150
  # обновляет один атрибут модели, проверяя его валидность, генерирует событие update.attributeName
151
151
  value = @normalizeValue value
152
- if @attributes[ name ] isnt value and @isValidAttributeValue( name, value )
153
- @attributes[ name ] = value
152
+ if @[ name ] isnt value and @isValidAttributeValue( name, value )
153
+ @[ name ] = value
154
154
  @[ 'onUpdate' + name.capitalize() ]?()
155
155
  @trigger "update.#{ name }"
156
156
  true
@@ -170,7 +170,6 @@ Nali.extend Model:
170
170
  where: ( filters ) ->
171
171
  # возвращает коллекцию моделей соответствующих фильтру
172
172
  collection = @Collection.new @, filters
173
- collection.add model for model in @table when model.isCorrect filters
174
173
  if @forced and not collection.length
175
174
  attributes = {}
176
175
  attributes[ key ] = value for key, value of filters when typeof value in [ 'number', 'string' ]
@@ -178,8 +177,14 @@ Nali.extend Model:
178
177
  collection
179
178
 
180
179
  all: ->
180
+ # возвращает коллекцию всех моделей
181
181
  @where id: /./
182
182
 
183
+ each: ( callback ) ->
184
+ # применяет колбек ко всем моделям
185
+ callback.call @, model for model in @table
186
+ @
187
+
183
188
  # работа с аттрибутами
184
189
 
185
190
  guid: ->
@@ -211,7 +216,11 @@ Nali.extend Model:
211
216
  # проверяет соответствие аттрибутов модели определенному набору фильтров, возвращает true либо false
212
217
  return filters.call @ if typeof filters is 'function'
213
218
  return false unless Object.keys( filters ).length
214
- return false for name, filter of filters when not @isCorrectAttribute @attributes[ name ], filter
219
+ for name, filter of filters
220
+ result = if name is 'correct' and typeof filter is 'function'
221
+ filter.call @
222
+ else @isCorrectAttribute @[ name ], filter
223
+ return false unless result
215
224
  return true
216
225
 
217
226
  isCorrectAttribute: ( attribute, filter ) ->
@@ -223,6 +232,8 @@ Nali.extend Model:
223
232
  '' + attribute is filter
224
233
  else if typeof filter is 'number'
225
234
  + attribute is filter
235
+ else if typeof filter is 'boolean'
236
+ attribute is filter
226
237
  else if filter instanceof Array
227
238
  '' + attribute in filter or + attribute in filter
228
239
  else false
@@ -316,10 +327,9 @@ Nali.extend Model:
316
327
  # связанных с текущей через модель through
317
328
  @getter name, =>
318
329
  delete @[ name ]
319
- @[ name ] = @Collection.new model, ->
330
+ @[ name ] = model.where correct: ->
320
331
  return true for model in @[ through ] when model[ key ] is @
321
332
  false
322
- @[ name ].add @[ through ].pluck key
323
333
  @[ name ].subscribeTo @[ through ], 'update.length.add', ( collection, model ) -> @add model[ key ]
324
334
  @[ name ].subscribeTo @[ through ], 'update.length.remove', ( collection, model ) -> @remove model[ key ]
325
335
  @[ name ]
@@ -1,7 +1,7 @@
1
1
  Nali.extend Router:
2
2
 
3
3
  initialize: ->
4
- @::expand redirect: ( args... ) => @go args...
4
+ @::expand redirect: ( args... ) => @redirect args...
5
5
  @
6
6
 
7
7
  routes: {}
@@ -12,7 +12,7 @@ Nali.extend Router:
12
12
  event.preventDefault()
13
13
  event.stopPropagation()
14
14
  @saveHistory false
15
- @go event.target.location.pathname
15
+ @redirect event.target.location.pathname
16
16
  @
17
17
 
18
18
  scanRoutes: ->
@@ -25,13 +25,13 @@ Nali.extend Router:
25
25
  @routes[ route ] = controller
26
26
  @
27
27
 
28
- go: ( url = window.location.pathname, options = {} ) ->
28
+ redirect: ( url = window.location.pathname, options = {} ) ->
29
29
  if found = @findRoute @prepare( url ) or @prepare( @Application.defaultUrl )
30
30
  { controller, action, filters, params } = found
31
31
  params[ name ] = value for name, value in options
32
32
  controller.run action, filters, params
33
33
  else if @Application.notFoundUrl
34
- @go @Application.notFoundUrl
34
+ @redirect @Application.notFoundUrl
35
35
  else console.warn "Not exists route to the address %s", url
36
36
  @
37
37
 
@@ -34,9 +34,10 @@ Nali.extend View:
34
34
  @
35
35
 
36
36
  show: ( insertTo = @insertTo() ) ->
37
- @prepareElement().draw().bindEvents()
37
+ @prepareElement()
38
38
  unless @visible
39
39
  @runModelCallback 'beforeShow'
40
+ @draw().bindEvents()
40
41
  @runAssistants 'show'
41
42
  @subscribeTo @model, 'update', @onSourceUpdated
42
43
  @subscribeTo @model, 'destroy', @onSourceDestroyed
@@ -45,6 +46,8 @@ Nali.extend View:
45
46
  setTimeout ( => @onShow() ), 5 if @onShow?
46
47
  @visible = true
47
48
  @runModelCallback 'afterShow'
49
+ else
50
+ @draw()
48
51
  @
49
52
 
50
53
  hide: ( delay = 0 ) ->
@@ -105,7 +108,7 @@ Nali.extend View:
105
108
  obj = if match[1].length is 1 then @ else @model
106
109
  if obj[ method ]? and typeof obj[ method ] is 'function' then obj[ method ] params
107
110
  else console.warn "Method %s not exists", method
108
- else @Router.go url, params
111
+ else @redirect url, params
109
112
  @
110
113
 
111
114
  formToHash: ( form ) ->
@@ -2,6 +2,6 @@ Nali::Application.configure :development do |config|
2
2
 
3
3
  config.client_debug = true
4
4
 
5
- ActiveRecord::Base.logger = false #Logger.new STDOUT
5
+ ActiveRecord::Base.logger = false #Logger.new STDOUT
6
6
 
7
7
  end
data/lib/nali/clients.rb CHANGED
@@ -19,12 +19,13 @@ module Nali
19
19
  if message[ :ping ]
20
20
  client.send_json action: :pong
21
21
  else
22
- if controller = Object.const_get( message[ :controller ].capitalize + 'Controller' )
22
+ name = message[ :controller ].capitalize + 'Controller'
23
+ if Math.const_defined?( name ) and controller = Object.const_get( name )
23
24
  controller = controller.new( client, message )
24
25
  if controller.respond_to?( action = message[ :action ].to_sym )
25
26
  controller.runAction action
26
27
  else puts "Action #{ action } not exists in #{ controller }" end
27
- else puts "Controller #{ controller } not exists" end
28
+ else puts "Controller #{ name } not exists" end
28
29
  on_message( client, message ) if respond_to?( :on_message )
29
30
  end
30
31
  end
@@ -36,4 +37,4 @@ module Nali
36
37
 
37
38
  end
38
39
 
39
- end
40
+ end
data/lib/nali/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Nali
2
2
 
3
- VERSION = '0.2.3'
3
+ VERSION = '0.2.4'
4
4
 
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nali
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-11-11 00:00:00.000000000 Z
12
+ date: 2014-11-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thin