From 68d815da273aae959c49dd355a58f067b24edef3 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Sun, 21 Mar 2021 15:02:32 +0000 Subject: [PATCH] Fixes #3461 - Dashboard stats widgets are sometimes lost/empty --- .../app/controllers/_dashboard/stats.coffee | 11 ++++- .../controllers/_dashboard/stats/_base.coffee | 10 +---- .../stats/ticket_channel_distribution.jst.eco | 42 +++++++++---------- .../dashboard/stats/ticket_escalation.jst.eco | 22 +++++----- .../dashboard/stats/ticket_in_process.jst.eco | 22 +++++----- .../stats/ticket_load_measure.jst.eco | 36 ++++++++-------- .../dashboard/stats/ticket_reopen.jst.eco | 22 +++++----- .../stats/ticket_waiting_time.jst.eco | 30 +++++++------ 8 files changed, 93 insertions(+), 102 deletions(-) diff --git a/app/assets/javascripts/app/controllers/_dashboard/stats.coffee b/app/assets/javascripts/app/controllers/_dashboard/stats.coffee index ee23a1737..0b2581d99 100644 --- a/app/assets/javascripts/app/controllers/_dashboard/stats.coffee +++ b/app/assets/javascripts/app/controllers/_dashboard/stats.coffee @@ -19,8 +19,17 @@ class App.DashboardStats extends App.Controller for widget in widgets if @permissionCheck(widget.permission) try + + el = @el.find(".column.#{widget.className}") + localEl = $("
") + + if !el.get(0) + @el.append(localEl) + else + el.replaceWith(localEl) + new widget.controller( - parentEl: @el + el: localEl className: widget.className ) @$('.js-stat-help').tooltip() diff --git a/app/assets/javascripts/app/controllers/_dashboard/stats/_base.coffee b/app/assets/javascripts/app/controllers/_dashboard/stats/_base.coffee index 5beb6fcc6..f849b550d 100644 --- a/app/assets/javascripts/app/controllers/_dashboard/stats/_base.coffee +++ b/app/assets/javascripts/app/controllers/_dashboard/stats/_base.coffee @@ -1,12 +1,6 @@ class App.ControllerDashboardStatsBase extends App.Controller - constructor: (params) -> - if params.parentEl - el = params.parentEl.find(".column.#{params.className}") - if !el.get(0) - el = $("
") - params.parentEl.append(el) - params.el = el - super(params) + constructor: -> + super @load() load: => diff --git a/app/assets/javascripts/app/views/dashboard/stats/ticket_channel_distribution.jst.eco b/app/assets/javascripts/app/views/dashboard/stats/ticket_channel_distribution.jst.eco index 4b713a384..6b5db8406 100644 --- a/app/assets/javascripts/app/views/dashboard/stats/ticket_channel_distribution.jst.eco +++ b/app/assets/javascripts/app/views/dashboard/stats/ticket_channel_distribution.jst.eco @@ -1,25 +1,23 @@ -
-
-
- <%- @T('Channel Distribution') %> -
- <%- @Icon('help') %> -
-
-
- <% for id, channel of @StatsTicketChannelDistribution.channels: %> -
-
- <%- @Icon(channel.icon, 'stat-channel-icon') %> -
-
-
-
-
-
<%- channel.overal_percentage %>%
-
-
- <% end %> +
+
+ <%- @T('Channel Distribution') %> +
+ <%- @Icon('help') %>
+
+ <% for id, channel of @StatsTicketChannelDistribution.channels: %> +
+
+ <%- @Icon(channel.icon, 'stat-channel-icon') %> +
+
+
+
+
+
<%- channel.overal_percentage %>%
+
+
+ <% end %> +
diff --git a/app/assets/javascripts/app/views/dashboard/stats/ticket_escalation.jst.eco b/app/assets/javascripts/app/views/dashboard/stats/ticket_escalation.jst.eco index ae42aca64..1420431c9 100644 --- a/app/assets/javascripts/app/views/dashboard/stats/ticket_escalation.jst.eco +++ b/app/assets/javascripts/app/views/dashboard/stats/ticket_escalation.jst.eco @@ -1,15 +1,13 @@ -
-
-
- <%- @T('Mood') %> -
- <%- @Icon('help') %> -
+
+
+ <%- @T('Mood') %> +
+ <%- @Icon('help') %>
-
- <%- @Icon("mood-#{@StatsTicketEscalation.state}", 'stat-icon mood-icon') %> -
-
<%- @T('%s of my tickets escalated.', @StatsTicketEscalation.own) %>
-
<%- @T('Total: %s', @StatsTicketEscalation.total) %>
+
+ <%- @Icon("mood-#{@StatsTicketEscalation.state}", 'stat-icon mood-icon') %> +
+
<%- @T('%s of my tickets escalated.', @StatsTicketEscalation.own) %>
+
<%- @T('Total: %s', @StatsTicketEscalation.total) %>
diff --git a/app/assets/javascripts/app/views/dashboard/stats/ticket_in_process.jst.eco b/app/assets/javascripts/app/views/dashboard/stats/ticket_in_process.jst.eco index f1c82a833..a6268755b 100644 --- a/app/assets/javascripts/app/views/dashboard/stats/ticket_in_process.jst.eco +++ b/app/assets/javascripts/app/views/dashboard/stats/ticket_in_process.jst.eco @@ -1,15 +1,13 @@ -
-
-
- <%- @T('Your tickets in process') %> -
- <%- @Icon('help') %> -
+
+
+ <%- @T('Your tickets in process') %> +
+ <%- @Icon('help') %>
-
- <%- @Icon('in-process', "in-process-icon #{@StatsTicketInProcess.state}-color") %> -
-
<%- @T('%s% are currently in process', @StatsTicketInProcess.percent) %>
-
<%- @T('Average: %s%', @StatsTicketInProcess.average_per_agent) %>
+
+ <%- @Icon('in-process', "in-process-icon #{@StatsTicketInProcess.state}-color") %> +
+
<%- @T('%s% are currently in process', @StatsTicketInProcess.percent) %>
+
<%- @T('Average: %s%', @StatsTicketInProcess.average_per_agent) %>
diff --git a/app/assets/javascripts/app/views/dashboard/stats/ticket_load_measure.jst.eco b/app/assets/javascripts/app/views/dashboard/stats/ticket_load_measure.jst.eco index 592efae29..df346cc5d 100644 --- a/app/assets/javascripts/app/views/dashboard/stats/ticket_load_measure.jst.eco +++ b/app/assets/javascripts/app/views/dashboard/stats/ticket_load_measure.jst.eco @@ -1,22 +1,20 @@ -
-
-
- <%- @T('Assigned') %> -
- <%- @Icon('help') %> -
+
+
+ <%- @T('Assigned') %> +
+ <%- @Icon('help') %>
-
-
- <% stack_counter = parseInt(@StatsTicketLoadMeasure.percent*0.16) %> - <% for count in [1..stack_counter]: %> - <%- @Icon('one-ticket', "one-ticket #{@StatsTicketLoadMeasure.state}-color") %> - <% end %> -
- <%- @Icon('total-tickets', 'total-tickets') %> -
- -
<%- @T('Tickets assigned to me: %s of %s', @StatsTicketLoadMeasure.own, @StatsTicketLoadMeasure.total) %>
-
<%- @T('Average: %s', @StatsTicketLoadMeasure.average_per_agent) %>
+
+
+ <% stack_counter = parseInt(@StatsTicketLoadMeasure.percent*0.16) %> + <% for count in [1..stack_counter]: %> + <%- @Icon('one-ticket', "one-ticket #{@StatsTicketLoadMeasure.state}-color") %> + <% end %> +
+ <%- @Icon('total-tickets', 'total-tickets') %> +
+ +
<%- @T('Tickets assigned to me: %s of %s', @StatsTicketLoadMeasure.own, @StatsTicketLoadMeasure.total) %>
+
<%- @T('Average: %s', @StatsTicketLoadMeasure.average_per_agent) %>
diff --git a/app/assets/javascripts/app/views/dashboard/stats/ticket_reopen.jst.eco b/app/assets/javascripts/app/views/dashboard/stats/ticket_reopen.jst.eco index 4e13354e0..2a0c1eeb5 100644 --- a/app/assets/javascripts/app/views/dashboard/stats/ticket_reopen.jst.eco +++ b/app/assets/javascripts/app/views/dashboard/stats/ticket_reopen.jst.eco @@ -1,15 +1,13 @@ -
-
-
- <%- @T('Reopening rate') %> -
- <%- @Icon('help') %> -
+
+
+ <%- @T('Reopening rate') %> +
+ <%- @Icon('help') %>
-
- <%- @Icon('reopening', "reopening-icon #{@StatsTicketReopen.state}-color") %> -
-
<%- @T('%s% have been reopened', @StatsTicketReopen.percent) %>
-
<%- @T('Average: %s%', @StatsTicketReopen.average_per_agent) %>
+
+ <%- @Icon('reopening', "reopening-icon #{@StatsTicketReopen.state}-color") %> +
+
<%- @T('%s% have been reopened', @StatsTicketReopen.percent) %>
+
<%- @T('Average: %s%', @StatsTicketReopen.average_per_agent) %>
diff --git a/app/assets/javascripts/app/views/dashboard/stats/ticket_waiting_time.jst.eco b/app/assets/javascripts/app/views/dashboard/stats/ticket_waiting_time.jst.eco index 7ef19c345..76230f199 100644 --- a/app/assets/javascripts/app/views/dashboard/stats/ticket_waiting_time.jst.eco +++ b/app/assets/javascripts/app/views/dashboard/stats/ticket_waiting_time.jst.eco @@ -1,19 +1,17 @@ -
-
-
- <%- @T('∅ Waiting time today') %> -
- <%- @Icon('help') %> -
+
+
+ <%- @T('∅ Waiting time today') %> +
+ <%- @Icon('help') %>
-
-
- <%- @Icon('stopwatch', 'stat-icon stopwatch-icon') %> - -
-
-
-
<%- @T('My handling time: %s minutes', @StatsTicketWaitingTime.handling_time) %>
-
<%- @T('Average: %s minutes', @StatsTicketWaitingTime.average_per_agent) %>
+
+
+ <%- @Icon('stopwatch', 'stat-icon stopwatch-icon') %> + +
+
+
+
<%- @T('My handling time: %s minutes', @StatsTicketWaitingTime.handling_time) %>
+
<%- @T('Average: %s minutes', @StatsTicketWaitingTime.average_per_agent) %>