wfm-mobile-core
Version:
WFM Mobile Core
57 lines (56 loc) • 3.05 kB
JavaScript
;
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;