From f4c18002447dec8cbc12ed069498a4ee554e8bbc Mon Sep 17 00:00:00 2001 From: Eduard Urbach Date: Thu, 29 Jun 2017 08:32:46 +0200 Subject: [PATCH] Added airing dates --- pages/animelist/animelist.go | 5 +--- pages/animelist/animelist.pixy | 4 +++ pages/animelist/animelist.scarlet | 7 +++++ pages/dashboard/dashboard.go | 16 ++++------ pages/embed/embed.go | 5 +--- scripts/AnimeNotifier.ts | 49 +++++++++++++++++++++++++++++++ styles/embedded.scarlet | 11 +++++-- 7 files changed, 77 insertions(+), 20 deletions(-) diff --git a/pages/animelist/animelist.go b/pages/animelist/animelist.go index 6851effb..b10a09c9 100644 --- a/pages/animelist/animelist.go +++ b/pages/animelist/animelist.go @@ -2,7 +2,6 @@ package animelist import ( "net/http" - "sort" "github.com/aerogo/aero" "github.com/animenotifier/arn" @@ -26,9 +25,7 @@ func Get(ctx *aero.Context) string { return ctx.Error(http.StatusNotFound, "Anime list not found", nil) } - sort.Slice(animeList.Items, func(i, j int) bool { - return animeList.Items[i].FinalRating() > animeList.Items[j].FinalRating() - }) + animeList.Sort() return ctx.HTML(components.AnimeList(animeList, user)) } diff --git a/pages/animelist/animelist.pixy b/pages/animelist/animelist.pixy index 7ea276f8..e042362a 100644 --- a/pages/animelist/animelist.pixy +++ b/pages/animelist/animelist.pixy @@ -3,6 +3,7 @@ component AnimeList(animeList *arn.AnimeList, user *arn.User) thead tr th.anime-list-item-name Anime + th.anime-list-item-airing-date Airing th.anime-list-item-episodes Episodes th.anime-list-item-rating Rating if user != nil @@ -12,6 +13,9 @@ component AnimeList(animeList *arn.AnimeList, user *arn.User) tr.anime-list-item.mountable(title=item.Notes) td.anime-list-item-name a.ajax(href=item.Link(animeList.User().Nick))= item.Anime().Title.Canonical + td.anime-list-item-airing-date + if item.Anime().UpcomingEpisode() != nil + span.utc-date(data-start-date=item.Anime().UpcomingEpisode().Episode.AiringDate.Start, data-end-date=item.Anime().UpcomingEpisode().Episode.AiringDate.End, data-episode-number=item.Anime().UpcomingEpisode().Episode.Number) td.anime-list-item-episodes .anime-list-item-episodes-watched= item.Episodes .anime-list-item-episodes-separator / diff --git a/pages/animelist/animelist.scarlet b/pages/animelist/animelist.scarlet index 76badd5d..93799342 100644 --- a/pages/animelist/animelist.scarlet +++ b/pages/animelist/animelist.scarlet @@ -51,6 +51,13 @@ .raw-icon margin-bottom -4px +.anime-list-item-airing-date + display none + +> 700px + .anime-list-item-airing-date + display block + < 1100px .anime-list-item-rating display none \ No newline at end of file diff --git a/pages/dashboard/dashboard.go b/pages/dashboard/dashboard.go index 4b68f9d8..54498f71 100644 --- a/pages/dashboard/dashboard.go +++ b/pages/dashboard/dashboard.go @@ -2,7 +2,6 @@ package dashboard import ( "sort" - "time" "github.com/aerogo/aero" "github.com/aerogo/flow" @@ -68,22 +67,19 @@ func dashboard(ctx *aero.Context) string { } allAnimeInList := objects.([]*arn.Anime) - now := time.Now().UTC().Format(time.RFC3339) for _, anime := range allAnimeInList { if len(upcomingEpisodes) >= maxScheduleItems { break } - for _, episode := range anime.Episodes { - if episode.AiringDate.Start > now { - upcomingEpisodes = append(upcomingEpisodes, &arn.UpcomingEpisode{ - Anime: anime, - Episode: episode, - }) - continue - } + futureEpisodes := anime.UpcomingEpisodes() + + if len(futureEpisodes) == 0 { + continue } + + upcomingEpisodes = append(upcomingEpisodes, futureEpisodes...) } sort.Slice(upcomingEpisodes, func(i, j int) bool { diff --git a/pages/embed/embed.go b/pages/embed/embed.go index cf33a2f9..13009cef 100644 --- a/pages/embed/embed.go +++ b/pages/embed/embed.go @@ -2,7 +2,6 @@ package embed import ( "net/http" - "sort" "github.com/aerogo/aero" "github.com/animenotifier/notify.moe/components" @@ -23,9 +22,7 @@ func Get(ctx *aero.Context) string { return ctx.Error(http.StatusNotFound, "Anime list not found", nil) } - sort.Slice(animeList.Items, func(i, j int) bool { - return animeList.Items[i].FinalRating() > animeList.Items[j].FinalRating() - }) + animeList.Sort() return utils.AllowEmbed(ctx, ctx.HTML(components.AnimeList(animeList, user))) } diff --git a/scripts/AnimeNotifier.ts b/scripts/AnimeNotifier.ts index 56052c01..474a1513 100644 --- a/scripts/AnimeNotifier.ts +++ b/scripts/AnimeNotifier.ts @@ -3,6 +3,23 @@ import { Diff } from "./Diff" import { findAll, delay } from "./utils" import * as actions from "./actions" +var monthNames = [ + "January", "February", "March", + "April", "May", "June", "July", + "August", "September", "October", + "November", "December" +] + +var dayNames = [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" +] + export class AnimeNotifier { app: Application visibilityObserver: IntersectionObserver @@ -56,6 +73,38 @@ export class AnimeNotifier { Promise.resolve().then(() => this.mountMountables()) Promise.resolve().then(() => this.assignActions()) Promise.resolve().then(() => this.lazyLoadImages()) + Promise.resolve().then(() => this.displayLocalDates()) + } + + displayLocalDates() { + const oneDay = 24 * 60 * 60 * 1000 + const now = new Date() + + for(let element of findAll("utc-date")) { + let startDate = new Date(element.dataset.startDate) + let endDate = new Date(element.dataset.endDate) + + let h = startDate.getHours() + let m = startDate.getMinutes() + let startTime = (h <= 9 ? "0" + h : h) + ":" + (m <= 9 ? "0" + m : m) + + h = endDate.getHours() + m = endDate.getMinutes() + let endTime = (h <= 9 ? "0" + h : h) + ":" + (m <= 9 ? "0" + m : m) + + let dayDifference = Math.round(Math.abs((startDate.getTime() - now.getTime()) / oneDay)) + let dayInfo = dayNames[startDate.getDay()] + ", " + monthNames[startDate.getMonth()] + " " + startDate.getDate() + + if(dayDifference > 1) { + element.innerText = dayDifference + " day" + (dayDifference == 1 ? "" : "s") + } else if(dayDifference == 1) { + element.innerText = "Tomorrow" + } else { + element.innerText = "Today" + } + + element.title = "Episode " + element.dataset.episodeNumber + " will be airing " + startTime + " - " + endTime + " your time" + } } reloadContent() { diff --git a/styles/embedded.scarlet b/styles/embedded.scarlet index 07a9d427..92e2416c 100644 --- a/styles/embedded.scarlet +++ b/styles/embedded.scarlet @@ -1,3 +1,5 @@ +remove-margin = 1.1rem + .embedded // Put navigation to the bottom of the screen flex-direction column-reverse !important @@ -6,8 +8,13 @@ display inline-block .anime-list - max-width 500px - margin -1.1rem + // max-width 500px + margin-left calc(remove-margin * -1) + margin-top calc(remove-margin * -1) + width calc(100% + remove-margin * 2) + + td + padding 0.25rem 0.5rem #navigation font-size 0.9rem \ No newline at end of file