Дизайн интерфейса

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Дизайн интерфейса

Сообщение nick7zmail » Вт окт 06, 2015 10:53 am

Alex, вопрос наверное к тебе, опять =D. В начале темы на твоих скринах часто мелькает "индикатор прохождения минутного цикла". Можешь код выложить?
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Дизайн интерфейса

Сообщение Alex » Вт окт 06, 2015 12:41 pm

Alex, вопрос наверное к тебе, опять =D. В начале темы на твоих скринах часто мелькает "индикатор прохождения минутного цикла". Можешь код выложить?
Создаём объект testOnNewMinute и его свойства

value
visio

В секундный цикл помещаем код

$seconds = date('s', time());
$seconds = $seconds / 10;
$a = "";

for ($i = 0; $i <= $seconds; $i++) {
$a = $a.'●';
}

В onNewMinute ставим маркеры, например

setGlobal('testOnNewMinute.value', 'START');

setGlobal('testOnNewMinute.value', 'OK');

Если минутный цикл зависнет, то в панели будет написано на каком этапе

Далее, в \htdocs\templates\default.html добавляем яваскрипт

cycle_test_value = new middle_connector('testOnNewMinute.value', '', 9000, 0);
cycle_test_visio = new middle_connector('testOnNewMinute.visio', '', 9000, 0);

function show9s() {
$("#cycle_value").html(cycle_test_value.valueStr);
$("#cycle_visio").html(cycle_test_visio.valueStr);
}

$(document).ready(function(){
setInterval('show9s()', 9000);
});

И не забываем подключить middle_connector

<script language="javascript" type="text/javascript" src="/middle/middle_connector.js"></script>

И отображаем на странице

<font size="3" color="#77bb77" face="Arial"> <span id="cycle_visio"></span></font>
<font size="2" color="lightgray" face="Arial"><span id="cycle_value"><b>OK</b></span></font>

Всё это желательно проделывать с пониманием, иначе навряд ли это запустится.
Последний раз редактировалось Alex Вт окт 06, 2015 12:44 pm, всего редактировалось 1 раз.
За это сообщение автора Alex поблагодарил:
nick7zmail (Сб окт 10, 2015 10:02 am)
Рейтинг: 1.16%
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Дизайн интерфейса

Сообщение Alex » Вт окт 06, 2015 12:43 pm

Я проста не понимаю нужно ещё один объект powerALL.value и в нём свойство Value ?
Также откуда берётся остальные значения ?
Всё очень просто. PowerALL это новый объект, а perDay и perDay_, costDay это свойства объекта oeALL.

А te3state.now это умный тариф, можно для простоты заменить фиксированной таксой.
dmw
Сообщения: 469
Зарегистрирован: Вт мар 12, 2013 1:22 am
Благодарил (а): 41 раз
Поблагодарили: 81 раз

Re: Дизайн интерфейса

Сообщение dmw » Вт окт 06, 2015 3:38 pm

Alex, выложите папку /jsdata ?
В Вашем шаблоне default.html идут ссылки на различные скрипты оттуда, в частности на:
/jsdata/tabs_mini1.js
/jsdata/face_connector.js

и нигде не нашел по форуму:
/jsgraphics/state2.js
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Дизайн интерфейса

Сообщение nick7zmail » Вт окт 06, 2015 5:59 pm

Alex писал(а): В секундный цикл помещаем код
А есть какой-нибудь секундный цикл встроенный в систему? (Например я знаю что checkstate отрабатывает каждую секунду...где он вызывается?). А то создавать таймер по этому методу по-моему как то напрягет систему: вызывать скрипт каждую секунду. Или я ошибаюсь?
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Дизайн интерфейса

Сообщение Alex » Вт окт 06, 2015 10:31 pm

Alex, выложите папку /jsdata ?
В Вашем шаблоне default.html идут ссылки на различные скрипты оттуда, в частности на:
/jsdata/tabs_mini1.js
/jsdata/face_connector.js
и нигде не нашел по форуму:
/jsgraphics/state2.js
Выложил апхив jsdata,zip
А есть какой-нибудь секундный цикл встроенный в систему? (Например я знаю что checkstate отрабатывает каждую секунду...где он вызывается?). А то создавать таймер по этому методу по-моему как то напрягет систему: вызывать скрипт каждую секунду. Или я ошибаюсь?
Вот пример скриптов — нужно только один раз запустить

timer_1s
============

clearTimeout("timer_1s_timeout");


// -------------------->

// Код для запуска раз в 1 секунду

// -------------------->


setTimeOut("timer_1s_timeout", "runScript('timer_1s');", 1);



timer_1s_stop
=============

clearTimeout("timer_1s_timeout");
Вложения
jsdata.zip
jsdata
(2.44 КБ) 264 скачивания
За это сообщение автора Alex поблагодарил:
dmw (Пт окт 09, 2015 10:01 am)
Рейтинг: 1.16%
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Дизайн интерфейса

Сообщение nick7zmail » Чт окт 08, 2015 9:55 pm

Alex писал(а): Всё это желательно проделывать с пониманием, иначе навряд ли это запустится.
Всегда все стараюсь проделывать с пониманием, но когда заходит речь о ява скриптах - могу только догадываться как правильно, ну или хотя бы чтобы работало. Заставить работать не все получается.

Про секундный цикл - я не имел ввиду, что не понял как его делать), я имел ввиду то что скрипт, который убивает свой таймаут, потом устанавливает себя же на запуск через секунду, и потом опять все по-кругу - по моему как то сильно похоже на самодельные костыли)). (как уже говорил - поправьте, если не прав). Я вот избрал чуть более простой способ ежесекундно запускать метод. В system.checkState добавил

Код: Выделить всё

callMethod('ClockChime.onNewSecond');
А спрашивал: вдруг кто знает, откуда вызываются методы onNewHour/onNewMinute? Может туда же вписать onNewSecond, и все, и нигде его прописывать не надо будет?

Но это оффтоп. Вернемся к индикатору.
Я думаю в цикл надо добавить как минимум sg() как то так:

Код: Выделить всё

for ($i = 0; $i <= $seconds; $i++) {
$a = $a.'■';
sg('ClockChime.visio', $a);
} 
Одним словом в свойства все записывается прекрасно:
11.jpg
Свойства
11.jpg (18.86 КБ) 11997 просмотров
Но, как я и говорил, когда дело доходит до явы, действую в слепую, и прошу помощи. В default.html подключил:

Код: Выделить всё

<script language="javascript" type="text/javascript" src="/js/middle_connector.js"></script>
<script language="javascript" type="text/javascript" src="/js/middle_object.js"></script>
Мидл коннектор качал отсюда (из первого поста, может там чего то не хватает?).

Далее вписал скрипт:

Код: Выделить всё

<script language="javascript">
cycle_test_value = new middle_connector('ClockChime.value', '', 9000, 0);
cycle_test_visio = new middle_connector('ClockChime.visio', '', 9000, 0);

function show9s() {
$("#cycle_value").html(cycle_test_value.valueStr);
$("#cycle_visio").html(cycle_test_visio.valueStr);
}

$(document).ready(function(){
setInterval('show9s()', 9000);
});
</script>
после скрипта скрытия левой панели.
И вписал в верхнюю панель это:

Код: Выделить всё

                                <td align="right" width="5%" >
                                
                                <font size="3" color="#77bb77" face="Arial"> <span id="cycle_visio"></span></font>
                                <font size="2" color="lightgray" face="Arial"><span id="cycle_value"><b>OK</b></span></font>
                                </td>
В итоге получил всего лишь надпись:
22.jpg
Результат
22.jpg (20.39 КБ) 11997 просмотров
И то, по-моему это та, которая вписана в ручную в строке

Код: Выделить всё

<span id="cycle_value"><b>OK</b></span> 
Где я ошибся? Или что-то забыл?
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
skysilver
Сообщения: 3006
Зарегистрирован: Чт авг 21, 2014 8:28 am
Откуда: Киров, Россия
Благодарил (а): 400 раз
Поблагодарили: 1753 раза
Контактная информация:

Re: Дизайн интерфейса

Сообщение skysilver » Пт окт 09, 2015 10:01 am

Для справки. system.checkState запускается не раз в секунду, а раз в 5 секунд. Или даже 6, т.к. в коде есть задержка sleep(1). Большинство циклов в MJD крутится с 5-6 секундным интервалом.
Ниже выдержка из исходника цикла cycle_states.php:

Код: Выделить всё

 while (1)
   {
     if (time() - $checked_time > 5)
      {
         setGlobal((str_replace('.php', '', basename(__FILE__))) . 'Run', time(), 1);
         $checked_time = time();
         cycleBody();
      }
   
      if (file_exists('./reboot') || IsSet($_GET['onetime']))
      {
         $db->Disconnect();
         exit;
      }
   
      sleep(1);
   } 
MajorDoMo (GitHub) на Cubietruck. ОС Debian 7 (wheezy) (kernel 3.4.105) с переносом на HDD.
Мой CONNECT | Блоги | Telegram
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Дизайн интерфейса

Сообщение Alex » Пт окт 09, 2015 10:10 am

Я думаю в цикл надо добавить как минимум sg() как то так:
Совершенно верно. Кубики :) нужно «запихнуть» в свойство, видимо этот кусок я пропустил при копировании.

Код: Выделить всё

<script language="javascript" type="text/javascript" src="/js/middle_connector.js"></script>
<script language="javascript" type="text/javascript" src="/js/middle_object.js"></script>
У меня директория middle, а не js
Мидл коннектор качал отсюда (из первого поста, может там чего то не хватает?).
Там чуть ниже выложен код из системы и комментарий пользователя, что у него всё заработало
Далее вписал скрипт:
Тут трудно сказать, на первый взгляд всё правильно. Для начала нужно понять работает ли цикл и сам коннектор. Попробуйте запустить вместо

$("#cycle_value").html(cycle_test_value.valueStr);

$("#cycle_value").html('test');

Тогда будет понятно, попадает ли вообще что-то в "#cycle_value"
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Дизайн интерфейса

Сообщение nick7zmail » Пт окт 09, 2015 4:31 pm

skysilver писал(а):Для справки. system.checkState запускается не раз в секунду, а раз в 5 секунд. Или даже 6
Спасибо, не знал. А есть информация - какой php запускает onNewHour/onNewMinute?
Alex писал(а):
$("#cycle_value").html(cycle_test_value.valueStr);

$("#cycle_value").html('test');

Тогда будет понятно, попадает ли вообще что-то в "#cycle_value"
Попробовал...ноль реакции. Результат тот же. Либо middle_connector не подключается, либо скрипт цикла на страничке не запускается. Как понять?

PS: на всякий случай попробовал перекинуть все из js в middle, и подключить соответственно. Результат тот же.
Последний раз редактировалось nick7zmail Пт окт 09, 2015 5:36 pm, всего редактировалось 1 раз.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Ответить