Version Inicial
This commit is contained in:
89
view_containers.go
Normal file
89
view_containers.go
Normal file
@@ -0,0 +1,89 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"fergalla.com/dockerbot/internal/docker"
|
||||
"fergalla.com/dockerbot/internal/ui"
|
||||
"github.com/go-telegram/bot/models"
|
||||
)
|
||||
|
||||
func (appCtx *App) renderContainerPage(ctx context.Context, pageIndex int, forceRefresh bool) (string, *models.InlineKeyboardMarkup, error) {
|
||||
var data []docker.ContainerBasicInfo
|
||||
var err error
|
||||
|
||||
// 📦 obtener datos
|
||||
if forceRefresh {
|
||||
data, err = appCtx.containerCache.ForceRefresh()
|
||||
} else {
|
||||
data, err = appCtx.containerCache.Get()
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
|
||||
totalItems := len(data)
|
||||
if totalItems == 0 {
|
||||
return appCtx.T("e.container.list.not_found"), nil, nil
|
||||
}
|
||||
|
||||
pageSize := appCtx.config.PageSize
|
||||
totalPages := (totalItems + pageSize - 1) / pageSize
|
||||
|
||||
// 🛑 clamp
|
||||
if pageIndex < 0 {
|
||||
pageIndex = 0
|
||||
}
|
||||
if pageIndex >= totalPages {
|
||||
pageIndex = totalPages - 1
|
||||
}
|
||||
|
||||
// 🧩 construir view
|
||||
page := ui.Page{
|
||||
Items: data,
|
||||
Page: pageIndex,
|
||||
PageSize: pageSize,
|
||||
TotalItems: totalItems,
|
||||
}
|
||||
|
||||
// 🎨 render
|
||||
text, keyboard := appCtx.renderer.RenderContainerList(page)
|
||||
|
||||
return text, keyboard, nil
|
||||
}
|
||||
|
||||
func (appCtx *App) renderContainerDetail(ctx context.Context, container string, page int) (string, *models.InlineKeyboardMarkup, error) {
|
||||
|
||||
info, err := appCtx.dockerInfo.GetContainerInfo(container)
|
||||
if err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
|
||||
view := ui.ContainerDetailView{
|
||||
Container: info,
|
||||
Page: page,
|
||||
}
|
||||
|
||||
text, keyboard := appCtx.renderer.RenderContainerDetail(view)
|
||||
|
||||
return text, keyboard, nil
|
||||
}
|
||||
|
||||
func (appCtx *App) renderContainerLogs(ctx context.Context, container string, page int, tail int) (string, *models.InlineKeyboardMarkup, error) {
|
||||
logs, err := appCtx.dockerInfo.GetContainerLogs(container, tail)
|
||||
if err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
|
||||
view := ui.ContainerLogsView{
|
||||
Container: container,
|
||||
Logs: logs,
|
||||
Page: page,
|
||||
Tail: tail,
|
||||
}
|
||||
|
||||
text, keyboard := appCtx.renderer.RenderContainerLogs(view)
|
||||
|
||||
return text, keyboard, nil
|
||||
}
|
||||
Reference in New Issue
Block a user