Improved logging, remover App.Model.retrieve(). Fetch also items with same updated_at timestamp.
This commit is contained in:
parent
c49ce33cae
commit
3aea8321b4
4 changed files with 22 additions and 59 deletions
|
@ -497,7 +497,7 @@ class App.Controller extends Spine.Controller
|
||||||
item.object_name = object.objectDisplayName()
|
item.object_name = object.objectDisplayName()
|
||||||
item.cssIcon = object.iconActivity( @Session.get() )
|
item.cssIcon = object.iconActivity( @Session.get() )
|
||||||
|
|
||||||
item.created_by = App.User.retrieve( item.created_by_id )
|
item.created_by = App.User.find( item.created_by_id )
|
||||||
items
|
items
|
||||||
|
|
||||||
ws_send: (data) ->
|
ws_send: (data) ->
|
||||||
|
|
|
@ -64,7 +64,7 @@ class ArticleViewItem extends App.Controller
|
||||||
#@highligher.loadHighlights(@ticket_article_id)
|
#@highligher.loadHighlights(@ticket_article_id)
|
||||||
d = =>
|
d = =>
|
||||||
@highligher.loadHighlights(@ticket_article_id)
|
@highligher.loadHighlights(@ticket_article_id)
|
||||||
@delay(d, 800)
|
@delay(d, 200)
|
||||||
|
|
||||||
hasChanged: (article) =>
|
hasChanged: (article) =>
|
||||||
|
|
||||||
|
|
|
@ -2,9 +2,9 @@ class App.TicketZoomMeta extends App.Controller
|
||||||
constructor: ->
|
constructor: ->
|
||||||
super
|
super
|
||||||
|
|
||||||
@ticket = App.Ticket.fullLocal( @ticket.id )
|
@ticket = App.Ticket.fullLocal(@ticket.id)
|
||||||
@subscribeId = @ticket.subscribe(@render)
|
|
||||||
@render(@ticket)
|
@render(@ticket)
|
||||||
|
@subscribeId = @ticket.subscribe(@render)
|
||||||
|
|
||||||
render: (ticket) =>
|
render: (ticket) =>
|
||||||
@html App.view('ticket_zoom/meta')(
|
@html App.view('ticket_zoom/meta')(
|
||||||
|
@ -13,4 +13,4 @@ class App.TicketZoomMeta extends App.Controller
|
||||||
)
|
)
|
||||||
|
|
||||||
release: =>
|
release: =>
|
||||||
App.Ticket.unsubscribe( @subscribeId )
|
App.Ticket.unsubscribe(@subscribeId)
|
||||||
|
|
|
@ -161,7 +161,7 @@ class App.Model extends Spine.Model
|
||||||
|
|
||||||
# return error object
|
# return error object
|
||||||
if !_.isEmpty(errors)
|
if !_.isEmpty(errors)
|
||||||
console.log 'error', 'validation failed', errors
|
App.Log.error('Model', 'validation failed', errors)
|
||||||
return errors
|
return errors
|
||||||
|
|
||||||
# return no errors
|
# return no errors
|
||||||
|
@ -267,6 +267,7 @@ class App.Model extends Spine.Model
|
||||||
@FULL_FETCH = {}
|
@FULL_FETCH = {}
|
||||||
if !@FULL_FETCH[id]
|
if !@FULL_FETCH[id]
|
||||||
@FULL_FETCH[id] = true
|
@FULL_FETCH[id] = true
|
||||||
|
App.Log.debug('Model', "fetch #{@className}.find(#{id}) from server", url)
|
||||||
App.Ajax.request(
|
App.Ajax.request(
|
||||||
type: 'GET'
|
type: 'GET'
|
||||||
url: url
|
url: url
|
||||||
|
@ -274,6 +275,8 @@ class App.Model extends Spine.Model
|
||||||
success: (data, status, xhr) =>
|
success: (data, status, xhr) =>
|
||||||
@FULL_FETCH[ data.id ] = false
|
@FULL_FETCH[ data.id ] = false
|
||||||
|
|
||||||
|
App.Log.debug('Model', "got #{@className}.find(#{id}) from server", data)
|
||||||
|
|
||||||
# full / load assets
|
# full / load assets
|
||||||
if data.assets
|
if data.assets
|
||||||
App.Collection.loadAssets( data.assets )
|
App.Collection.loadAssets( data.assets )
|
||||||
|
@ -291,55 +294,10 @@ class App.Model extends Spine.Model
|
||||||
delete @FULL_CALLBACK[ data.id ]
|
delete @FULL_CALLBACK[ data.id ]
|
||||||
|
|
||||||
error: (xhr, statusText, error) ->
|
error: (xhr, statusText, error) ->
|
||||||
console.log(statusText, error)
|
App.Log.error('Model', statusText, error, url)
|
||||||
)
|
)
|
||||||
subscribeId
|
subscribeId
|
||||||
|
|
||||||
@retrieve: ( id, callback, force ) ->
|
|
||||||
if !force && App[ @className ].exists( id )
|
|
||||||
data = App[ @className ].find( id )
|
|
||||||
data = @_fillUp( data )
|
|
||||||
if callback
|
|
||||||
callback( data )
|
|
||||||
return data
|
|
||||||
|
|
||||||
if force
|
|
||||||
console.log 'debug', 'find forced to load!', @className, id
|
|
||||||
else
|
|
||||||
console.log 'debug', 'find not loaded, load now!', @className, id
|
|
||||||
if callback
|
|
||||||
|
|
||||||
# store callback and requested id
|
|
||||||
if !@RETRIEVE_CALLBACK
|
|
||||||
@RETRIEVE_CALLBACK = {}
|
|
||||||
if !@RETRIEVE_CALLBACK[id]
|
|
||||||
@RETRIEVE_CALLBACK[id] = {}
|
|
||||||
key = @className + '-' + Math.floor( Math.random() * 99999 )
|
|
||||||
@RETRIEVE_CALLBACK[id][key] = callback
|
|
||||||
|
|
||||||
# bind refresh event
|
|
||||||
if !@RETRIEVE_BIND
|
|
||||||
@RETRIEVE_BIND = true
|
|
||||||
|
|
||||||
# check if bind for requested id exists
|
|
||||||
App[ @className ].bind 'refresh', (records) ->
|
|
||||||
for record in records
|
|
||||||
if @RETRIEVE_CALLBACK[ record.id ]
|
|
||||||
for key, callback of @RETRIEVE_CALLBACK[ record.id ]
|
|
||||||
data = callback( @_fillUp( App[ @className ].find( record.id ) ) )
|
|
||||||
delete @RETRIEVE_CALLBACK[ record.id ][ key ]
|
|
||||||
if _.isEmpty @RETRIEVE_CALLBACK[ record.id ]
|
|
||||||
delete @RETRIEVE_CALLBACK[ record.id ]
|
|
||||||
@fetchActive = false
|
|
||||||
|
|
||||||
# fetch object
|
|
||||||
console.log 'debug', 'loading..' + @className + '..', id
|
|
||||||
if !@fetchActive
|
|
||||||
@fetchActive = true
|
|
||||||
App[ @className ].fetch( id: id )
|
|
||||||
return true
|
|
||||||
return false
|
|
||||||
|
|
||||||
###
|
###
|
||||||
|
|
||||||
methodWhichIsCalledAtLocalOrServerSiteChange = (changedItems) ->
|
methodWhichIsCalledAtLocalOrServerSiteChange = (changedItems) ->
|
||||||
|
@ -360,6 +318,7 @@ class App.Model extends Spine.Model
|
||||||
@bind(
|
@bind(
|
||||||
'refresh change'
|
'refresh change'
|
||||||
(items) =>
|
(items) =>
|
||||||
|
App.Log.debug('Model', "local collection refresh/change #{@className}", items)
|
||||||
for key, callback of @SUBSCRIPTION_COLLECTION
|
for key, callback of @SUBSCRIPTION_COLLECTION
|
||||||
callback(items)
|
callback(items)
|
||||||
)
|
)
|
||||||
|
@ -369,6 +328,7 @@ class App.Model extends Spine.Model
|
||||||
App.Event.bind(
|
App.Event.bind(
|
||||||
events
|
events
|
||||||
=>
|
=>
|
||||||
|
App.Log.debug('Model', "server notify collection change #{@className}")
|
||||||
@fetch( {}, { clear: true } )
|
@fetch( {}, { clear: true } )
|
||||||
|
|
||||||
'Collection::Subscribe::' + @className
|
'Collection::Subscribe::' + @className
|
||||||
|
@ -419,7 +379,7 @@ class App.Model extends Spine.Model
|
||||||
# check if result is array or singel item
|
# check if result is array or singel item
|
||||||
if !_.isArray(items)
|
if !_.isArray(items)
|
||||||
items = [items]
|
items = [items]
|
||||||
|
App.Log.debug('Model', "local change #{@className}", items)
|
||||||
for item in items
|
for item in items
|
||||||
for key, callback of App[ @className ].SUBSCRIPTION_ITEM[ item.id ]
|
for key, callback of App[ @className ].SUBSCRIPTION_ITEM[ item.id ]
|
||||||
item = App[ @className ]._fillUp( item )
|
item = App[ @className ]._fillUp( item )
|
||||||
|
@ -434,7 +394,7 @@ class App.Model extends Spine.Model
|
||||||
# check if result is array or singel item
|
# check if result is array or singel item
|
||||||
if !_.isArray(items)
|
if !_.isArray(items)
|
||||||
items = [items]
|
items = [items]
|
||||||
|
App.Log.debug('Model', "local refresh #{@className}", items)
|
||||||
for item in items
|
for item in items
|
||||||
for key, callback of App[ @className ].SUBSCRIPTION_ITEM[ item.id ]
|
for key, callback of App[ @className ].SUBSCRIPTION_ITEM[ item.id ]
|
||||||
|
|
||||||
|
@ -454,12 +414,13 @@ class App.Model extends Spine.Model
|
||||||
genericObject = undefined
|
genericObject = undefined
|
||||||
if App[ @className ].exists( item.id )
|
if App[ @className ].exists( item.id )
|
||||||
genericObject = App[ @className ].find( item.id )
|
genericObject = App[ @className ].find( item.id )
|
||||||
|
App.Log.debug('Model', "server change on #{@className}.find(#{item.id}) #{item.updated_at}")
|
||||||
callback = =>
|
callback = =>
|
||||||
if !genericObject || ( new Date(item.updated_at).toString() isnt new Date(genericObject.updated_at).toString() )
|
if !genericObject || new Date(item.updated_at) >= new Date(genericObject.updated_at)
|
||||||
|
App.Log.debug('Model', "request #{@className}.find(#{item.id}) from server")
|
||||||
@full( item.id, false, true )
|
@full( item.id, false, true )
|
||||||
|
|
||||||
App.Delay.set(callback, 800, item.id, "full-#{@className}")
|
App.Delay.set(callback, 500, item.id, "full-#{@className}")
|
||||||
|
|
||||||
'Item::Subscribe::' + @className
|
'Item::Subscribe::' + @className
|
||||||
)
|
)
|
||||||
|
@ -500,13 +461,15 @@ class App.Model extends Spine.Model
|
||||||
###
|
###
|
||||||
@fetchFull: (callback) ->
|
@fetchFull: (callback) ->
|
||||||
url = "#{@url}/?full=true"
|
url = "#{@url}/?full=true"
|
||||||
|
App.Log.debug('Model', "fetchFull collection #{@className}", url)
|
||||||
App.Ajax.request(
|
App.Ajax.request(
|
||||||
type: 'GET'
|
type: 'GET'
|
||||||
url: url
|
url: url
|
||||||
processData: true,
|
processData: true,
|
||||||
success: (data, status, xhr) =>
|
success: (data, status, xhr) =>
|
||||||
|
|
||||||
|
App.Log.debug('Model', "got fetchFull collection #{@className}", data)
|
||||||
|
|
||||||
# full / load assets
|
# full / load assets
|
||||||
if data.assets
|
if data.assets
|
||||||
App.Collection.loadAssets( data.assets )
|
App.Collection.loadAssets( data.assets )
|
||||||
|
@ -519,7 +482,7 @@ class App.Model extends Spine.Model
|
||||||
callback(data.stream)
|
callback(data.stream)
|
||||||
|
|
||||||
error: (xhr, statusText, error) ->
|
error: (xhr, statusText, error) ->
|
||||||
console.log(statusText, error)
|
App.Log.error('Model', statusText, error, url)
|
||||||
)
|
)
|
||||||
|
|
||||||
@_bindsEmpty: ->
|
@_bindsEmpty: ->
|
||||||
|
|
Loading…
Reference in a new issue