Обновление до версии 7.2 вносит изменения в некоторые значения по умолчанию.
all_timed
теперь включён по умолчаниюПлагин all_timed теперь активирован по умолчанию, что позволяет отображать события, продолжающиеся через ночь. Чтобы вернуть прежнее поведение, настройте конфигурацию следующим образом:
scheduler.config.all_timed = false;
В более ранних версиях функции работы с датой, такие как scheduler.date.day_start
, scheduler.date.week_start
и scheduler.date.date_part
, изменяли исходный объект даты, переданный в качестве аргумента:
const date = new Date(2025, 1, 15, 13, 00);
const dayStart = scheduler.date.day_start(date);
console.log(dayStart);
// 2025-02-15 00:00:00
console.log(date);
// 2025-02-15 00:00:00
Начиная с версии 7.2 исходная дата остаётся неизменной:
const date = new Date(2025, 1, 15, 13, 00);
const dayStart = scheduler.date.day_start(date);
console.log(dayStart);
// 2025-02-15 00:00:00
console.log(date);
// 2025-02-15 13:00:00
Обновление до версии 7.1 включает несколько несовместимых изменений.
Новый движок для Повторяющихся событий используется при включении плагина recurring
:
scheduler.plugin({
recurring:true
});
Так как новый плагин использует другой набор свойств для описания повторяющихся событий, на данный момент отсутствует прямой путь миграции. Вы можете продолжить использовать старый движок для повторяющихся событий, включив устаревший плагин до момента готовности к переходу:
scheduler.plugin({
recurring_legacy:true
});
Функция отмены, управляемая undo_deleted, теперь включена по умолчанию. Если такое поведение не подходит, его можно отключить через конфигурацию:
scheduler.config.undo_deleted = false;
Некоторые свойства устарели и теперь входят в объект конфигурации map_settings:
Обновлённый способ задания этих свойств:
scheduler.config.map_settings = {
initial_position: {
lat: 48.724,
lng: 8.215
},
error_position: {
lat: 15,
lng: 15
},
type: google.maps.MapTypeId.HYBRID
}
...
scheduler.init('scheduler_here',new Date(2024,05,11),"map");
Также эти шаблоны Map view устарели и заменены на map_info_content:
Пример нового использования шаблона:
scheduler.templates.map_info_content = function(event){
const formatDate = scheduler.templates.tooltip_date_format;
return `<div><b>Text:</b> ${event.text}
<div><b>Location:</b> ${event.event_location}</div>
<div><b>Starts:</b> ${formatDate(event.start_date)}</div>
<div><b>Ends:</b> ${formatDate(event.end_date)}</div>
</div>`;
};
Свойство map_view_provider можно указывать как отдельно, так и внутри объекта конфигурации map_settings следующим образом:
scheduler.config.map_settings = {
view_provider: "googleMap"
}
...
scheduler.init('scheduler_here',new Date(2024,05,11),"map");
Следующие свойства карты остаются вне объекта map_settings:
Обновление до версии 7.0 вносит несколько несовместимых изменений.
CSS-скины (темы) были полностью переработаны и теперь используют CSS-переменные. Хотя структура HTML и имена CSS-классов в основном остались прежними, пользовательские стили, написанные для старых версий Scheduler, могут работать некорректно в версии 7.0.
Например, ранее для изменения цвета фона события использовался следующий стиль:
<style> /* событие в дневном или недельном представлении */
.dhx_cal_event.manager_event div{
background-color: #009966 !important;
color: black !important;
}
/* многодневное событие в месячном представлении */
.dhx_cal_event_line.manager_event{
background-color: #009966 !important;
color: black !important;
}
/* событие с фиксированным временем в месячном представлении */
.dhx_cal_event_clear.manager_event{
color: black !important;
}
</style>
Начиная с версии 7.0 тот же эффект достигается так:
<style> .manager_event {
--dhx-scheduler-event-background: #009966;
--dhx-scheduler-event-color: black;
}
</style>
Список доступных переменных можно найти на странице Настройка скинов.
Для сохранения желаемого внешнего вида после миграции потребуется обновить ваши стили.
Теперь все темы объединены в один файл dhtmlxscheduler.css.
Для выбора конкретного скина используйте свойство scheduler.skin
:
scheduler.skin = "material";
Или воспользуйтесь методом setSkin:
scheduler.setSkin("material");
Учтите, что scheduler.setSkin()
вызывает перерисовку Scheduler.
Если вы переключаетесь с любого скина, кроме terrace, выполните следующие шаги:
1) Замените старый CSS-файл скина на новый объединённый файл:
<!-- СТАРЫЙ -->
<link rel="stylesheet" href="./codebase/dhtmlxscheduler_material.css" type="text/css">
<!-- НОВЫЙ -->
<link rel="stylesheet" href="./codebase/dhtmlxscheduler.css" type="text/css">
2) Включите скин через JavaScript:
scheduler.setSkin("material");
scheduler.init("scheduler_here");
scheduler.xy
Следующие свойства scheduler.xy
больше не используются:
Их высота теперь регулируется CSS-стилями, например:
.dhx_cal_navline {
height: 40px;
}
.dhx_cal_event dhx_title {
height: 30px;
}
Значения по умолчанию для свойств details_on_create и details_on_dblclick изменены с false
на true
.
Скин Material больше не включает шрифт Roboto по умолчанию.
Если вы используете Material, импортируйте шрифт вручную:
@import url(
'https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;600;700&display=swap'
);
Тултипы теперь имеют обновлённый API, который упрощает привязку тултипов к пользовательским элементам. Подробнее в статье Тултипы.
В представлениях День, Неделя и Units теперь добавлен небольшой отступ по краям колонок. Это обеспечивает пустое пространство, в котором пользователь может создать новое событие двойным щелчком.
Чтобы убрать этот отступ, установите day_column_padding в ноль:
scheduler.config.day_column_padding = 0;
Начиная с версии 7.0, функции импорта/экспорта входят в библиотеку Scheduler.
Если ранее вы подключали https://export.dhtmlx.com/scheduler/api.js для онлайн-экспорта, например:
<script src="codebase/dhtmlxscheduler.js"></script>
<script src="https://export.dhtmlx.com/scheduler/api.js"></script>
Удалите этот файл и включите расширение export_api через scheduler.plugins:
scheduler.plugins({
export_api: true
});
Библиотека Bluebird была удалена из пакета Scheduler. Теперь Promise использует нативную реализацию Promise.
Обновление до версии 6.0 вносит две основные структурные перемены в пакет Scheduler:
1) Все файлы расширений теперь включены в dhtmlxscheduler.js. Для включения дополнительных расширений используйте API.
<script src="../codebase/dhtmlxscheduler.js"></script>
<script src="../codebase/ext/dhtmlxscheduler_active_links.js"></script>
или
import "dhtmlx-scheduler";
import "dhtmlx-scheduler/ext/dhtmlxscheduler_active_links";
Удалите отдельные файлы расширений и включайте расширения через scheduler.plugins:
scheduler.plugins({
active_links: true
});
Полный список расширений смотрите здесь.
Если вы используете модифицированные или кастомные файлы расширений, продолжайте подключать их вручную, как прежде.
Обратите внимание, что расширение dhtmlxscheduler_csp.js полностью удалено и больше не требует ручного включения.
2) Все локали теперь входят в dhtmlxscheduler.js. Для активации локали используйте вызов API.
scheduler.i18n.setLocale("de");
Конструктор DataProcessor перемещён из глобальной функции dataProcessor в функцию scheduler.DataProcessor.
Если в вашем приложении используется DataProcessor, обновите код инициализации следующим образом:
// старый способ
var dp = new dataProcessor("/scheduler/backend/events");
dp.init(scheduler);
dp.setTransactionMode("REST", false);
Замените на:
// обновлённый способ
var dp = new scheduler.DataProcessor("/scheduler/backend/events");
dp.init(scheduler);
dp.setTransactionMode("REST", false);
Рекомендуется использовать scheduler.createDataProcessor:
// предпочтительный способ
var dp = scheduler.createDataProcessor({
url: "/scheduler/backend/events",
mode: "REST"
});
В этом случае вызов DataProcessor.init(scheduler) не требуется, а DataProcessor.setTransactionMode можно вызывать как обычно при необходимости.
Объект dhtmlx больше не определяется в dhtmlxscheduler.js, поэтому ряд методов и глобальных объектов устарели начиная с версии 6.0.
1) Следующие методы устарели и заменены на:
Устаревшие методы | Рабочие методы |
dhtmlx.alert | scheduler.alert |
dhtmlx.confirm | scheduler.confirm |
dhtmlx.modalbox | scheduler.modalbox |
dhtmlx.uid | scheduler.uid |
dhtmlx.copy | scheduler.copy |
dhtmlx.mixin | scheduler.mixin |
dhtmlx.defined | scheduler.defined |
dhtmlx.bind | scheduler.bind |
dhtmlx.assert | scheduler.assert |
window.dataProcessor | scheduler.DataProcessor |
Аргументы и поведение методов не изменились.
2) Следующие глобальные объекты устарели:
Если они всё ещё требуются в вашем приложении, включайте их через плагин legacy:
scheduler.plugins({
legacy: true
});
Обработчик жеста свайпа теперь по умолчанию отключён.
Чтобы включить его обратно, используйте настройку scheduler.config.touch_swipe_dates следующим образом:
scheduler.config.touch_swipe_dates = true;
Режим box-sizing для элементов событий в Месячный вид был изменён с content-box на border-box во всех скинах.
Это касается элементов .dhx_cal_event_clear и .dhx_cal_event_line.
Это изменение не должно привести к видимым отличиям, но если вы настраивали отображение событий в представлении Месяц или используете собственный скин, возможно, потребуется скорректировать ваши стили.
Начиная с версии 5.2, события можно перетаскивать за любую часть их тела, а не только за заголовок, как раньше. Чтобы вернуть прежнее поведение, установите свойство drag_event_body в false (по умолчанию включено):
scheduler.config.drag_event_body = false;
Эти события всё ещё работают, но будут удалены в будущем. Замените их следующим образом:
scheduler.attachEvent("onXLS",function(){}); →
scheduler.attachEvent("onLoadStart",function(){});
scheduler.attachEvent("onXLE",function(){}); →
scheduler.attachEvent("onLoadEnd",function(){});
Вот как обновить ваш код для новых имён API:
Начиная с v5.2, значения по умолчанию для конфига xml_date и шаблонов xml_date и xml_format — undefined. Без явного присваивания они работать не будут.
Тем не менее, Scheduler по-прежнему поддерживает старые имена, если вы переопределяли их, так что они продолжат работать. Например:
// это всё ещё будет работать
scheduler.templates.xml_date = function(datestring){
return new Date(datestring);
};
Чтобы вернуть прежний формат по умолчанию, используйте:
scheduler.config.date_format = "%m/%d/%Y %H:%i";
В версии v5.2 Scheduler пытается автоматически определять формат даты при разборе, что может повлиять на поведение scheduler.date.str_to_date, scheduler.templates.format_date и scheduler.templates.parse_date.
Чтобы вернуть прежнее поведение, когда даты разбираются строго по заданному формату, включите:
scheduler.config.parse_exact_format = true;
Ранее vertical можно было задать строкой, например:
{ name:"userselect", type:"multiselect", ..., vertical:"false" }
С версии 5.2 допускаются только boolean-значения:
{ name:"userselect", type:"multiselect", ..., vertical: false }
Если вы использовали строку "false", замените её на boolean false.
Функции умного рендеринга и горизонтального скролла привели к полной переработке разметки timeline, что повлияло на Timeline, TreeTimeline и их режимы.
Ключевое изменение — элементы TABLE, TR и TD были заменены на DIV с соответствующими именами классов.
Если ваши CSS-селекторы ориентированы на теги таблицы для стилизации timeline, вам нужно обновить их под новую разметку. Общая структура DOM осталась похожей, поэтому в основном потребуется скорректировать селекторы.
Сравнение CSS-селекторов до и после обновления:
До:
После:
Скины Glossy и Classic были объявлены устаревшими и удалены начиная с v5.0.
Если вы используете их, потребуется выбрать другой скин или продолжать использовать CSS-файлы из предыдущей версии.
В версии 5.0 был проведён серьёзный пересмотр CSS, что может вызвать проблемы при глубокой кастомизации стилей. Существующие стили могут перестать работать из-за увеличения специфичности новых стилей dhtmlxScheduler.
Универсального решения нет; для миграции потребуется просмотреть и скорректировать ваш CSS.
Обновление исправляет маршрут POST (insert) для dataProcessor в режиме REST — теперь на сервер не отправляется временный id события.
Ранее:
POST /api/{tempId}
// пример
POST /api/1234567890
Теперь:
POST /api
Начиная с v4.3, расширения Week Agenda View, Grid View, Timeline View, Units View и Multisection Events больше не входят в Standard Edition, распространяемую по GNU GPL v2.
Чтобы продолжить их использование, либо оставайтесь на версии 4.2 или ниже, либо приобретите Commercial или Enterprise лицензию.
Подробнее здесь.
Публичный API полностью обратно совместим.
Скин по умолчанию сменился на "terrace"; ext/dhtmlxscheduler_dhx_terrace.js был удалён. Чтобы вернуть классический скин, подключите его CSS-файл (codebase/dhtmlxscheduler_classic.css). Подробнее — в Скины.
multi_day теперь включён по умолчанию. Чтобы отключить, добавьте:
scheduler.config.multi_day = false;
Scheduler автоматически определяет скин по имени CSS-файла. Для пользовательских скинов, не основанных на "terrace", переименуйте CSS-файл в dhtmlxscheduler_{skin name}.css.
Можно отключить автоопределение, задав:
scheduler.skin = "{skin name}";
до вызова scheduler.init.
Эти методы устарели, но всё ещё доступны и будут удалены в Scheduler 5.x: getEventText, getEventStartDate, getEventEndDate, setEventText, setEventStartDate, setEventEndDate.
Вместо них используйте scheduler.getEvent() и работайте со свойствами непосредственно у объекта события.
Полная обратная совместимость.
Полная обратная совместимость.
Публичный API полностью обратно совместим.
Функция 'Mark now' была перемещена в расширение dhtmlxscheduler_limit.js.
Scheduler теперь поддерживает JSON, сгенерированный dhtmlxConnector. Если нет особых причин использовать XML, рекомендуется перейти на JSON для уменьшения размера файлов и ускорения загрузки.
Публичный API полностью обратно совместим.
Структура файлов слегка изменилась: ext/dhtmlxscheduler_ext.css и dhtmlxscheduler_recurring.css удалены; все стили теперь находятся в dhtmlxscheduler.css.
Аргументы некоторых шаблонов были приведены к единому виду: scheduler.templates.agenda_text и scheduler.templates.map_text теперь принимают (start_date, end_date, event) вместо просто 'event'.
Полная обратная совместимость.
Файлы локализации для шведского языка переименованы в соответствии со стандартом ISO 639-1:
sources/locale_se.js => sources/locale_sv.js
sources/locale_recurring_se.js => sources/locale_recurring_sv.js
Полная обратная совместимость.
Команда 'createUnitsView' теперь принимает другой набор параметров, но старый синтаксис также поддерживается.
Исправлены правила форматирования: %d и %m теперь всегда возвращают 2 цифры. Чтобы получить старое поведение, используйте %j и %n соответственно.
Изменились пути к некоторым файлам внутри пакета:
codebase/dhtmlxgrid_recurring.js => codebase/ext/dhtmlxgrid_recurring.js
codebase/dhtmlxgrid_recurring.css => codebase/ext/dhtmlxgrid_recurring.css
codebase/dhtmlxgrid_units.js => codebase/ext/dhtmlxgrid_units.js
API и формат данных полностью обратно совместимы.
События 'onEventChanged' и 'onEventAdded' больше не срабатывают при загрузке данных.
Файл локализации для испанского языка переименован с locale_sp.js на locale_es.js.
Опция 'drag_create' теперь управляет только созданием новых событий через drag-and-drop; создание событий по двойному клику теперь контролируется опцией 'dblclick_create'.