Implemented forum overview
This commit is contained in:
130
pages/anime/anime.pixy
Normal file
130
pages/anime/anime.pixy
Normal file
@ -0,0 +1,130 @@
|
||||
component Anime(anime *arn.Anime)
|
||||
section.anime-container(data-id=anime.ID)
|
||||
header.anime-header
|
||||
if anime.Image != ""
|
||||
.anime-image-container
|
||||
img.anime-image(src=anime.Image, alt=anime.Title.Romaji)
|
||||
|
||||
.info-column
|
||||
h2.anime-title-db(title=anime.Type)= anime.Title.Romaji
|
||||
|
||||
//- if user && user.titleLanguage === "japanese"
|
||||
//- p.second-title-container
|
||||
//- span.second-title(title=anime.Title.English !== anime.Title.Romaji ? anime.Title.English : null)= anime.Title.Romaji
|
||||
//- else
|
||||
if anime.Title.Japanese != anime.Title.Romaji
|
||||
p.second-title-container
|
||||
a.second-title(href="http://jisho.org/search/" + anime.Title.Japanese, target="_blank", title="Look up reading on jisho.org", rel="nofollow")= anime.Title.Japanese
|
||||
|
||||
//- h3.anime-header.anime-summary-header Summary
|
||||
p.anime-summary= arn.FixAnimeDescription(anime.Description)
|
||||
|
||||
if anime.YoutubeID != ""
|
||||
h3.anime-header Video
|
||||
.anime-trailer.video-container
|
||||
iframe.video(src="https://www.youtube.com/embed/" + anime.YoutubeID + "?showinfo=0", allowfullscreen="allowfullscreen")
|
||||
|
||||
if anime.Tracks != nil && anime.Tracks.Opening != nil
|
||||
h3.anime-header Tracks
|
||||
iframe.anime-track(src="https://w.soundcloud.com/player/?url=" + anime.Tracks.Opening.URI + "?auto_play=false&hide_related=true&show_comments=true&show_user=true&show_reposts=false&visual=true")
|
||||
|
||||
//- if user && friendsWatching && friendsWatching.length > 0
|
||||
//- include ../messages/avatar.pug
|
||||
|
||||
//- h3.anime-header Watching
|
||||
//- .user-list
|
||||
//- each watcher in friendsWatching
|
||||
//- +avatar(watcher)
|
||||
|
||||
if len(anime.Genres) > 0
|
||||
h3.anime-header Genres
|
||||
.light-button-group
|
||||
each genre in anime.Genres
|
||||
if genre != ""
|
||||
a.light-button.ajax(href="/genres/" + arn.FixGenre(genre))
|
||||
Icon(arn.GetGenreIcon(genre))
|
||||
span= genre
|
||||
|
||||
if len(anime.Studios) > 0
|
||||
h3.anime-header Studios
|
||||
.light-button-group
|
||||
each studio in anime.Studios
|
||||
a.light-button(href="https://anilist.co/studio/" + toString(studio.ID), target="_blank")
|
||||
i.fa.fa-building.fa-fw
|
||||
span= studio.Name
|
||||
|
||||
//- //-if crunchy
|
||||
//- //- h3.anime-header Episodes
|
||||
|
||||
//- if canEdit
|
||||
//- #staff-info
|
||||
//- h3.anime-header Links
|
||||
//- table
|
||||
//- tbody
|
||||
//- tr
|
||||
//- td MyAnimeList
|
||||
//- td
|
||||
//- input.save-on-change(id="MyAnimeList", type="text", value=providers.MyAnimeList ? providers.MyAnimeList.providerId : ", disabled=(providers.MyAnimeList && providers.MyAnimeList.similarity === 1) ? true : false)
|
||||
//- td
|
||||
//- a(href="https://www.google.co.jp/search?q=site:myanimelist.net/anime+" + anime.title.romaji.replace(/ /g, "+"), target="_blank")
|
||||
//- .fa.fa-search
|
||||
//- td
|
||||
//- tr
|
||||
//- td HummingBird
|
||||
//- td
|
||||
//- input.save-on-change(id="HummingBird", type="text", value=providers.HummingBird ? providers.HummingBird.providerId : ", disabled=(providers.HummingBird && providers.HummingBird.similarity === 1) ? true : false)
|
||||
//- td
|
||||
//- a(href="https://www.google.co.jp/search?q=site:hummingbird.me/anime+" + anime.title.romaji.replace(/ /g, "+"), target="_blank")
|
||||
//- .fa.fa-search
|
||||
//- td
|
||||
//- tr
|
||||
//- td AnimePlanet
|
||||
//- td
|
||||
//- input.save-on-change(id="AnimePlanet", type="text", value=providers.AnimePlanet ? providers.AnimePlanet.providerId : ", disabled=(providers.AnimePlanet && providers.AnimePlanet.similarity === 1) ? true : false)
|
||||
//- td
|
||||
//- a(href="https://www.google.co.jp/search?q=site:anime-planet.com/anime+" + anime.title.english.replace(/ /g, "+"), target="_blank")
|
||||
//- .fa.fa-search
|
||||
//- td
|
||||
|
||||
//- - var title = providers.Nyaa ? providers.Nyaa.title : "
|
||||
//- - var proposedTitle = nyaa.buildNyaaTitle(anime.title.romaji)
|
||||
//- tr
|
||||
//- td Nyaa
|
||||
//- td
|
||||
//- input.save-on-change(id="Nyaa", type="text", value=title, placeholder=proposedTitle)
|
||||
//- td
|
||||
//- a(href="https://www.nyaa.se/?page=search&cats=1_37&filter=0&sort=2&term=" + (title ? title.replace(/ /g, "+") : proposedTitle), target="_blank")
|
||||
//- .fa.fa-search
|
||||
//- td
|
||||
//- if providers.Nyaa && providers.Nyaa.episodes !== undefined
|
||||
//- span(class=providers.Nyaa.episodes === 0 ? "entry-error" : "entry-ok")= providers.Nyaa.episodes + " eps"
|
||||
|
||||
h3.anime-header Links
|
||||
.light-button-group
|
||||
if anime.Links != nil
|
||||
each link in anime.Links
|
||||
a.light-button(href=link.URL, target="_blank")= link.Title
|
||||
|
||||
if anime.CreatedBy == ""
|
||||
a.light-button(href="https://anilist.co/anime/" + toString(anime.ID), target="_blank") AniList
|
||||
|
||||
//- if providers.HummingBird
|
||||
//- a.light-button(href="https://hummingbird.me/anime/" + providers.HummingBird.providerId, target="_blank") HummingBird
|
||||
|
||||
//- if providers.MyAnimeList
|
||||
//- a.light-button(href="http://myanimelist.net/anime/" + providers.MyAnimeList.providerId, target="_blank") MyAnimeList
|
||||
|
||||
//- if providers.AnimePlanet
|
||||
//- a.light-button(href="http://www.anime-planet.com/anime/" + providers.AnimePlanet.providerId, target="_blank") AnimePlanet
|
||||
|
||||
.sources
|
||||
p Powered by Anilist.
|
||||
//- if descriptionSource
|
||||
//- span= " Summary by " + summarySource + "."
|
||||
//- //-
|
||||
//- h3.anime-header Synonyms
|
||||
//- if anime.title.synonyms
|
||||
//- ul.anime-synonyms
|
||||
//- li.anime-japanese-title= anime.title.japanese
|
||||
//- each synonym in anime.title.synonyms
|
||||
//- li= synonym
|
167
pages/anime/anime.styl
Normal file
167
pages/anime/anime.styl
Normal file
@ -0,0 +1,167 @@
|
||||
.anime-container
|
||||
float left
|
||||
width 100%
|
||||
padding 0
|
||||
text-align left
|
||||
border-radius 3px
|
||||
box-sizing border-box
|
||||
|
||||
.anime-links
|
||||
float left
|
||||
width 100%
|
||||
display flex
|
||||
flex-flow row wrap
|
||||
|
||||
.anime-links-category
|
||||
flex 1
|
||||
flex-basis 100%
|
||||
// min-width 300px
|
||||
// max-width 100%
|
||||
|
||||
.anime-title-db
|
||||
text-align left
|
||||
width auto
|
||||
|
||||
.second-title-container
|
||||
float left
|
||||
width 100%
|
||||
text-align left
|
||||
margin-top -0.6em
|
||||
margin-bottom 0.6em
|
||||
|
||||
.second-title
|
||||
font-size 0.9em
|
||||
font-weight normal
|
||||
color rgba(60, 60, 60, 0.5) !important
|
||||
|
||||
.anime-summary-header
|
||||
display block
|
||||
|
||||
.anime-summary
|
||||
flex 1
|
||||
min-width 300px
|
||||
max-width 100%
|
||||
margin-left 0
|
||||
.anime-header
|
||||
margin-top 0
|
||||
|
||||
.anime-trailer
|
||||
width 100%
|
||||
|
||||
.genre-list
|
||||
list-style-type none
|
||||
margin-left 0.5em
|
||||
|
||||
.sources
|
||||
font-size 0.8em
|
||||
opacity 0.5
|
||||
|
||||
.anime-header
|
||||
display flex
|
||||
flex-flow row
|
||||
|
||||
.anime-image
|
||||
border-radius 3px
|
||||
box-shadow 4px 4px 8px rgba(0, 0, 0, 0.12)
|
||||
filter saturate(100%)
|
||||
transition all 290ms ease
|
||||
&:hover
|
||||
filter saturate(130%)
|
||||
box-shadow 6px 6px 12px rgba(0, 0, 0, 0.2)
|
||||
|
||||
.anime-image-container
|
||||
flex-shrink 0
|
||||
text-align center
|
||||
margin-bottom 1rem
|
||||
.anime-image
|
||||
margin 0 !important
|
||||
margin-right 1.5rem !important
|
||||
width 225px
|
||||
|
||||
.anime-track
|
||||
width 100%
|
||||
height 150px
|
||||
|
||||
.info-column
|
||||
flex-grow 1
|
||||
display flex
|
||||
flex-flow column
|
||||
|
||||
.users-count
|
||||
opacity 0.5
|
||||
font-size 0.9em
|
||||
|
||||
.anime-frontpage
|
||||
h2, h3
|
||||
text-align center
|
||||
|
||||
.popular-anime-list
|
||||
width 100%
|
||||
display flex
|
||||
flex-flow row wrap
|
||||
justify-content center
|
||||
|
||||
.popular-anime
|
||||
padding 0.5em
|
||||
display block
|
||||
|
||||
.popular-anime-image
|
||||
width 100px !important
|
||||
height 141px !important
|
||||
|
||||
.light-button-group
|
||||
float left
|
||||
width 100%
|
||||
margin 0
|
||||
width auto
|
||||
display flex
|
||||
flex-flow row wrap
|
||||
justify-content flex-start
|
||||
font-size 0.9em
|
||||
|
||||
.light-button
|
||||
display inline-block
|
||||
padding 0.5em 1em
|
||||
border-radius 3px
|
||||
&:hover
|
||||
color white !important
|
||||
background-color linkHoverColor
|
||||
|
||||
.entry-error
|
||||
color red !important
|
||||
|
||||
.entry-ok
|
||||
color green !important
|
||||
|
||||
#search
|
||||
float none
|
||||
|
||||
#search-results
|
||||
width 100%
|
||||
max-width 560px
|
||||
text-align left
|
||||
margin 0 auto
|
||||
|
||||
.search-performance, .anime-count
|
||||
opacity 0.25
|
||||
text-align center !important
|
||||
|
||||
.search-result
|
||||
float left
|
||||
width 100%
|
||||
padding 0.25em 0.5em
|
||||
border-radius 3px
|
||||
box-sizing border-box
|
||||
&:focus
|
||||
background-color rgb(32, 32, 32) !important
|
||||
color rgb(232, 232, 232) !important
|
||||
|
||||
@media only screen and (max-width: 800px)
|
||||
.anime-header
|
||||
flex-flow row wrap
|
||||
|
||||
.anime-title-db
|
||||
.second-title-container
|
||||
.anime-image-container
|
||||
text-align center
|
||||
flex-grow 1
|
1
pages/anime/anime.ts
Normal file
1
pages/anime/anime.ts
Normal file
@ -0,0 +1 @@
|
||||
console.log("Hello Typescript")
|
17
pages/dashboard/dashboard.pixy
Normal file
17
pages/dashboard/dashboard.pixy
Normal file
@ -0,0 +1,17 @@
|
||||
component Dashboard
|
||||
section
|
||||
header
|
||||
h2 ARN 4.0
|
||||
p Shht! The next version of notify.moe is currently being built here.
|
||||
hr
|
||||
ul
|
||||
li
|
||||
a.ajax(href="/anime/21499") Sousei no Onmyouji
|
||||
li
|
||||
a.ajax(href="/anime/1000001") RWBY
|
||||
li
|
||||
a(href="/api/anime/1000001") RWBY (JSON API)
|
||||
li
|
||||
a.ajax(href="/genres") Genre Overview
|
||||
li
|
||||
a(href="/all/anime") All anime titles on notify.moe (text file)
|
35
pages/forum/forum.pixy
Normal file
35
pages/forum/forum.pixy
Normal file
@ -0,0 +1,35 @@
|
||||
component Forum(threads []*arn.Thread)
|
||||
h2 Forum
|
||||
ForumHeader
|
||||
each thread in threads
|
||||
ThreadLink(thread)
|
||||
|
||||
component ForumHeader
|
||||
.forum-tags
|
||||
a.ajax(href="/forum") All
|
||||
span |
|
||||
a.ajax(href="/forum/general") General
|
||||
span |
|
||||
a.ajax(href="/forum/news") News
|
||||
span |
|
||||
a.ajax(href="/forum/anime") Anime
|
||||
span |
|
||||
a.ajax(href="/forum/update") Updates
|
||||
span |
|
||||
a.ajax(href="/forum/suggestion") Suggestions
|
||||
span |
|
||||
a.ajax(href="/forum/bug") Bugs
|
||||
|
||||
component ThreadLink(thread *arn.Thread)
|
||||
.thread(data-stick=toString(thread.Sticky))
|
||||
.post-author.thread-author
|
||||
Avatar(thread.Author)
|
||||
.thread-content-container
|
||||
.post-content.thread-content
|
||||
if thread.Sticky
|
||||
i.fa.fa-thumb-tack.fa-fw.thread-icon
|
||||
a.thread-title.ajax(href="/threads/" + thread.ID)= thread.Title
|
||||
//- .thread-icons
|
||||
//- each icon in thread.Icons
|
||||
//- i(class='fa fa-' + icon + ' fa-fw thread-icon')
|
||||
//- .thread-reply-count= 25
|
37
pages/forum/forum.styl
Normal file
37
pages/forum/forum.styl
Normal file
@ -0,0 +1,37 @@
|
||||
.forum-tags
|
||||
text-align left
|
||||
margin-bottom 1.5rem
|
||||
|
||||
.thread
|
||||
display flex
|
||||
flex-flow row
|
||||
width 100%
|
||||
|
||||
.thread-icons
|
||||
.thread-reply-count
|
||||
flex 1
|
||||
text-align right
|
||||
opacity 0.5
|
||||
|
||||
.thread-reply-count
|
||||
&:after
|
||||
content " replies"
|
||||
|
||||
.thread-content-container
|
||||
display flex
|
||||
align-items center
|
||||
width 100%
|
||||
|
||||
.thread-content
|
||||
display flex
|
||||
align-items center
|
||||
justify-content flex-start
|
||||
text-align left
|
||||
min-height 80%
|
||||
a
|
||||
color rgb(32, 32, 32) !important
|
||||
&:hover
|
||||
color linkHoverColor !important
|
||||
|
||||
.thread-icon
|
||||
font-size 0.9em
|
15
pages/genres/genres.pixy
Normal file
15
pages/genres/genres.pixy
Normal file
@ -0,0 +1,15 @@
|
||||
component GenreOverview
|
||||
h2.genre-header Genres
|
||||
|
||||
div
|
||||
each genre in arn.Genres
|
||||
a.light-button.ajax(href="/genres/" + arn.FixGenre(genre))
|
||||
Icon(arn.GetGenreIcon(genre))
|
||||
span= genre
|
||||
|
||||
component AnimeInGenre(genre string, animeList []*arn.Anime)
|
||||
h2.genre-header= arn.Capitalize(genre)
|
||||
.genre-anime-list
|
||||
each anime in animeList
|
||||
a.genre-anime-link.ajax(href="/anime/" + toString(anime.ID))
|
||||
img.anime-image.genre-anime-image(src=anime.Image, alt=anime.Title.Romaji, title=anime.Title.Romaji + " (" + toString(anime.Watching) + ")")
|
22
pages/genres/genres.styl
Normal file
22
pages/genres/genres.styl
Normal file
@ -0,0 +1,22 @@
|
||||
.genre-header
|
||||
text-align center
|
||||
|
||||
.genre-anime-list
|
||||
display flex
|
||||
flex-flow row wrap
|
||||
float none !important
|
||||
justify-content center
|
||||
|
||||
.genre-anime-image
|
||||
width 16vw
|
||||
height 9vw
|
||||
min-width 90px
|
||||
min-height 127px
|
||||
max-width 200px
|
||||
max-height 282px
|
||||
object-fit cover
|
||||
|
||||
.genre-anime-link
|
||||
margin 0.5em
|
||||
flex-grow 0
|
||||
flex-shrink 0
|
Reference in New Issue
Block a user