From 97292e08994c105a01d30589cb56353950e63ab9 Mon Sep 17 00:00:00 2001 From: Mokaddem <mokaddem.sami@gmail.com> Date: Fri, 23 Dec 2016 15:44:46 +0100 Subject: [PATCH] Updated web interface to handle new mixer module. and fixed one dependency bug. --- bin/Global.py | 4 +- bin/Mixer.py | 2 +- var/www/Flasks/Flask_trendingmodules.py | 1 + var/www/static/js/indexjavascript.js | 103 ++++++++++++++++-------- var/www/templates/index.html | 51 +++++++----- 5 files changed, 107 insertions(+), 54 deletions(-) diff --git a/bin/Global.py b/bin/Global.py index a29c3b86..bab45b47 100755 --- a/bin/Global.py +++ b/bin/Global.py @@ -59,7 +59,7 @@ if __name__ == '__main__': if int(time.time() - time_1) > 30: to_print = 'Global; ; ; ;glob Processed {0} paste(s)'.format(processed_paste) print to_print - publisher.info(to_print) + #publisher.info(to_print) time_1 = time.time() processed_paste = 0 time.sleep(1) @@ -72,8 +72,6 @@ if __name__ == '__main__': os.makedirs(dirname) with open(filename, 'wb') as f: - print gzip64encoded - print base64.standard_b64decode(gzip64encoded) f.write(base64.standard_b64decode(gzip64encoded)) p.populate_set_out(filename) processed_paste+=1 diff --git a/bin/Mixer.py b/bin/Mixer.py index e1804263..558cf4ec 100755 --- a/bin/Mixer.py +++ b/bin/Mixer.py @@ -150,7 +150,7 @@ if __name__ == '__main__': else: print "Empty Queues: Waiting..." if int(time.time() - time_1) > refresh_time: - to_print = 'Mixer; ; ; ;mixer_all Processed {0} paste(s) in {1}sec'.format(processed_paste, refresh_time) + to_print = 'Mixer; ; ; ;mixer_all All_feeders Processed {0} paste(s) in {1}sec'.format(processed_paste, refresh_time) print to_print publisher.info(to_print) processed_paste = 0 diff --git a/var/www/Flasks/Flask_trendingmodules.py b/var/www/Flasks/Flask_trendingmodules.py index 73cef7f5..06cb65c3 100644 --- a/var/www/Flasks/Flask_trendingmodules.py +++ b/var/www/Flasks/Flask_trendingmodules.py @@ -6,6 +6,7 @@ ''' import redis import datetime +from Date import Date import flask from flask import Flask, render_template, jsonify, request diff --git a/var/www/static/js/indexjavascript.js b/var/www/static/js/indexjavascript.js index 8d50ea9d..3710e00b 100644 --- a/var/www/static/js/indexjavascript.js +++ b/var/www/static/js/indexjavascript.js @@ -1,10 +1,16 @@ -var time_since_last_pastes_num; +var time_since_last_pastes_num = {}; +var data_for_processed_paste = { "global": [] }; +var list_feeder = ["global"]; +var htmltext_graph_container = "<div class=\"col-lg-6\"> <div id=\"$1\" style=\"height: 90px; padding: 0px; position: relative;\"></div></div>"; +window.paste_num_tabvar_all = {}; //If we do not received info from global, set pastes_num to 0 function checkIfReceivedData(){ - if ((new Date().getTime() - time_since_last_pastes_num) > 45*1000) - window.paste_num_tabvar = 0; - setTimeout(checkIfReceivedData, 45*1000); + for (i in list_feeder) { + if ((new Date().getTime() - time_since_last_pastes_num[list_feeder[i]]) > 45*1000) + window.paste_num_tabvar_all[list_feeder[i]] = 0; + setTimeout(checkIfReceivedData, 45*1000); + } } setTimeout(checkIfReceivedData, 45*1000); @@ -24,34 +30,41 @@ function update_values() { // Plot and update the number of processed pastes -$(function() { - var data = []; +// BEGIN PROCESSED PASTES var default_minute = (typeof window.default_minute !== "undefined") ? parseInt(window.default_minute) : 10; var totalPoints = 60*parseInt(default_minute); //60s*minute var curr_max = 0; - function getData() { - if (data.length > 0){ - var data_old = data[0]; - data = data.slice(1); - curr_max = curr_max == data_old ? Math.max.apply(null, data) : curr_max; + function getData(dataset) { + var curr_data; + if (data_for_processed_paste[dataset] === undefined) { // create feeder dataset if not exists yet + data_for_processed_paste[dataset] = []; + } + curr_data = data_for_processed_paste[dataset]; + + if (curr_data.length > 0){ + var data_old = curr_data[0]; + curr_data = curr_data.slice(1); + curr_max = curr_max == data_old ? Math.max.apply(null, curr_data) : curr_max; } - while (data.length < totalPoints) { - var y = (typeof window.paste_num_tabvar !== "undefined") ? parseInt(window.paste_num_tabvar) : 0; + while (curr_data.length < totalPoints) { + //var y = (typeof window.paste_num_tabvar_all[dataset] !== "undefined") ? parseInt(window.paste_num_tabvar_all[dataset]) : 0; + var y = (typeof window.paste_num_tabvar_all[dataset] !== "undefined") ? parseInt(window.paste_num_tabvar_all[dataset]) : 0; curr_max = y > curr_max ? y : curr_max; - data.push(y); + curr_data.push(y); } // Zip the generated y values with the x values var res = []; - for (var i = 0; i < data.length; ++i) { - res.push([i, data[i]]) - } + for (var i = 0; i < curr_data.length; ++i) { + res.push([i, curr_data[i]]) + } + data_for_processed_paste[dataset] = curr_data; return res; } var updateInterval = 1000; - var options = { + var options_processed_pastes = { series: { shadowSize: 1 }, lines: { fill: true, fillColor: { colors: [ { opacity: 1 }, { opacity: 0.1 } ] }}, yaxis: { min: 0, max: 40 }, @@ -61,17 +74,19 @@ $(function() { borderWidth: 0 }, }; - var plot = $.plot("#realtimechart", [ getData() ], options); - - function update() { - plot.setData([getData()]); - plot.getOptions().yaxes[0].max = curr_max; - plot.setupGrid(); - plot.draw(); - setTimeout(update, updateInterval); + var total_proc = $.plot("#global", [ getData("global") ], options_processed_pastes); + + function update_processed_pastes(graph, dataset) { + graph.setData([getData(dataset)]); + graph.getOptions().yaxes[0].max = curr_max; + graph.setupGrid(); + graph.draw(); + setTimeout(function(){ update_processed_pastes(graph, dataset); }, updateInterval); } - update(); -}); + update_processed_pastes(total_proc, "global"); + + +// END PROCESSED PASTES function initfunc( csvay, scroot) { window.csv = csvay; @@ -114,10 +129,34 @@ function create_log_table(obj_json) { var chansplit = obj_json.channel.split('.'); var parsedmess = obj_json.data.split(';'); - if (parsedmess[0] == "Global"){ - var paste_processed = parsedmess[4].split(" ")[2]; - window.paste_num_tabvar = paste_processed; - time_since_last_pastes_num = new Date().getTime(); + + if (parsedmess[0] == "Mixer"){ + var feeder = parsedmess[4].split(" ")[1]; + var paste_processed = parsedmess[4].split(" ")[3]; + var msg_type = parsedmess[4].split(" ")[2]; + + if (feeder == "All_feeders"){ + window.paste_num_tabvar_all["global"] = paste_processed; + time_since_last_pastes_num["global"] = new Date().getTime(); + } else { + + if (list_feeder.indexOf(feeder) == -1) { + list_feeder.push(feeder); + //ADD HTML CONTAINER + PLOT THE GRAPH, ADD IT TO A LIST CONTAING THE PLOTED GRAPH + $("#panelbody").append("<strong>"+feeder+"</strong>"); + $("#panelbody").append("<div class=\"row\"> <div class=\"col-lg-12\">" + htmltext_graph_container.replace("$1", feeder+"Proc") + htmltext_graph_container.replace("$1", feeder+"Dup")+"</div></div>"); + var new_feederProc = $.plot("#"+feeder+"Proc", [ getData(feeder+"Proc") ], options_processed_pastes); + options_processed_pastes.colors = ["#edc240"]; + var new_feederDup = $.plot("#"+feeder+"Dup", [ getData(feeder+"Dup") ], options_processed_pastes); + options_processed_pastes.colors = ["#a971ff"]; + update_processed_pastes(new_feederProc, feeder+"Proc"); + update_processed_pastes(new_feederDup, feeder+"Dup"); + } + + var feederName = msg_type == "Duplicated" ? feeder+"Dup" : feeder+"Proc"; + window.paste_num_tabvar_all[feederName] = paste_processed; + time_since_last_pastes_num[feederName] = new Date().getTime(); + } return; } diff --git a/var/www/templates/index.html b/var/www/templates/index.html index 74b45c01..278bc873 100644 --- a/var/www/templates/index.html +++ b/var/www/templates/index.html @@ -52,10 +52,10 @@ <!-- /.sidebar-collapse --> <div class="panel panel-default"> <div class="panel-heading"> - <i class="fa fa-dashboard fa-fw"></i> Pastes since {{ default_minute }} min + <i class="fa fa-dashboard fa-fw"></i> Total pastes since {{ default_minute }} min </div> <div class="panel-body"> - <div id="realtimechart" style="height: 90px; padding: 0px; position: relative;"></div> + <div id="global" style="height: 90px; padding: 0px; position: relative;"></div> </div> </div> <!-- <div id="Graph_paste_num" style="height:90px; width:100%;"></div> --> @@ -91,23 +91,38 @@ </div> <div class="row"> - <div class="col-lg-12"> - <div class="panel panel-default"> - <div class="panel-heading"> - <i class="fa fa-bar-chart-o fa-fw"></i> Queues Monitor - </div> - <div class="panel-body"> - <div class="row"> - <div class="col-lg-6" id="Graph" style="height:400px; width:48%;"></div> - <div class="col-lg-6" id="Graph2" style="height:400px; width:48%;"></div> - </div> - <!-- /.row --> + <div class="col-lg-8"> + <div class="panel panel-default"> + <div class="panel-heading"> + <i class="fa fa-bar-chart-o fa-fw"></i> <i class="fa fa-dashboard fa-fw"></i> <i class="fa fa-copy"></i>Feeder(s) Monitor: Processed pastes and filtered duplicated </div> - <!-- /.panel-body --> - </div> - <!-- /.panel --> - </div> - <!-- /.col-lg-8 --> + <div id="panelbody" class="panel-body" style="height:489px;"> + + + </div> + <!-- /.panel-body --> + </div> + <!-- /.panel --> + </div> + <!-- /.col-lg-6 --> + <div class="col-lg-4"> + <div class="panel panel-default"> + <div class="panel-heading"> + <i class="fa fa-bar-chart-o fa-fw"></i> Queues Monitor + </div> + <div class="panel-body"> + <div class="row"> + <div class="col-lg-6" id="Graph" style="height:195px; width:88%;"></div> + <div style="height:10px;"></div> + <div class="col-lg-6" id="Graph2" style="height:195px; width:88%;"></div> + </div> + <!-- /.row --> + </div> + <!-- /.panel-body --> + </div> + <!-- /.panel --> + </div> + <!-- /.col-lg-6 --> <div class="col-lg-12"> <div class="panel panel-default"> <div class="panel-heading">