4.8.6: Исправлена сортировка заблокированных желаний
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m20s
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m20s
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
// Если не было условий по проектам (только задачи или нет условий)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "play-life-web",
|
||||
"version": "4.8.5",
|
||||
"version": "4.8.6",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
||||
Reference in New Issue
Block a user