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:
Felix Niklas 2015-10-20 17:22:48 +02:00
commit a871113525
6 changed files with 60 additions and 58 deletions

View file

@ -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 = []
@ -207,26 +208,10 @@ class Download extends App.Controller
@html App.view('report/download_header')(
reports: reports
profiles: profiles
backendSelected: @backendSelected
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')
)
@tableUpdate()
tableUpdate: (e) =>
@ -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)

View file

@ -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 %>

View file

@ -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>

View file

@ -76,12 +76,18 @@ class ReportsController < ApplicationController
end
# get data
render json: {
data: {
start: start,
stop: stop,
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: {
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

View file

@ -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

View file

@ -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',