Merge branch 'develop' of github.com:martini/zammad into develop
# Conflicts: # app/assets/javascripts/app/views/report/time_picker.jst.eco
This commit is contained in:
commit
a871113525
6 changed files with 60 additions and 58 deletions
|
@ -190,11 +190,12 @@ class Download extends App.Controller
|
|||
reports = []
|
||||
|
||||
# select first backend, if no backend is selected
|
||||
$('.js-backendSelector:checked').each( (index, element) ->
|
||||
if $(element).hasClass('download')
|
||||
value = $(element).val()
|
||||
reports.push value
|
||||
)
|
||||
@backendSelected = undefined
|
||||
if @config.metric[@params.metric]
|
||||
for backend in @config.metric[@params.metric].backend
|
||||
console.log('bac', backend)
|
||||
if backend.dataDownload && !@backendSelected
|
||||
@backendSelected = backend.name
|
||||
|
||||
# get used profiles
|
||||
profiles = []
|
||||
|
@ -205,26 +206,10 @@ class Download extends App.Controller
|
|||
profiles.push App.ReportProfile.find(key)
|
||||
|
||||
@html App.view('report/download_header')(
|
||||
reports: reports
|
||||
profiles: profiles
|
||||
metric: @config.metric[@params.metric]
|
||||
)
|
||||
|
||||
@backendSelected = ''
|
||||
|
||||
active = false
|
||||
@el.find('.js-dataDownloadBackendSelector').each( (index, element) ->
|
||||
if $(element).parent().hasClass('active')
|
||||
active = true
|
||||
)
|
||||
if !active
|
||||
@el.find('.js-dataDownloadBackendSelector').first().parent().addClass('active')
|
||||
|
||||
# rerender view after backend is selected
|
||||
@el.find('.js-dataDownloadBackendSelector').each( (index, element) =>
|
||||
if $(element).parent().hasClass('active')
|
||||
@profileSelectedId = $(element).data('profile-id')
|
||||
@backendSelected = $(element).data('backend')
|
||||
reports: reports
|
||||
profiles: profiles
|
||||
backendSelected: @backendSelected
|
||||
metric: @config.metric[@params.metric]
|
||||
)
|
||||
|
||||
@tableUpdate()
|
||||
|
@ -242,7 +227,7 @@ class Download extends App.Controller
|
|||
if App.Config.get('import_mode')
|
||||
url = App.Config.get('import_otrs_endpoint') + '/index.pl?Action=AgentTicketZoom;TicketID='
|
||||
if _.isEmpty(tickets)
|
||||
@el.find('js-dataDownloadTable').html('')
|
||||
@el.find('.js-dataDownloadTable').html('')
|
||||
else
|
||||
html = App.view('report/download_list')(
|
||||
tickets: tickets
|
||||
|
@ -250,7 +235,7 @@ class Download extends App.Controller
|
|||
url: url
|
||||
download: @apiPath + '/reports/csvforset/' + name
|
||||
)
|
||||
@el.find('js-dataDownloadTable').html(html)
|
||||
@el.find('.js-dataDownloadTable').html(html)
|
||||
|
||||
@startLoading()
|
||||
@ajax(
|
||||
|
@ -269,14 +254,11 @@ class Download extends App.Controller
|
|||
processData: true
|
||||
success: (data) =>
|
||||
@stopLoading()
|
||||
|
||||
# load ticket collection / do not save in localStorage
|
||||
App.Collection.load( type: 'TicketReport', data: data.tickets, localStorage: true )
|
||||
App.Collection.loadAssets(data.assets)
|
||||
ticket_collection = []
|
||||
|
||||
if data.tickets
|
||||
for record in data.tickets
|
||||
ticket = App.TicketReport.fullLocal( record.id )
|
||||
if data.ticket_ids
|
||||
for record_id in data.ticket_ids
|
||||
ticket = App.Ticket.fullLocal( record_id )
|
||||
ticket_collection.push ticket
|
||||
|
||||
table(ticket_collection, data.count)
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<% for profile in @profiles: %>
|
||||
<% for backend in @metric.backend: %>
|
||||
<% if backend.dataDownload: %>
|
||||
<li><a href="#" class="js-dataDownloadBackendSelector" data-toggle="tab" data-profile="<%= profile.id %>" data-backend="<%= backend.name %>"><%= @T(backend.display) %></a></li>
|
||||
<li <% if backend.name is @backendSelected: %>class="is-active active"<% end %>><a href="#" class="js-dataDownloadBackendSelector" data-toggle="tab" data-profile-id="<%= profile.id %>" data-backend="<%= backend.name %>"><%= @T(backend.display) %></a></li>
|
||||
<% end %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
<i><%- @T('%s records', @count) %></i>
|
||||
<a href="<%-@download%>" target="_blank" data-type="attachment" id="downloadsetascsv">
|
||||
<i class="glyphicon glyphicon-download" title="<%- @Ti('Download') %>"></i>
|
||||
</a>
|
||||
<a href="<%- @download %>" target="_blank" data-type="attachment" id="downloadsetascsv"><%- @Icon('download') %></a>
|
||||
<table class="table table-striped table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
|
@ -15,7 +13,7 @@
|
|||
<tbody>
|
||||
<% for ticket in @tickets: %>
|
||||
<tr>
|
||||
<td><a target="_blank" href="<%= @url %><%= ticket.id %>"><%- @P(ticket, 'number') %></a></td>
|
||||
<td><a <% if App.Config.get('import_mode'): %>target="_blank"<% end %> href="<%= @url %><%= ticket.id %>"><%- @P(ticket, 'number') %></a></td>
|
||||
<td><%- @P(ticket, 'title') %></td>
|
||||
<td><%- @P(ticket, 'state') %></td>
|
||||
<td><%- @P(ticket, 'group') %></td>
|
||||
|
|
|
@ -76,12 +76,18 @@ class ReportsController < ApplicationController
|
|||
end
|
||||
|
||||
# get data
|
||||
|
||||
ticket_ids = []
|
||||
assets = {}
|
||||
Ticket.select('id').all.each {|ticket_part|
|
||||
ticket = Ticket.lookup(id: ticket_part.id)
|
||||
assets = ticket.assets(assets)
|
||||
ticket_ids.push ticket_part.id
|
||||
}
|
||||
count = Ticket.count
|
||||
render json: {
|
||||
data: {
|
||||
start: start,
|
||||
stop: stop,
|
||||
}
|
||||
ticket_ids: ticket_ids,
|
||||
assets: assets,
|
||||
count: count,
|
||||
}
|
||||
end
|
||||
|
||||
|
@ -117,7 +123,8 @@ class ReportsController < ApplicationController
|
|||
match = false
|
||||
result['aggregations']['time_buckets']['buckets'].each {|item|
|
||||
if interval == 'minute'
|
||||
start_string = start.iso8601.sub(/:\d\d.+?$/, '')
|
||||
item['key_as_string'] = item['key_as_string'].sub(/:\d\d.\d\d\dZ$/, '')
|
||||
start_string = start.iso8601.sub(/:\d\dZ$/, '')
|
||||
else
|
||||
start_string = start.iso8601.sub(/:\d\d:\d\d.+?$/, '')
|
||||
end
|
||||
|
|
|
@ -123,36 +123,36 @@ class Report
|
|||
name: 'first_response_average',
|
||||
display: 'First Response average',
|
||||
selected: true,
|
||||
dataDownload: true,
|
||||
dataDownload: false,
|
||||
},
|
||||
{
|
||||
name: 'first_response_max',
|
||||
display: 'First Response max',
|
||||
selected: true,
|
||||
selected: false,
|
||||
dataDownload: true,
|
||||
},
|
||||
{
|
||||
name: 'first_response_min',
|
||||
display: 'First Response min',
|
||||
selected: true,
|
||||
selected: false,
|
||||
dataDownload: true,
|
||||
},
|
||||
{
|
||||
name: 'solution_time_average',
|
||||
display: 'Solution Time average',
|
||||
selected: true,
|
||||
dataDownload: true,
|
||||
dataDownload: false,
|
||||
},
|
||||
{
|
||||
name: 'solution_time_max',
|
||||
display: 'Solution Time max',
|
||||
selected: true,
|
||||
selected: false,
|
||||
dataDownload: true,
|
||||
},
|
||||
{
|
||||
name: 'solution_time_min',
|
||||
display: 'Solution Time min',
|
||||
selected: true,
|
||||
selected: false,
|
||||
dataDownload: true,
|
||||
},
|
||||
]
|
||||
|
@ -168,43 +168,43 @@ class Report
|
|||
name: 'phone_in',
|
||||
display: 'Phone (in)',
|
||||
selected: true,
|
||||
dataDownload: true,
|
||||
dataDownload: false,
|
||||
},
|
||||
{
|
||||
name: 'phone_out',
|
||||
display: 'Phone (out)',
|
||||
selected: true,
|
||||
dataDownload: true,
|
||||
dataDownload: false,
|
||||
},
|
||||
{
|
||||
name: 'email_in',
|
||||
display: 'Email (in)',
|
||||
selected: true,
|
||||
dataDownload: true,
|
||||
dataDownload: false,
|
||||
},
|
||||
{
|
||||
name: 'email_out',
|
||||
display: 'Email (out)',
|
||||
selected: true,
|
||||
dataDownload: true,
|
||||
dataDownload: false,
|
||||
},
|
||||
{
|
||||
name: 'web_in',
|
||||
display: 'Web (in)',
|
||||
selected: true,
|
||||
dataDownload: true,
|
||||
dataDownload: false,
|
||||
},
|
||||
{
|
||||
name: 'twitter_in',
|
||||
display: 'Twitter (in)',
|
||||
selected: true,
|
||||
dataDownload: true,
|
||||
dataDownload: false,
|
||||
},
|
||||
{
|
||||
name: 'twitter_out',
|
||||
display: 'Twitter (out)',
|
||||
selected: true,
|
||||
dataDownload: true,
|
||||
dataDownload: false,
|
||||
},
|
||||
]
|
||||
config[:metric][:communication][:backend] = backend
|
||||
|
|
15
db/seeds.rb
15
db/seeds.rb
|
@ -1487,6 +1487,13 @@ Role.create_if_not_exists(
|
|||
updated_by_id: 1,
|
||||
created_by_id: 1
|
||||
)
|
||||
Role.create_if_not_exists(
|
||||
id: 4,
|
||||
name: 'Report',
|
||||
note: 'Access the report area.',
|
||||
created_by_id: 1,
|
||||
updated_by_id: 1,
|
||||
)
|
||||
|
||||
Group.create_if_not_exists(
|
||||
id: 1,
|
||||
|
@ -1862,6 +1869,14 @@ Channel.create_if_not_exists(
|
|||
active: true,
|
||||
)
|
||||
|
||||
Report::Profile.create_if_not_exists(
|
||||
name: '-all-',
|
||||
condition: {},
|
||||
active: true,
|
||||
updated_by_id: 1,
|
||||
created_by_id: 1,
|
||||
)
|
||||
|
||||
network = Network.create_if_not_exists(
|
||||
id: 1,
|
||||
name: 'base',
|
||||
|
|
Loading…
Reference in a new issue