Added datePicker in mips-geolocaloization

pull/18/head
Sami Mokaddem 2017-10-26 09:12:50 +02:00
parent 05f5c8cae0
commit a59d760e59
2 changed files with 47 additions and 9 deletions

View File

@ -91,10 +91,11 @@ class EventMessage():
to_ret = { 'log': self.feed, 'feedName': self.feedName, 'zmqName': self.zmqName } to_ret = { 'log': self.feed, 'feedName': self.feedName, 'zmqName': self.zmqName }
return 'data: {}\n\n'.format(json.dumps(to_ret)) return 'data: {}\n\n'.format(json.dumps(to_ret))
def getZrange(keyCateg, wantedDate, topNum): def getZrange(keyCateg, dayNum, topNum):
aDateTime = datetime.datetime.now() aDateTime = datetime.datetime.now()
correctDatetime = aDateTime - datetime.timedelta(days = dayNum)
date_str = str(aDateTime.year)+str(aDateTime.month)+str(aDateTime.day) date_str = str(correctDatetime.year)+str(correctDatetime.month)+str(correctDatetime.day)
keyname = "{}:{}".format(keyCateg, date_str) keyname = "{}:{}".format(keyCateg, date_str)
data = serv_redis_db.zrange(keyname, 0, 5, desc=True, withscores=True) data = serv_redis_db.zrange(keyname, 0, 5, desc=True, withscores=True)
data = [ [record[0].decode('utf8'), record[1]] for record in data ] data = [ [record[0].decode('utf8'), record[1]] for record in data ]
@ -131,7 +132,7 @@ def getTopCoord():
try: try:
dayNum = int(request.args.get('dayNum')) dayNum = int(request.args.get('dayNum'))
except: except:
dayNum = 1 dayNum = 0
keyCateg = "GEO_COORD" keyCateg = "GEO_COORD"
topNum = 6 # default Num topNum = 6 # default Num
data = getZrange(keyCateg, dayNum, topNum) data = getZrange(keyCateg, dayNum, topNum)
@ -142,7 +143,7 @@ def getHitMap():
try: try:
dayNum = int(request.args.get('dayNum')) dayNum = int(request.args.get('dayNum'))
except: except:
dayNum = 1 dayNum = 0
keyCateg = "GEO_COUNTRY" keyCateg = "GEO_COUNTRY"
topNum = -1 # default Num topNum = -1 # default Num
data = getZrange(keyCateg, dayNum, topNum) data = getZrange(keyCateg, dayNum, topNum)

View File

@ -46,6 +46,7 @@
text-align: center; text-align: center;
margin-left: 8px; margin-left: 8px;
float: left; float: left;
padding-top: 9px;
} }
.center { .center {
@ -69,7 +70,11 @@ small {
<nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0; padding-left: 15px;"> <nav class="navbar navbar-default navbar-static-top" role="navigation" style="margin-bottom: 0; padding-left: 15px;">
<div class="navbar-header"> <div class="navbar-header">
<a class="navbar-brand" href="{{ url_for('geo') }}">Misp Geolocalization</a> <a class="navbar-brand" href="{{ url_for('geo') }}">Misp Geolocalization</a>
<div id="ledsHolder" style="float: right; height: 50px;"><div class='leftSepa textTopHeader'><b>Date + zoom Level</b></div></div> <div id="ledsHolder" style="float: right; height: 50px;">
<div class='leftSepa textTopHeader'>
<strong>Date: <input type="text" id="datepicker" size="30" style="margin-bottom: 5px;"></strong>
</div>
</div>
</div> </div>
<!-- /.navbar-header --> <!-- /.navbar-header -->
@ -182,6 +187,8 @@ small {
<link rel="stylesheet" href="{{ url_for('static', filename='css/jquery-jvectormap-2.0.3.css') }}" type="text/css" media="screen"/> <link rel="stylesheet" href="{{ url_for('static', filename='css/jquery-jvectormap-2.0.3.css') }}" type="text/css" media="screen"/>
<script src="{{ url_for('static', filename='js/jquery-jvectormap-2.0.3.min.js') }}"></script> <script src="{{ url_for('static', filename='js/jquery-jvectormap-2.0.3.min.js') }}"></script>
<script src="{{ url_for('static', filename='js/jquery-jvectormap-world-mill.js') }}"></script> <script src="{{ url_for('static', filename='js/jquery-jvectormap-world-mill.js') }}"></script>
<link href="{{ url_for('static', filename='css/jquery-ui.min.css') }}" rel="stylesheet" type="text/css" />
<script src="{{ url_for('static', filename='js/jquery-ui.min.js') }}"></script>
<!-- Index --> <!-- Index -->
<script> <script>
@ -192,6 +199,7 @@ small {
const OSMATTRIB='Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors'; const OSMATTRIB='Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors';
var ZOOMLEVEL = 17; var ZOOMLEVEL = 17;
var allOpenStreetMap = {}; var allOpenStreetMap = {};
var datePickerWidget;
for(var i=1; i<7; i++) { for(var i=1; i<7; i++) {
allOpenStreetMap[i] = L.map('topMap'+i).setView([0, 0], 0); allOpenStreetMap[i] = L.map('topMap'+i).setView([0, 0], 0);
@ -237,8 +245,8 @@ small {
function updateWorldMap(dayNum) { function updateWorldMap(dayNum) {
$.getJSON("{{ url_for('getHitMap') }}?dayNum="+dayNum, function(list){ $.getJSON("{{ url_for('getHitMap') }}?dayNum="+dayNum, function(list){
for(var i=0; i<list.length; i++) { for(var i=0; i<list.length; i++) {
rCode = list[i][0]; var rCode = list[i][0];
rNum = list[i][1]; var rNum = list[i][1];
update_region(rCode, rNum); update_region(rCode, rNum);
} }
}); });
@ -253,11 +261,40 @@ small {
worldMapObj.series.regions[0].setValues(regionhits); worldMapObj.series.regions[0].setValues(regionhits);
} }
function days_between(date1, date2) {
var ONEDAY = 60*60*24*1000;
var diff_ms = Math.abs(date1.getTime() - date2.getTime());
return Math.round(diff_ms/ONEDAY);
}
function updateAll() {
var currentDate = datePickerWidget.datepicker( "getDate" );
var now = new Date();
var numDay = days_between(now, currentDate);
updateTopMaps(numDay);
updateWorldMap(numDay);
}
$(document).ready(function () { $(document).ready(function () {
$('#worldMap').vectorMap(vectorMapConfig); $('#worldMap').vectorMap(vectorMapConfig);
worldMapObj = $("#worldMap").vectorMap('get','mapObject'); worldMapObj = $("#worldMap").vectorMap('get','mapObject');
updateTopMaps(1);
updateWorldMap(1); /* Create the datepicker and button*/
var datePickerOptions = {
showOn: "button",
minDate: -31,
maxDate: 0,
buttonImage: "{{ url_for('static', filename='pics/calendar.gif') }}",
buttonImageOnly: true,
buttonText: "Select date",
showAnim: "slideDown",
onSelect: updateAll
};
datePickerWidget = $( "#datepicker" )
datePickerWidget.datepicker(datePickerOptions);
updateAll();
}); });
</script> </script>