From adf885a772771aa41bcfde6a4351b690475ec638 Mon Sep 17 00:00:00 2001 From: Ringo Watanabe Date: Wed, 5 Sep 2018 09:53:39 +0100 Subject: [PATCH] Add detailed name states --- cycle.js | 1 + interop.js | 10 ++++- main.js | 18 ++++++++ www/css/main.css | 16 ++++++- www/index.html | 25 ++++++++++- www/js/renderer.js | 109 ++++++++++++++++++++++++++++++++++++++++++--- 6 files changed, 171 insertions(+), 8 deletions(-) diff --git a/cycle.js b/cycle.js index 0339c0d..b6c6f45 100644 --- a/cycle.js +++ b/cycle.js @@ -8,6 +8,7 @@ function Cycle() this.number = 0; //number of new posts this cycle this.countries = {}; //stored as : + this.namefags = {}; //stored as : this.timestamp = new Date() this.threads=0; //number of new threads diff --git a/interop.js b/interop.js index d928666..8c6c087 100644 --- a/interop.js +++ b/interop.js @@ -15,6 +15,14 @@ function cycleAdd(rets, ar) ret.countries[index]= ar[i].countries[index]; } + for(var index in ar[i].namefags) + { + if(index in ret.namefags) + ret.namefags[index]+=ar[i].namefags[index]; + else + ret.namefags[index]= ar[i].namefags[index]; + } + ret.threads+=ar[i].threads; ret.comments+=ar[i].comments; ret.subjects+=ar[i].subjects; @@ -47,7 +55,7 @@ function cycleAcc(rets, ar, n) ret.countries[index]= acc(ret.countries[index], ar[i].countries[index], n); else ret.countries[index]= acc(0, ar[i].countries[index], n); - }*/ //TODO: Implement this + }*/ //TODO: Implement this & names? ret.threads= acc(ret.threads, ar[i].threads, n); ret.comments = acc(ret.comments, ar[i].comments, n); diff --git a/main.js b/main.js index c4e46e8..7708a23 100644 --- a/main.js +++ b/main.js @@ -233,6 +233,22 @@ server.listen(config.PORT); logger.log("Listening on port "+config.PORT); +function addNames(cycle, json) +{ + var str = "Anonymous"; + if("name" in json) + str = json["name"]; + if("trip" in json) + str = str+json["trip"]; + if(str!="Anonymous") + { + if(str in cycle.namefags) + cycle.namefags[str] += 1; + else + cycle.namefags[str] = 1; + } +} + var backend = setInterval(function() { //logger.log("Polling backend"); process.execFile(config.PYTHON_EXECUTABLE, [config.RTBWCTL_FILENAME, config.BACKEND_SOCKET, "get-clear", "--data", lastNumber], function(error,stdout,stderr) { @@ -278,6 +294,8 @@ var backend = setInterval(function() { cycle.names+=1; else if(bein(json[i], "trip")) cycle.trips+=1; + + addNames(cycle, json[i]); } cycle.interval = timeAverage(timeInters); diff --git a/www/css/main.css b/www/css/main.css index 72614a7..11dd47a 100644 --- a/www/css/main.css +++ b/www/css/main.css @@ -38,11 +38,25 @@ em { } .expshare { - border:solid; + border:solid 1px; border-radius: 10px; color: #e5e8e6; } +.expshare2 { + position: relative; +} + +.indentbar { + background-color:#215615; + height: 100%; + width:10px; + position: absolute; + left: 0; + top: 0; + border-radius: 2px; +} + .tab { border: 1px solid; border-radius: 3px; diff --git a/www/index.html b/www/index.html index c6c4092..93ab9d3 100644 --- a/www/index.html +++ b/www/index.html @@ -63,6 +63,18 @@ + Identity breakdown: + +
+ +

Session stats

    @@ -105,7 +117,18 @@ - + Identity breakdown: + +
    + +

    Average comparisons

    diff --git a/www/js/renderer.js b/www/js/renderer.js index 2093cfa..13c493a 100644 --- a/www/js/renderer.js +++ b/www/js/renderer.js @@ -13,6 +13,9 @@ var tThreadsCan = $('#tThreads'); var tIdsCan= $('#tIds'); var tSubjectsCan = $('#tSubjects'); +var tNmaesDetailedCan = $('#tNmaesDetailed'); +var tsNmaesDetailedCan = $('#tsNmaesDetailed'); + var tsflagCan = $('#tsPostsByFlag'); var tsflagPieCan = $('#tsPostsByFlagPie'); var tsNmaesCan = $('#tsNmaes'); @@ -47,6 +50,22 @@ function _lerpRGB(a,b,t) }; } +function addExpander(ex, ct) +{ + $(ex).on("click", function() { + if($(ct).is(":hidden")) { + $(ct).slideDown(500, function() { + + $(ex).text("-"); + }); + } else { + $(ct).slideUp(500, function() { + $(ex).text("+"); + }); + } + }); +} + function lerpRGB(a,b,c,s,l) { var t = s/l; @@ -177,6 +196,30 @@ function updateSection(gr, pfx, allTime, allTimeAverage,data=null) } + allTime.namefags["Anonymous"] = (allTime.number-(allTime.names+allTime.trips+allTime.nametrips)); + + var nshare = flagShare(allTime.number, allTime.namefags); + nshare.sort(function (a, b) { + return a.total < b.total ? 1 : -1; + }); + + gr.anamedpie.data.labels.length = + gr.anamedpie.data.datasets[0].data.length = + gr.anamedpie.data.datasets[0].backgroundColor.length = 0; + + if(!$(gr.anamedpie.options.showAnon).is(":checked")) { + for(var i in nshare) + if(nshare[i]["key"] == "Anonymous") + delete nshare[i]; + } + for(var i in nshare) + { + gr.anamedpie.data.labels.push(nshare[i]["key"]); + gr.anamedpie.data.datasets[0].data.push(nshare[i]["total"]); + + gr.anamedpie.data.datasets[0].backgroundColor.push(colstr(lerpRGB(cols,colm,cole,i,nshare.length))); + } + gr.anamepie.data.datasets[0].data[0] = allTime.number-(allTime.names+allTime.trips+allTime.nametrips); gr.anamepie.data.datasets[0].data[1] = allTime.names; @@ -198,6 +241,7 @@ function updateSection(gr, pfx, allTime, allTimeAverage,data=null) gr.aflag.update(); gr.aflagpie.update(); gr.anamepie.update(); + gr.anamedpie.update(); gr.aimagepie.update(); gr.athreadpie.update(); gr.aidspie.update(); @@ -395,6 +439,7 @@ function begin() { maintainAspectRatio: false, } }); + var chartAFlagsPie = new Chart(tflagPieCan, { type: "pie", data: { @@ -414,6 +459,27 @@ function begin() { } } }); + + var chartANamesDetailedPie = new Chart(tNmaesDetailedCan, { + type: "pie", + data: { + labels: ["Anonymous"], + datasets: [{ + label: "Share", + backgroundColor: ["blue","green","red"], + //fillColor: ["blue", "green", "red"], + borderColor: 'rgba(255,255,255, 0.75)', + data: [1] + }] + }, options: { + maintainAspectRatio: false, + animation: false, + legend: { + display: false + }, + showAnon: '#at_idbd_showanon' + } + }); var chartAFlags = new Chart(tflagCan, { type: "bar", @@ -533,6 +599,27 @@ function begin() { } }); + var chartSNamesDetailedPie = new Chart(tsNmaesDetailedCan, { + type: "pie", + data: { + labels: ["Anonymous"], + datasets: [{ + label: "Share", + backgroundColor: ["blue","green","red"], + //fillColor: ["blue", "green", "red"], + borderColor: 'rgba(255,255,255, 0.75)', + data: [1] + }] + }, options: { + maintainAspectRatio: false, + animation: false, + legend: { + display: false + }, + showAnon: '#s_idbd_showanon' + } + }); + var chartSFlags = new Chart(tsflagCan, { type: "bar", data: { @@ -761,7 +848,8 @@ function begin() { return g_globals({ aflag: chartAFlags, aflagpie: chartAFlagsPie, - anamepie: chartsANamesPie, + anamepie: chartsANamesPie, + anamedpie: chartANamesDetailedPie, aimagepie: chartAImagesPie, athreadpie: chartAthreadsPie, aidspie: chartAIdsPie, @@ -774,6 +862,7 @@ function begin() { aflag: chartSFlags, aflagpie: chartSFlagsPie, anamepie: chartsSNamesPie, + anamedpie: chartSNamesDetailedPie, aimagepie: chartSImagesPie, athreadpie: chartSthreadsPie, aidspie: chartSIdsPie, @@ -822,6 +911,9 @@ function begin() { chartAGLine.data.datasets[1].data.push(client.superBuffer[i].number/client.superBuffer[i]._cycles); } + if(client.superBuffer[i]!==undefined) + cyTotal = client.superBuffer[i]._cycles; + /*if(client.superBuffer.length<1) { add_new_candle(g_chartsSuper(), {_candle:{number:{o:0,c:0,h:0,l:0,t:new Date()}}}, false); @@ -838,7 +930,7 @@ function begin() { chartAGLine.update(); - $('#at_flagshare_exp').on("click", function() { + /*$('#at_flagshare_exp').on("click", function() { if($('#at_flagshare_container').is(":hidden")) { $('#at_flagshare_container').show(1000, function() { @@ -849,9 +941,10 @@ function begin() { $('#at_flagshare_exp').text("+"); }); } - }); + });*/ + addExpander('#at_flagshare_exp', '#at_flagshare_container'); - $('#s_flagshare_exp').on("click", function() { + /*$('#s_flagshare_exp').on("click", function() { if($('#s_flagshare_container').is(":hidden")) { $('#s_flagshare_container').show(1000, function() { @@ -862,7 +955,13 @@ function begin() { $('#s_flagshare_exp').text("+"); }); } - }); + });*/ + + + addExpander('#s_flagshare_exp', '#s_flagshare_container'); + + addExpander('#at_ident_bd_expand', '#at_idbd_share'); + addExpander('#s_ident_bd_expand', '#s_idbd_share'); $('#cytb_purge').on("click", function() { $('#cytb_body').empty();