Added output template override to UI

This commit is contained in:
Kieran Eglin 2024-04-11 10:32:43 -07:00
parent 4df43f0993
commit e794b42948
No known key found for this signature in database
GPG key ID: 193984967FCF432D
2 changed files with 135 additions and 93 deletions

View file

@ -28,4 +28,20 @@ defmodule PinchflatWeb.Sources.SourceHTML do
def rss_feed_url(conn, source) do def rss_feed_url(conn, source) do
url(conn, ~p"/sources/#{source.uuid}/feed") <> ".xml" url(conn, ~p"/sources/#{source.uuid}/feed") <> ".xml"
end end
def output_path_template_override_placeholders(media_profiles) do
media_profiles
|> Enum.map(&{&1.id, &1.output_path_template})
|> Map.new()
|> Phoenix.json_library().encode!()
end
def output_path_template_override_help do
help_button_classes = "underline decoration-bodydark decoration-1 hover:decoration-white cursor-pointer"
help_button = ~s{<span class="#{help_button_classes}" x-on:click="$dispatch('load-template')">Click here</span>}
"""
Must end with .{{ ext }}. Same rules as Media Profile output path templates. #{help_button} to load your media profile's output template
"""
end
end end

View file

@ -9,6 +9,7 @@
Oops, something went wrong! Please check the errors below. Oops, something went wrong! Please check the errors below.
</.error> </.error>
<section x-data="{ mediaProfileId: null }">
<section class="flex justify-between items-center mt-8"> <section class="flex justify-between items-center mt-8">
<h3 class=" text-2xl text-black dark:text-white"> <h3 class=" text-2xl text-black dark:text-white">
General Options General Options
@ -33,6 +34,7 @@
type="select" type="select"
label="Media Profile" label="Media Profile"
help="Sets your preferences for what media to look for and how to store it" help="Sets your preferences for what media to look for and how to store it"
x-model.fill="mediaProfileId"
/> />
<h3 class="mt-8 text-2xl text-black dark:text-white"> <h3 class="mt-8 text-2xl text-black dark:text-white">
@ -111,6 +113,29 @@
placeholder="(?i)^How to Bike$" placeholder="(?i)^How to Bike$"
help="A PCRE-compatible regex. Only media with titles that match this regex will be downloaded. Look up 'SQLean Regex docs' for more" help="A PCRE-compatible regex. Only media with titles that match this regex will be downloaded. Look up 'SQLean Regex docs' for more"
/> />
<section
x-data={
"""
{
placeholders: JSON.parse('#{output_path_template_override_placeholders(@media_profiles)}'),
inputValue: null
}
"""
}
x-on:load-template="inputValue = placeholders[mediaProfileId]"
>
<.input
field={f[:output_path_template_override]}
type="text"
inputclass="font-mono"
label="Output path template override"
help={output_path_template_override_help()}
html_help={true}
x-bind:placeholder="placeholders[mediaProfileId]"
x-model.fill="inputValue"
/>
</section>
</section> </section>
<.button class="my-10 sm:mb-7.5 w-full sm:w-auto" rounding="rounded-lg">Save Source</.button> <.button class="my-10 sm:mb-7.5 w-full sm:w-auto" rounding="rounded-lg">Save Source</.button>
@ -118,4 +143,5 @@
<div class="rounded-sm dark:bg-meta-4 p-4 md:p-6 mb-5"> <div class="rounded-sm dark:bg-meta-4 p-4 md:p-6 mb-5">
<.fast_indexing_help /> <.fast_indexing_help />
</div> </div>
</section>
</.simple_form> </.simple_form>