Перейти к содержимому


Работа с календарем или систематические задания.


Сообщений в теме: 6

#1 dolphin

    Активный участник

  • Пользователи
  • PipPipPip
  • 341 сообщений

Отправлено 12 Март 2014 - 15:02

Друзья, совершенно новая, и довольно уникальная штука - это Календарь.

Попробовал, немного разобраться в работе. Возникло множество идей, но вот реализовать их... Возможно ли? Это и хотелось бы спросить у наших супер-умов - создателей программы КБ и Календаря в частности.

А идея самая простая. Как организовать функционал, как в приложении органайзера на мобильном?

Задача 1. Заводить задание, но выбирать для него период, дни исполнения, часы и минуты?
Задача 2. Удалять из задания, ну или проставлять статус "нет необходимости" к определенному заданию из периода? (Допустим, каждый 3 день недели я хожу на тренировки. Но в апреле, 23го числа, я не пойду на тренировку, и мне надо сделать неактивным это напоминание, либо проставить статус "нет необходимости".

#2 Гость_Roman_*

  • Гости

Отправлено 12 Март 2014 - 15:59

1. Период можно задать, но однократный. Чтобы одно задание повторилось в календаре в разное время несколько раз, необходимо добавить ещё одно событие по другим датам в настройки календаря.
2. Создаёте в таблице два фильтра на поле "Статус", а в календаре добавляете два события на одну и ту же таблицу, но настроенные на эти разные фильтры. Таким образом можно будет видеть в календаре записи из одной таблицы, но с разным цветовым форматированием.

#3 dolphin

    Активный участник

  • Пользователи
  • PipPipPip
  • 341 сообщений

Отправлено 13 Март 2014 - 06:18

Просмотр сообщенияRoman (12 Март 2014 - 15:59) писал:

1. Период можно задать, но однократный. Чтобы одно задание повторилось в календаре в разное время несколько раз, необходимо добавить ещё одно событие по другим датам в настройки календаря.
Нет, Вы не совсем меня поняли. Допустим, у меня есть таблица для настройки моих заданий. В ней существуют два поля с датой. Это:
1. Дата начала
2. Дата окончания
И есть еще поле с частотой, равное дню недели или нескольким дням, например, если оно равно 15- то задание должно прописаться по понедельникам и пятницам. Если это поле равно 1234567 - то задание должно прописываться на каждый день, в течении периода.

Вот такое возможно ли реализовать?

Цитата

2. Создаёте в таблице два фильтра на поле "Статус", а в календаре добавляете два события на одну и ту же таблицу, но настроенные на эти разные фильтры. Таким образом можно будет видеть в календаре записи из одной таблицы, но с разным цветовым форматированием.
С этим понял. Спасибо.

Как идея... Может быть создать представление, которое будет создавать(заполнять) таблицу, настроенную на отображение календаря?...

То есть, выбрали мы дату начала, дату конца и период(о котором я писал выше - дни недели), после нажали на кнопку добавить и вуаля - нужная таблица, настроенная на календарь, заполнилась этим событием. Это было бы очень удобно реализовать непосредственно в календаре!!! Но тут необходимо продумать и удаление(оно будет точно таким же, но только удаление). Мне кажется, это добавить функциональности Вашему календарю.

#4 Гость_Roman_*

  • Гости

Отправлено 13 Март 2014 - 09:32

Первый пункт пока не выйдет реализовать. Но календарь обязательно будет развиваться, и, возможно, такой функционал появится.

#5 dolphin

    Активный участник

  • Пользователи
  • PipPipPip
  • 341 сообщений

Отправлено 13 Март 2014 - 09:37

Спасибо. Тем временем я попробую первый пункт выполнить как отдельное представление, где можно будет ввести период от и до(дату, время), а также указать по каким дням недели добавлять, и при нажатии на кнопку все это разместится в нужной таблице, в следствии чего появится в календаре, настроенном на эту таблицу.

#6 dolphin

    Активный участник

  • Пользователи
  • PipPipPip
  • 341 сообщений

Отправлено 13 Март 2014 - 11:11

Итак, представление полностью под себя сделал. Выкладываю основные моменты, возможно кому-то пригодится:

1. Как получить данные с датой и другими полями заострять внимание не буду.
2. Мы получим с формы, значение частоты (тут у нас хранится день недели):
$chastota = $_REQUEST['chastota'];
После, эту строку разделим на составляющие, с целью запустить цикл по каждому из значений частоты выполнения задания:
$chas = str_split($chastota);
foreach ($chas as $key) {
if ($key== 7) { $key= "0"; }; // поскольку воскресенье у нас равно 0, то мы из семерки должны превратить нуль
// тут далее пойдет цикл по датам
}
3. Прежде всего, нам необходимо превратить дату в секунды (я не программист, но так часто делают гуру программирования, чтобы высчитывать все четко по дням :)
list($d,$m,$y) = explode(".",$date1);
$time1 = mktime(0,0,0,$m,$d,$y);
list($d,$m,$y) = explode(".",$date2);
$time2 = mktime(0,0,0,$m,$d,$y);
// В этом примере $date1 - это дата начала периода, а $date2 - дата конца периода, полученные из формы отображения представления
4. После мы должны запустить цикл с шагом в 1 день по выбранным нами датам:
while ($time1<=$time2)
{
// тут будем выполнять основную программу добавления в таблицу, на которую настроен календарь
$time1+=86400;// прибавляем 86400 секунд (24 часа, ну или 1 день)
}
5. И в завершении, мы должны добавить нужны нам значения в таблицу, если заданная частота совпадает с днем недели из нашего цикла:
$den = date('w',$time1); // получаем значение дня недели из текущего перебора дней
if ($den == $key) {
// И если частота совпала, мы здесь будем присваивать значения $data[], а после их занесем в нужную нам таблицу с помощью insert_query
}

Если будут дополнительные вопросы, пожалуйста, не стесняйтесь, спрашивайте.

#7 All_ex74

    Активный участник

  • Пользователи
  • PipPipPip
  • 138 сообщений
  • Пол:Мужчина
  • Город:Барнаул

Отправлено 17 Май 2014 - 19:18

Просмотр сообщенияdolphin (13 Март 2014 - 11:11) писал:

Если будут дополнительные вопросы, пожалуйста, не стесняйтесь, спрашивайте.

Здравствуйте!

У меня такой вопрос. Есть поле Карточка (список) с четырьмя значениями - Свободна, Связана, Неактивна, Неоплачена.
Нужно вычисление - в 0 часов 1-го числа каждого месяца значение сбрасывается на Неоплачена...

Сообщение отредактировал All_ex74: 17 Май 2014 - 19:30






Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных