SmartLiving.ru

Обсуждение проекта
 
Текущее время: Вс июн 25, 2017 10:14 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 52 ]  На страницу 1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Календарь/менеджер задач
СообщениеДобавлено: Ср май 23, 2012 4:49 pm 
Не в сети
Site Admin

Зарегистрирован: Пн сен 05, 2011 6:48 pm
Сообщения: 3885
Откуда: Минск, Беларусь
Благодарил (а): 62 раз.
Поблагодарили: 999 раз.
После обновления из исходников становится доступен модуль Календарь/менеджер задач.

Запустить модуль можно по ссылке http://localhost/popup/app_calendar.html (вместо localhost поставьте ваш хост, если нужно)

Модуль (как и почти всё) в режиме тестирования и будет ещё дорабатываться.

На данный момент присутствуют следующие возможности:

* Добавление событий на определённую дату
* Повторяющиеся события (ежегодные, ежемесячные, еженедельные)
* Добавление задач на определённую дату (либо без даты)
* Повторяющиеся задачи
* Возможность задать скрипт, выполняющийся при отметке задачи как завершённая

Экран списка текущих задач:

Изображение

Редактирование/добавления события или задачи:

Изображение

_________________

Сергей Джейгало, разработчик MajorDoMo
Обо мне | Сотрудничество | Профиль Connect


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Календарь/менеджер задач
СообщениеДобавлено: Вт июн 05, 2012 9:12 pm 
Не в сети
Site Admin

Зарегистрирован: Пн сен 05, 2011 6:48 pm
Сообщения: 3885
Откуда: Минск, Беларусь
Благодарил (а): 62 раз.
Поблагодарили: 999 раз.
Небольшой скрипт, который по утрам может говорить запланированные на сегодня дела и события, используя данные из вышеописанного модуля.

Итак, делаем сценарий, называем его к примеру sayTodayAgenda

Ставим такой код:

Код:
if (file_exists('./modules/app_calendar/app_calendar.class.php')) {
 include_once('./modules/app_calendar/app_calendar.class.php');
 $calendar=new app_calendar();
 $calendar->usual($out);
 $events=$out['EVENTS_TODAY'];
 $say_phrase='';
 if (is_array($events)) {
  $total=count($events);
  $tasks=array();
  $cals=array();
  for($i=0;$i<$total;$i++) {
   if ($events[$i]['IS_TASK']=='1' && $events[$i]['IS_DONE']!='1') {
    $tasks[]=$events[$i]['TITLE'];
   } elseif ($events[$i]['IS_TASK']!='1') {
    $cals[]=$events[$i]['TITLE'];
   }
  }
  $total_tasks=count($tasks);
  if ($total_tasks) {
    $say_phrase.="У вас на сегодня запланированы задачи. ";
    for($i=0;$i<$total_tasks;$i++) {
     $say_phrase.=($i+1).". ".$tasks[$i].". ";
    }
  } else {
//   say("Никаких дел не запланировано.",1);
  }
  $total_cals=count($cals); 
  if ($total_cals) {
    $say_phrase.=("Сегодняшние события. ");
    for($i=0;$i<$total_cals;$i++) {
     $say_phrase.=$cals[$i].'. ';
    }
  } 
 }
 $events=$out['EVENTS_PAST'];
 if ($events[0]['TITLE']) {
  $say_phrase.=" Так же напоминаю о пропущенных задачах. ";
  $total_tasks=count($events);
  for($i=0;$i<$total_tasks;$i++) {
   $say_phrase.=($i+1).". ".$events[$i]['TITLE'].". ";
  }
 }
}

if ($say_phrase) {
 say($say_phrase,1);
}


теперь если его вызвать с помощью runScript('sayTodayAgenda'); то вы услышите запланированные дела и события из календаря на сегодня. я его поставил как часть сценария утреннего пробуждения, описанного здесь: http://smartliving.ru/Main/ScSecurityWireless

_________________

Сергей Джейгало, разработчик MajorDoMo
Обо мне | Сотрудничество | Профиль Connect


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Календарь/менеджер задач
СообщениеДобавлено: Ср июл 31, 2013 8:13 pm 
Не в сети

Зарегистрирован: Пн июл 29, 2013 7:40 pm
Сообщения: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Доброго времени суток. Я сам только начинаю изучать php. А никто не пробовал настроить синхрониронизацию с ms outlook, А в идеале с icloud apple? Вот это было б по настоящему удобно. Есть идеи реализации?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Календарь/менеджер задач
СообщениеДобавлено: Чт дек 05, 2013 1:04 pm 
Не в сети

Зарегистрирован: Вт мар 12, 2013 1:22 am
Сообщения: 344
Благодарил (а): 20 раз.
Поблагодарили: 40 раз.
Заметил что при создании/редктировании в базу не сохраняется параметр "без конкретной даты". Причем именно не сохраняется, т.к. если вручную изменить в таблице "calendar_events" поле "IS_NODATE" с "0" на "1", то при открытии записи календаря для редактирования галка стоит на месте как и положено.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Календарь/менеджер задач
СообщениеДобавлено: Пт дек 06, 2013 1:34 pm 
Не в сети

Зарегистрирован: Ср сен 04, 2013 10:31 am
Сообщения: 548
Откуда: Самара
Благодарил (а): 89 раз.
Поблагодарили: 122 раз.
Клевый скрипт! И никаких селектов! Круто!

Есть идея ;-)
Сделаю напоминалку как у Невела Долгопупса из Гарри Поттера (угу, я фанат этого произведения).
Будет гореть лампочка (хоть управляемый выелючатель, хоть диод от Ардуины) когда есть не выполненные дела на сегодня. Типа видишь что что-то забыл :-)
Такая вот идейка.

Ну и раз уж заговорили...
Меняющийся потолок обеденного зала я сделал (диодная RGB лента по периметру меняющая цвет по времени)
Часы дома Уизли - показывают не время, а местонахождение членов семьи. Есть в МЖД из коробки.

Ну и порекламиную фанфик по Гарри Поттера: http://hpmor.ru/

_________________
aka msh555
Cubian на Cubietruck, Connect


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Календарь/менеджер задач
СообщениеДобавлено: Вт дек 10, 2013 10:05 am 
Не в сети

Зарегистрирован: Ср сен 04, 2013 10:31 am
Сообщения: 548
Откуда: Самара
Благодарил (а): 89 раз.
Поблагодарили: 122 раз.
Реализовал я задумку.
Напоминалка.
Одна лампочка и 2 кнопки. Я сделал на NooLite, но можно и на чем-то другом: 1wire, arduino, ...
Итак функционал.
Лампочка горит, если на сегодня есть невыполненные дела.
Кнопка 1 проговаривает по кругу каждую задачу. В конце списка начинает с начала.
Кнопка 2 помечает задачу как выполненную.
Итого: смотрим горит лампочка, тыкаем 1 кнопку, слушаем. При желании помечаем как выполнено тыкая кнопку 2. Тыкаем опять кнопку 1. И так пока не погаснет лампочка или не пойдем делать оставшиеся дела :-).

Лампочка:
Реализовано через состояния системы. Проверка каждую минуту. Если статус 1, лампочка горит, 0 - не горит.
Class: OperationalModes/Объект: TaskExistMode/Method: Все -> -> check
Код:
Код:
if (file_exists('./modules/app_calendar/app_calendar.class.php')) {
 include_once('./modules/app_calendar/app_calendar.class.php');
 $calendar=new app_calendar();
 $calendar->usual($out);
 $events=$out['EVENTS_TODAY'];
 $task_exists=0;
 if (is_array($events)) {
  $total=count($events);
  $tasks=array();
  for($i=0;$i<$total;$i++) {
   if ($events[$i]['IS_TASK']=='1' && $events[$i]['IS_DONE']!='1') {
    $tasks[]=$events[$i]['TITLE'];
   }
  }
  $total_tasks=count($tasks);
  if ($total_tasks) {
    $task_exists=1;
  }
 }
 $events=$out['EVENTS_PAST']; // напоминание о пропущенных задачах
 if ($events[0]['TITLE']) {
   $task_exists=1;
 }
 if ($this->getProperty("active")!=$task_exists){
   $this->setProperty("active",$task_exists);
 } 
}


Кнопка 1
Для хранения свойств lastSelectId, lastSelectTimeStamp и lastSelectTitle используем объект TaskExistMode
Код:
  //Напомним о делах
if(time()-gg("TaskExistMode.lastSelectTimeStamp")<60){ // защита от простоя больше минуты, начать с начала
 $lastSelectId = gg("TaskExistMode.lastSelectId");
}else{
 $lastSelectId = 0;
}
sg("TaskExistMode.lastSelectTimeStamp",time());
$SQLText = " SELECT e.id as ID, e.title as TITLE, e.notes as NOTES, u.name AS USERNAME";
$SQLText.= " FROM calendar_events e ";
$SQLText.= " LEFT JOIN users u ON e.USER_ID = u.ID ";
$SQLText.= " WHERE IS_TASK =1 ";
$SQLText.= " AND IS_DONE =0 ";
$SQLText.= " AND DUE < NOW( ) ";
$SQLText.= " AND e.ID > ".$lastSelectId." ";
$SQLText.= " ORDER BY e.ID ";
$SQLText.= " LIMIT 1 ";
$SQLResult = SQLSelectOne($SQLText);
if ($SQLResult['ID']){
  $sayText = "";
  if($SQLResult['USERNAME']){
    $sayText .= $SQLResult['USERNAME']." ";
  }
  $sayText .= $SQLResult['TITLE'].". ".$SQLResult['NOTES'];
  sg("TaskExistMode.lastSelectId",$SQLResult['ID']);
  sg("TaskExistMode.lastSelectTitle",$SQLResult['TITLE']);
}else{
  if($lastSelectId){
    $sayText = "Конец списка";
    sg("TaskExistMode.lastSelectId",0);
  }else{
    $sayText = "Дел больше нет";
  }
}
say($sayText,1);


Кнопка 2
Помечаем последнюю проговоренную задачу как выполненную.
Код:
  //Помечаем последнюю проговоренную задачу как выполненную.
if(time()-gg("TaskExistMode.lastSelectTimeStamp")<60){
  include_once('./modules/app_calendar/app_calendar.class.php');
  $calendar=new app_calendar();
  $calendar->task_done(gg("TaskExistMode.lastSelectId"));
  say("Задача ".gg("TaskExistMode.lastSelectTitle")." выполнена.",1);
}
callMethod("TaskExistMode.check");

_________________
aka msh555
Cubian на Cubietruck, Connect


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Календарь/менеджер задач
СообщениеДобавлено: Вс май 04, 2014 10:25 am 
Не в сети

Зарегистрирован: Сб окт 12, 2013 11:03 pm
Сообщения: 1356
Благодарил (а): 44 раз.
Поблагодарили: 251 раз.
Сделайте пожалуйста просмотр всех событий для редактирования, а также категорий

_________________
Linux, Raspberry PI, MySensors
Connect: http://connect.smartliving.ru/profile/53
Мои проекты: http://smartliving.ru/profile/4


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Календарь/менеджер задач
СообщениеДобавлено: Пн авг 18, 2014 11:09 am 
Не в сети

Зарегистрирован: Пт июл 11, 2014 11:08 am
Сообщения: 42
Благодарил (а): 6 раз.
Поблагодарили: 7 раз.
Подскажите пожалуйста, как можно (если это можно) добавлять события/задачи в календарь из скрипта?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Календарь/менеджер задач
СообщениеДобавлено: Пн авг 25, 2014 12:54 pm 
Не в сети
Site Admin

Зарегистрирован: Пн сен 05, 2011 6:48 pm
Сообщения: 3885
Откуда: Минск, Беларусь
Благодарил (а): 62 раз.
Поблагодарили: 999 раз.
LocalBrownie писал(а):
Подскажите пожалуйста, как можно (если это можно) добавлять события/задачи в календарь из скрипта?


Новая задача:
Код:
$rec=array();
$rec['TITLE']="Название"
$rec['NOTES']="Заметки к задаче"
$rec['DUE']=date('Y-m-d'); // срок выполнения
$rec['IS_TASK']=1;
$rec['ADDED']=date('Y-m-d H:i:s');
$rec['ID']=SQLInsert('calendar_events'$rec); 


Новое событие:
Код:
$rec=array();
$rec['TITLE']="Название"
$rec['NOTES']="Заметки к событию"
$rec['DUE']=date('Y-m-d'); // дата события
$rec['IS_REPEATING']=1// повторяющееся событие
$rec['REPEAT_TYPE']=1// повторять ежегодно (1), ежемесячно (2), еженедельно (3)
$rec['IS_TASK']=0;
$rec['ADDED']=date('Y-m-d H:i:s');
$rec['ID']=SQLInsert('calendar_events'$rec); 

_________________

Сергей Джейгало, разработчик MajorDoMo
Обо мне | Сотрудничество | Профиль Connect


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Календарь/менеджер задач
СообщениеДобавлено: Пт дек 26, 2014 12:25 pm 
Не в сети

Зарегистрирован: Пт июл 11, 2014 11:08 am
Сообщения: 42
Благодарил (а): 6 раз.
Поблагодарили: 7 раз.
Я вот заметил недавно, что назначить выполнение скрипта можно не только на задачу, а и на событие. При этом настройки сохраняются даже после перезагрузки мажордома. Понятно, что скрипт не выполняется, потому как событие - это не задача и "выполнить событие" трудно. Но имя скрипта как-бы есть, так что можно превратить небольшой баг в интересную фичу.
Есть ли возможность вручную запустить скрипт, привязанный к событию, допустим при проговаривании в sayTodayAgenda?

Идея такая - есть праздники с выходными, которые чётко привязаны к дате - например НГ, Рождество, 8-марта и т.д. Понятно, что попадают они чаще всего на будние дни.
Т.е. будний становится выходным, но алисе про это как-бы не известно, и она честно, дабы не обидеть хозяев утром 1-го января, в четверг, начнёт будить всех в 7 утра и выгонять на работу.
С чем моё тело будет явно не согласно! ;)
А вот если-б на 31-е, ну или на 1-е (в зависимости от реализации) прописать событие "Новый год!" и пнуть небольшой скриптец на пару строчек, например:

sg('ThisComputer.Holiday', 1);
sg('ThisComputer.HolidayText', "Новый Год");

То уже отталкиваясь от этих переменных можно спокойно заставить систему правильно среагировать на "случайный выходной", и обойтись без человеческих и "технических" жертв! :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 52 ]  На страницу 1, 2, 3, 4, 5, 6  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: vladmil и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB