Страница 21 из 43
Re: Шаблон класса / Class Template
Добавлено: Вс сен 02, 2018 10:20 pm
Chainik
nick7zmail писал(а): Вс сен 02, 2018 9:43 pm
Всё вписали в html блок? Или что-то в "дополнительный яваскрипт код"? Туда ничего не надо вписывать. Всё только в основное поле состояния.
И я так...просто ради примера накидал...не обязательно повторять...можно в своём чём нить пробовать))
Да, все в только в html-блок. Видимо у вас есть "волшебная палочка" или где-то в коде применяются заклинания (типа сим-салабим)...
PS. Не рисовалось ничего, потому что на домашнюю страницу вставлял (так и должно быть?). Вставил на сцену первый код, заработало! Вставил второй код: индикатор отрисовался, однако стрелка все время на нуле и на изменения свойства не реагирует.
Re: Шаблон класса / Class Template
Добавлено: Пн сен 03, 2018 2:17 am
xor
Chainik писал(а): Вс сен 02, 2018 10:20 pm
...
PS. Не рисовалось ничего, потому что на домашнюю страницу вставлял (так и должно быть?). Вставил на сцену первый код, заработало! Вставил второй код: индикатор отрисовался, однако стрелка все время на нуле и на изменения свойства не реагирует.
Если у вас мастер-ветка, то в альфе недавно по сценам обновления были.
Повторил второй код с реальным объектом - заработало. Единственный минус, на мой взгляд, старт с нулём вначале, а не с реальным значением свойства. Если медленно меняется, долго в нуле стоит.
Re: Шаблон класса / Class Template
Добавлено: Пн сен 03, 2018 6:24 am
nick7zmail
Да, вставлять, естественно, на сцену пробовал, т.к. разговор ранее про сцены шел...старт с нуля - да, недороботочка...но идея то была показать что не так с конструкцией %объект.свойство%, а не сделать полноценный индикатор))...тут конструкция объект.свойство вывозит тем, что значения, как сказал Сергей, подменяются при загрузке страницы. Т.е. чтобы их в индикаторе с вебсокетами выставить - надо просто запросить единоразово по url текущее значение.
Re: Шаблон класса / Class Template
Добавлено: Пн сен 03, 2018 9:34 am
tarasfrompir
nick7zmail писал(а): Пн сен 03, 2018 6:24 am
Да, вставлять, естественно, на сцену пробовал, т.к. разговор ранее про сцены шел...старт с нуля - да, недороботочка...но идея то была показать что не так с конструкцией %объект.свойство%, а не сделать полноценный индикатор))...тут конструкция объект.свойство вывозит тем, что значения, как сказал Сергей, подменяются при загрузке страницы. Т.е. чтобы их в индикаторе с вебсокетами выставить - надо просто запросить единоразово по url текущее значение.
Ник или xor

можно просто рабочий пример у тебя ... если довел до ума....
Ато я тут кручу верчу то показывает то не показывает индикатор - то с нуля рисует струлку все время с обновлением через время, то еще что то .....вчера замучился
Re: Шаблон класса / Class Template
Добавлено: Пн сен 03, 2018 12:23 pm
nick7zmail
Не...я не доводил до ума)) Если сильно надо - могу заморочиться.
Re: Шаблон класса / Class Template
Добавлено: Пн сен 03, 2018 12:43 pm
tarasfrompir
nick7zmail писал(а): Пн сен 03, 2018 12:23 pm
Не...я не доводил до ума)) Если сильно надо - могу заморочиться.
Да уж как вроде дело принцыпа.... для меня

Re: Шаблон класса / Class Template
Добавлено: Пн сен 03, 2018 11:09 pm
xor
tarasfrompir1 писал(а): Пн сен 03, 2018 12:43 pm
nick7zmail писал(а): Пн сен 03, 2018 12:23 pm
Не...я не доводил до ума)) Если сильно надо - могу заморочиться.
Да уж как вроде дело принцыпа.... для меня
Как у меня заработало:
на сцену добавил новый элемент html c размерами 200*200
ему создал состояние 1, в его поле Код добавил (немного почистил лишнее)):
Код: Выделить всё
<canvas id="canvasRadial3" width="201" height="201"></canvas>
<script language='javascript'>
$.subscribe('wsConnected', function (_) {
var payload;
payload = new Object();
payload.action = 'Subscribe';
payload.data = new Object();
payload.data.TYPE='properties';
payload.data.PROPERTIES='humidity00.value'; // мой объект.свойство
wsSocket.send(JSON.stringify(payload));
});
function processPropertiesUpdate(data) {
var obj=jQuery.parseJSON(data);
var objCnt = obj.length;
if (objCnt) {
for(var i=0;i<objCnt;i++) {
if (obj[i]['PROPERTY']=='humidity00.value') { // мой объект.свойство
rad3val=obj[i]['VALUE'];
radial3.setValueAnimated(obj[i]['VALUE']);
$.publish('humidity00.value.updated', obj[i]['VALUE']);} // мой объект.свойство.updated
}
}
}$.subscribe('wsData', function (_, response) {
if (response.action=='properties') {
processPropertiesUpdate(response.data);
}
});
</script>
<script>
var radial3;
var rad3val;
init();
function init() {
// Define some sections
var sections = [steelseries.Section(0, 25, 'rgba(0, 0, 220, 0.3)'),
steelseries.Section(25, 50, 'rgba(0, 220, 0, 0.3)'),
steelseries.Section(50, 75, 'rgba(220, 220, 0, 0.3)') ],
// Define one area
areas = [steelseries.Section(75, 100, 'rgba(220, 0, 0, 0.3)')],
// Define value gradient for bargraph
valGrad = new steelseries.gradientWrapper( 0,
100,
[ 0, 0.33, 0.66, 0.85, 1],
[ new steelseries.rgbaColor(0, 0, 200, 1),
new steelseries.rgbaColor(0, 200, 0, 1),
new steelseries.rgbaColor(200, 200, 0, 1),
new steelseries.rgbaColor(200, 0, 0, 1),
new steelseries.rgbaColor(200, 0, 0, 1) ]);
radial3 = new steelseries.Radial('canvasRadial3', {
gaugeType: steelseries.GaugeType.TYPE4,
size: 201,
section: sections,
area: areas,
titleString: "Title",
unitString: "Type4",
threshold: 50,
lcdVisible: true
});
}
</script>
<script src="../SteelSeries/tween-min.js"></script> //путь к стальнымСериям мой - в корне
<script src="../SteelSeries/steelseries-min.js"></script>
Открываем эту сцену, видим гауге со стрелкой в нуле. В объектах открываем наше свойство и редактируем значение, обновляю, стрелка перемещается.
если есть что-нибудь быстро меняющееся цифрововое, лучше с ним пробовать
Re: Шаблон класса / Class Template
Добавлено: Вт сен 04, 2018 12:43 am
xor
Получилось добавить стартовое значение.
Делал по аналогии
viewtopic.php?f=5&t=2810&p=41624&hilit= ... ted#p41624
Добавил разовое получение свойства по запросу, я так делал на домашних страницах через Pchart, сейчас уже, наверное, можно через апи делать или через /objects/?op=get&object=humidity00&p=value.
(Да, так - /objects/?op=get&object=humidity00&p=value - даже функцию не надо переписывать.)
Код: Выделить всё
function live_upd(url,gauge) {
$.ajax({
url: url,
}).done(function(data) {
if (data!='') {gauge.setValueAnimated(parseFloat(data));}
});
}
Код: Выделить всё
<canvas id="canvasRadial3" width="201" height="201"></canvas>
<script language='javascript'>
$.subscribe('wsConnected', function (_) {
var payload;
payload = new Object();
payload.action = 'Subscribe';
payload.data = new Object();
payload.data.TYPE='properties';
payload.data.PROPERTIES='humidity00.value';
wsSocket.send(JSON.stringify(payload));
});
function processPropertiesUpdate(data) {
var obj=jQuery.parseJSON(data);
var objCnt = obj.length;
if (objCnt) {
for(var i=0;i<objCnt;i++) {
if (obj[i]['PROPERTY']=='humidity00.value') {
//rad3val=obj[i]['VALUE'];
radial3.setValueAnimated(obj[i]['VALUE']);
$.publish('humidity00.value.updated', obj[i]['VALUE']);}
}
}
}$.subscribe('wsData', function (_, response) {
if (response.action=='properties') {
processPropertiesUpdate(response.data);
}
});
</script>
<script>
var radial3;
//var rad3val;
init();
function init() {
// Define some sections
var sections = [steelseries.Section(0, 25, 'rgba(0, 0, 220, 0.3)'),
steelseries.Section(25, 50, 'rgba(0, 220, 0, 0.3)'),
steelseries.Section(50, 75, 'rgba(220, 220, 0, 0.3)') ],
// Define one area
areas = [steelseries.Section(75, 100, 'rgba(220, 0, 0, 0.3)')],
// Define value gradient for bargraph
valGrad = new steelseries.gradientWrapper( 0,
100,
[ 0, 0.33, 0.66, 0.85, 1],
[ new steelseries.rgbaColor(0, 0, 200, 1),
new steelseries.rgbaColor(0, 200, 0, 1),
new steelseries.rgbaColor(200, 200, 0, 1),
new steelseries.rgbaColor(200, 0, 0, 1),
new steelseries.rgbaColor(200, 0, 0, 1) ]);
radial3 = new steelseries.Radial('canvasRadial3', {
gaugeType: steelseries.GaugeType.TYPE4,
size: 201,
section: sections,
area: areas,
titleString: "Title",
unitString: "Type4",
threshold: 50,
lcdVisible: true
});
live_upd("/pChart/?op=value&p=humidity00.value",radial3);
}
function live_upd(url,gauge) {
$.ajax({
url: url,
}).done(function(data) {
if (data!='') {gauge.setValueAnimated(parseFloat(data));}
});
}
</script>
<script src="../SteelSeries/tween-min.js"></script>
<script src="../SteelSeries/steelseries-min.js"></script>
Re: Шаблон класса / Class Template
Добавлено: Вт сен 04, 2018 6:48 am
tarasfrompir
ну странно все равно по 0 - чего только уже не прописывал
Re: Шаблон класса / Class Template
Добавлено: Вт сен 04, 2018 7:17 pm
xor
tarasfrompir1 писал(а): Вт сен 04, 2018 6:48 am
ну странно все равно по 0 - чего только уже не прописывал
а что в отладчике?