home: added filters
This commit is contained in:
parent
2b4df20754
commit
e5b1d4aa9d
|
@ -3,5 +3,5 @@ Host: localhost:8080
|
||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
|
|
||||||
{
|
{
|
||||||
"subreddit": "wallpaper"
|
"subreddit": "animemidriff"
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,14 @@ type Context struct {
|
||||||
Request *http.Request
|
Request *http.Request
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Context) AppendQuery(keyValue ...string) string {
|
||||||
|
query := c.Request.URL.Query()
|
||||||
|
for i := 0; i < len(keyValue); i += 2 {
|
||||||
|
query.Add(keyValue[i], keyValue[i+1])
|
||||||
|
}
|
||||||
|
return query.Encode()
|
||||||
|
}
|
||||||
|
|
||||||
func NewContext(config *config.Config, request *http.Request) *Context {
|
func NewContext(config *config.Config, request *http.Request) *Context {
|
||||||
return &Context{
|
return &Context{
|
||||||
Config: config,
|
Config: config,
|
||||||
|
|
|
@ -24,29 +24,22 @@ templ HomeContent(c *views.Context, data Data) {
|
||||||
@components.ErrorToast(data.Error)
|
@components.ErrorToast(data.Error)
|
||||||
} else {
|
} else {
|
||||||
<section class="mb-4 mx-auto">
|
<section class="mb-4 mx-auto">
|
||||||
<div class="flex content-center gap-8">
|
<div
|
||||||
|
class="flex content-center gap-8"
|
||||||
|
hx-get="/"
|
||||||
|
hx-target="main"
|
||||||
|
hx-select="main"
|
||||||
|
hx-swap="outerHTML"
|
||||||
|
hx-trigger="change"
|
||||||
|
hx-include="this"
|
||||||
|
hx-push-url="true"
|
||||||
|
>
|
||||||
<h1>
|
<h1>
|
||||||
Recently Added -
|
Recently Added -
|
||||||
{ strconv.FormatInt(data.TotalImages, 10) } Images
|
{ strconv.FormatInt(data.TotalImages, 10) } Images
|
||||||
</h1>
|
</h1>
|
||||||
<select
|
@recentRangeInput(c)
|
||||||
hx-trigger="change"
|
@nsfwToggle(c, data)
|
||||||
hx-get="/"
|
|
||||||
name="created_at"
|
|
||||||
hx-params="*"
|
|
||||||
class="select select-ghost"
|
|
||||||
hx-target="body"
|
|
||||||
hx-push-url="true"
|
|
||||||
>
|
|
||||||
@recentlyRangeOption(c, "-10800", "3 Hours")
|
|
||||||
@recentlyRangeOption(c, "-21600", "6 Hours")
|
|
||||||
@recentlyRangeOption(c, "-43200", "12 Hours")
|
|
||||||
@recentlyRangeOption(c, "-86400", "1 Day")
|
|
||||||
@recentlyRangeOption(c, "-172800", "2 Days")
|
|
||||||
@recentlyRangeOption(c, "-259200", "3 Days")
|
|
||||||
@recentlyRangeOption(c, "-604800", "7 Days")
|
|
||||||
@recentlyRangeOption(c, "-2592000", "30 Days")
|
|
||||||
</select>
|
|
||||||
</div>
|
</div>
|
||||||
for _, recently := range data.RecentlyAddedImages {
|
for _, recently := range data.RecentlyAddedImages {
|
||||||
<div class="divider"></div>
|
<div class="divider"></div>
|
||||||
|
@ -71,6 +64,22 @@ templ HomeContent(c *views.Context, data Data) {
|
||||||
</main>
|
</main>
|
||||||
}
|
}
|
||||||
|
|
||||||
|
templ recentRangeInput(c *views.Context) {
|
||||||
|
<select
|
||||||
|
name="created_at"
|
||||||
|
class="select select-ghost select-bordered"
|
||||||
|
>
|
||||||
|
@recentlyRangeOption(c, "-10800", "3 Hours")
|
||||||
|
@recentlyRangeOption(c, "-21600", "6 Hours")
|
||||||
|
@recentlyRangeOption(c, "-43200", "12 Hours")
|
||||||
|
@recentlyRangeOption(c, "-86400", "1 Day")
|
||||||
|
@recentlyRangeOption(c, "-172800", "2 Days")
|
||||||
|
@recentlyRangeOption(c, "-259200", "3 Days")
|
||||||
|
@recentlyRangeOption(c, "-604800", "7 Days")
|
||||||
|
@recentlyRangeOption(c, "-2592000", "30 Days")
|
||||||
|
</select>
|
||||||
|
}
|
||||||
|
|
||||||
templ recentlyRangeOption(c *views.Context, value, text string) {
|
templ recentlyRangeOption(c *views.Context, value, text string) {
|
||||||
if c.Request.URL.Query().Get("created_at") == "" && value == "-86400" {
|
if c.Request.URL.Query().Get("created_at") == "" && value == "-86400" {
|
||||||
<option selected="selected" value={ value }>{ text }</option>
|
<option selected="selected" value={ value }>{ text }</option>
|
||||||
|
@ -80,3 +89,18 @@ templ recentlyRangeOption(c *views.Context, value, text string) {
|
||||||
<option value={ value }>{ text }</option>
|
<option value={ value }>{ text }</option>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
templ nsfwToggle(c *views.Context, data Data) {
|
||||||
|
<select
|
||||||
|
name="sfw"
|
||||||
|
class="select select-ghost select-bordered"
|
||||||
|
>
|
||||||
|
if (c.Request.URL.Query().Get("sfw") == "1") || data.SFW {
|
||||||
|
<option value="0">NSFW - ON</option>
|
||||||
|
<option selected="selected" value="1">NSFW - Off</option>
|
||||||
|
} else {
|
||||||
|
<option selected="selected" value="0">NSFW - ON</option>
|
||||||
|
<option value="1">NSFW - Off</option>
|
||||||
|
}
|
||||||
|
</select>
|
||||||
|
}
|
||||||
|
|
|
@ -16,6 +16,7 @@ type Data struct {
|
||||||
TotalImages int64
|
TotalImages int64
|
||||||
Error string
|
Error string
|
||||||
Now time.Time
|
Now time.Time
|
||||||
|
SFW bool
|
||||||
}
|
}
|
||||||
|
|
||||||
type RecentlyAddedImages = []RecentlyAddedImage
|
type RecentlyAddedImages = []RecentlyAddedImage
|
||||||
|
|
Loading…
Reference in a new issue