UNPKG

devextreme

Version:

JavaScript/TypeScript Component Suite for Responsive Web Development

103 lines (102 loc) 4.56 kB
/** * DevExtreme (cjs/__internal/scheduler/view_model/appointments_layout_manager.js) * Version: 25.2.7 * Build date: Tue May 05 2026 * * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _filter_appointments = require("./filtration/filter_appointments"); var _generate_agenda_view_model = require("./generate_view_model/generate_agenda_view_model"); var _generate_grid_view_model = require("./generate_view_model/generate_grid_view_model"); var _option_manager = require("./generate_view_model/options/option_manager"); var _get_appointment_info = require("./get_appointment_info"); var _prepare_appointments = require("./preparation/prepare_appointments"); class AppointmentLayoutManager { get filteredItems() { return this._filteredItems } get sortedItems() { return this._sortedItems } constructor(schedulerStore) { this.schedulerStore = schedulerStore; this.preparedItems = []; this._filteredItems = []; this._sortedItems = [] } prepareAppointments(items) { this.preparedItems = (0, _prepare_appointments.prepareAppointments)(this.schedulerStore, items) } filterAppointments() { this._filteredItems = (0, _filter_appointments.filterAppointments)(this.schedulerStore, this.preparedItems) } hasAllDayAppointments() { return this._filteredItems.filter(item => item.isAllDayPanelOccupied).length > 0 } generateViewModel() { const viewType = this.schedulerStore.currentView.type; if ("agenda" === viewType) { const viewModel = (0, _generate_agenda_view_model.generateAgendaViewModel)(this.schedulerStore, this._filteredItems); return viewModel.map(item => Object.assign({}, item, { isAgendaModel: true, info: (0, _get_appointment_info.getAgendaAppointmentInfo)(item) })) } const optionManager = new _option_manager.OptionManager(this.schedulerStore); this._sortedItems = (0, _generate_grid_view_model.sortAppointments)(optionManager, this._filteredItems); const viewModel = (0, _generate_grid_view_model.generateGridViewModel)(this.schedulerStore, optionManager, this._sortedItems); const isSkipResizing = appointment => appointment.isAllDayPanelOccupied && "day" === viewType && 1 === this.schedulerStore.currentView.intervalCount; const toCollectedItem = item => ({ itemData: item.itemData, allDay: item.isAllDayPanelOccupied, groupIndex: item.groupIndex, width: item.width, height: item.height, info: (0, _get_appointment_info.getAppointmentInfo)(item) }); return viewModel.map(item => { if (item.items.length) { return { itemData: item.itemData, allDay: item.isAllDayPanelOccupied, groupIndex: item.groupIndex, sortedIndex: item.sortedIndex, top: item.top, left: item.left, width: item.width, height: item.height, isCompact: item.isCompact, items: item.items.map(toCollectedItem) } } return (item => ({ itemData: item.itemData, allDay: item.isAllDayPanelOccupied, groupIndex: item.groupIndex, sortedIndex: item.sortedIndex, direction: item.direction, level: item.level, maxLevel: item.maxLevel, empty: item.empty, top: item.top, left: item.left, height: item.height, width: item.width, reduced: item.reduced, partIndex: item.partIndex, partTotalCount: item.partCount, rowIndex: item.rowIndex, columnIndex: item.columnIndex, skipResizing: isSkipResizing(item), info: (0, _get_appointment_info.getAppointmentInfo)(item) }))(item) }) } } var _default = exports.default = AppointmentLayoutManager;