From 1d805d13db0e0088fc2977b59ed05a2575c47113 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Thu, 18 Oct 2012 21:23:05 +0200 Subject: [PATCH] Improved merge feature. --- .../_application_controller.js.coffee | 2 +- .../_application_controller_table.js.coffee | 10 +- .../controllers/agent_ticket_merge.js.coffee | 93 ++++++++++++++++++- .../app/views/agent_ticket_merge.jst.eco | 13 +-- .../app/views/generic/table.jst.eco | 10 +- app/controllers/recent_viewed_controller.rb | 2 +- app/controllers/tickets_controller.rb | 39 ++++++++ app/models/history.rb | 8 +- config/routes/ticket.rb | 1 + 9 files changed, 154 insertions(+), 24 deletions(-) diff --git a/app/assets/javascripts/app/controllers/_application_controller.js.coffee b/app/assets/javascripts/app/controllers/_application_controller.js.coffee index cc213e81a..2205af542 100644 --- a/app/assets/javascripts/app/controllers/_application_controller.js.coffee +++ b/app/assets/javascripts/app/controllers/_application_controller.js.coffee @@ -1,5 +1,5 @@ class App.Controller extends Spine.Controller - + # add @title methode to set title title: (name) -> # $('html head title').html( Config.product_name + ' - ' + App.i18n.translateInline(name) ) diff --git a/app/assets/javascripts/app/controllers/_application_controller_table.js.coffee b/app/assets/javascripts/app/controllers/_application_controller_table.js.coffee index 60f5476fc..3ae244317 100644 --- a/app/assets/javascripts/app/controllers/_application_controller_table.js.coffee +++ b/app/assets/javascripts/app/controllers/_application_controller_table.js.coffee @@ -14,6 +14,8 @@ class App.ControllerTable extends App.Controller overview: ['host', 'user', 'adapter', 'active'], model: App.Channel, objects: data, + checkbox: false, + radio: false, ) new App.ControllerTable( @@ -34,6 +36,8 @@ class App.ControllerTable extends App.Controller ], model: App.Ticket, objects: tickets, + checkbox: false, + radio: false, ) ### @@ -43,6 +47,7 @@ class App.ControllerTable extends App.Controller attributes = data.attributes || data.model.configure_attributes || {} header = data.header + # check if table is empty if _.isEmpty(data.objects) table = '' table = '-none-' @@ -111,11 +116,8 @@ class App.ControllerTable extends App.Controller overview: dataTypesForCols, objects: data.objects, checkbox: data.checkbox, + radio: data.radio, ) -# @log 'ttt', $(table).find('span') -# $(table).find('span').bind('click', -> -# console.log('----------click---------') -# ) # convert to jquery object table = $(table) diff --git a/app/assets/javascripts/app/controllers/agent_ticket_merge.js.coffee b/app/assets/javascripts/app/controllers/agent_ticket_merge.js.coffee index e9560b257..f925c8f68 100644 --- a/app/assets/javascripts/app/controllers/agent_ticket_merge.js.coffee +++ b/app/assets/javascripts/app/controllers/agent_ticket_merge.js.coffee @@ -1,10 +1,99 @@ class App.TicketMerge extends App.ControllerModal constructor: -> super - @render() + @fetch() + + fetch: -> + + # merge tickets + App.Com.ajax( + id: 'ticket_merge_list', + type: 'GET', + url: '/api/ticket_merge_list/' + @ticket_id, + data: { +# view: @view + } + processData: true, + success: (data, status, xhr) => + + if data.customer + App.Collection.load( type: 'Ticket', data: data.customer.tickets ) + App.Collection.load( type: 'User', data: data.customer.users ) + + if data.recent + App.Collection.load( type: 'Ticket', data: data.recent.tickets ) + App.Collection.load( type: 'User', data: data.recent.users ) + + @render( data ) + ) + + render: (data) -> - render: -> @html App.view('agent_ticket_merge')() + + list = [] + for t in data.customer.tickets + ticketItem = App.Collection.find( 'Ticket', t.id ) + list.push ticketItem + new App.ControllerTable( + el: @el.find('#ticket-merge-customer-tickets'), + overview_extended: [ + { name: 'number', link: true }, + { name: 'title', link: true }, +# { name: 'customer', class: 'user-data', data: { id: true } }, + { name: 'ticket_state', translate: true }, +# { name: 'ticket_priority', translate: true }, + { name: 'group' }, +# { name: 'owner', class: 'user-data', data: { id: true } }, + { name: 'created_at', callback: @humanTime }, +# { name: 'last_contact', callback: @frontendTime }, +# { name: 'last_contact_agent', callback: @frontendTime }, +# { name: 'last_contact_customer', callback: @frontendTime }, +# { name: 'first_response', callback: @frontendTime }, +# { name: 'close_time', callback: @frontendTime }, + ], + model: App.Ticket, + objects: list, + radio: true, + ) + + list = [] + for t in data.recent.tickets + ticketItem = App.Collection.find( 'Ticket', t.id ) + list.push ticketItem + new App.ControllerTable( + el: @el.find('#ticket-merge-recent-tickets'), + overview_extended: [ + { name: 'number', link: true }, + { name: 'title', link: true }, +# { name: 'customer', class: 'user-data', data: { id: true } }, + { name: 'ticket_state', translate: true }, +# { name: 'ticket_priority', translate: true }, + { name: 'group' }, +# { name: 'owner', class: 'user-data', data: { id: true } }, + { name: 'created_at', callback: @humanTime }, +# { name: 'last_contact', callback: @frontendTime }, +# { name: 'last_contact_agent', callback: @frontendTime }, +# { name: 'last_contact_customer', callback: @frontendTime }, +# { name: 'first_response', callback: @frontendTime }, +# { name: 'close_time', callback: @frontendTime }, + ], + model: App.Ticket, + objects: list, + radio: true, + ) + + @el.delegate('[name="master_ticket_number"]', 'focus', (e) -> + $(e.target).parents().find('[name="radio"]').attr( 'checked', false ) + ) + + @el.delegate('[name="radio"]', 'click', (e) -> + if $(e.target).attr('checked') + ticket_id = $(e.target).val() + ticket = App.Collection.find( 'Ticket', ticket_id ) + $(e.target).parents().find('[name="master_ticket_number"]').val( ticket.number ) + ) + @modalShow() submit: (e) => diff --git a/app/assets/javascripts/app/views/agent_ticket_merge.jst.eco b/app/assets/javascripts/app/views/agent_ticket_merge.jst.eco index 62d5d5ea7..666d99f80 100644 --- a/app/assets/javascripts/app/views/agent_ticket_merge.jst.eco +++ b/app/assets/javascripts/app/views/agent_ticket_merge.jst.eco @@ -4,19 +4,14 @@

<%- @T( 'Merge' ) %>