Show/Hide Toolbars

Методические рекомендации по настройке системы "Первая Форма"



Использование JavaScript и CSS > Примеры JS и CSS вставок

Проверка настройки повторений при создании повторяющихся задач

Содержание Назад Вверх Вперед E-mail

В одной и той же категории часть задач может носить разовый характер, а часть - регулярно повторяющийся. Для повторяющихся задач включается флажок "Регулярно" (в данном примере этот ДП имеет ID=111). Важно, чтобы для повторяющихся задач было настроено повторение. Чтобы пользователи при создании таких задач не забывали настраивать повторения, добавляется проверка при нажатии кнопки "Поставить задачу": если на карточке создания новой задачи включен флажок "Регулярно", а настройки повторений не заданы, пользователю выдается предупреждение, задача не создается, и окно создания задачи остается открытым.

Чтобы автоматизировать такую проверку, к карточке создания новой задачи можно добавить JS-вставку:

$(window).on('load', function() {
 // Создаем функцию вызывающую старый код кнопки постановки задачи с контекстом
 function evalInContext( context, js) {
         return function() {
                 return eval(js);
         }.call(context);
 }
 
 var ep111 = new ExtParam(111);        // Значение ДП "Регулярно"   
 var submitBtnClickFunc = $('#btnPostTask').attr('onclick');        // Запоминаем настройки события при клике на кнопку постановки задачи
 $('#btnPostTask').attr('onclick', '');        // Очищаем событие при клике на кнопку
 $('#btnPostTask').click(function() {        // Проверяем условия при клике
         var tr = typeof getNtfModelTaskTimeSettings();
         // Проверяем условие:
         // если окно настройки повторений не открывалось вообще, то typeof getNtfModelTaskTimeSettings() будет 'undefined'
         // если окно настройки повторений открывалось, но расписание не установлено (не сохранено),
         // то typeof getNtfModelTaskTimeSettings() будет 'object', в этом случае надо проверить его свойство .taskRecurrence - оно будет 'null'
         if (ep111.val() == 'да' && (tr == 'undefined' || (tr == 'object' && getNtfModelTaskTimeSettings().taskRecurrence == null))) {
                 // Если выполняется условие отмены, выводим предупреждение
                 dialogs.alert("Внимание!", "Создание поручений данного вида без расписания повторения запрещено!"); 
                 return false;
         }

         else {
                 // Если условие не выполняется, запускаем старый код кнопки
                 PostTaskClick();
         }
 });
});

js_repeat_taskbar

Иконка настройки параметров повторения на панели инструментов карточки создания новой задачи.

Чтобы иконка настройки параметров повторения на панели инструментов была доступна только при включенном флажке "Регулярно", можно добавить такую JS-вставку (на панели инструментов нужная иконка – 6-ая по порядку, с учетом разделителя):

$(window).on('NewTaskLoadFinished', function()
{
 var ep111 = new ExtParam(111);
 ep111.change(function () {
         switch(ep111.val()) {
                 case 'нет':  
                         $('#NewTaskToolbar > ul > li:nth-child(6)').css("pointer-events","none")
                         break;
                 case 'да':
                         $('#NewTaskToolbar > ul > li:nth-child(6)').css("pointer-events","auto")
                         break;
                 default:
                         $('#NewTaskToolbar > ul > li:nth-child(6)').css("pointer-events","none")
                         break;
         }
 });
 ep111.change();
});