GoSetup-bubble/setup/utils/utils.go

31 lines
1.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package utils
// CalculateSelectOptionsIndex рассчитывает индекс первой и последней опции для отображения в поле выбора
func CalculateSelectOptionsIndex(focus, visibleCount, optionsCount int) (int, int) {
//Если количество отображаемых больше, чем есть количество опций на самом деле,
//то меняем количество опций для отображения на количество опций.
if visibleCount > optionsCount {
visibleCount = optionsCount
}
//Количество объектов сверху и снизу
half := visibleCount / 2
//Индекс первой опции для показа в списке
start := focus - half
//Если индекс меньше 0, то фиксируем его на первой
if start < 0 {
start = 0
}
//Индекс последней опции для показа в списке
end := start + visibleCount
//Если индекс больше, чем количество опций для вывода,
//то фиксируем его на последней опции.
//Производим перерасчет индекса первой опции
if end > optionsCount {
end = optionsCount
start = end - visibleCount
if start < 0 {
start = 0
}
}
return start, end
}