From 43ff0d4e259c34220b6b3c7aa3e48813e1c4bc5e Mon Sep 17 00:00:00 2001 From: Fabio Manganiello Date: Wed, 9 Jan 2019 15:08:16 +0100 Subject: [PATCH] Added hooks on light.hue web panel tab to synchronize light statuses with LightStatusChangeEvent events --- platypush/backend/http/static/js/light.hue.js | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/platypush/backend/http/static/js/light.hue.js b/platypush/backend/http/static/js/light.hue.js index 65cb7768..6a4fb711 100644 --- a/platypush/backend/http/static/js/light.hue.js +++ b/platypush/backend/http/static/js/light.hue.js @@ -6,6 +6,48 @@ $(document).ready(function() { $lightsList = $('#lights-list'), $scenesList = $('#scenes-list'); + var onEvent = function(event) { + switch (event.args.type) { + case 'platypush.message.event.light.LightStatusChangeEvent': + var $lightsList = $('#lights-list'); + var $light = $lightsList.find('.light-item').filter( + (i, light) => $(light).data('id') == event.args.light_id + ); + + var $roomLights = $light.parent('.room-lights-item').find('.light-item').filter( + (i, light) => $(light).data('type') == 'light' + ); + + var $allLightsItem = $light.parent('.room-lights-item').find('.light-item').filter( + (i, light) => $(light).data('type') == 'room' + ); + + if ('on' in event.args) { + $light.find('.light-ctrl-switch').prop('checked', event.args.on); + + if ($roomLights.find('.light-ctrl-switch:checked').length > 0) { + $allLightsItem.find('.light-ctrl-switch').prop('checked', true); + } else { + $allLightsItem.find('.light-ctrl-switch').prop('checked', false); + } + } + + if ('bri' in event.args) { + $light.find('.slider.bri').val(event.args.bri); + } + + if ('sat' in event.args) { + $light.find('.slider.sat').val(event.args.sat); + } + + if ('hue' in event.args) { + $light.find('.slider.hue').val(event.args.hue); + } + + break; + } + }; + var createPowerToggleElement = function(data) { var id = data['type'] + '_' + data['id']; var $powerToggle = $('
').addClass('toggle toggle--push light-ctrl-switch-container'); @@ -656,8 +698,13 @@ $(document).ready(function() { } }; + var initEvents = function() { + window.registerEventListener(onEvent); + }; + var init = function() { initUi(); + initEvents(); }; init();