UNPKG

wfm-mobile-core

Version:

WFM Mobile Core

57 lines (56 loc) 3.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createMonth = void 0; var helpers_1 = require("../helpers"); var IDays_1 = require("../interfaces/IDays"); var getDaysInMonth_1 = require("./getDaysInMonth"); var getNumberFirstDay_1 = require("./getNumberFirstDay"); var getNumberMonth_1 = require("./getNumberMonth"); // Фукнция по созданию массива с объектами для рендера месяца function createMonth(startDate, endDate) { // startDate - дата первого дня месяца на календаре var d = new Date(); // измененный функцией setDate(0) - последний день предыдущего месяца var pd = new Date(startDate); var countDaysInSchedule = 42; var countDaysInMonth = getDaysInMonth_1.getDaysInMonth(startDate); // номер дня недели первого дня текущего месяца календаря var numberFirstDayInMonth = getNumberFirstDay_1.getNumberFirstDay(startDate); // количество дней предыдущего месяца var daysInPastMonth = getDaysInMonth_1.getDaysInMonth(helpers_1.dateISOFormat(pd.setDate(0))); // Проверка текущего месяца var checkMonth = function () { return getNumberMonth_1.getNumberMonth(d.toISOString()) === getNumberMonth_1.getNumberMonth(startDate); }; // Проверка полной текущей даты var firstDay = new Date(d.getFullYear(), d.getMonth(), 1); var checkDate = function () { return helpers_1.dateISOFormat(firstDay) === startDate; }; // Проверка прошедшего месяца var lastMonth = function () { return helpers_1.dateISOFormat(firstDay) > startDate; }; // Проверка на прошедший день var hasDayPassed = function (i) { if (checkDate()) return i < d.getDate(); return lastMonth(); }; var totalArray = []; // Создание остаточных дней предыдущего месяца for (var i = 1; i < numberFirstDayInMonth; i++) { totalArray.push(new IDays_1.DataDay(daysInPastMonth - numberFirstDayInMonth + i + 1, false, false, true)); } // Создание дней текущего месяца for (var i = 1; i <= countDaysInMonth; i++) { var today = checkMonth() ? i === d.getDate() : false; var dayPassed = hasDayPassed(i); var newDate = new Date(startDate); newDate.setDate(i); var isoDate = new Date(newDate.getTime() - newDate.getTimezoneOffset() * 60000).toISOString(); totalArray.push(new IDays_1.DataDay(i, true, today, dayPassed, isoDate)); } // Создание дней следующего месяца for (var i = totalArray.length, n = 1; i < countDaysInSchedule; i++, n++) { totalArray.push(new IDays_1.DataDay(n, false)); } return totalArray; } exports.createMonth = createMonth;