Fixed issue #681 - Keep modal open on call log event.

This commit is contained in:
Martin Edenhofer 2017-04-28 17:15:28 +02:00
parent f2d969a6e3
commit 4d7f3c1e6a
3 changed files with 108 additions and 100 deletions

View file

@ -1,18 +1,19 @@
class App.CTI extends App.Controller class App.CTI extends App.Controller
elements:
'.js-callerLog': 'callerLog'
events: events:
'click .js-check': 'done', 'click .js-check': 'done'
'click .js-userNew': 'userNew' 'click .js-userNew': 'userNew'
list: []
backends: []
meta:
active: false
counter: 0
state: {}
constructor: -> constructor: ->
super super
@list = []
@backends = []
@meta =
active: false
counter: 0
state: {}
preferences = @Session.get('preferences') || {} preferences = @Session.get('preferences') || {}
@meta.active = preferences.cti || false @meta.active = preferences.cti || false
@ -41,13 +42,16 @@ class App.CTI extends App.Controller
@backends = data.backends @backends = data.backends
if data.list if data.list
@list = data.list @list = data.list
if @renderDone
@renderCallerLog()
return
@render() @render()
'cti_list_push' 'cti_list_push'
) )
@bind('auth', (data) => @bind('auth', (data) =>
@meta.counter = 0 @meta.counter = 0
) )
@bind('cti:reload', => @bind('cti:reload', =>
@load() @load()
'cti_reload' 'cti_reload'
@ -80,6 +84,9 @@ class App.CTI extends App.Controller
@backends = data.backends @backends = data.backends
if data.list if data.list
@list = data.list @list = data.list
if @renderDone
@renderCallerLog()
return
@render() @render()
) )
@ -96,6 +103,7 @@ class App.CTI extends App.Controller
false false
render: -> render: ->
@renderDone = true
if !@permissionCheck('cti.agent') if !@permissionCheck('cti.agent')
@renderScreenUnauthorized(objectName: 'CTI') @renderScreenUnauthorized(objectName: 'CTI')
return return
@ -113,6 +121,11 @@ class App.CTI extends App.Controller
@updateNavMenu() @updateNavMenu()
return return
@html App.view('cti/index')()
@renderCallerLog()
@updateNavMenu()
renderCallerLog: ->
format = (time) -> format = (time) ->
# Hours, minutes and seconds # Hours, minutes and seconds
@ -152,11 +165,8 @@ class App.CTI extends App.Controller
item.duration = format((Date.parse(item.end) - Date.parse(item.start))/1000) item.duration = format((Date.parse(item.end) - Date.parse(item.start))/1000)
@userPopupsDestroy() @userPopupsDestroy()
@html App.view('cti/index')( @callerLog.html( App.view('cti/caller_log')(list: @list))
list: @list
)
@userPopups() @userPopups()
@updateNavMenu()
done: (e) => done: (e) =>
element = $(e.currentTarget) element = $(e.currentTarget)

View file

@ -0,0 +1,84 @@
<table class="table table-striped table-hover">
<thead>
<tr>
<th style="width: 40px;"></th>
<th><%- @T('From') %></th>
<th><%- @T('To') %></th>
<th style="width: 130px;"><%- @T('Status') %></th>
<th style="width: 100px;"><%- @T('Duration') %></th>
<th style="width: 170px;"><%- @T('Time') %></th>
</tr>
</thead>
<tbody>
<% for item in @list: %>
<tr <% if item.state is 'hangup' && item.done: %>class="is-grayed-out"<% end %> data-id="<%- item.id %>">
<td class="table-checkbox" style="vertical-align: middle">
<label class="checkbox-replacement<% if item.state isnt 'hangup': %> is-disabled<% end %>">
<input type="checkbox" class="js-check"<% if item.done: %> checked<% end %><% if item.state isnt 'hangup': %> disabled<% end %>>
<%- @Icon('checkbox', 'icon-unchecked') %>
<%- @Icon('checkbox-checked', 'icon-checked') %>
</label>
</td>
<td>
<% shown = false %>
<% if item.preferences.from && !_.isEmpty(item.preferences.from): %>
<% for caller_id in item.preferences.from: %>
<% if caller_id.user_id && App.User.exists(caller_id.user_id): %>
<% shown = true %>
<% user = App.User.find(caller_id.user_id) %>
<% if caller_id.level isnt 'known': %><%- @T('maybe') %> <% end %>
<span class="user-popover" data-id="<%- user.id %>"><%= user.displayNameLong() %></span><br>
<% else if caller_id.comment: %>
<% shown = true %>
<%- @T('maybe') %> <%= caller_id.comment %><br>
<% end %>
<% end %>
<% end %>
<% if !shown && item.from_comment: %>
<% shown = true %>
<% if item.from_comment: %><%= item.from_comment %><% end %>
<br>
<% end %>
<% if shown: %>
<small><%= item.from %></small>
<% else: %>
<span class="js-userNew u-clickable" href="#"><%= item.from %></span>
<% end %>
</td>
<td>
<% shown = false %>
<% if item.preferences.to && !_.isEmpty(item.preferences.to): %>
<% for caller_id in item.preferences.to: %>
<% if caller_id.user_id && App.User.exists(caller_id.user_id): %>
<% shown = true %>
<% user = App.User.find(caller_id.user_id) %>
<% if caller_id.level isnt 'known': %><%- @T('maybe') %> <% end %>
<span class="user-popover" data-id="<%- user.id %>"><%= user.displayNameLong() %></span><br>
<% else if caller_id.comment: %>
<% shown = true %>
<%- @T('maybe') %> <%= caller_id.comment %><br>
<% end %>
<% end %>
<% end %>
<% if !shown && item.to_comment: %>
<% shown = true %>
<% if item.to_comment: %><%= item.to_comment %><% end %>
<br>
<% end %>
<% if shown: %>
<small><%= item.to %></small>
<% else: %>
<%= item.to %>
<% end %>
</td>
<td style="vertical-align: middle">
<% if item.state_human: %>
<%- @Icon('status', "#{item.status_class} inline") %> <%- @T(item.state_human) %>
<% end %>
</td>
<td style="vertical-align: middle"><%= item.duration %></td>
<td style="vertical-align: middle"><%- @humanTime(item.created_at) %></td>
</tr>
<% end %>
</tbody>
</table>

View file

@ -1,90 +1,4 @@
<div class="main flex"> <div class="main flex">
<h1><%- @T('Caller log') %></h1> <h1><%- @T('Caller log') %></h1>
<div class="page-content js-callerLog"></div>
<div class="page-content">
<table class="table table-striped table-hover">
<thead>
<tr>
<th style="width: 40px;"></th>
<th><%- @T('From') %></th>
<th><%- @T('To') %></th>
<th style="width: 130px;"><%- @T('Status') %></th>
<th style="width: 100px;"><%- @T('Duration') %></th>
<th style="width: 170px;"><%- @T('Time') %></th>
</tr>
</thead>
<tbody>
<% for item in @list: %>
<tr <% if item.state is 'hangup' && item.done: %>class="is-grayed-out"<% end %> data-id="<%- item.id %>">
<td class="table-checkbox" style="vertical-align: middle">
<label class="checkbox-replacement<% if item.state isnt 'hangup': %> is-disabled<% end %>">
<input type="checkbox" class="js-check"<% if item.done: %> checked<% end %><% if item.state isnt 'hangup': %> disabled<% end %>>
<%- @Icon('checkbox', 'icon-unchecked') %>
<%- @Icon('checkbox-checked', 'icon-checked') %>
</label>
</td>
<td>
<% shown = false %>
<% if item.preferences.from && !_.isEmpty(item.preferences.from): %>
<% for caller_id in item.preferences.from: %>
<% if caller_id.user_id && App.User.exists(caller_id.user_id): %>
<% shown = true %>
<% user = App.User.find(caller_id.user_id) %>
<% if caller_id.level isnt 'known': %><%- @T('maybe') %> <% end %>
<span class="user-popover" data-id="<%- user.id %>"><%= user.displayNameLong() %></span><br>
<% else if caller_id.comment: %>
<% shown = true %>
<%- @T('maybe') %> <%= caller_id.comment %><br>
<% end %>
<% end %>
<% end %>
<% if !shown && item.from_comment: %>
<% shown = true %>
<% if item.from_comment: %><%= item.from_comment %><% end %>
<br>
<% end %>
<% if shown: %>
<small><%= item.from %></small>
<% else: %>
<span class="js-userNew u-clickable" href="#"><%= item.from %></span>
<% end %>
</td>
<td>
<% shown = false %>
<% if item.preferences.to && !_.isEmpty(item.preferences.to): %>
<% for caller_id in item.preferences.to: %>
<% if caller_id.user_id && App.User.exists(caller_id.user_id): %>
<% shown = true %>
<% user = App.User.find(caller_id.user_id) %>
<% if caller_id.level isnt 'known': %><%- @T('maybe') %> <% end %>
<span class="user-popover" data-id="<%- user.id %>"><%= user.displayNameLong() %></span><br>
<% else if caller_id.comment: %>
<% shown = true %>
<%- @T('maybe') %> <%= caller_id.comment %><br>
<% end %>
<% end %>
<% end %>
<% if !shown && item.to_comment: %>
<% shown = true %>
<% if item.to_comment: %><%= item.to_comment %><% end %>
<br>
<% end %>
<% if shown: %>
<small><%= item.to %></small>
<% else: %>
<%= item.to %>
<% end %>
</td>
<td style="vertical-align: middle">
<% if item.state_human: %>
<%- @Icon('status', "#{item.status_class} inline") %> <%- @T(item.state_human) %>
<% end %>
</td>
<td style="vertical-align: middle"><%= item.duration %></td>
<td style="vertical-align: middle"><%- @humanTime(item.created_at) %></td>
</tr>
<% end %>
</tbody>
</table>
</div>
</div> </div>