Draft eventSource lastAwards

pull/7/head
Sami Mokaddem 2017-11-13 16:26:09 +01:00
parent c35fbe969b
commit 70561357c3
3 changed files with 41 additions and 17 deletions

View File

@ -39,6 +39,9 @@ subscriber_map = redis_server_map.pubsub(ignore_subscribe_messages=True)
subscriber_map.psubscribe(cfg.get('RedisMap', 'channelDisp'))
subscriber_lastContrib = redis_server_log.pubsub(ignore_subscribe_messages=True)
subscriber_lastContrib.psubscribe(cfg.get('RedisLog', 'channelLastContributor'))
subscriber_lastAwards = redis_server_log.pubsub(ignore_subscribe_messages=True)
subscriber_lastAwards.psubscribe(cfg.get('RedisLog', 'channelLastAwards'))
eventNumber = 0
##########
@ -300,6 +303,10 @@ def getLastContributors():
def getLastContributor():
return Response(eventStreamLastContributor(), mimetype="text/event-stream")
@app.route("/_eventStreamAwards")
def getLastStreamAwards():
return Response(eventStreamAwards(), mimetype="text/event-stream")
def eventStreamLastContributor():
for msg in subscriber_lastContrib.listen():
content = msg['data'].decode('utf8')
@ -311,6 +318,17 @@ def eventStreamLastContributor():
to_return['epoch'] = epoch
yield 'data: {}\n\n'.format(json.dumps(to_return))
def eventStreamAwards():
for msg in subscriber_lastAwards.listen():
content = msg['data'].decode('utf8')
contentJson = json.loads(content)
lastContribJson = json.loads(contentJson['log'])
org = lastContribJson['org']
to_return = contributor_helper.getContributorFromRedis(org)
epoch = lastContribJson['epoch']
to_return['epoch'] = epoch
yield 'data: {}\n\n'.format(json.dumps(to_return))
@app.route("/_getTopContributor")
def getTopContributor(suppliedDate=None):
if suppliedDate is None:

View File

@ -344,6 +344,18 @@ function addLastContributor(datatable, data, update) {
}
}
function addAwards(datatableAwards, json) {
var date = new Date(json.epoch*1000);
var to_add = [
date.toTimeString().slice(0,-15) +' '+ date.toLocaleDateString(),
getOrgRankIcon(json.orgRank, 60),
createImg(json.logo_path, 32),
createOrgLink(json.org),
createHonorImg(json.honorBadge, 20),
];
datatableAwards.row.add(to_add);
}
function updateProgressBar(org) {
if(currOrg != org)
return;
@ -461,8 +473,10 @@ function updateProgressHeader(org) {
$.getJSON( url_getHonorBadges+'?org='+org, function( data ) {
for(var i=0; i<numberOfBadges; i++) { // remove
$('#divBadge_'+(i+1)).removeClass('circlBadgeAcquired');
$('#divBadge_'+(i+1)).addClass('circlBadgeNotAcquired');
}
for(var i=0; i<data.length; i++) { // add
$('#divBadge_'+(i+1)).removeClass('circlBadgeNotAcquired');
$('#divBadge_'+(data[i])).addClass('circlBadgeAcquired');
}
});
@ -587,4 +601,11 @@ $(document).ready(function() {
updateOvertakePnts();
sec_before_reload = refresh_speed; //reset timer at each contribution
};
source_awards = new EventSource(url_eventStreamAwards);
source_awards.onmessage = function(event) {
var json = jQuery.parseJSON( event.data );
addAwards(datatableAwards, json);
datatableAwards.draw();
};
});

View File

@ -136,22 +136,6 @@
{% endfor %}
</ul>
</div>
<div class="col-lg-6">
<table>
<tbody>
{% for item in org_honor_badge_title_list %}
<tr style="height: 85px">
<td>
<div id="divBadge_{{ loop.index }}" class="circleBadge">
<img height='64px' width='64px' style="margin-top: 5px;" src="{{ url_for('static', filename='pics/MISPHonorableIcons/1.svg')[:-5]}}{{ item[0] }}.svg" type='image/svg' style="margin: auto;"</img>
</div>
</td>
<td style="padding-left: 15px;">{{ item[1] }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
@ -187,7 +171,7 @@
{% for item in org_honor_badge_title_list %}
<tr>
<td>
<div id="divBadge_{{ loop.index }}" class="circleBadgeSmall circlBadgeAcquired">
<div id="divBadge_{{ loop.index }}" class="circleBadgeSmall circlBadgeNotAcquired">
<img height='64px' width='64px' class="" style="margin-top: 3px;" src="{{ url_for('static', filename='pics/MISPHonorableIcons/1.svg')[:-5]}}{{ item[0] }}.svg" type='image/svg' style="margin: auto;"</img>
</div>
</td>
@ -490,6 +474,7 @@
var url_getLastContributor = "{{ url_for('getLastContributors') }}";
var url_getLatestAwards = "{{ url_for('getLatestAwards') }}";
var url_eventStreamLastContributor = "{{ url_for('getLastContributor') }}";
var url_eventStreamAwards = "{{ url_for('getLastStreamAwards') }}";
var url_getAllOrg = "{{ url_for('getAllOrg') }}";
var url_getOrgRank = "{{ url_for('getOrgRank') }}";
var url_getContributionOrgStatus = "{{ url_for('getContributionOrgStatus') }}";