UNPKG

wfm-mobile-core

Version:

WFM Mobile Core

146 lines (145 loc) 6.52 kB
"use strict"; var __read = (this && this.__read) || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; var __spreadArray = (this && this.__spreadArray) || function (to, from) { for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) to[j] = from[i]; return to; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.generationOfGraphData = void 0; var Shifts_1 = require("../actions/Shifts"); var User_1 = require("../actions/User"); var EStatus_1 = require("../enums/EStatus"); var createMonth_1 = require("./createMonth"); var getNumberFirstDay_1 = require("./getNumberFirstDay"); var getNumberMonth_1 = require("./getNumberMonth"); // Функция приводящая данные к виду необходимому для рендера function generationOfGraphData(startDate, endDate) { var schedules = filterSchedule(Shifts_1.ShiftsApi.schedules, startDate); var shifts = filterShifts(Shifts_1.ShiftsApi.shifts, Shifts_1.ShiftsApi.workedShifts, startDate); var shiftsExchange = filterShiftsExchange(Shifts_1.ShiftsApi.shiftsInExchange, startDate); var totalArray = createMonth_1.createMonth(startDate, endDate); var numberFirstDayInMonth = getNumberFirstDay_1.getNumberFirstDay(startDate); totalArray === null || totalArray === void 0 ? void 0 : totalArray.forEach(function (item, id) { if (item.active) { var num = id + 2 - numberFirstDayInMonth; if (shifts[num]) item.shifts = shifts[num]; if (schedules[num]) item.schedule = schedules[num]; if (shiftsExchange[num]) item.shiftExchange = shiftsExchange[num]; } }); User_1.UserApi.totalArrayByRender = totalArray; return; } exports.generationOfGraphData = generationOfGraphData; // Получение номера дня var getNumberDayInMonth = function (date) { var d = new Date(date); return d.getDate(); }; // Получение диапазона дней var getRange = function (timeData, startDate) { var d = new Date(startDate); var lastDayOfThisMonth = getNumberDayInMonth(new Date(d.getFullYear(), d.getMonth() + 1, 0)); var lastMonth = getNumberMonth_1.getNumberMonth(d.toISOString()) > getNumberMonth_1.getNumberMonth(timeData.startDateTime); var nextMonth = getNumberMonth_1.getNumberMonth(d.toISOString()) < getNumberMonth_1.getNumberMonth(timeData.endDateTime); var firstDay = lastMonth ? 1 : getNumberDayInMonth(timeData.startDateTime); var lastDay = nextMonth ? lastDayOfThisMonth : getNumberDayInMonth(timeData.endDateTime); var result = []; for (var i = firstDay; i <= lastDay; i++) { result.push(i); } return result; }; // Обработка графика смен для рендера var filterShifts = function (shifts, workedShifts, startDate) { var d = new Date(); var filteredShifts = {}; var nextMonth = getNumberMonth_1.getNumberMonth(d.toISOString()) < getNumberMonth_1.getNumberMonth(startDate); var lastMonth = getNumberMonth_1.getNumberMonth(d.toISOString()) > getNumberMonth_1.getNumberMonth(startDate); var hasDayPassed = function (i) { if (lastMonth) { return true; } else if (nextMonth) { return false; } else { return i < getNumberDayInMonth(new Date()); } }; // eslint-disable-next-line array-callback-return var workShifts = shifts.filter(function (shift) { return shift.employeePositionId !== null; }); workShifts.map(function (item) { var numberDay = getNumberDayInMonth(item.dateTimeInterval.startDateTime); if (!hasDayPassed(numberDay) && item) { if (filteredShifts[numberDay]) { filteredShifts[numberDay] = __spreadArray(__spreadArray([], __read(filteredShifts[numberDay])), [item]); } else { filteredShifts[numberDay] = [item]; } } }); workedShifts === null || workedShifts === void 0 ? void 0 : workedShifts.map(function (item) { var numberDay = getNumberDayInMonth(item.dateTimeInterval.startDateTime); if (hasDayPassed(numberDay) && item.employeePositionId !== null && item) { if (filteredShifts[numberDay]) { filteredShifts[numberDay] = __spreadArray(__spreadArray([], __read(filteredShifts[numberDay])), [item]); } else { filteredShifts[numberDay] = [item]; } } }); return filteredShifts; }; // Обработка графика смен c биржи для рендера var filterShiftsExchange = function (shifts, startDate) { var filteredShiftsExchange = []; // todo: fix type shifts === null || shifts === void 0 ? void 0 : shifts.forEach(function (shift) { var numberDay = getNumberDayInMonth(shift.dateTimeInterval.startDateTime); if (!filteredShiftsExchange[numberDay]) filteredShiftsExchange[numberDay] = []; filteredShiftsExchange[numberDay].push(Object.assign({}, shift)); }); return filteredShiftsExchange; }; // Обработка графика отсутствия для рендеда var filterSchedule = function (schedules, startDate) { var filterSchedules = {}; schedules === null || schedules === void 0 ? void 0 : schedules.forEach(function (item) { if (item.status === EStatus_1.EStatus.APPROVED || item.status === EStatus_1.EStatus.NOT_APPROVED) { // eslint-disable-next-line array-callback-return // if (item.type === ETypesOfEvents.DAY_OFF) return; var rangeNumbers = getRange(item.dateTimeInterval, startDate); if (rangeNumbers.length === 1) { filterSchedules[getNumberDayInMonth(item.dateTimeInterval.startDateTime)] = item; } else { rangeNumbers.forEach(function (num) { filterSchedules[num] = item; }); } } }); return filterSchedules; };