From 499c08156577f2e94894d8e9dbfab242d42062c1 Mon Sep 17 00:00:00 2001 From: Ludovic Stephan Date: Fri, 31 Mar 2017 12:23:27 -0300 Subject: [PATCH 1/5] Websocket class and instance --- kfet/static/kfet/js/kfet.js | 33 +++++++++++++++++++++++++++++++++ kfet/templates/kfet/kpsul.html | 13 ++----------- 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/kfet/static/kfet/js/kfet.js b/kfet/static/kfet/js/kfet.js index f0e7a316..aa4b7739 100644 --- a/kfet/static/kfet/js/kfet.js +++ b/kfet/static/kfet/js/kfet.js @@ -27,6 +27,39 @@ $(document).ready(function() { } }); +/* + * Generic Websocket class and k-psul ws instanciation + */ + +class Websocket { + + static get default_data() { + return {"relative_url": "", "default_msg": {}}; + } + + constructor(data) { + $.extend(this, this.constructor.default_data, data); + } + + listen(handle_func) { + var that = this; + 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 + this.relative_url); + + socket.onmessage = function(e) { + var data = $.extend({}, that.default_msg, JSON.parse(e.data)); + handle_func(data); + } + } +} + +var OperationWebSocket = new Websocket({ + 'relative_url': '/ws/k-fet/k-psul/', + 'default_msg': {'opegroups':[],'opes':[],'checkouts':[],'articles':[]}, +}); + function dateUTCToParis(date) { return moment.tz(date, 'UTC').tz('Europe/Paris'); } diff --git a/kfet/templates/kfet/kpsul.html b/kfet/templates/kfet/kpsul.html index d3b148c9..cf558647 100644 --- a/kfet/templates/kfet/kpsul.html +++ b/kfet/templates/kfet/kpsul.html @@ -12,7 +12,6 @@ - {% endblock %} @@ -1321,15 +1320,7 @@ $(document).ready(function() { // Synchronization // ----- - websocket_msg_default = {'opegroups':[],'opes':[],'checkouts':[],'articles':[]} - - 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; - socket = new ReconnectingWebSocket(websocket_protocol+"://" + location_url + "/ws/k-fet/k-psul/"); - socket.onmessage = function(e) { - data = $.extend({}, websocket_msg_default, JSON.parse(e.data)); - + OperationWebSocket.listen(function(data) { for (var i=0; i Date: Fri, 31 Mar 2017 15:10:41 -0300 Subject: [PATCH 2/5] Add url get method --- kfet/static/kfet/js/kfet.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/kfet/static/kfet/js/kfet.js b/kfet/static/kfet/js/kfet.js index aa4b7739..1398fedb 100644 --- a/kfet/static/kfet/js/kfet.js +++ b/kfet/static/kfet/js/kfet.js @@ -40,13 +40,18 @@ class Websocket { constructor(data) { $.extend(this, this.constructor.default_data, data); } - - listen(handle_func) { - var that = this; + + get url() { 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 + this.relative_url); + + return websocket_protocol+"://" + location_url + this.relative_url ; + } + + listen(handle_func) { + var that = this; + var socket = new ReconnectingWebSocket(this.url); socket.onmessage = function(e) { var data = $.extend({}, that.default_msg, JSON.parse(e.data)); From 8bf1bd53439919d2792bd82eabc7aef7a9d33e71 Mon Sep 17 00:00:00 2001 From: Ludovic Stephan Date: Fri, 31 Mar 2017 15:45:15 -0300 Subject: [PATCH 3/5] Websocket as member --- kfet/static/kfet/js/kfet.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kfet/static/kfet/js/kfet.js b/kfet/static/kfet/js/kfet.js index 1398fedb..aa6cfa90 100644 --- a/kfet/static/kfet/js/kfet.js +++ b/kfet/static/kfet/js/kfet.js @@ -51,9 +51,9 @@ class Websocket { listen(handle_func) { var that = this; - var socket = new ReconnectingWebSocket(this.url); + this.socket = new ReconnectingWebSocket(this.url); - socket.onmessage = function(e) { + this.socket.onmessage = function(e) { var data = $.extend({}, that.default_msg, JSON.parse(e.data)); handle_func(data); } From 38bfccf3313abb84447c91a17180c7f7abd6779c Mon Sep 17 00:00:00 2001 From: Ludovic Stephan Date: Fri, 31 Mar 2017 15:57:15 -0300 Subject: [PATCH 4/5] Change class name --- kfet/static/kfet/js/kfet.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kfet/static/kfet/js/kfet.js b/kfet/static/kfet/js/kfet.js index aa6cfa90..b8a44244 100644 --- a/kfet/static/kfet/js/kfet.js +++ b/kfet/static/kfet/js/kfet.js @@ -31,7 +31,7 @@ $(document).ready(function() { * Generic Websocket class and k-psul ws instanciation */ -class Websocket { +class KfetWebsocket { static get default_data() { return {"relative_url": "", "default_msg": {}}; @@ -60,7 +60,7 @@ class Websocket { } } -var OperationWebSocket = new Websocket({ +var OperationWebSocket = new KfetWebsocket({ 'relative_url': '/ws/k-fet/k-psul/', 'default_msg': {'opegroups':[],'opes':[],'checkouts':[],'articles':[]}, }); From ab15dbae76abb6fb9bfb596efdfb5588abcb2586 Mon Sep 17 00:00:00 2001 From: Ludovic Stephan Date: Fri, 31 Mar 2017 17:37:39 -0300 Subject: [PATCH 5/5] Add handler management --- kfet/static/kfet/js/kfet.js | 19 ++++++++++++++----- kfet/templates/kfet/kpsul.html | 2 +- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/kfet/static/kfet/js/kfet.js b/kfet/static/kfet/js/kfet.js index b8a44244..bdf5b69b 100644 --- a/kfet/static/kfet/js/kfet.js +++ b/kfet/static/kfet/js/kfet.js @@ -33,12 +33,12 @@ $(document).ready(function() { class KfetWebsocket { - static get default_data() { - return {"relative_url": "", "default_msg": {}}; + static get defaults() { + return {"relative_url": "", "default_msg": {}, "handlers": []}; } constructor(data) { - $.extend(this, this.constructor.default_data, data); + $.extend(this, this.constructor.defaults, data); } get url() { @@ -49,13 +49,22 @@ class KfetWebsocket { return websocket_protocol+"://" + location_url + this.relative_url ; } - listen(handle_func) { + add_handler(handler) { + if (!this.socket) + this.listen(); + + this.handlers.push(handler); + } + + listen() { var that = this; this.socket = new ReconnectingWebSocket(this.url); this.socket.onmessage = function(e) { var data = $.extend({}, that.default_msg, JSON.parse(e.data)); - handle_func(data); + for (let handler of that.handlers) { + handler(data); + } } } } diff --git a/kfet/templates/kfet/kpsul.html b/kfet/templates/kfet/kpsul.html index cf558647..4ac1354c 100644 --- a/kfet/templates/kfet/kpsul.html +++ b/kfet/templates/kfet/kpsul.html @@ -1320,7 +1320,7 @@ $(document).ready(function() { // Synchronization // ----- - OperationWebSocket.listen(function(data) { + OperationWebSocket.add_handler(function(data) { for (var i=0; i