diff --git a/server.py b/server.py index 3fd1d25..f372845 100755 --- a/server.py +++ b/server.py @@ -1,11 +1,12 @@ #!/usr/bin/env python3.5 -from flask import Flask, render_template, Response +from flask import Flask, render_template, request, Response, jsonify import json import redis import random import configparser from time import gmtime as now from time import sleep, strftime +import datetime import os configfile = os.path.join(os.environ['VIRTUAL_ENV'], '../config.cfg') @@ -22,6 +23,10 @@ redis_server_map = redis.StrictRedis( host=cfg.get('RedisMap', 'host'), port=cfg.getint('RedisMap', 'port'), db=cfg.getint('RedisMap', 'db')) +serv_redis_db = redis.StrictRedis( + host=cfg.get('RedisDB', 'host'), + port=cfg.getint('RedisDB', 'port'), + db=cfg.getint('RedisDB', 'db')) subscriber_log = redis_server_log.pubsub(ignore_subscribe_messages=True) subscriber_log.psubscribe(cfg.get('RedisLog', 'channel')) @@ -86,6 +91,15 @@ class EventMessage(): to_ret = { 'log': self.feed, 'feedName': self.feedName, 'zmqName': self.zmqName } return 'data: {}\n\n'.format(json.dumps(to_ret)) +def getZrange(keyCateg, wantedDate, topNum): + aDateTime = datetime.datetime.now() + + date_str = str(aDateTime.year)+str(aDateTime.month)+str(aDateTime.day) + keyname = "{}:{}".format(keyCateg, date_str) + data = serv_redis_db.zrange(keyname, 0, 5, desc=True, withscores=True) + return data + + @app.route("/") def index(): ratioCorrection = 88 @@ -111,6 +125,29 @@ def index(): def geo(): return render_template('geo.html') +@app.route("/_getTopCoord") +def getTopCoord(): + try: + dayNum = int(request.args.get('dayNum')) + except: + dayNum = 1 + keyCateg = "GEO_COORD" + topNum = 6 # default Num + data = getZrange(keyCateg, dayNum, topNum) + data = [ [record[0].decode('utf8'), record[1]] for record in data ] + return jsonify(data) + +@app.route("/_getHitMap") +def getHitMap(): + try: + dayNum = int(request.args.get('dayNum')) + except: + dayNum = 1 + keyCateg = "GEO_COUNTRY" + topNum = -1 # default Num + data = getZrange(keyCateg, dayNum, topNum) + return jsonify(data) + @app.route("/_logs") def logs(): return Response(event_stream_log(), mimetype="text/event-stream") diff --git a/templates/geo.html b/templates/geo.html index 7d1a54f..3127d13 100644 --- a/templates/geo.html +++ b/templates/geo.html @@ -86,7 +86,7 @@ small {
- No map + 1. Top location
@@ -95,7 +95,7 @@ small {
- No map + 3. Top location
@@ -104,7 +104,7 @@ small {
- No map + 5. Top location
@@ -115,7 +115,7 @@ small {
- No map + 2. Top location
@@ -124,7 +124,7 @@ small {
- No map + 4. Top location
@@ -133,7 +133,7 @@ small {
- No map + 6. Top location
@@ -188,6 +188,7 @@ small { const OSMURL='http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'; const OSMATTRIB='Map data © OpenStreetMap contributors'; + var ZOOMLEVEL = 17; var allOpenStreetMap = {}; for(var i=1; i<7; i++) { @@ -195,7 +196,6 @@ small { new L.TileLayer(OSMURL, {minZoom: 0, maxZoom: 18}).addTo(allOpenStreetMap[i]); } - var vectorMapConfig = { map: 'world_mill', markers: [], @@ -217,8 +217,34 @@ small { }, } - $('#worldMap').vectorMap(vectorMapConfig); - worldMapObj = $("#worldMap").vectorMap('get','mapObject'); + + function updateTopMaps(dayNum) { + $.getJSON("{{ url_for('getTopCoord') }}?dayNum="+dayNum, function(list){ + for(var i=0; i<6 && i