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 {
|
sort.Slice(lockedWithoutTasks, func(i, j int) bool {
|
||||||
valueI := a.calculateLockedSortValue(lockedWithoutTasks[i], userID)
|
valueI := a.calculateLockedSortValue(lockedWithoutTasks[i], userID)
|
||||||
valueJ := a.calculateLockedSortValue(lockedWithoutTasks[j], userID)
|
valueJ := a.calculateLockedSortValue(lockedWithoutTasks[j], userID)
|
||||||
if valueI == valueJ {
|
if valueI == valueJ {
|
||||||
return lockedWithoutTasks[i].ID < lockedWithoutTasks[j].ID
|
return lockedWithoutTasks[i].ID < lockedWithoutTasks[j].ID
|
||||||
}
|
}
|
||||||
return valueI > valueJ
|
return valueI < valueJ
|
||||||
})
|
})
|
||||||
|
|
||||||
sort.Slice(lockedWithTasks, func(i, j int) bool {
|
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 {
|
if valueI == valueJ {
|
||||||
return lockedWithTasks[i].ID < lockedWithTasks[j].ID
|
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 {
|
sort.Slice(lockedWithoutTasks, func(i, j int) bool {
|
||||||
valueI := a.calculateLockedSortValue(lockedWithoutTasks[i], userID)
|
valueI := a.calculateLockedSortValue(lockedWithoutTasks[i], userID)
|
||||||
valueJ := a.calculateLockedSortValue(lockedWithoutTasks[j], userID)
|
valueJ := a.calculateLockedSortValue(lockedWithoutTasks[j], userID)
|
||||||
if valueI == valueJ {
|
if valueI == valueJ {
|
||||||
return lockedWithoutTasks[i].ID < lockedWithoutTasks[j].ID
|
return lockedWithoutTasks[i].ID < lockedWithoutTasks[j].ID
|
||||||
}
|
}
|
||||||
return valueI > valueJ
|
return valueI < valueJ
|
||||||
})
|
})
|
||||||
|
|
||||||
sort.Slice(lockedWithTasks, func(i, j int) bool {
|
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 {
|
if valueI == valueJ {
|
||||||
return lockedWithTasks[i].ID < lockedWithTasks[j].ID
|
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
|
maxWeeks := 0.0
|
||||||
hasProjectConditions := false
|
hasProjectConditions := false
|
||||||
|
allCompleted := true
|
||||||
|
|
||||||
for _, condition := range item.UnlockConditions {
|
for _, condition := range item.UnlockConditions {
|
||||||
if condition.Type == "project_points" {
|
if condition.Type == "project_points" {
|
||||||
@@ -12841,19 +12842,27 @@ func (a *App) calculateLockedSortValue(item WishlistItem, userID int) float64 {
|
|||||||
// weeks > 0 && < 99999 означает, что условие еще не выполнено и расчет успешен
|
// weeks > 0 && < 99999 означает, что условие еще не выполнено и расчет успешен
|
||||||
// weeks == 0 означает условие выполнено
|
// weeks == 0 означает условие выполнено
|
||||||
// weeks == 99999 означает медиана отсутствует (нельзя рассчитать) или ошибка расчета
|
// 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 {
|
if weeks > maxWeeks {
|
||||||
maxWeeks = weeks
|
maxWeeks = weeks
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// weeks == 99999 - нельзя рассчитать, считаем как невыполненное
|
||||||
|
allCompleted = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Если были условия по проектам, но все выполнены (maxWeeks = 0)
|
// Если были условия по проектам и все выполнены, возвращаем 0 (закрытые испытания = 0 недель)
|
||||||
if hasProjectConditions && maxWeeks == 0.0 {
|
if hasProjectConditions && allCompleted {
|
||||||
return 999999.0
|
return 0.0
|
||||||
}
|
}
|
||||||
|
|
||||||
// Если не было условий по проектам (только задачи или нет условий)
|
// Если не было условий по проектам (только задачи или нет условий)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "play-life-web",
|
"name": "play-life-web",
|
||||||
"version": "4.8.5",
|
"version": "4.8.6",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|||||||
Reference in New Issue
Block a user