From d777ea4fdf2b3e70f979edbb6d28fe4f733f645d Mon Sep 17 00:00:00 2001 From: Alex Solomaha Date: Tue, 7 Mar 2017 21:21:35 +0200 Subject: [PATCH] Fixes RGB --- config/params.php | 4 +-- servers/CoreServer.php | 75 ++++++++++++++++++------------------------ web/js/md.theme.js | 4 +-- web/js/panel.js | 62 ++++++++++++++++++++-------------- 4 files changed, 73 insertions(+), 72 deletions(-) diff --git a/config/params.php b/config/params.php index d39a5b0..021d80d 100644 --- a/config/params.php +++ b/config/params.php @@ -14,8 +14,8 @@ $params = [ ], 'items' => [ 'rgb' => [ - 'fade-time' => 10000, - 'color-time' => 5000, + 'fade-time' => 3000, + 'color-time' => 3000, 'red' => 0, 'green' => 150, 'blue' => 150, diff --git a/servers/CoreServer.php b/servers/CoreServer.php index c2179eb..e3c43dc 100644 --- a/servers/CoreServer.php +++ b/servers/CoreServer.php @@ -23,6 +23,7 @@ use yii\base\InvalidParamException; use yii\base\NotSupportedException; use yii\helpers\ArrayHelper; use yii\helpers\Json; +use yii\helpers\VarDumper; use yii\web\BadRequestHttpException; use yii\web\ForbiddenHttpException; use yii\web\NotFoundHttpException; @@ -414,6 +415,36 @@ class CoreServer implements MessageComponentInterface // Save to history $this->logItemValue($item, $value); + break; + case 'values': + unset($data['type']); + + foreach ($data as $pin => $value) { + $item = Item::findOne([ + 'board_id' => $board->id, + 'pin' => $pin, + ]); + + if (!$item) { + return $this->log('Trying to use unknown item'); + } + + // Trig event + $this->triggerItemValue($item, $value); + + $value = $this->saveItemValue($item->id, $value, $item->type); + + $this->sendUsers([ + 'type' => 'value', + 'item_id' => $item->id, + 'value_type' => $item->widget->type, + 'value' => $value, + ]); + + // Save to history + $this->logItemValue($item, $value); + } + break; case 'rgb': $itemId = (integer)$data['item_id']; @@ -430,15 +461,6 @@ class CoreServer implements MessageComponentInterface throw new NotFoundHttpException('Item does not exist'); } - if (!in_array($mode, Item::getRGBModesArray())) { - $this->log("Board [{$board->id}] tried to use unknown RGB mode"); - throw new InvalidParamException('Unknown RGB mode'); - } - - if ($fadeTime < 0) { - $fadeTime = 0; - } - $commonParameters = [ 'type' => 'rgb', 'item_id' => $item->id, @@ -475,38 +497,9 @@ class CoreServer implements MessageComponentInterface $this->sendUsers($parameters); $this->logItemValue($item, serialize($parameters)); + VarDumper::dump($parameters); $this->saveItemValue($item->id, $parameters, $item->type); - break; - case 'values': - unset($data['type']); - - foreach ($data as $pin => $value) { - $item = Item::findOne([ - 'board_id' => $board->id, - 'pin' => $pin, - ]); - - if (!$item) { - return $this->log('Trying to use unknown item'); - } - - // Trig event - $this->triggerItemValue($item, $value); - - $value = $this->saveItemValue($item->id, $value, $item->type); - - $this->sendUsers([ - 'type' => 'value', - 'item_id' => $item->id, - 'value_type' => $item->widget->type, - 'value' => $value, - ]); - - // Save to history - $this->logItemValue($item, $value); - } - break; case 'pong': $this->log("Pong from board [$board->id]"); @@ -953,10 +946,6 @@ class CoreServer implements MessageComponentInterface return; } - if ($item->type === Item::TYPE_RGB) { - $value = implode(',', $value); - } - $model = new History(); $model->type = History::TYPE_ITEM_VALUE; $model->item_id = $item->id; diff --git a/web/js/md.theme.js b/web/js/md.theme.js index 55d7144..4d1b136 100644 --- a/web/js/md.theme.js +++ b/web/js/md.theme.js @@ -50,7 +50,7 @@ $(document).ready(function () { var $li = $(this); - $select.val($li.data('value')); + $select.val($li.data('value')).change(); $widget.find('.md-select-selected-value').html($li.text()); $li.addClass('selected') @@ -67,7 +67,7 @@ $(document).ready(function () { $ulDrop.scrollTop(liTop + $ulDrop[0].scrollTop); }); - $('body').click(function (e) { + $('body').click(function () { $ulDrop.removeClass('show'); }); }); diff --git a/web/js/panel.js b/web/js/panel.js index 0dcb1ea..181d846 100644 --- a/web/js/panel.js +++ b/web/js/panel.js @@ -96,7 +96,10 @@ function updateRGB(itemId, data) { itemValues[itemId] = data; if (data.mode == 'static' || data.mode == 'fade') { - $('.panel-item-rgb[data-item-id="' + itemId + '"]').attr('style', 'background: rgb(' + data.red + ',' + data.green + ',' + data.blue + ')'); + var $panelItem = $('.panel-item-rgb[data-item-id="' + itemId + '"]'); + + $panelItem.css('background-color', 'rgb(' + data.red + ',' + data.green + ',' + data.blue + ')'); + $panelItem.css('color', textColorDepOnBackground(data.red, data.green, data.blue)); } $('#rgb-widget-wave-fade-time').val(data.fade_time); @@ -182,6 +185,19 @@ function updateItemValue(id, type, value, value_type) { } } +function textColorDepOnBackground(red, green, blue) { + var brightness = Math.round((red * 299 + green * 587 + blue * 114) / 1000); + var textColor; + + if (brightness > 125) { + textColor = 'black'; + } else { + textColor = 'white'; + } + + return textColor; +} + $(document).ready(function () { $('.panel-item-switch').click(function (e) { e.preventDefault(); @@ -233,7 +249,7 @@ $(document).ready(function () { $colorPicker.spectrum('set', 'rgb(' + savedItemValue['red'] + ',' + savedItemValue['green'] + ',' + savedItemValue['blue'] + ')'); } - // Set mode and variables + // Open mode tabs and set variables if (savedItemValue.mode == 'static') { $('.rgb-widget-mode-static').tab('show'); } else if (savedItemValue.mode == 'wave') { @@ -261,8 +277,11 @@ $(document).ready(function () { var $this = $(this); var itemId = $this.data('item-id'); - $('.panel-item-rgb[data-item-id="' + itemId + '"]') - .attr('style', 'background-color: rgb(' + red + ',' + green + ',' + blue + ')'); + var $panelItem = $('.panel-item-rgb[data-item-id="' + itemId + '"]'); + + // Update text color + $panelItem.css('background-color', 'rgb(' + red + ',' + green + ',' + blue + ')'); + $panelItem.css('color', textColorDepOnBackground(red, green, blue)); var modeId = $this.parents('.tab-pane').attr('id'); @@ -309,26 +328,16 @@ $(document).ready(function () { var green = Math.round(color._g); var blue = Math.round(color._b); - if (savedItemValue != null) { - send({ - "type": "rgb", - "item_id": item_id, - "mode": "fade", - "fade_time": parseInt($('#rgb-widget-fade-fade-time').val()), - "color_time": parseInt($('#rgb-widget-fade-color-time').val()), - "red": red, - "green": green, - "blue": blue - }); - } else { - send({ - "type": "rgb", - "item_id": item_id, - "mode": "fade", - "fade_time": parseInt($('#rgb-widget-fade-fade-time').val()), - "color_time": parseInt($('#rgb-widget-fade-color-time').val()) - }); - } + send({ + "type": "rgb", + "item_id": item_id, + "mode": "fade", + "fade_time": parseInt($('#rgb-widget-fade-fade-time').val()), + "color_time": parseInt($('#rgb-widget-fade-color-time').val()), + "red": red, + "green": green, + "blue": blue + }); } }); @@ -373,7 +382,10 @@ $(document).ready(function () { "item_id": item_id, "mode": "fade", "fade_time": parseInt($('#rgb-widget-fade-fade-time').val()), - "color_time": parseInt($('#rgb-widget-fade-color-time').val()) + "color_time": parseInt($('#rgb-widget-fade-color-time').val()), + "red": red, + "green": green, + "blue": blue }); } });