diff --git a/app/assets/javascripts/app/controllers/report.js.coffee b/app/assets/javascripts/app/controllers/report.js.coffee index 99b203042..dca5b6eff 100644 --- a/app/assets/javascripts/app/controllers/report.js.coffee +++ b/app/assets/javascripts/app/controllers/report.js.coffee @@ -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) diff --git a/app/assets/javascripts/app/views/report/download_header.jst.eco b/app/assets/javascripts/app/views/report/download_header.jst.eco index 2c06034c9..03e04c277 100644 --- a/app/assets/javascripts/app/views/report/download_header.jst.eco +++ b/app/assets/javascripts/app/views/report/download_header.jst.eco @@ -4,7 +4,7 @@ <% for profile in @profiles: %> <% for backend in @metric.backend: %> <% if backend.dataDownload: %> -
<%- @P(ticket, 'number') %> | +target="_blank"<% end %> href="<%= @url %><%= ticket.id %>"><%- @P(ticket, 'number') %> | <%- @P(ticket, 'title') %> | <%- @P(ticket, 'state') %> | <%- @P(ticket, 'group') %> | diff --git a/app/controllers/reports_controller.rb b/app/controllers/reports_controller.rb index 2ae053ef0..787361c6b 100644 --- a/app/controllers/reports_controller.rb +++ b/app/controllers/reports_controller.rb @@ -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 diff --git a/app/models/report.rb b/app/models/report.rb index 22cb72ff2..3f33539a9 100644 --- a/app/models/report.rb +++ b/app/models/report.rb @@ -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 diff --git a/db/seeds.rb b/db/seeds.rb index 6bf34ec19..8824661ea 100644 --- a/db/seeds.rb +++ b/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',