fix: исправлен расчет даты переноса задач с периодами повторения
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 54s
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 54s
- Добавлена поддержка сокращенных форм единиц времени (mons, min, hrs, wks, yrs и т.д.) - Исправлена обработка недель, которые PostgreSQL возвращает как дни (7 days вместо 1 week) - Добавлено приведение repetition_period к тексту при чтении из БД - Обновлена версия до 3.8.6
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "play-life-web",
|
||||
"version": "3.8.5",
|
||||
"version": "3.8.6",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
||||
@@ -99,6 +99,7 @@ const calculateNextDateFromRepetitionDate = (repetitionDateStr) => {
|
||||
}
|
||||
|
||||
// Функция для вычисления следующей даты по repetition_period
|
||||
// Поддерживает сокращенные формы единиц времени (например, "mons" для месяцев)
|
||||
const calculateNextDateFromRepetitionPeriod = (repetitionPeriodStr) => {
|
||||
if (!repetitionPeriodStr) return null
|
||||
|
||||
@@ -117,26 +118,43 @@ const calculateNextDateFromRepetitionPeriod = (repetitionPeriodStr) => {
|
||||
switch (unit) {
|
||||
case 'minute':
|
||||
case 'minutes':
|
||||
case 'mins':
|
||||
case 'min':
|
||||
nextDate.setMinutes(nextDate.getMinutes() + value)
|
||||
break
|
||||
case 'hour':
|
||||
case 'hours':
|
||||
case 'hrs':
|
||||
case 'hr':
|
||||
nextDate.setHours(nextDate.getHours() + value)
|
||||
break
|
||||
case 'day':
|
||||
case 'days':
|
||||
nextDate.setDate(nextDate.getDate() + value)
|
||||
// PostgreSQL может возвращать недели как дни (например, "7 days" вместо "1 week")
|
||||
// Если количество дней кратно 7, обрабатываем как недели
|
||||
if (value % 7 === 0 && value >= 7) {
|
||||
const weeks = value / 7
|
||||
nextDate.setDate(nextDate.getDate() + weeks * 7)
|
||||
} else {
|
||||
nextDate.setDate(nextDate.getDate() + value)
|
||||
}
|
||||
break
|
||||
case 'week':
|
||||
case 'weeks':
|
||||
case 'wks':
|
||||
case 'wk':
|
||||
nextDate.setDate(nextDate.getDate() + value * 7)
|
||||
break
|
||||
case 'month':
|
||||
case 'months':
|
||||
case 'mons':
|
||||
case 'mon':
|
||||
nextDate.setMonth(nextDate.getMonth() + value)
|
||||
break
|
||||
case 'year':
|
||||
case 'years':
|
||||
case 'yrs':
|
||||
case 'yr':
|
||||
nextDate.setFullYear(nextDate.getFullYear() + value)
|
||||
break
|
||||
default:
|
||||
|
||||
@@ -139,26 +139,43 @@ function TaskList({ onNavigate, data, loading, backgroundLoading, onRefresh }) {
|
||||
switch (unit) {
|
||||
case 'minute':
|
||||
case 'minutes':
|
||||
case 'mins':
|
||||
case 'min':
|
||||
nextDate.setMinutes(nextDate.getMinutes() + value)
|
||||
break
|
||||
case 'hour':
|
||||
case 'hours':
|
||||
case 'hrs':
|
||||
case 'hr':
|
||||
nextDate.setHours(nextDate.getHours() + value)
|
||||
break
|
||||
case 'day':
|
||||
case 'days':
|
||||
nextDate.setDate(nextDate.getDate() + value)
|
||||
// PostgreSQL может возвращать недели как дни (например, "7 days" вместо "1 week")
|
||||
// Если количество дней кратно 7, обрабатываем как недели
|
||||
if (value % 7 === 0 && value >= 7) {
|
||||
const weeks = value / 7
|
||||
nextDate.setDate(nextDate.getDate() + weeks * 7)
|
||||
} else {
|
||||
nextDate.setDate(nextDate.getDate() + value)
|
||||
}
|
||||
break
|
||||
case 'week':
|
||||
case 'weeks':
|
||||
case 'wks':
|
||||
case 'wk':
|
||||
nextDate.setDate(nextDate.getDate() + value * 7)
|
||||
break
|
||||
case 'month':
|
||||
case 'months':
|
||||
case 'mons':
|
||||
case 'mon':
|
||||
nextDate.setMonth(nextDate.getMonth() + value)
|
||||
break
|
||||
case 'year':
|
||||
case 'years':
|
||||
case 'yrs':
|
||||
case 'yr':
|
||||
nextDate.setFullYear(nextDate.getFullYear() + value)
|
||||
break
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user