Закрепление шапки в расписании

Добрый вечер.

 

Подскажите, пжл, куда в Системе необходимо смотреть (где производить настройки/разработку), чтобы выполнить следующие требования в представлении "Календарь" раздела "Активности":

- закрепить шапку календаря (при наличии большого количества многодневных задач шапка после прокрутки скрывается, оставаясь "сверху")

- отсортировать записи не по полю "Начало", а по полю "Завершения"

Изображение удалено.

Нравится

5 комментариев
Лучший ответ

Попробовал уменьшить окно браузера.

Да, похоже шапка вместе с многодневными задачами закрепляется сверху над обычными задачами. А если они сами не влазят целиком, то вместе прокручиваются и шапка исчезает, остаётся только блок фильтров и всё, что выше его.

 

Это компонент ядра 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) &amp;&amp; (itemADuration === itemBDuration)) {
			result = 0;
		} else if (itemAStartDate &gt; itemBStartDate) {
			result = 1;
		} else if (itemAStartDate &lt; itemBStartDate) {
			result = -1;
		} else if (itemADuration &gt; itemBDuration) {
			result = -1;
		} else if (itemADuration &lt; itemBDuration) {
			result = 1;
		}
		return result;
	},

 

Зверев Александр,

Спасибо за ответ. Возможно ли запланировать в базовой функциональности фиксацию шапки календаря и возможность настройки сортировки?

Завёл идеи о шапке многодневных и способе сортировки.

Показать все комментарии