Basic movie page layout created
This commit is contained in:
@@ -31,7 +31,7 @@ func Movie(
|
|||||||
Msg("Error occured getting the movie")
|
Msg("Error occured getting the movie")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
page.Movie(movie).Render(r.Context(), w)
|
page.Movie(movie, &config.TMDBConfig.Image).Render(r.Context(), w)
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
package tmdb
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"net/url"
|
|
||||||
"path"
|
|
||||||
)
|
|
||||||
|
|
||||||
func FormatRuntime(minutes int) string {
|
|
||||||
hours := minutes / 60
|
|
||||||
mins := minutes % 60
|
|
||||||
return fmt.Sprintf("%dh %02dm", hours, mins)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetPoster(image *Image, size, imgpath string) string {
|
|
||||||
base, err := url.Parse(image.SecureBaseURL)
|
|
||||||
if err != nil {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
fullPath := path.Join(base.Path, size, imgpath)
|
|
||||||
base.Path = fullPath
|
|
||||||
return base.String()
|
|
||||||
}
|
|
||||||
35
tmdb/movie_functions.go
Normal file
35
tmdb/movie_functions.go
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
package tmdb
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/url"
|
||||||
|
"path"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (movie *Movie) FRuntime() string {
|
||||||
|
hours := movie.Runtime / 60
|
||||||
|
mins := movie.Runtime % 60
|
||||||
|
return fmt.Sprintf("%dh %02dm", hours, mins)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (movie *Movie) GetPoster(image *Image, size string) string {
|
||||||
|
base, err := url.Parse(image.SecureBaseURL)
|
||||||
|
if err != nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
fullPath := path.Join(base.Path, size, movie.Poster)
|
||||||
|
base.Path = fullPath
|
||||||
|
return base.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (movie *Movie) ReleaseYear() string {
|
||||||
|
return movie.ReleaseDate[:4]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (movie *Movie) FGenres() string {
|
||||||
|
genres := ""
|
||||||
|
for _, genre := range movie.Genres {
|
||||||
|
genres += genre.Name + ", "
|
||||||
|
}
|
||||||
|
return genres[:len(genres)-2]
|
||||||
|
}
|
||||||
@@ -3,7 +3,7 @@ package account
|
|||||||
templ AccountContainer(subpage string) {
|
templ AccountContainer(subpage string) {
|
||||||
<div
|
<div
|
||||||
id="account-container"
|
id="account-container"
|
||||||
class="flex max-w-200 min-h-100 mx-auto bg-mantle mt-10 rounded-xl"
|
class="flex max-w-200 min-h-100 mx-5 md:mx-auto bg-mantle mt-5 rounded-xl"
|
||||||
x-data="{big:window.innerWidth >=768, open:false}"
|
x-data="{big:window.innerWidth >=768, open:false}"
|
||||||
@resize.window="big = window.innerWidth >= 768"
|
@resize.window="big = window.innerWidth >= 768"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ templ Global() {
|
|||||||
class="flex flex-col h-screen justify-between"
|
class="flex flex-col h-screen justify-between"
|
||||||
>
|
>
|
||||||
@nav.Navbar()
|
@nav.Navbar()
|
||||||
<div id="page-content" class="mb-auto px-5">
|
<div id="page-content" class="mb-auto md:px-5 md:pt-5">
|
||||||
{ children... }
|
{ children... }
|
||||||
</div>
|
</div>
|
||||||
@footer.Footer()
|
@footer.Footer()
|
||||||
|
|||||||
@@ -2,27 +2,38 @@ package page
|
|||||||
|
|
||||||
import "projectreshoot/tmdb"
|
import "projectreshoot/tmdb"
|
||||||
import "projectreshoot/view/layout"
|
import "projectreshoot/view/layout"
|
||||||
import "fmt"
|
|
||||||
|
|
||||||
func formatRuntime(minutes int) string {
|
templ Movie(movie *tmdb.Movie, image *tmdb.Image) {
|
||||||
hours := minutes / 60
|
|
||||||
mins := minutes % 60
|
|
||||||
return fmt.Sprintf("%dh %02dm", hours, mins)
|
|
||||||
}
|
|
||||||
|
|
||||||
templ Movie(movie *tmdb.Movie) {
|
|
||||||
@layout.Global() {
|
@layout.Global() {
|
||||||
<div class="bg-surface0">
|
<div class="bg-surface0 md:p-2 md:rounded-lg">
|
||||||
<div class="">
|
<div class="flex items-center">
|
||||||
<div class="bg-overlay2">{ movie.Poster }</div>
|
<div class="bg-overlay2 rounded-lg">
|
||||||
<div class="">
|
<img
|
||||||
<span class="">
|
class="object-cover aspect-[2/3] w-[154px] md:w-[300px]
|
||||||
|
transition-all md:rounded-md shadow-crust shadow-2xl"
|
||||||
|
src={ movie.GetPoster(image, "w300") }
|
||||||
|
alt="Poster"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="flex flex-col flex-1 text-center px-4">
|
||||||
|
<span class="text-xl md:text-3xl font-semibold">
|
||||||
{ movie.Title }
|
{ movie.Title }
|
||||||
</span>
|
</span>
|
||||||
<span class="">
|
<span class="text-sm md:text-lg text-subtext1">
|
||||||
{ formatRuntime(movie.Runtime) }
|
{ movie.FGenres() }
|
||||||
- { movie.ReleaseDate[:4] }
|
- { movie.FRuntime() }
|
||||||
|
- { movie.ReleaseYear() }
|
||||||
</span>
|
</span>
|
||||||
|
<div class="flex justify-center gap-2 mt-2">
|
||||||
|
<div
|
||||||
|
class="w-20 h-20 md:w-30 md:h-30 bg-overlay2
|
||||||
|
transition-all rounded-sm"
|
||||||
|
></div>
|
||||||
|
<div
|
||||||
|
class="w-20 h-20 md:w-30 md:h-30 bg-overlay2
|
||||||
|
transition-all rounded-sm"
|
||||||
|
></div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user