Compare timestamp for refreshing tickets.
This commit is contained in:
parent
6b38b6c4ec
commit
b198454b87
1 changed files with 35 additions and 12 deletions
|
@ -34,7 +34,10 @@ class App.TicketZoom extends App.Controller
|
||||||
|
|
||||||
# check if ticket has beed updated every 30 min
|
# check if ticket has beed updated every 30 min
|
||||||
update = =>
|
update = =>
|
||||||
@fetch()
|
if !@initFetched
|
||||||
|
@fetch()
|
||||||
|
return
|
||||||
|
@fetch(true)
|
||||||
@interval(update, 1800000, 'pull_check')
|
@interval(update, 1800000, 'pull_check')
|
||||||
|
|
||||||
# fetch new data if triggered
|
# fetch new data if triggered
|
||||||
|
@ -50,23 +53,27 @@ class App.TicketZoom extends App.Controller
|
||||||
|
|
||||||
# after a new websocket connection, check if ticket has changed
|
# after a new websocket connection, check if ticket has changed
|
||||||
@bind('spool:sent', =>
|
@bind('spool:sent', =>
|
||||||
@fetch()
|
if @initSpoolSent
|
||||||
|
@fetch(true)
|
||||||
|
return
|
||||||
|
@initSpoolSent = true
|
||||||
)
|
)
|
||||||
|
|
||||||
fetchMayBe: (data) =>
|
fetchMayBe: (data) =>
|
||||||
if @ticketUpdatedAtLastCall
|
if @ticketUpdatedAtLastCall
|
||||||
if new Date(data.updated_at).getTime() is new Date(@ticketUpdatedAtLastCall).getTime()
|
if new Date(data.updated_at).getTime() is new Date(@ticketUpdatedAtLastCall).getTime()
|
||||||
@log('debug', 'no fetch, current ticket already there or requested')
|
console.log('debug no fetch, current ticket already there or requested')
|
||||||
return
|
return
|
||||||
if new Date(data.updated_at).getTime() < new Date(@ticketUpdatedAtLastCall).getTime()
|
if new Date(data.updated_at).getTime() < new Date(@ticketUpdatedAtLastCall).getTime()
|
||||||
@log('debug', 'no fetch, current ticket already newser or requested')
|
console.log('debug no fetch, current ticket already newser or requested')
|
||||||
return
|
return
|
||||||
|
@ticketUpdatedAtLastCall = data.updated_at
|
||||||
|
|
||||||
fetchDelayed = =>
|
fetchDelayed = =>
|
||||||
@fetch()
|
@fetch()
|
||||||
@delay(fetchDelayed, 1000, "ticket-zoom-#{@ticket_id}")
|
@delay(fetchDelayed, 1000, "ticket-zoom-#{@ticket_id}")
|
||||||
|
|
||||||
fetch: =>
|
fetch: (ignoreSame = false) =>
|
||||||
return if !@Session.get()
|
return if !@Session.get()
|
||||||
|
|
||||||
# get data
|
# get data
|
||||||
|
@ -77,20 +84,36 @@ class App.TicketZoom extends App.Controller
|
||||||
processData: true
|
processData: true
|
||||||
queue: true
|
queue: true
|
||||||
success: (data, status, xhr) =>
|
success: (data, status, xhr) =>
|
||||||
|
console.log('fetched', ignoreSame)
|
||||||
|
|
||||||
# check if ticket has changed
|
# check if ticket has changed
|
||||||
newTicketRaw = data.assets.Ticket[@ticket_id]
|
newTicketRaw = data.assets.Ticket[@ticket_id]
|
||||||
|
console.log(newTicketRaw.updated_at)
|
||||||
|
console.log(@ticketUpdatedAtLastCall)
|
||||||
|
|
||||||
if @ticketUpdatedAtLastCall
|
if @ticketUpdatedAtLastCall
|
||||||
|
|
||||||
# return if ticket hasnt changed
|
# ignore if record is already shown
|
||||||
return if @ticketUpdatedAtLastCall is newTicketRaw.updated_at
|
if ignoreSame && new Date(newTicketRaw.updated_at).getTime() is new Date(@ticketUpdatedAtLastCall).getTime()
|
||||||
|
console.log('debug no fetched, current ticket already there or requested')
|
||||||
|
return
|
||||||
|
|
||||||
# notify if ticket changed not by my self
|
# do not render if newer ticket is already requested
|
||||||
|
if new Date(newTicketRaw.updated_at).getTime() < new Date(@ticketUpdatedAtLastCall).getTime()
|
||||||
|
console.log('fetched no fetch, current ticket already newer')
|
||||||
|
return
|
||||||
|
|
||||||
|
# remember current record if newer as requested record
|
||||||
|
if new Date(newTicketRaw.updated_at).getTime() > new Date(@ticketUpdatedAtLastCall).getTime()
|
||||||
|
@ticketUpdatedAtLastCall = newTicketRaw.updated_at
|
||||||
|
else
|
||||||
|
@ticketUpdatedAtLastCall = newTicketRaw.updated_at
|
||||||
|
|
||||||
|
# notify if ticket changed not by my self
|
||||||
|
if @initFetched
|
||||||
if newTicketRaw.updated_by_id isnt @Session.get('id')
|
if newTicketRaw.updated_by_id isnt @Session.get('id')
|
||||||
App.TaskManager.notify(@task_key)
|
App.TaskManager.notify(@task_key)
|
||||||
|
@initFetched = true
|
||||||
# remember current data
|
|
||||||
@ticketUpdatedAtLastCall = newTicketRaw.updated_at
|
|
||||||
|
|
||||||
@load(data)
|
@load(data)
|
||||||
App.SessionStorage.set(@key, data)
|
App.SessionStorage.set(@key, data)
|
||||||
|
@ -710,7 +733,7 @@ class App.TicketZoom extends App.Controller
|
||||||
newTicketRaw = data.assets.Ticket[ticket.id]
|
newTicketRaw = data.assets.Ticket[ticket.id]
|
||||||
@ticketUpdatedAtLastCall = newTicketRaw.updated_at
|
@ticketUpdatedAtLastCall = newTicketRaw.updated_at
|
||||||
|
|
||||||
App.SessionStorage.set(@key, data)
|
#App.SessionStorage.set(@key, data)
|
||||||
@load(data)
|
@load(data)
|
||||||
|
|
||||||
# reset article - should not be resubmited on next ticket update
|
# reset article - should not be resubmited on next ticket update
|
||||||
|
|
Loading…
Reference in a new issue