From 355b32d715eb4702e5a90395b64ff0813fe8b93b Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Wed, 9 May 2012 01:25:24 +0200 Subject: [PATCH] Improved background fetching of data. --- .../controllers/_dashboard/ticket.js.coffee | 7 +- .../controllers/agent_ticket_view.js.coffee | 105 +++++++++++------- 2 files changed, 68 insertions(+), 44 deletions(-) diff --git a/app/assets/javascripts/app/controllers/_dashboard/ticket.js.coffee b/app/assets/javascripts/app/controllers/_dashboard/ticket.js.coffee index 12c7ae6a3..3cd9d74fb 100644 --- a/app/assets/javascripts/app/controllers/_dashboard/ticket.js.coffee +++ b/app/assets/javascripts/app/controllers/_dashboard/ticket.js.coffee @@ -13,8 +13,8 @@ class App.DashboardTicket extends App.Controller @start_page = 1 @navupdate '#' - # refresh list ever 60 sec. - @interval( @fetch, 60000, 'dashboard_ticket_overview_' + @view ) + # refresh list ever 40 sec. + @interval( @fetch, 400000, 'dashboard_ticket_overview_' + @view ) fetch: => @@ -63,7 +63,8 @@ class App.DashboardTicket extends App.Controller @loadCollection( type: 'Ticket', data: data.tickets ) # set cache - window.LastRefresh[ @key ] = data + if @start_page is 1 + window.LastRefresh[ @key ] = data @render( data ) diff --git a/app/assets/javascripts/app/controllers/agent_ticket_view.js.coffee b/app/assets/javascripts/app/controllers/agent_ticket_view.js.coffee index 9fae3aab6..3d5e37bf0 100644 --- a/app/assets/javascripts/app/controllers/agent_ticket_view.js.coffee +++ b/app/assets/javascripts/app/controllers/agent_ticket_view.js.coffee @@ -18,7 +18,7 @@ class Index extends App.Controller # set title @title '' - @navupdate '#ticket_view' + @navupdate '#ticket/view/' + @view @tickets = [] @tickets_count = 0 @@ -26,10 +26,23 @@ class Index extends App.Controller @meta = {} @bulk = {} -# @render() - @fetch() + # set controller to active + Config['ActiveController'] = '#ticket_overview_' + @view - fetch: -> + # refresh list ever 40 sec. + @interval( @fetch, 400000, 'ticket_overview_' + @view ) + + fetch: => + + # set new key + @key = @view + + # use cache of first page + if window.LastRefresh[ @key ] && @start_page is 1 + @overview = window.LastRefresh[ @key ].overview + @tickets_count = window.LastRefresh[ @key ].tickets_count + @tickets = window.LastRefresh[ @key ].tickets + @render() # get data if @req @@ -44,44 +57,52 @@ class Index extends App.Controller start_page: @start_page, } processData: true, - success: (data, status, xhr) => - - # get meta data - @overview = data.overview - App.Overview.refresh( @overview, options: { clear: true } ) - - App.Overview.unbind('local:rerender') - App.Overview.bind 'local:rerender', (record) => - @log 'rerender...', record - @render() - - App.Overview.unbind('local:refetch') - App.Overview.bind 'local:refetch', (record) => - @log 'refetch...', record - @fetch() - - # set page title - @title @overview.meta.name - - # load user collection - @loadCollection( type: 'User', data: data.users ) - - # load ticket collection - @loadCollection( type: 'Ticket', data: data.tickets ) - - # remember ticket order - @tickets = @tickets.concat( data.tickets ) - - # remember ticket count - @tickets_count = data.tickets_count - - - # remeber bulk attributes - @bulk = data.bulk - - # render page - @render() + success: @load ) + + load: (data) => + + # get meta data + @overview = data.overview + App.Overview.refresh( @overview, options: { clear: true } ) + + App.Overview.unbind('local:rerender') + App.Overview.bind 'local:rerender', (record) => + @log 'rerender...', record + @render() + + App.Overview.unbind('local:refetch') + App.Overview.bind 'local:refetch', (record) => + @log 'refetch...', record + @fetch() + + # set page title + @title @overview.meta.name + + # load user collection + @loadCollection( type: 'User', data: data.users ) + + # load ticket collection + @loadCollection( type: 'Ticket', data: data.tickets ) + + # remember ticket order + if @start_page is 1 + @tickets = data.tickets + else + @tickets = @tickets.concat( data.tickets ) + + # remember ticket count + @tickets_count = data.tickets_count + + # remeber bulk attributes + @bulk = data.bulk + + # set cache + if @start_page is 1 + window.LastRefresh[ @key ] = data + + # render page + @render() # refresh/load default collections # for key, value of data.default_collections @@ -89,6 +110,8 @@ class Index extends App.Controller render: -> + return if Config['ActiveController'] isnt '#ticket_overview_' + @view + # get total pages pages_total = parseInt( ( @tickets_count / @overview.view[@view_mode].per_page ) + 0.99999 ) || 1