component ProfileAnimeLists(animeLists map[string]*arn.AnimeList, viewUser *arn.User, user *arn.User, uri string)
	ProfileHeader(viewUser, user, uri)

	h1.page-title.anime-list-owner= viewUser.Nick + "'s collection"

	AnimeLists(animeLists, viewUser, user)

	//- for status, animeList := range animeLists
	//- 	h3= status
	//- 	AnimeList(animeList, user)

component AnimeLists(animeLists map[string]*arn.AnimeList, viewUser *arn.User, user *arn.User)
	if len(animeLists[arn.AnimeListStatusWatching].Items) == 0 && len(animeLists[arn.AnimeListStatusCompleted].Items) == 0 && len(animeLists[arn.AnimeListStatusPlanned].Items) == 0 && len(animeLists[arn.AnimeListStatusHold].Items) == 0 && len(animeLists[arn.AnimeListStatusDropped].Items) == 0
		p.no-data.mountable= viewUser.Nick + " hasn't added any anime yet."
	else
		if len(animeLists[arn.AnimeListStatusWatching].Items) > 0
			.anime-list-container
				h3.status-name Watching
				AnimeList(animeLists[arn.AnimeListStatusWatching], viewUser, user)

		if len(animeLists[arn.AnimeListStatusCompleted].Items) > 0
			.anime-list-container
				h3.status-name Completed
				AnimeList(animeLists[arn.AnimeListStatusCompleted], viewUser, user)

		if len(animeLists[arn.AnimeListStatusPlanned].Items) > 0
			.anime-list-container
				h3.status-name Planned
				AnimeList(animeLists[arn.AnimeListStatusPlanned], viewUser, user)

		if len(animeLists[arn.AnimeListStatusHold].Items) > 0
			.anime-list-container
				h3.status-name On hold
				AnimeList(animeLists[arn.AnimeListStatusHold], viewUser, user)

		if len(animeLists[arn.AnimeListStatusDropped].Items) > 0
			.anime-list-container
				h3.status-name Dropped
				AnimeList(animeLists[arn.AnimeListStatusDropped], viewUser, user)

component AnimeList(animeList *arn.AnimeList, viewUser *arn.User, user *arn.User)
	table.anime-list
		tbody
			each item in animeList.Items
				tr.anime-list-item.mountable(title=item.Notes, data-api="/api/animelist/" + animeList.UserID + "/field/Items[AnimeID=\"" + item.AnimeID + "\"]")
					td.anime-list-item-image-container
						a.ajax(href=item.Anime().Link())
							img.anime-list-item-image.lazy(data-src=item.Anime().Image("small"), data-webp="true", alt=item.Anime().Title.ByUser(user))

					td.anime-list-item-name
						a.ajax(href=item.Link(animeList.User().Nick))= item.Anime().Title.ByUser(user)

					td.anime-list-item-actions
						if user != nil && item.Status == arn.AnimeListStatusWatching
							//- if user.ID == "KpdWUlPzR"
							//- 	a(href=arn.Nyaa.GetLink(item.Anime()), title="Search on Nyaa", target="_blank", rel="noopener")
							//- 		RawIcon("download")
							//- else
							if item.Anime().EpisodeByNumber(item.Episodes + 1) != nil
								for _, link := range item.Anime().EpisodeByNumber(item.Episodes + 1).Links
									a(href=link, title="Watch episode " + toString(item.Episodes + 1) + " on twist.moe", target="_blank", rel="noopener")
										RawIcon("eye")

					td.anime-list-item-airing-date
						if (item.Status == arn.AnimeListStatusWatching || item.Status == arn.AnimeListStatusPlanned) && item.Anime().UpcomingEpisode() != nil
							span.utc-airing-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
						if item.Status != arn.AnimeListStatusCompleted
							.anime-list-item-episodes-watched
								.action(contenteditable=utils.SameUser(user, viewUser), data-field="Episodes", data-type="number", data-trigger="focusout", data-action="save")= item.Episodes
								if item.Status == arn.AnimeListStatusWatching
									.plus-episode.action(data-action="increaseEpisode", data-trigger="click") +

							.anime-list-item-episodes-separator /
							.anime-list-item-episodes-max= item.Anime().EpisodeCountString()

					td.anime-list-item-rating(title="Overall rating")
						.action(contenteditable=utils.SameUser(user, viewUser), data-field="Rating.Overall", data-type="number", data-trigger="focusout", data-action="save")= utils.FormatRating(item.Rating.Overall)
					//- td.anime-list-item-rating(title="Story rating")
					//- 	.action(contenteditable=utils.SameUser(user, viewUser), data-field="Rating.Story", data-type="number", data-trigger="focusout", data-action="save")= fmt.Sprintf("%.1f", item.Rating.Story)
					//- td.anime-list-item-rating(title="Visuals rating")
					//- 	.action(contenteditable=utils.SameUser(user, viewUser), data-field="Rating.Visuals", data-type="number", data-trigger="focusout", data-action="save")= fmt.Sprintf("%.1f", item.Rating.Visuals)
					//- td.anime-list-item-rating(title="Soundtrack rating")
					//- 	.action(contenteditable=utils.SameUser(user, viewUser), data-field="Rating.Soundtrack", data-type="number", data-trigger="focusout", data-action="save")= fmt.Sprintf("%.1f", item.Rating.Soundtrack)