diff --git a/static/moderator.js b/static/moderator.js index 3a9a96b085e9db042226da5c0add71bbc0995771..2094af3ca6ac7421bfcbe90d0377573eaa468f99 100644 --- a/static/moderator.js +++ b/static/moderator.js @@ -294,46 +294,58 @@ var moderator = { resize: function() { $(".plot-view").each(function () {Plotly.Plots.resize(this)}); }, + createsingleplot: function(htmlobj, id) { + if (!htmlobj.id && id) + htmlobj.id = "plot-"+id; + $(htmlobj).html('<div class="plot-loader"></div>'); + $.ajax({ + divobj: htmlobj, + autorefresh: htmlobj.dataset.reload, + method: "GET", + url: htmlobj.dataset.url, + dataType: "json", + error: function (jqXHR, textStatus, errorThrow) { + $(this.divobj).html('<div class="plot-error">'+errorThrow+'</div>'); + }, + success: function (traces) { + var layout = {margin: {l: 30, r: 30, t: 10, b: 70, pad: 0}}; + for (var i = 0; i < traces.length; i ++) { + traces[i].type = this.divobj.dataset.type; + } + if (this.divobj.dataset.type == "pie") + layout.showlegend = false; + traces.sort(function (a, b) { + asum = 0; + bsum = 0; + for (var i = 0; i < a.y.length; i++) + asum += a.y[i] + for (var i = 0; i < b.y.length; i++) + bsum += b.y[i] + return bsum-asum; + }); + for (var i = 0; i < traces.length; i++) { + if (i > 15) { + traces[i].visible = "legendonly"; + } + } + $(this.divobj).html(""); + Plotly.newPlot(this.divobj.id, traces, layout, { "modeBarButtonsToRemove": ['sendDataToCloud','hoverCompareCartesian'], "displaylogo": false}); + }, + complete: function() { + if (this.autorefresh) { + setTimeout( + function(obj){ + moderator.plots.createsingleplot(obj); + }, this.autorefresh, this.divobj); + } + } + }); + }, createplots: function (selector) { var l = $(selector); for (var i = 0; i < l.length; i ++) { - if (!l[i].id) - l[i].id = "plot-"+i; - $(l[i]).html('<div class="plot-loader"></div>'); - $.ajax({ - divobj: l[i], - method: "GET", - url: l[i].dataset.url, - dataType: "json", - error: function (jqXHR, textStatus, errorThrow) { - $(this.divobj).html('<div class="plot-error">'+errorThrow+'</div>'); - }, - success: function (traces) { - var layout = {margin: {l: 30, r: 30, t: 10, b: 70, pad: 0}}; - for (var i = 0; i < traces.length; i ++) { - traces[i].type = this.divobj.dataset.type; - } - if (this.divobj.dataset.type == "pie") - layout.showlegend = false; - traces.sort(function (a, b) { - asum = 0; - bsum = 0; - for (var i = 0; i < a.y.length; i++) - asum += a.y[i] - for (var i = 0; i < b.y.length; i++) - bsum += b.y[i] - return bsum-asum; - }); - for (var i = 0; i < traces.length; i++) { - if (i > 15) { - traces[i].visible = "legendonly"; - } - } - $(this.divobj).html(""); - Plotly.newPlot(this.divobj.id, traces, layout, { "modeBarButtonsToRemove": ['sendDataToCloud','hoverCompareCartesian'], "displaylogo": false}); - } - }); - }; + moderator.plots.createsingleplot(l[i], i); + } }, }, init: function () { diff --git a/templates/lecture.html b/templates/lecture.html index 666787bda60a858da5aee2a9b8cf30d32d0f4fd3..f5c780c536504076a37f4bd731fcf80817b5cb4e 100644 --- a/templates/lecture.html +++ b/templates/lecture.html @@ -86,7 +86,7 @@ </div> <div class="col-md-6 col-xs-12"> <p class="text-center">Zuschauer im Livestream</p> - <div class="plot-view" data-url="{{url_for('stats_generic', req="live_views", param=lecture.id)}}"></div> + <div class="plot-view" data-url="{{url_for('stats_generic', req="live_views", param=lecture.id)}}" data-reload="60000"></div> </div> </div> </div>