Implemented anime list basics

This commit is contained in:
Eduard Urbach 2017-06-08 21:54:39 +02:00
parent 4f7ef694c8
commit cacb804a19
10 changed files with 86 additions and 7 deletions

34
api.go
View File

@ -1,8 +1,12 @@
package main
import (
"errors"
"net/http"
"github.com/aerogo/aero"
"github.com/animenotifier/arn"
"github.com/animenotifier/notify.moe/utils"
)
func init() {
@ -52,4 +56,34 @@ func init() {
return ctx.JSON(thread)
})
app.Get("/api/anime/:id/add", func(ctx *aero.Context) string {
animeID := ctx.Get("id")
user := utils.GetUser(ctx)
if user == nil {
return ctx.Error(http.StatusBadRequest, "Not logged in", errors.New("User not logged in"))
}
animeList := user.AnimeList()
if animeList.Contains(animeID) {
return ctx.Error(http.StatusBadRequest, "Anime already added", errors.New("Anime has already been added"))
}
newItem := arn.AnimeListItem{
AnimeID: animeID,
Status: arn.AnimeListStatusPlanned,
}
animeList.Items = append(animeList.Items, newItem)
saveError := animeList.Save()
if saveError != nil {
return ctx.Error(http.StatusInternalServerError, "Could not save anime list in database", saveError)
}
return ctx.JSON(animeList)
})
}

View File

@ -18,6 +18,9 @@ component Anime(anime *arn.Anime)
//- h3.anime-section-name.anime-summary-header Summary
p.anime-summary= anime.Summary
.anime-actions
a.light-button.action-button(href="#") Add to collection
h3.anime-section-name Ratings
.anime-rating-categories
.anime-rating-category(title=toString(anime.Rating.Overall))

View File

@ -41,6 +41,17 @@
margin-bottom 0.5rem
color rgba(60, 60, 60, 0.5) !important
.anime-actions
horizontal
justify-content center
margin content-padding 0
> 900px
.anime-actions
position absolute
top 0
right content-padding
.anime-rating-categories
horizontal
width 100%

View File

@ -29,5 +29,5 @@ func Get(ctx *aero.Context) string {
return ctx.HTML(components.Dashboard(posts))
}
return ctx.HTML("ARN 4.0 is currently under construction.<br><a href='https://paypal.me/blitzprog' target='_blank' rel='noopener'>Support the development</a>")
return ctx.HTML("ARN 4.0 is currently under construction.<br><a href='https://paypal.me/blitzprog' target='_blank' rel='noopener'>Support the development</a><br><a href='/auth/google'>Login via Google</a>")
}

View File

@ -0,0 +1,15 @@
.anime-list
horizontal
.anime-list-item
padding 0.25rem
// padding calc(content-padding / 4) calc(content-padding / 2)
// margin 0.25rem 0
// position relative
.anime-list-item-image
width 55px !important
border-radius 2px
// position absolute
// left 0
// top 0

View File

@ -27,5 +27,7 @@ func Get(ctx *aero.Context) string {
threads = threads[:maxPosts]
}
return ctx.HTML(components.Profile(viewUser, user, threads))
animeList := viewUser.AnimeList()
return ctx.HTML(components.Profile(viewUser, user, animeList, threads))
}

View File

@ -1,4 +1,4 @@
component Profile(viewUser *arn.User, user *arn.User, threads []*arn.Thread)
component Profile(viewUser *arn.User, user *arn.User, animeList *arn.AnimeList, threads []*arn.Thread)
.profile
img.profile-cover(src=viewUser.CoverImageURL())
@ -49,6 +49,14 @@ component Profile(viewUser *arn.User, user *arn.User, threads []*arn.Thread)
//- a.light-button(href="#") Anime
//- a.light-button(href="#") Forum
.profile-category
h3 Anime
.anime-list
each item in animeList.Items
a.anime-list-item.ajax(href=item.Anime().Link(), title=item.Anime().Title.Canonical + " (" + toString(item.Episode) + " / " + arn.EpisodesToString(item.Anime().EpisodeCount) + ")")
img.anime-cover-image.anime-list-item-image(src=item.Anime().Image.Tiny, alt=item.Anime().Title.Canonical)
.profile-category
h3 Forum

View File

@ -80,4 +80,4 @@ animation cover-animation
// Categories
.profile-category
// padding content-padding
margin-bottom content-padding

View File

@ -3,3 +3,4 @@
padding content-padding
padding-top content-padding-top
line-height 1.7em
position relative

View File

@ -1,13 +1,18 @@
.light-button-group
horizontal-wrap
justify-content flex-start
font-size 0.9rem
.light-button
display inline-block
padding 0.5rem 1rem
border-radius 3px
font-size 0.9rem
:hover
color white !important
background-color link-hover-color
.action-button
ui-element
font-size 1rem
text-align center