Add: pages, text component
This commit is contained in:
62
api/progress/handler.go
Normal file
62
api/progress/handler.go
Normal file
@ -0,0 +1,62 @@
|
||||
package progress
|
||||
|
||||
import (
|
||||
"io"
|
||||
|
||||
"gitea.unprism.ru/yotia/display-test/components"
|
||||
)
|
||||
|
||||
type handler struct {
|
||||
bar components.ProgressBar
|
||||
checkpointN int // Number of check points
|
||||
curP int
|
||||
}
|
||||
|
||||
// Handles progress bar update
|
||||
// You set the amount of
|
||||
type Handler interface {
|
||||
Checkpoint() // Increments current progress
|
||||
// SetProgress(n int) // Do not want to make it public because there is no places it is needed yet
|
||||
Finish() // Set progress to end
|
||||
GetBar() components.ProgressBar
|
||||
Reset()
|
||||
|
||||
io.Closer
|
||||
}
|
||||
|
||||
func NewHandler(bar components.ProgressBar, checkpointN int) Handler {
|
||||
return &handler{
|
||||
bar: bar,
|
||||
checkpointN: checkpointN,
|
||||
}
|
||||
}
|
||||
|
||||
func (h *handler) GetBar() components.ProgressBar {
|
||||
return h.bar
|
||||
}
|
||||
|
||||
func (h *handler) Checkpoint() {
|
||||
h.curP = min(h.curP+1, h.checkpointN)
|
||||
h.bar.SetProgress(float64(h.curP) / float64(h.checkpointN))
|
||||
}
|
||||
|
||||
func (h *handler) SetProgress(n int) {
|
||||
h.curP = min(max(n, 0), h.checkpointN)
|
||||
h.bar.SetProgress(float64(h.curP) / float64(h.checkpointN))
|
||||
}
|
||||
|
||||
func (h *handler) Finish() {
|
||||
h.curP = h.checkpointN
|
||||
h.bar.SetProgress(1)
|
||||
}
|
||||
|
||||
func (h *handler) Reset() {
|
||||
h.curP = 0
|
||||
h.bar.SetProgress(0)
|
||||
}
|
||||
|
||||
func (h *handler) Close() error {
|
||||
h.curP = 0
|
||||
h.checkpointN = 0
|
||||
return h.bar.Close()
|
||||
}
|
Reference in New Issue
Block a user