1
0
Fork 0
mirror of https://git.sr.ht/~cadence/cloudtube synced 2026-03-02 02:31:35 +00:00

Implement video filters

This commit is contained in:
Cadence Ember 2021-05-12 00:29:44 +12:00
parent aa953dc796
commit db7ccabb3b
No known key found for this signature in database
GPG key ID: BC1C2C61CF521B17
19 changed files with 790 additions and 9 deletions

77
pug/filters.pug Normal file
View file

@ -0,0 +1,77 @@
extends includes/layout
mixin filter_type_option(label, value)
option(value=value selected=(value === type))= label
block head
title Filters - CloudTube
script(type="module" src=getStaticURL("html", "static/js/filters.js"))
block content
main.filters-page
h1 Filters
details(open=!!type)
summary New filter
form(method="post")
if label
input(type="hidden" name="label" value=label)
if referrer
input(type="hidden" name="referrer" value=referrer)
.field-row
label.field-row__label(for="filter-type") Type
select(id="filter-type" name="filter-type").border-look.field-row__input
+filter_type_option("Title", "title")
+filter_type_option("Channel name", "channel-name")
+filter_type_option("Channel ID", "channel-id")
.field-row.max-width-input
label.field-row__label(for="new-filter") Contents
input(type="text" id="new-filter" name="new-filter" value=contents required maxlength=filterMaxLength).border-look.field-row__input
.field-row__description(style=(type !== "title" ? "display: none" : ""))#title-pattern-matching
| For titles, pattern matching is supported. Regular expressions are #{regexpEnabledText} enabled.
|
a(href="https://git.sr.ht/~cadence/tube-docs/tree/main/item/docs/cloudtube/Filters.md") For help, see the documentation.
if compileError
section.filter-compile-error
header.filter-compile-error__header Your pattern failed to compile.
pre.filter-compile-error__trace
= contents + "\n"
= " ".repeat(compileError.position) + "^ " + compileError.message
div: a(href="https://git.sr.ht/~cadence/tube-docs/tree/main/item/docs/cloudtube/Filters.md") For help, see the documentation.
else
if type
.filter-confirmation-notice.
You can refine the filter further if you need to.
When you're happy, click Save.
.save-filter
button.border-look
if referrer
| Save & return
else
| Save
.filter-list
- let someFiltersDisplayed = false
each category in categories
if category.filters.length
- someFiltersDisplayed = true
h2.filter-category-header= category.name
div
each filter in category.filters
.filter
.filter__details
- let type = `type: ${filter.type}`
- let content = filter.data
if filter.type === "channel-id" && filter.label
- type += `, id: ${filter.data}`
- content = filter.label
.filter__type= type
.filter__content= content
form.filter__remove(method="post" action="/filters/delete")
input(type="hidden" name="delete-id" value=filter.id)
button.border-look Remove
if !someFiltersDisplayed
.no-filters
h2 You haven't created any filters.
p Create one now and cleanse your mind.
p You can add filters using the button on video thumbnails.

View file

@ -8,6 +8,15 @@ mixin video_list_item(className, video, instanceOrigin, options = {})
img(src=`/vi/${video.videoId}/mqdefault.jpg` width=320 height=180 alt="").image
if video.second__lengthText != undefined
span.duration= video.second__lengthText
details.thumbnail__more
summary.thumbnail__show-more ×
.thumbnail__options-container
.thumbnail__options-list
- const paramsBase = {}
- if (url) paramsBase.referrer = url.pathname + (url.search && "?" + url.search)
a(href=`/filters?${new URLSearchParams({"channel-id": video.authorId, label: video.author, ...paramsBase})}`).menu-look Hide this channel
a(href=`/filters?${new URLSearchParams({title: video.title, ...paramsBase})}`).menu-look Hide by title
a(href="/filters").menu-look Edit all filters
.info
div.title: a(href=link).title-link= video.title
div.author-line

View file

@ -81,6 +81,12 @@ block content
.save-settings
button.border-look Save
h2.more-settings-header More settings
section.more-settings
ul.more-settings__list
li.more-settings__list-item: a(href="/filters") Edit filters
if user.token
details.data-management
summary Sync data