diff --git a/app/assets/javascripts/app/controllers/_dashboard/stats.js.coffee b/app/assets/javascripts/app/controllers/_dashboard/stats.js.coffee index ffde6d8af..7fa9674ba 100644 --- a/app/assets/javascripts/app/controllers/_dashboard/stats.js.coffee +++ b/app/assets/javascripts/app/controllers/_dashboard/stats.js.coffee @@ -1,16 +1,16 @@ class App.DashboardStats extends App.Controller constructor: -> super + @load() + @bind('dashboard_stats_rebuild', @load) + load: => stats_store = App.StatsStore.first() if stats_store @render(stats_store.data) else @render() - # bind to rebuild view event - @bind('dashboard_stats_rebuild', @render) - render: (data = {}) -> if !data.TicketResponseTime data.TicketResponseTime = @@ -63,7 +63,7 @@ class App.DashboardStats extends App.Controller if data.TicketResponseTime @renderWidgetClockFace data.TicketResponseTime.handling_time - renderWidgetClockFace: (time) => + renderWidgetClockFace: (time, max_time = 60) => canvas = @el.find 'canvas' ctx = canvas.get(0).getContext '2d' radius = 26 @@ -73,14 +73,14 @@ class App.DashboardStats extends App.Controller canvas.attr 'width', 2 * radius canvas.attr 'height', 2 * radius - time = 60 if time > 60 + time = max_time if time > max_time - handlingTimeColors = - 5: '#38AE6A' # supergood - 10: '#A9AC41' # good - 15: '#FAAB00' # ok - 20: '#F6820B' # bad - 25: '#F35910' # superbad + handlingTimeColors = {} + handlingTimeColors[max_time/12] = '#38AE6A' # supergood + handlingTimeColors[max_time/6] = '#A9AC41' # good + handlingTimeColors[max_time/4] = '#FAAB00' # ok + handlingTimeColors[max_time/3] = '#F6820B' # bad + handlingTimeColors[max_time/2] = '#F35910' # superbad for handlingTime, timeColor of handlingTimeColors if time <= handlingTime @@ -88,7 +88,8 @@ class App.DashboardStats extends App.Controller break # 30% background - ctx.globalAlpha = 0.3 + if time isnt 0 + ctx.globalAlpha = 0.3 ctx.fillStyle = backgroundColor ctx.beginPath() ctx.arc radius, radius, radius, 0, Math.PI * 2, true @@ -100,7 +101,7 @@ class App.DashboardStats extends App.Controller ctx.beginPath() ctx.moveTo radius, radius - arcsector = Math.PI * 2 * time/60 + arcsector = Math.PI * 2 * time/max_time ctx.arc radius, radius, radius, -Math.PI/2, arcsector - Math.PI/2, false ctx.lineTo radius, radius ctx.closePath() diff --git a/app/models/stats_store.rb b/app/models/stats_store.rb index af459f58e..fc7bf6035 100644 --- a/app/models/stats_store.rb +++ b/app/models/stats_store.rb @@ -68,7 +68,7 @@ class StatsStore < ApplicationModel if item item.data = data item.save - return true + return item end # lookups diff --git a/lib/stats.rb b/lib/stats.rb index 5b659068a..986e23bce 100644 --- a/lib/stats.rb +++ b/lib/stats.rb @@ -71,12 +71,24 @@ returns data.each {|backend, result| data_for_user[backend.to_app_model] = result } - StatsStore.sync( + state_store = StatsStore.sync( object: 'User', o_id: user_id, key: 'dashboard', data: data_for_user, ) + + message = { + event: 'resetCollection', + data: { + state_store.class.to_app_model => [state_store], + }, + } + Sessions.send_to(user_id, message) + event = { + event: 'dashboard_stats_rebuild', + } + Sessions.send_to(user_id, event) } true