Добрый вечер.
Подскажите, пжл, куда в Системе необходимо смотреть (где производить настройки/разработку), чтобы выполнить следующие требования в представлении "Календарь" раздела "Активности":
- закрепить шапку календаря (при наличии большого количества многодневных задач шапка после прокрутки скрывается, оставаясь "сверху")
- отсортировать записи не по полю "Начало", а по полю "Завершения"
Нравится
Попробовал уменьшить окно браузера.
Да, похоже шапка вместе с многодневными задачами закрепляется сверху над обычными задачами. А если они сами не влазят целиком, то вместе прокручиваются и шапка исчезает, остаётся только блок фильтров и всё, что выше его.
Это компонент ядра Terrasoft.controls.ScheduleEdit, он реализован в файле https://сайт/0/core/hash/Terrasoft/controls/schedule-edit/schedule-edit…
Там, если смотреть HTML-код страницы, есть три блока, сверху вниз: title-area, multi-day-item-area, scroll-area. Даже по названию видно, что прокручиваться предназначен третий, с обычными задачами.
То есть, это код ядра, не конфигурации.
Сортировка по началу, видимо, там же:
/** * Returns the sorted list of calendar items. * @private * @param {Array} schedulerItemList List of calendar items. * @return {Array} Sorted list of calendar items. */ sortScheduleItemList: function(schedulerItemList) { const sortItemList = []; Terrasoft.each(schedulerItemList, function(item) { if (!item.isMultiDayItem()) { sortItemList.push(item); } }); sortItemList.sort(this.sortScheduleItemListByStartDate); return sortItemList; }, /** * Returns the result of comparing 2 calendar items by date. * @private * @param {Object} itemA Item #. * @param {Object} itemB Item B. * @return {Array} The result of comparing 2 calendar items by date. */ sortScheduleItemListByStartDate: function(itemA, itemB) { let result = 0; const itemAStartDate = itemA.startDate; const itemADuration = itemA.dueDate - itemAStartDate; const itemBStartDate = itemB.startDate; const itemBDuration = itemB.dueDate - itemBStartDate; if ((itemAStartDate === itemBStartDate) && (itemADuration === itemBDuration)) { result = 0; } else if (itemAStartDate > itemBStartDate) { result = 1; } else if (itemAStartDate < itemBStartDate) { result = -1; } else if (itemADuration > itemBDuration) { result = -1; } else if (itemADuration < itemBDuration) { result = 1; } return result; },
Уточните, где именно на скриншоте у Вас скрылась шапка? И блок фильтрации, и многодневные задачи там видны.
Возможно, если у Вас так много в расписании многодневных задач, есть смысл применить диаграмму Ганта? Есть пара дополнений с её реализацией.
Попробовал уменьшить окно браузера.
Да, похоже шапка вместе с многодневными задачами закрепляется сверху над обычными задачами. А если они сами не влазят целиком, то вместе прокручиваются и шапка исчезает, остаётся только блок фильтров и всё, что выше его.
Это компонент ядра Terrasoft.controls.ScheduleEdit, он реализован в файле https://сайт/0/core/hash/Terrasoft/controls/schedule-edit/schedule-edit…
Там, если смотреть HTML-код страницы, есть три блока, сверху вниз: title-area, multi-day-item-area, scroll-area. Даже по названию видно, что прокручиваться предназначен третий, с обычными задачами.
То есть, это код ядра, не конфигурации.
Сортировка по началу, видимо, там же:
/** * Returns the sorted list of calendar items. * @private * @param {Array} schedulerItemList List of calendar items. * @return {Array} Sorted list of calendar items. */ sortScheduleItemList: function(schedulerItemList) { const sortItemList = []; Terrasoft.each(schedulerItemList, function(item) { if (!item.isMultiDayItem()) { sortItemList.push(item); } }); sortItemList.sort(this.sortScheduleItemListByStartDate); return sortItemList; }, /** * Returns the result of comparing 2 calendar items by date. * @private * @param {Object} itemA Item #. * @param {Object} itemB Item B. * @return {Array} The result of comparing 2 calendar items by date. */ sortScheduleItemListByStartDate: function(itemA, itemB) { let result = 0; const itemAStartDate = itemA.startDate; const itemADuration = itemA.dueDate - itemAStartDate; const itemBStartDate = itemB.startDate; const itemBDuration = itemB.dueDate - itemBStartDate; if ((itemAStartDate === itemBStartDate) && (itemADuration === itemBDuration)) { result = 0; } else if (itemAStartDate > itemBStartDate) { result = 1; } else if (itemAStartDate < itemBStartDate) { result = -1; } else if (itemADuration > itemBDuration) { result = -1; } else if (itemADuration < itemBDuration) { result = 1; } return result; },
Завёл идеи о шапке многодневных и способе сортировки.