UNPKG

devextreme

Version:

JavaScript/TypeScript Component Suite for Responsive Web Development

93 lines (92 loc) 4.09 kB
/** * DevExtreme (cjs/__internal/scheduler/view_model/appointments_layout_manager.js) * Version: 25.2.5 * Build date: Fri Feb 20 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 _get_appointment_info = require("./get_appointment_info"); var _prepare_appointments = require("./preparation/prepare_appointments"); class AppointmentLayoutManager { constructor(schedulerStore) { this.schedulerStore = schedulerStore; this.preparedItems = []; this.filteredItems = [] } 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 isSkipResizing = appointment => appointment.isAllDayPanelOccupied && "day" === viewType && 1 === this.schedulerStore.currentView.intervalCount; const viewModel = (0, _generate_grid_view_model.generateGridViewModel)(this.schedulerStore, this.filteredItems); 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;