56 lines
1.8 KiB
Plaintext
56 lines
1.8 KiB
Plaintext
|
package pages
|
||
|
|
||
|
import (
|
||
|
"strconv"
|
||
|
|
||
|
"git.grosinger.net/tgrosinger/saasitone/templ/components"
|
||
|
"git.grosinger.net/tgrosinger/saasitone/pkg/form"
|
||
|
"git.grosinger.net/tgrosinger/saasitone/pkg/page"
|
||
|
)
|
||
|
|
||
|
type TaskForm struct {
|
||
|
Delay int `form:"delay" validate:"gte=0"`
|
||
|
Message string `form:"message" validate:"required"`
|
||
|
form.Submission
|
||
|
}
|
||
|
|
||
|
templ Task(p page.Page, f *TaskForm) {
|
||
|
if p.HTMX.Request.Target != "task" {
|
||
|
<article class="message is-link">
|
||
|
<div class="message-body">
|
||
|
<p>Submitting this form will create an <i>ExampleTask</i> in the task queue. After the specified delay, the message will be logged by the queue processor.</p>
|
||
|
<p>See pkg/tasks and the README for more information.</p>
|
||
|
</div>
|
||
|
</article>
|
||
|
}
|
||
|
@taskForm(p, f)
|
||
|
}
|
||
|
|
||
|
templ taskForm(p page.Page, f *TaskForm) {
|
||
|
<form id="task" method="post" hx-post={ p.ToURL("task.submit") }>
|
||
|
@components.Messages(p)
|
||
|
<div class="field">
|
||
|
<label for="delay" class="label">Delay (in seconds)</label>
|
||
|
<div class="control">
|
||
|
<input type="number" id="delay" name="delay" class={ "input", f.Submission.GetFieldStatusClass("Delay") } value={ strconv.Itoa(f.Delay) }/>
|
||
|
</div>
|
||
|
<p class="help">How long to wait until the task is executed</p>
|
||
|
@components.FieldErrors(f.Submission.GetFieldErrors("Delay"))
|
||
|
</div>
|
||
|
<div class="field">
|
||
|
<label for="message" class="label">Message</label>
|
||
|
<div class="control">
|
||
|
<textarea id="message" name="message" class={ "textarea", f.Submission.GetFieldStatusClass("Message") }>{ f.Message }</textarea>
|
||
|
</div>
|
||
|
<p class="help">The message the task will output to the log</p>
|
||
|
@components.FieldErrors(f.Submission.GetFieldErrors("Message"))
|
||
|
</div>
|
||
|
<div class="field is-grouped">
|
||
|
<div class="control">
|
||
|
<button class="button is-link">Add task to queue</button>
|
||
|
</div>
|
||
|
</div>
|
||
|
@components.CSRF(p.CSRF)
|
||
|
</form>
|
||
|
}
|