switched to js popup to create new watch

This commit is contained in:
BroodjeAap 2022-12-17 10:11:33 +00:00
parent 974b80567f
commit 04962b1770
7 changed files with 49 additions and 23 deletions

View file

@ -70,7 +70,6 @@ func (web *Web) initRouter() {
web.router.GET("/watch/view/:id", web.watchView)
web.router.GET("/watch/edit/:id", web.watchEdit)
web.router.GET("/watch/new", web.watchCreate)
web.router.POST("/watch/create", web.watchCreatePost)
web.router.POST("/watch/update", web.watchUpdate)
web.router.POST("/watch/delete", web.deleteWatch)
@ -84,7 +83,6 @@ func (web *Web) initRouter() {
func (web *Web) initTemplates() {
web.templates = multitemplate.NewRenderer()
web.templates.AddFromFiles("index", "templates/base.html", "templates/index.html")
web.templates.AddFromFiles("watchCreate", "templates/base.html", "templates/watch/create.html")
web.templates.AddFromFiles("watchView", "templates/base.html", "templates/watch/view.html")
web.templates.AddFromFiles("watchEdit", "templates/base.html", "templates/watch/edit.html")
@ -167,10 +165,6 @@ func (web *Web) index(c *gin.Context) {
c.HTML(http.StatusOK, "index", watches)
}
func (web *Web) watchCreate(c *gin.Context) {
c.HTML(http.StatusOK, "watchCreate", gin.H{})
}
func (web *Web) watchCreatePost(c *gin.Context) {
var watch Watch
errMap, err := bindAndValidateWatch(&watch, c)

View file

@ -11,7 +11,6 @@ import (
type Watch struct {
ID uint `form:"watch_id" yaml:"watch_id"`
Name string `form:"watch_name" yaml:"watch_name" binding:"required" validate:"min=1"`
Interval int `form:"interval" yaml:"interval" binding:"required"`
CronEntry *cron.Entry `gorm:"-:all"`
}

View file

@ -0,0 +1,23 @@
function newWatch() {
var response = prompt("Name of new Watch", "");
if (response == null || response == "") {
return; // do nothing
}
var data = new URLSearchParams();
data.append("watch_name", response);
fetch("/watch/create", {
method: "POST",
body: data
}).then(function (response) {
if (!response.ok) {
alert("Could not create watch");
return;
}
window.location.href = response.url;
});
}
function newWatchLinkInit() {
var newWatchLink = document.getElementById("newWatchLink");
newWatchLink.onclick = newWatch;
}
document.addEventListener('DOMContentLoaded', newWatchLinkInit, false);

View file

@ -0,0 +1,25 @@
function newWatch(){
let response = prompt("Name of new Watch", "");
if (response == null || response == ""){
return // do nothing
}
let data = new URLSearchParams();
data.append("watch_name", response);
fetch("/watch/create", {
method: "POST",
body: data,
}).then((response) => {
if(!response.ok){
alert("Could not create watch");
return;
}
window.location.href = response.url;
});
}
function newWatchLinkInit(){
let newWatchLink = document.getElementById("newWatchLink") as HTMLElement;
newWatchLink.onclick = newWatch;
}
document.addEventListener('DOMContentLoaded', newWatchLinkInit, false);

View file

@ -24,7 +24,7 @@
<a class="nav-link active" aria-current="page" href="/">Home</a>
</li>
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="/watch/new">New</a>
<a class="nav-link" aria-current="page" id="newWatchLink" href="#">New</a>
</li>
{{ template "navbar" .}}
</ul>

View file

@ -1,13 +0,0 @@
{{define "content"}}
<form action="/watch/create" method="post">
<div class="mb-3">
<label for="name" class="form-label">Watch Name</label>
<input name="watch_name" type="text" class="form-control" id="name" placeholder="Watch">
</div>
<div class="mb-3">
<label for="interval" class="form-label">Interval (seconds) - TODO </label>
<input type="number" name="interval" class="form-control" id="interval" value="60">
</div>
<input type="submit" class="btn btn-primary mb-3" value="Create">
</form>
{{end}}

View file

@ -1,6 +1,4 @@
# Todo
- remove interval input from new watch page
- maybe turn new watch into popup with textbox ?
- make generic 'notifier' interface
- telegram
- discord