kfetOpen bullet working
This commit is contained in:
parent
4808650fa0
commit
f87f1ceff1
10 changed files with 121 additions and 6 deletions
|
@ -83,6 +83,7 @@ TEMPLATES = [
|
||||||
'django.core.context_processors.static',
|
'django.core.context_processors.static',
|
||||||
'gestioncof.shared.context_processor',
|
'gestioncof.shared.context_processor',
|
||||||
'kfet.context_processors.auth',
|
'kfet.context_processors.auth',
|
||||||
|
'kfet.context_processors.kfet_open',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -24,3 +24,21 @@ class KPsul(JsonWebsocketConsumer):
|
||||||
|
|
||||||
def disconnect(self, message, **kwargs):
|
def disconnect(self, message, **kwargs):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
class KfetOpen(JsonWebsocketConsumer):
|
||||||
|
|
||||||
|
# Set to True if you want them, else leave out
|
||||||
|
strict_ordering = False
|
||||||
|
slight_ordering = False
|
||||||
|
|
||||||
|
def connection_groups(self, **kwargs):
|
||||||
|
return ['kfet.is_open']
|
||||||
|
|
||||||
|
def connect(self, message, **kwargs):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def receive(self, content, **kwargs):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def disconnect(self, message, **kwargs):
|
||||||
|
pass
|
||||||
|
|
|
@ -5,6 +5,8 @@ from __future__ import (absolute_import, division,
|
||||||
from builtins import *
|
from builtins import *
|
||||||
|
|
||||||
from django.contrib.auth.context_processors import PermWrapper
|
from django.contrib.auth.context_processors import PermWrapper
|
||||||
|
from .views import KFET_OPEN
|
||||||
|
|
||||||
|
|
||||||
def auth(request):
|
def auth(request):
|
||||||
if hasattr(request, 'real_user'):
|
if hasattr(request, 'real_user'):
|
||||||
|
@ -13,3 +15,11 @@ def auth(request):
|
||||||
'perms': PermWrapper(request.real_user),
|
'perms': PermWrapper(request.real_user),
|
||||||
}
|
}
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
|
||||||
|
def kfet_open(resquest):
|
||||||
|
(kfet_open, kfet_open_date) = KFET_OPEN()
|
||||||
|
return {
|
||||||
|
'kfet_open': kfet_open,
|
||||||
|
'kfet_open_date': kfet_open_date,
|
||||||
|
}
|
||||||
|
|
|
@ -9,4 +9,5 @@ from kfet import consumers
|
||||||
|
|
||||||
channel_routing = [
|
channel_routing = [
|
||||||
route_class(consumers.KPsul, path=r"^/ws/k-fet/k-psul/$"),
|
route_class(consumers.KPsul, path=r"^/ws/k-fet/k-psul/$"),
|
||||||
|
route_class(consumers.KfetOpen, path=r"^/ws/k-fet/is_open/$"),
|
||||||
]
|
]
|
||||||
|
|
|
@ -14,7 +14,7 @@ nav {
|
||||||
}
|
}
|
||||||
|
|
||||||
nav .navbar-brand {
|
nav .navbar-brand {
|
||||||
padding:3px 25px;
|
padding:3px 15px 3px 25px;
|
||||||
}
|
}
|
||||||
|
|
||||||
nav .navbar-brand img {
|
nav .navbar-brand img {
|
||||||
|
@ -44,6 +44,24 @@ nav a {
|
||||||
background-color:#C8102E;
|
background-color:#C8102E;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#kfet-open {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 14px;
|
||||||
|
width:10px;
|
||||||
|
height:10px;
|
||||||
|
text-transform: uppercase;
|
||||||
|
border-radius: 50%;
|
||||||
|
background-color: white;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
#kfet-open-wrapper {
|
||||||
|
padding-top: 18px;
|
||||||
|
margin: 0px 10px;
|
||||||
|
display: inline-block;
|
||||||
|
line-height: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
.dropdown-menu {
|
.dropdown-menu {
|
||||||
padding:0;
|
padding:0;
|
||||||
}
|
}
|
||||||
|
|
54
kfet/static/kfet/js/kfet_open.js
Normal file
54
kfet/static/kfet/js/kfet_open.js
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
function kfet_open(init_date, init_satus) {
|
||||||
|
// VARIABLES
|
||||||
|
var kfet_open_bullet = $('#kfet-open');
|
||||||
|
var open_color = "#73C252";
|
||||||
|
var closed_color = "#B42B26";
|
||||||
|
var unknown_color = "#ECD03E";
|
||||||
|
var kfet_open_date = init_date;
|
||||||
|
var kfet_open = init_status;
|
||||||
|
// INITIALISAITION
|
||||||
|
update_open_bullet();
|
||||||
|
// FONCTIONS
|
||||||
|
function nb_min_diff() {
|
||||||
|
var date_now = new Date();
|
||||||
|
// On calcule le nb de minutes depuis le dernier
|
||||||
|
// envoi d'information
|
||||||
|
tmp = date_now - kfet_open_date;
|
||||||
|
|
||||||
|
tmp = Math.floor(tmp/1000); // Nombre de secondes entre les 2 dates
|
||||||
|
diff_sec = tmp % 60; // Extraction du nombre de secondes
|
||||||
|
|
||||||
|
tmp = Math.floor((tmp-diff_sec)/60); // Nombre de minutes (partie entière)
|
||||||
|
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
function update_open_bullet() {
|
||||||
|
nb_min = nb_min_diff();
|
||||||
|
console.log("K-Fêt ouverte : " + kfet_open);
|
||||||
|
console.log(nb_min + " minute(s) depuis la dernière mise à jour");
|
||||||
|
if (nb_min > 5) {
|
||||||
|
kfet_open_bullet.css({'background-color': unknown_color});
|
||||||
|
} else if (kfet_open){
|
||||||
|
kfet_open_bullet.css({'background-color': open_color});
|
||||||
|
} else {
|
||||||
|
kfet_open_bullet.css({'background-color': closed_color});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// SYNCHRONIZATION
|
||||||
|
websocket_msg_default = {'last_op': 0}
|
||||||
|
|
||||||
|
var websocket_protocol = window.location.protocol == 'https:' ? 'wss' : 'ws';
|
||||||
|
var location_host = window.location.host;
|
||||||
|
var location_url = window.location.pathname.startsWith('/gestion/') ? location_host + '/gestion' : location_host;
|
||||||
|
var socket = new ReconnectingWebSocket(websocket_protocol+"://" + location_url + "/ws/k-fet/is_open/");
|
||||||
|
|
||||||
|
socket.onmessage = function(e) {
|
||||||
|
var data = $.extend({}, websocket_msg_default, JSON.parse(e.data));
|
||||||
|
console.log("Message reçu de la part de la porte.");
|
||||||
|
|
||||||
|
kfet_open_date = new Date(data['kfet_open_date']);
|
||||||
|
kfet_open = data['kfet_open'];
|
||||||
|
|
||||||
|
update_open_bullet();
|
||||||
|
}
|
||||||
|
}
|
|
@ -18,6 +18,8 @@
|
||||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
|
||||||
<script type="text/javascript" src="{% static 'kfet/js/jquery-confirm.js' %}"></script>
|
<script type="text/javascript" src="{% static 'kfet/js/jquery-confirm.js' %}"></script>
|
||||||
<script type="text/javascript" src="{% static 'kfet/js/kfet.js' %}"></script>
|
<script type="text/javascript" src="{% static 'kfet/js/kfet.js' %}"></script>
|
||||||
|
<script type="text/javascript" src="{% static 'kfet/js/kfet_open.js' %}"></script>
|
||||||
|
<script type="text/javascript" src="{% static 'kfet/js/reconnecting-websocket.js' %}"></script>
|
||||||
|
|
||||||
{% block extra_head %}{% endblock %}
|
{% block extra_head %}{% endblock %}
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
<a class="navbar-brand" href="#">
|
<a class="navbar-brand" href="#">
|
||||||
<img src="{% static 'kfet/img/logo3.png' %}">
|
<img src="{% static 'kfet/img/logo3.png' %}">
|
||||||
</a>
|
</a>
|
||||||
|
<span id="kfet-open-wrapper"><span id="kfet-open"></span></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
||||||
<ul class="nav navbar-nav">
|
<ul class="nav navbar-nav">
|
||||||
|
@ -58,11 +59,13 @@
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
$('#genericteam').on('click', function () {
|
$('#genericteam').on('click', function () {
|
||||||
setTimeout(function () { location.reload() }, 1000);
|
setTimeout(function () { location.reload() }, 1000);
|
||||||
});
|
});
|
||||||
|
init_date = new Date("{{ kfet_open_date.isoformat }}");
|
||||||
|
init_status = {{ kfet_open | yesno:"true,false"}};
|
||||||
|
kfet_open(init_date, init_status);
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
<link rel="stylesheet" style="text/css" href="{% static 'kfet/css/kpsul_grid.css' %}">
|
<link rel="stylesheet" style="text/css" href="{% static 'kfet/css/kpsul_grid.css' %}">
|
||||||
<script src="{% static "autocomplete_light/autocomplete.js" %}" type="text/javascript"></script>
|
<script src="{% static "autocomplete_light/autocomplete.js" %}" type="text/javascript"></script>
|
||||||
<script type="text/javascript" src="{% static 'kfet/js/js.cookie.js' %}"></script>
|
<script type="text/javascript" src="{% static 'kfet/js/js.cookie.js' %}"></script>
|
||||||
<script type="text/javascript" src="{% static 'kfet/js/reconnecting-websocket.js' %}"></script>
|
|
||||||
<script type="text/javascript" src="{% static 'kfet/js/jquery-ui.min.js' %}"></script>
|
<script type="text/javascript" src="{% static 'kfet/js/jquery-ui.min.js' %}"></script>
|
||||||
<script type="text/javascript" src="{% static 'kfet/js/jquery-confirm.js' %}"></script>
|
<script type="text/javascript" src="{% static 'kfet/js/jquery-confirm.js' %}"></script>
|
||||||
<script type="text/javascript" src="{% static 'kfet/js/moment.js' %}"></script>
|
<script type="text/javascript" src="{% static 'kfet/js/moment.js' %}"></script>
|
||||||
|
|
|
@ -55,11 +55,20 @@ def KFET_OPEN():
|
||||||
|
|
||||||
class UpdateKfetOpen(View):
|
class UpdateKfetOpen(View):
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
open_string = request.GET.get('open')
|
is_open = "open" in request.GET
|
||||||
is_open = not (open_string == "false" or open_string == "False")
|
|
||||||
cache.set('KFET_OPEN', is_open)
|
cache.set('KFET_OPEN', is_open)
|
||||||
cache.set('KFET_OPEN_DATE', timezone.now())
|
cache.set('KFET_OPEN_DATE', timezone.now())
|
||||||
|
# <debug, delete me ?>
|
||||||
|
|
||||||
|
# Websocket
|
||||||
|
websocket_data = {}
|
||||||
|
websocket_data['kfet_open'] = is_open
|
||||||
|
websocket_data['kfet_open_date'] = timezone.now()
|
||||||
|
print(timezone.now())
|
||||||
|
consumers.KfetOpen.group_send('kfet.is_open', websocket_data)
|
||||||
|
|
||||||
(is_open_get, time) = KFET_OPEN()
|
(is_open_get, time) = KFET_OPEN()
|
||||||
|
# </debug, delete me?>
|
||||||
return HttpResponse("%r at %s" % (is_open_get, time.isoformat()))
|
return HttpResponse("%r at %s" % (is_open_get, time.isoformat()))
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue