UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

125 lines (122 loc) 5.31 kB
/** * DevExtreme (cjs/ui/scheduler/appointments/viewModelGenerator.js) * Version: 21.2.3 * Build date: Thu Oct 28 2021 * * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ "use strict"; exports.AppointmentViewModelGenerator = void 0; var _strategy_vertical = _interopRequireDefault(require("./rendering_strategies/strategy_vertical")); var _strategy_horizontal = _interopRequireDefault(require("./rendering_strategies/strategy_horizontal")); var _strategy_horizontal_month_line = _interopRequireDefault(require("./rendering_strategies/strategy_horizontal_month_line")); var _strategy_horizontal_month = _interopRequireDefault(require("./rendering_strategies/strategy_horizontal_month")); var _strategy_agenda = _interopRequireDefault(require("./rendering_strategies/strategy_agenda")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj } } function _extends() { _extends = Object.assign || function(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key] } } } return target }; return _extends.apply(this, arguments) } var RENDERING_STRATEGIES = { horizontal: _strategy_horizontal.default, horizontalMonth: _strategy_horizontal_month.default, horizontalMonthLine: _strategy_horizontal_month_line.default, vertical: _strategy_vertical.default, agenda: _strategy_agenda.default }; var AppointmentViewModelGenerator = function() { function AppointmentViewModelGenerator() {} var _proto = AppointmentViewModelGenerator.prototype; _proto.initRenderingStrategy = function(options) { var RenderingStrategy = RENDERING_STRATEGIES[options.appointmentRenderingStrategyName]; this.renderingStrategy = new RenderingStrategy(options) }; _proto.generate = function(filteredItems, options) { var isRenovatedAppointments = options.isRenovatedAppointments, appointmentRenderingStrategyName = options.appointmentRenderingStrategyName; var appointments = filteredItems ? filteredItems.slice() : []; this.initRenderingStrategy(options); var renderingStrategy = this.getRenderingStrategy(); var positionMap = renderingStrategy.createTaskPositionMap(appointments); var viewModel = this.postProcess(appointments, positionMap, appointmentRenderingStrategyName, isRenovatedAppointments); if (isRenovatedAppointments) { return this.makeRenovatedViewModel(viewModel) } return { positionMap: positionMap, viewModel: viewModel } }; _proto.postProcess = function(filteredItems, positionMap, appointmentRenderingStrategyName, isRenovatedAppointments) { var _this = this; return filteredItems.map((function(data, index) { if (!_this.getRenderingStrategy().keepAppointmentSettings()) { delete data.settings } var appointmentSettings = positionMap[index]; appointmentSettings.forEach((function(item) { item.direction = "vertical" === appointmentRenderingStrategyName && !item.allDay ? "vertical" : "horizontal" })); var item = { itemData: data, settings: appointmentSettings }; if (!isRenovatedAppointments) { item.needRepaint = true; item.needRemove = false } return item })) }; _proto.makeRenovatedViewModel = function(viewModel) { var strategy = this.getRenderingStrategy(); var regularViewModel = []; var allDayViewModel = []; viewModel.forEach((function(_ref) { var itemData = _ref.itemData, settings = _ref.settings; settings.forEach((function(options) { var geometry = strategy.getAppointmentGeometry(options); var item = { appointment: itemData, geometry: _extends({}, geometry, { leftVirtualWidth: options.leftVirtualWidth, topVirtualHeight: options.topVirtualHeight }), info: _extends({}, options.info, { allDay: options.allDay }) }; if (options.allDay) { allDayViewModel.push(item) } else { regularViewModel.push(item) } })) })); return { allDay: allDayViewModel, regular: regularViewModel } }; _proto.getRenderingStrategy = function() { return this.renderingStrategy }; return AppointmentViewModelGenerator }(); exports.AppointmentViewModelGenerator = AppointmentViewModelGenerator;