37 lines
748 B
Go
37 lines
748 B
Go
package site
|
|
|
|
import (
|
|
"fmt"
|
|
"math/rand"
|
|
"net/http"
|
|
"time"
|
|
|
|
"github.com/go-chi/chi/v5"
|
|
datastar "github.com/starfederation/datastar/sdk/go"
|
|
)
|
|
|
|
func setupExamplesProgressBar(examplesRouter chi.Router) error {
|
|
|
|
examplesRouter.Get("/progress_bar/data", func(w http.ResponseWriter, r *http.Request) {
|
|
sse := datastar.NewSSE(w, r)
|
|
|
|
progress := 0
|
|
|
|
for progress < 100 {
|
|
progress = min(100, progress+rand.Intn(10)+1)
|
|
sse.MergeFragmentTempl(progressBarView(progress))
|
|
sse.MergeFragments(
|
|
fmt.Sprintf("<title>%d%%</title>", progress),
|
|
datastar.WithSelector("title"),
|
|
)
|
|
time.Sleep(250 * time.Millisecond)
|
|
}
|
|
sse.MergeFragments(
|
|
"<title>Progress Bar</title>",
|
|
datastar.WithSelector("title"),
|
|
)
|
|
})
|
|
|
|
return nil
|
|
}
|