diff --git a/app/assets/javascripts/app/controllers/_application_controller.js.coffee b/app/assets/javascripts/app/controllers/_application_controller.js.coffee index 540ab2d2d..1adb5cba8 100644 --- a/app/assets/javascripts/app/controllers/_application_controller.js.coffee +++ b/app/assets/javascripts/app/controllers/_application_controller.js.coffee @@ -219,12 +219,39 @@ class App.Controller extends Spine.Controller interval: (callback, interval, interval_id, level) => App.Interval.set(callback, interval, interval_id, level) + ticketPopups: (position = 'right') -> + + # remove old popovers + $('.popover-inner').parent().remove() + + # show ticket popup + ui = @ + $('.ticket-data').popover( + trigger: 'hover' + html: true + delay: { show: 500, hide: 1200 } +# placement: 'bottom' + placement: position + title: -> + ticket_id = $(@).data('id') + ticket = App.Collection.find( 'Ticket', ticket_id ) + ticket.title + content: -> + ticket_id = $(@).data('id') + ticket = App.Collection.find( 'Ticket', ticket_id ) + ticket.humanTime = ui.humanTime(ticket.created_at) + # insert data + App.view('ticket_info_small')( + ticket: ticket, + ) + ) + userPopups: (position = 'right') -> # remove old popovers $('.popover-inner').parent().remove() - # show user popup + # show user popup $('.user-data').popover( trigger: 'hover' html: true @@ -265,6 +292,31 @@ class App.Controller extends Spine.Controller ) ) + organizationPopups: (position = 'right') -> + + # remove old popovers + $('.popover-inner').parent().remove() + + # show organization popup + $('.organization-data').popover( + trigger: 'hover' + html: true + delay: { show: 500, hide: 1200 } +# placement: 'bottom' + placement: position + title: -> + organization_id = $(@).data('id') + organization = App.Collection.find( 'Organization', organization_id ) + organization.name + content: -> + organization_id = $(@).data('id') + organization = App.Collection.find( 'Organization', organization_id ) + # insert data + App.view('organization_info_small')( + organization: organization, + ) + ) + userTicketPopups: (data) -> # remove old popovers diff --git a/app/assets/javascripts/app/controllers/navigation.js.coffee b/app/assets/javascripts/app/controllers/navigation.js.coffee index ff4b2541d..7c605ebb9 100644 --- a/app/assets/javascripts/app/controllers/navigation.js.coffee +++ b/app/assets/javascripts/app/controllers/navigation.js.coffee @@ -61,10 +61,19 @@ class App.Navigation extends App.Controller open_tab: open_tab active_tab: active_tab user: user - tickets: @tickets || [] + result: @result || [] search: search ) + # start ticket popups + @ticketPopups('right') + + # start user popups + @userPopups('right') + + # start oorganization popups + @organizationPopups('right') + # set focus to search box if @searchFocus @searchFocusSet = true @@ -77,29 +86,59 @@ class App.Navigation extends App.Controller App.Com.ajax( id: 'ticket_search' type: 'GET' - url: 'api/tickets/search' + url: 'api/search' data: term: @term processData: true, success: (data, status, xhr) => # load user collection - if data.users - App.Collection.load( type: 'User', data: data.users ) + if data.load.organizations + App.Collection.load( type: 'Organization', data: data.load.organizations ) + # load user collection + if data.load.users + App.Collection.load( type: 'User', data: data.load.users ) + # load ticket collection - if data.tickets - App.Collection.load( type: 'Ticket', data: data.tickets ) + if data.load.tickets + App.Collection.load( type: 'Ticket', data: data.load.tickets ) - @tickets = [] + @result = data.result + for area in @result + if area.name is 'Ticket' + area.result = [] + for id in area.ids + ticket = App.Collection.find( 'Ticket', id ) + ticket.humanTime = @humanTime(ticket.created_at) + data = + display: "##{ticket.number} - #{ticket.title} - #{ticket.humanTime}" + id: ticket.id + class: "ticket-data" + url: "#ticket/zoom/#{ticket.id}" + area.result.push data + else if area.name is 'User' + area.result = [] + for id in area.ids + user = App.Collection.find( 'User', id ) + data = + display: "#{user.displayName()}" + id: user.id + class: "user-data" + url: "#users/#{user.id}" + area.result.push data + else if area.name is 'Organization' + area.result = [] + for id in area.ids + organization = App.Collection.find( 'Organization', id ) + data = + display: "#{organization.displayName()}" + id: organization.id + class: "organization-data" + url: "#organizations/#{ticket.id}" + area.result.push data - for ticket_raw in data.tickets - ticket = App.Collection.find( 'Ticket', ticket_raw.id ) - - # set human time - ticket.humanTime = @humanTime(ticket.created_at) - - @tickets.push ticket + if @result @render(user) ) @@ -121,7 +160,7 @@ class App.Navigation extends App.Controller @delay( => @searchFocus = false - @tickets = [] + @result = [] @render(user) 320 ) 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 b7b5db8bb..07e817736 100644 --- a/app/assets/javascripts/app/views/agent_ticket_zoom.jst.eco +++ b/app/assets/javascripts/app/views/agent_ticket_zoom.jst.eco @@ -79,7 +79,7 @@