| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393 |
- /**
- * DevExtreme (ui/scheduler/rendering_strategies/ui.scheduler.appointments.strategy.agenda.js)
- * Version: 19.1.16
- * Build date: Tue Oct 18 2022
- *
- * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED
- * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
- */
- "use strict";
- function _typeof(obj) {
- "@babel/helpers - typeof";
- return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {
- return typeof obj
- } : function(obj) {
- return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj
- }, _typeof(obj)
- }
- var _date = require("../../../core/utils/date");
- var _date2 = _interopRequireDefault(_date);
- var _iterator = require("../../../core/utils/iterator");
- var _array = require("../../../core/utils/array");
- var _array2 = _interopRequireDefault(_array);
- var _uiSchedulerAppointmentsStrategy = require("./ui.scheduler.appointments.strategy.base");
- var _uiSchedulerAppointmentsStrategy2 = _interopRequireDefault(_uiSchedulerAppointmentsStrategy);
- function _interopRequireDefault(obj) {
- return obj && obj.__esModule ? obj : {
- "default": obj
- }
- }
- function _classCallCheck(instance, Constructor) {
- if (!(instance instanceof Constructor)) {
- throw new TypeError("Cannot call a class as a function")
- }
- }
- function _defineProperties(target, props) {
- for (var i = 0; i < props.length; i++) {
- var descriptor = props[i];
- descriptor.enumerable = descriptor.enumerable || false;
- descriptor.configurable = true;
- if ("value" in descriptor) {
- descriptor.writable = true
- }
- Object.defineProperty(target, descriptor.key, descriptor)
- }
- }
- function _createClass(Constructor, protoProps, staticProps) {
- if (protoProps) {
- _defineProperties(Constructor.prototype, protoProps)
- }
- if (staticProps) {
- _defineProperties(Constructor, staticProps)
- }
- Object.defineProperty(Constructor, "prototype", {
- writable: false
- });
- return Constructor
- }
- function _inherits(subClass, superClass) {
- if ("function" !== typeof superClass && null !== superClass) {
- throw new TypeError("Super expression must either be null or a function")
- }
- subClass.prototype = Object.create(superClass && superClass.prototype, {
- constructor: {
- value: subClass,
- writable: true,
- configurable: true
- }
- });
- Object.defineProperty(subClass, "prototype", {
- writable: false
- });
- if (superClass) {
- _setPrototypeOf(subClass, superClass)
- }
- }
- function _setPrototypeOf(o, p) {
- _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(o, p) {
- o.__proto__ = p;
- return o
- };
- return _setPrototypeOf(o, p)
- }
- function _createSuper(Derived) {
- var hasNativeReflectConstruct = _isNativeReflectConstruct();
- return function() {
- var result, Super = _getPrototypeOf(Derived);
- if (hasNativeReflectConstruct) {
- var NewTarget = _getPrototypeOf(this).constructor;
- result = Reflect.construct(Super, arguments, NewTarget)
- } else {
- result = Super.apply(this, arguments)
- }
- return _possibleConstructorReturn(this, result)
- }
- }
- function _possibleConstructorReturn(self, call) {
- if (call && ("object" === _typeof(call) || "function" === typeof call)) {
- return call
- } else {
- if (void 0 !== call) {
- throw new TypeError("Derived constructors may only return object or undefined")
- }
- }
- return _assertThisInitialized(self)
- }
- function _assertThisInitialized(self) {
- if (void 0 === self) {
- throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
- }
- return self
- }
- function _isNativeReflectConstruct() {
- if ("undefined" === typeof Reflect || !Reflect.construct) {
- return false
- }
- if (Reflect.construct.sham) {
- return false
- }
- if ("function" === typeof Proxy) {
- return true
- }
- try {
- Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
- return true
- } catch (e) {
- return false
- }
- }
- function _getPrototypeOf(o) {
- _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function(o) {
- return o.__proto__ || Object.getPrototypeOf(o)
- };
- return _getPrototypeOf(o)
- }
- var AgendaRenderingStrategy = function(_BaseAppointmentsStra) {
- _inherits(AgendaRenderingStrategy, _BaseAppointmentsStra);
- var _super = _createSuper(AgendaRenderingStrategy);
- function AgendaRenderingStrategy() {
- _classCallCheck(this, AgendaRenderingStrategy);
- return _super.apply(this, arguments)
- }
- _createClass(AgendaRenderingStrategy, [{
- key: "getAppointmentMinSize",
- value: function() {}
- }, {
- key: "getDeltaTime",
- value: function() {}
- }, {
- key: "keepAppointmentSettings",
- value: function() {
- return true
- }
- }, {
- key: "getAppointmentGeometry",
- value: function(geometry) {
- return geometry
- }
- }, {
- key: "createTaskPositionMap",
- value: function(appointments) {
- if (appointments.length) {
- var height = this.instance.fire("getAgendaVerticalStepHeight");
- var appointmentsByResources = this.instance.fire("groupAppointmentsByResources", appointments);
- var groupedAppts = [];
- (0, _iterator.each)(appointmentsByResources, function(i, appts) {
- var additionalAppointments = [];
- var recurrentIndexes = [];
- (0, _iterator.each)(appts, function(index, appointment) {
- var recurrenceBatch = this.instance.getAppointmentsInstance()._processRecurrenceAppointment(appointment, index);
- var appointmentBatch = null;
- if (!recurrenceBatch.indexes.length) {
- appointmentBatch = {
- parts: []
- };
- appointmentBatch = this.instance.getAppointmentsInstance()._processLongAppointment(appointment);
- additionalAppointments = additionalAppointments.concat(appointmentBatch.parts)
- }
- additionalAppointments = additionalAppointments.concat(recurrenceBatch.parts);
- recurrentIndexes = recurrentIndexes.concat(recurrenceBatch.indexes)
- }.bind(this));
- this.instance.getAppointmentsInstance()._reduceRecurrenceAppointments(recurrentIndexes, appts);
- this.instance.getAppointmentsInstance()._combineAppointments(appts, additionalAppointments);
- groupedAppts = groupedAppts.concat(appts)
- }.bind(this));
- Array.prototype.splice.apply(appointments, [0, appointments.length].concat(groupedAppts))
- }
- var result = [];
- var sortedIndex = 0;
- appointments.forEach(function(appt, index) {
- result.push([{
- height: height,
- width: "100%",
- sortedIndex: sortedIndex++,
- groupIndex: this._calculateGroupIndex(index, appointmentsByResources)
- }])
- }.bind(this));
- return result
- }
- }, {
- key: "_calculateGroupIndex",
- value: function(apptIndex, appointmentsByResources) {
- var resultInd;
- var counter = 0;
- for (var i in appointmentsByResources) {
- var countApptInGroup = appointmentsByResources[i].length;
- if (apptIndex >= counter && apptIndex < counter + countApptInGroup) {
- resultInd = Number(i);
- break
- }
- counter += countApptInGroup
- }
- return resultInd
- }
- }, {
- key: "_getDeltaWidth",
- value: function() {}
- }, {
- key: "_getAppointmentMaxWidth",
- value: function() {
- return this.getDefaultCellWidth()
- }
- }, {
- key: "_needVerifyItemSize",
- value: function() {
- return false
- }
- }, {
- key: "_isRtl",
- value: function() {
- return this.instance.option("rtlEnabled")
- }
- }, {
- key: "_getAppointmentParts",
- value: function() {}
- }, {
- key: "_reduceMultiWeekAppointment",
- value: function() {}
- }, {
- key: "calculateAppointmentHeight",
- value: function() {
- return 0
- }
- }, {
- key: "calculateAppointmentWidth",
- value: function() {
- return 0
- }
- }, {
- key: "isAppointmentGreaterThan",
- value: function() {}
- }, {
- key: "isAllDay",
- value: function() {
- return false
- }
- }, {
- key: "_sortCondition",
- value: function() {}
- }, {
- key: "_rowCondition",
- value: function() {}
- }, {
- key: "_columnCondition",
- value: function() {}
- }, {
- key: "_findIndexByKey",
- value: function() {}
- }, {
- key: "_getMaxNeighborAppointmentCount",
- value: function() {}
- }, {
- key: "_markAppointmentAsVirtual",
- value: function() {}
- }, {
- key: "getDropDownAppointmentWidth",
- value: function() {}
- }, {
- key: "getDefaultCellWidth",
- value: function() {
- return this._defaultWidth
- }
- }, {
- key: "getCompactAppointmentDefaultWidth",
- value: function() {}
- }, {
- key: "getCompactAppointmentLeftOffset",
- value: function() {}
- }, {
- key: "getCompactAppointmentTopOffset",
- value: function() {}
- }, {
- key: "calculateRows",
- value: function(appointments, agendaDuration, currentDate, needClearSettings) {
- this._rows = [];
- var appts = {
- indexes: [],
- parts: []
- };
- var groupedAppointments = this.instance.fire("groupAppointmentsByResources", appointments);
- currentDate = _date2.default.trimTime(new Date(currentDate));
- (0, _iterator.each)(groupedAppointments, function(groupIndex, currentAppointments) {
- var groupResult = [];
- if (!currentAppointments.length) {
- this._rows.push([]);
- return true
- }(0, _iterator.each)(currentAppointments, function(index, appointment) {
- var startDate = this.instance.fire("getField", "startDate", appointment);
- var endDate = this.instance.fire("getField", "endDate", appointment);
- this.instance.fire("fixWrongEndDate", appointment, startDate, endDate);
- needClearSettings && delete appointment.settings;
- var result = this.instance.getAppointmentsInstance()._processRecurrenceAppointment(appointment, index, false);
- appts.parts = appts.parts.concat(result.parts);
- appts.indexes = appts.indexes.concat(result.indexes)
- }.bind(this));
- this.instance.getAppointmentsInstance()._reduceRecurrenceAppointments(appts.indexes, currentAppointments);
- _array2.default.merge(currentAppointments, appts.parts);
- var appointmentCount = currentAppointments.length;
- for (var i = 0; i < agendaDuration; i++) {
- var day = new Date(currentDate);
- day.setMilliseconds(day.getMilliseconds() + 864e5 * i);
- if (void 0 === groupResult[i]) {
- groupResult[i] = 0
- }
- for (var j = 0; j < appointmentCount; j++) {
- var appointmentData = currentAppointments[j].settings || currentAppointments[j];
- var appointmentIsLong = this.instance.fire("appointmentTakesSeveralDays", currentAppointments[j]);
- var appointmentIsRecurrence = this.instance.fire("getField", "recurrenceRule", currentAppointments[j]);
- if (this.instance.fire("dayHasAppointment", day, appointmentData, true) || !appointmentIsRecurrence && appointmentIsLong && this.instance.fire("dayHasAppointment", day, currentAppointments[j], true)) {
- groupResult[i] += 1
- }
- }
- }
- this._rows.push(groupResult)
- }.bind(this));
- return this._rows
- }
- }, {
- key: "_iterateRow",
- value: function(row, obj, index) {
- for (var i = 0; i < row.length; i++) {
- obj.counter = obj.counter + row[i];
- if (obj.counter >= index) {
- obj.indexInRow = i;
- break
- }
- }
- }
- }, {
- key: "getDateByIndex",
- value: function(index, rows, startViewDate) {
- var obj = {
- counter: 0,
- indexInRow: 0
- };
- index++;
- for (var i = 0; i < rows.length; i++) {
- this._iterateRow(rows[i], obj, index);
- if (obj.indexInRow) {
- break
- }
- }
- return new Date(new Date(startViewDate).setDate(startViewDate.getDate() + obj.indexInRow))
- }
- }, {
- key: "getAppointmentDataCalculator",
- value: function() {
- return function($appointment, originalStartDate) {
- var apptIndex = $appointment.index();
- var startViewDate = this.instance.getStartViewDate();
- var calculatedStartDate = this.getDateByIndex(apptIndex, this._rows, startViewDate);
- var wrappedOriginalStartDate = new Date(originalStartDate);
- return {
- startDate: new Date(calculatedStartDate.setHours(wrappedOriginalStartDate.getHours(), wrappedOriginalStartDate.getMinutes(), wrappedOriginalStartDate.getSeconds(), wrappedOriginalStartDate.getMilliseconds()))
- }
- }.bind(this)
- }
- }]);
- return AgendaRenderingStrategy
- }(_uiSchedulerAppointmentsStrategy2.default);
- module.exports = AgendaRenderingStrategy;
|