/
ticket_navigable.coffee
61 lines (50 loc) · 1.48 KB
/
ticket_navigable.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# Defines common controller behavior for:
#
# * individual ticket pages ('ticket_zoom')
# * ticket listings ('overviews')
#
# Relies on @overview_id and @ticket_id instance variables
App.TicketNavigable =
taskOpenTicket: (ticket_id, url) ->
# coerce Ticket objects to id
ticket_id = ticket_id.id if (ticket_id instanceof App.Ticket)
@taskLoadTicket(ticket_id)
@navigate(url ? "ticket/zoom/#{ticket_id}")
# preserves overview information
taskLoadTicket: (ticket_id) ->
App.TaskManager.execute(
key: "Ticket-#{ticket_id}"
controller: 'TicketZoom'
params:
ticket_id: ticket_id
overview_id: @overview_id
show: true
)
getNextTicketInOverview: ->
return if !@ticket
return if !@overview_id
App.Overview.find(@overview_id).nextTicket(@ticket)
openTicketInOverview: (nextTicket) ->
if nextTicket
@taskCloseTicket()
@taskLoadTicket(nextTicket.id)
return
@taskCloseTicket(true)
taskOpenNextTicketInOverview: ->
if !(@overview_id? && @ticket?)
@taskCloseTicket(true)
return
nextTicket = @getNextTicketInOverview()
if nextTicket
@taskCloseTicket()
@taskLoadTicket(nextTicket.id)
return
@taskCloseTicket(true)
taskCloseTicket: (openNext = false) ->
App.TaskManager.remove(@taskKey)
return if !openNext
nextTaskUrl = App.TaskManager.nextTaskUrl()
if nextTaskUrl
@navigate nextTaskUrl
return
@navigate '#'