From e6f4bd021fc99c13c67f10cc39ed54b951d3a687 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Fri, 20 Jul 2012 15:47:04 +0200 Subject: [PATCH] Improved overview pagination in ticket zoom. --- .../controllers/_dashboard/ticket.js.coffee | 10 +++++-- .../controllers/agent_ticket_view.js.coffee | 28 ++++++++++--------- .../controllers/agent_ticket_zoom.js.coffee | 2 ++ .../app/views/agent_ticket_zoom.jst.eco | 2 +- .../ticket_overviews_controller.rb | 20 +++++++++++++ app/models/ticket.rb | 19 +++++++++++++ 6 files changed, 65 insertions(+), 16 deletions(-) diff --git a/app/assets/javascripts/app/controllers/_dashboard/ticket.js.coffee b/app/assets/javascripts/app/controllers/_dashboard/ticket.js.coffee index 785a02f25..190c09c4a 100644 --- a/app/assets/javascripts/app/controllers/_dashboard/ticket.js.coffee +++ b/app/assets/javascripts/app/controllers/_dashboard/ticket.js.coffee @@ -105,8 +105,14 @@ class App.DashboardTicket extends App.Controller zoom: (e) => e.preventDefault() id = $(e.target).parents('[data-id]').data('id') - @log 'goto zoom!' - @navigate 'ticket/zoom/' + id + position = $(e.target).parents('[data-position]').data('position') + + Config['LastOverview'] = @view + Config['LastOverviewPosition'] = position + Config['LastOverviewTotal'] = @tickets_count + + @log 'goto zoom!', id, position + @navigate 'ticket/zoom/' + id + '/nav/true' settings: (e) => e.preventDefault() 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 3fc22dc3e..45a29b77d 100644 --- a/app/assets/javascripts/app/controllers/agent_ticket_view.js.coffee +++ b/app/assets/javascripts/app/controllers/agent_ticket_view.js.coffee @@ -29,9 +29,6 @@ class Index extends App.Controller # set controller to active Config['ActiveController'] = '#ticket_overview_' + @view - # set last overview - Config['LastOverview'] = @view - # refresh list ever 40 sec. @interval( @fetch, 400000, 'ticket_overview_' + @view ) @@ -285,10 +282,13 @@ class Index extends App.Controller e.preventDefault() id = $(e.target).parents('[data-id]').data('id') position = $(e.target).parents('[data-position]').data('position') + + # set last overview + Config['LastOverview'] = @view Config['LastOverviewPosition'] = position Config['LastOverviewTotal'] = @tickets_count - @navigate 'ticket/zoom/' + id + @navigate 'ticket/zoom/' + id + '/nav/true' settings: (e) => e.preventDefault() @@ -441,7 +441,7 @@ class Router extends App.Controller super # set new key - @key = '#ticket/view/' + @view + @key = '#ticket/view/array/' + @view # get data if window.LastRefresh[ @key ] @@ -453,9 +453,8 @@ class Router extends App.Controller type: 'GET', url: '/ticket_overviews', data: { - view: @view, - view_mode: 's', - start_page: 1, + view: @view, + array: true, } processData: true, success: @load @@ -464,6 +463,9 @@ class Router extends App.Controller load: (data) => @tickets = data.tickets @tickets_count = data.tickets_count + window.LastRefresh[ @key ] = {} + window.LastRefresh[ @key ]['tickets_count'] = @tickets_count + window.LastRefresh[ @key ]['tickets'] = @tickets @redirect() redirect: => @@ -475,15 +477,15 @@ class Router extends App.Controller if @direction == 'next' if @tickets[ @position ] && @tickets[ @position ] Config['LastOverviewPosition']++ - @navigate 'ticket/zoom/' + @tickets[ @position ].id + @navigate 'ticket/zoom/' + @tickets[ @position ].id + '/nav/true' else - @navigate 'ticket/zoom/' + @tickets[ @position - 1 ].id + @navigate 'ticket/zoom/' + @tickets[ @position - 1 ].id + '/nav/true' else - if @tickets[ @position - 2 ] && @tickets[ @position - 2 ].id + if @tickets[ @position - 2 ] && @tickets[ @position - 2 ].id + '/nav/true' Config['LastOverviewPosition']-- - @navigate 'ticket/zoom/' + @tickets[ @position - 2 ].id + @navigate 'ticket/zoom/' + @tickets[ @position - 2 ].id + '/nav/true' else - @navigate 'ticket/zoom/' + @tickets[ @position - 1 ].id + @navigate 'ticket/zoom/' + @tickets[ @position - 1 ].id + '/nav/true' Config.Routes['ticket/view/:view/:position/:direction'] = Router Config.Routes['ticket/view/:view'] = Index diff --git a/app/assets/javascripts/app/controllers/agent_ticket_zoom.js.coffee b/app/assets/javascripts/app/controllers/agent_ticket_zoom.js.coffee index 9f4e58b86..2a7eff14a 100644 --- a/app/assets/javascripts/app/controllers/agent_ticket_zoom.js.coffee +++ b/app/assets/javascripts/app/controllers/agent_ticket_zoom.js.coffee @@ -185,6 +185,7 @@ class Index extends App.Controller articles: @articles, form_ticket: form_ticket, form_article: form_article, + nav: @nav, ) @el.find('textarea').elastic() @@ -398,4 +399,5 @@ class Index extends App.Controller Config.Routes['ticket/zoom/:ticket_id'] = Index +Config.Routes['ticket/zoom/:ticket_id/nav/:nav'] = Index Config.Routes['ticket/zoom/:ticket_id/:article_id'] = Index \ No newline at end of file diff --git a/app/assets/javascripts/app/views/agent_ticket_zoom.jst.eco b/app/assets/javascripts/app/views/agent_ticket_zoom.jst.eco index 551aa73fb..34ee66247 100644 --- a/app/assets/javascripts/app/views/agent_ticket_zoom.jst.eco +++ b/app/assets/javascripts/app/views/agent_ticket_zoom.jst.eco @@ -4,7 +4,7 @@

<%= @ticket.title %> <%= @ticket.number %>

- <% if window.Config['LastOverview']: %> + <% if window.Config['LastOverview'] && @nav: %>