diff --git a/VERSION b/VERSION index bb6ebd3..7ea5948 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.8.5 +4.8.6 diff --git a/play-life-backend/main.go b/play-life-backend/main.go index 060583f..79f1eac 100644 --- a/play-life-backend/main.go +++ b/play-life-backend/main.go @@ -10178,14 +10178,14 @@ func (a *App) getWishlistHandler(w http.ResponseWriter, r *http.Request) { } } - // Сортируем каждую группу по времени разблокировки (от большего срока к меньшему) + // Сортируем каждую группу по времени разблокировки (от меньшего срока к большему) sort.Slice(lockedWithoutTasks, func(i, j int) bool { valueI := a.calculateLockedSortValue(lockedWithoutTasks[i], userID) valueJ := a.calculateLockedSortValue(lockedWithoutTasks[j], userID) if valueI == valueJ { return lockedWithoutTasks[i].ID < lockedWithoutTasks[j].ID } - return valueI > valueJ + return valueI < valueJ }) sort.Slice(lockedWithTasks, func(i, j int) bool { @@ -10194,7 +10194,7 @@ func (a *App) getWishlistHandler(w http.ResponseWriter, r *http.Request) { if valueI == valueJ { return lockedWithTasks[i].ID < lockedWithTasks[j].ID } - return valueI > valueJ + return valueI < valueJ }) // Объединяем: сначала без задач, потом с задачами @@ -12521,14 +12521,14 @@ func (a *App) getBoardItemsHandler(w http.ResponseWriter, r *http.Request) { } } - // Сортируем каждую группу по времени разблокировки (от большего срока к меньшему) + // Сортируем каждую группу по времени разблокировки (от меньшего срока к большему) sort.Slice(lockedWithoutTasks, func(i, j int) bool { valueI := a.calculateLockedSortValue(lockedWithoutTasks[i], userID) valueJ := a.calculateLockedSortValue(lockedWithoutTasks[j], userID) if valueI == valueJ { return lockedWithoutTasks[i].ID < lockedWithoutTasks[j].ID } - return valueI > valueJ + return valueI < valueJ }) sort.Slice(lockedWithTasks, func(i, j int) bool { @@ -12537,7 +12537,7 @@ func (a *App) getBoardItemsHandler(w http.ResponseWriter, r *http.Request) { if valueI == valueJ { return lockedWithTasks[i].ID < lockedWithTasks[j].ID } - return valueI > valueJ + return valueI < valueJ }) // Объединяем: сначала без задач, потом с задачами @@ -12799,6 +12799,7 @@ func (a *App) calculateLockedSortValue(item WishlistItem, userID int) float64 { maxWeeks := 0.0 hasProjectConditions := false + allCompleted := true for _, condition := range item.UnlockConditions { if condition.Type == "project_points" { @@ -12841,19 +12842,27 @@ func (a *App) calculateLockedSortValue(item WishlistItem, userID int) float64 { // weeks > 0 && < 99999 означает, что условие еще не выполнено и расчет успешен // weeks == 0 означает условие выполнено // weeks == 99999 означает медиана отсутствует (нельзя рассчитать) или ошибка расчета - if weeks > 0 && weeks < 99999 { + if weeks == 0 { + // Условие выполнено - считаем как 0 недель + // Не обновляем maxWeeks, так как 0 < любого положительного значения + } else if weeks > 0 && weeks < 99999 { + // Условие не выполнено - учитываем в maxWeeks + allCompleted = false if weeks > maxWeeks { maxWeeks = weeks } + } else { + // weeks == 99999 - нельзя рассчитать, считаем как невыполненное + allCompleted = false } } } } } - // Если были условия по проектам, но все выполнены (maxWeeks = 0) - if hasProjectConditions && maxWeeks == 0.0 { - return 999999.0 + // Если были условия по проектам и все выполнены, возвращаем 0 (закрытые испытания = 0 недель) + if hasProjectConditions && allCompleted { + return 0.0 } // Если не было условий по проектам (только задачи или нет условий) diff --git a/play-life-web/package.json b/play-life-web/package.json index 0ff299b..d8a6905 100644 --- a/play-life-web/package.json +++ b/play-life-web/package.json @@ -1,6 +1,6 @@ { "name": "play-life-web", - "version": "4.8.5", + "version": "4.8.6", "type": "module", "scripts": { "dev": "vite",