Fixes RGB

This commit is contained in:
Alex Solomaha
2017-03-07 21:21:35 +02:00
parent 3cca7393e0
commit d777ea4fdf
4 changed files with 73 additions and 72 deletions

View File

@@ -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,

View File

@@ -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;

View File

@@ -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');
});
});

View File

@@ -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
});
}
});