Skip to content

Commit

Permalink
UI improvements (#70)
Browse files Browse the repository at this point in the history
  • Loading branch information
nicholasodonnell authored Feb 5, 2025
1 parent 3d4e5b8 commit 25551a9
Show file tree
Hide file tree
Showing 7 changed files with 47 additions and 22 deletions.
4 changes: 2 additions & 2 deletions apps/client/src/components/movies.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ export function Movie({
)}
{movie.daysUntilDeletion !== null &&
movie.daysUntilDeletion !== undefined && (
<span className="font-small absolute left-2 top-2 z-30 rounded-lg border-[1px] border-app-background-accent bg-red p-1 text-sm uppercase text-white shadow-lg">
<span className="font-small absolute left-2 top-2 z-30 rounded-lg border-[1px] border-app-background-accent bg-red p-1 text-sm uppercase text-white opacity-90 shadow-lg">
{movie.daysUntilDeletion > 0 ? (
<>
{movie.daysUntilDeletion} day
Expand Down Expand Up @@ -95,7 +95,7 @@ export default function Movies({
loading = false,
}: MoviesProps): JSX.Element {
return (
<div className="grid grid-cols-4 gap-4 md:grid-cols-5 xl:grid-cols-7 2xl:grid-cols-10">
<div className="grid grid-cols-3 gap-4 sm:grid-cols-4 md:grid-cols-5 xl:grid-cols-7 2xl:grid-cols-10">
{loading && <MoviesSkeleton />}
{!loading && children}
</div>
Expand Down
13 changes: 13 additions & 0 deletions apps/client/src/components/rule.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import {
export type RuleProps = {
availableTags: Tag[]
loading?: boolean
onCancel?: () => void
onDelete?: (rule: RuleModel) => Promise<void>
onSubmit: (rule: RuleModel) => Promise<void>
values?: RuleModel
Expand All @@ -30,6 +31,7 @@ const defaultRule: Partial<RuleModel> = {

export function RuleForm({
availableTags = [],
onCancel,
onDelete,
onSubmit,
values,
Expand All @@ -45,6 +47,10 @@ export function RuleForm({
})
}

const handleCancel = async () => {
onCancel?.()
}

const handleSubmit = async () => {
await onSubmit(rule)
}
Expand Down Expand Up @@ -178,6 +184,11 @@ export function RuleForm({
/>
</Field>
<Actions>
{onCancel && (
<Button onClick={handleCancel} secondary>
Cancel
</Button>
)}
{onDelete && (
<Button onClick={handleDelete} warning>
Delete
Expand All @@ -192,6 +203,7 @@ export function RuleForm({
export default function Rule({
availableTags = [],
loading,
onCancel,
onDelete,
onSubmit,
values,
Expand All @@ -203,6 +215,7 @@ export default function Rule({
return (
<RuleForm
availableTags={availableTags}
onCancel={onCancel}
onDelete={onDelete}
onSubmit={onSubmit}
values={values}
Expand Down
5 changes: 5 additions & 0 deletions apps/client/src/views/rules/[id].tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ export default function EditRule(): JSX.Element {
},
})

const handleCancel = () => {
navigate('/rules')
}

const handleEdit = async (rule: RuleModel) => {
await update(rule)
toast.success('Rule saved')
Expand All @@ -48,6 +52,7 @@ export default function EditRule(): JSX.Element {
<Rule
availableTags={tags}
loading={loading || tagsLoading}
onCancel={handleCancel}
onDelete={handleDelete}
onSubmit={handleEdit}
values={rule}
Expand Down
5 changes: 5 additions & 0 deletions apps/client/src/views/rules/new.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ export default function CreateRule(): JSX.Element {
const { data: tags, isLoading: tagsLoading } = useQuery('tags', getTags)
const navigate = useNavigate()

const handleCancel = () => {
navigate('/rules')
}

const handleCreate = async (rule: RuleModel) => {
await create(rule)
toast.success('Rule created')
Expand All @@ -25,6 +29,7 @@ export default function CreateRule(): JSX.Element {
<Rule
availableTags={tags}
loading={tagsLoading}
onCancel={handleCancel}
onSubmit={handleCreate}
/>
</Section>
Expand Down
22 changes: 12 additions & 10 deletions apps/client/src/views/settings/general.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -47,18 +47,20 @@ export default function General(): JSX.Element {
<Title>Settings &#8212; General</Title>
<Form disabled={isLoading} onSubmit={handleSubmit}>
<Field>
<Label className="col-span-1">Enabled</Label>
<Label className="col-span-2 md:col-span-1">Enabled</Label>
<Checkbox
className="col-span-3"
className="col-span-2 md:col-span-3"
disabled={isLoading}
onChange={setProperty('enabled')}
value={settings?.enabled}
/>
</Field>
<Field>
<Label className="col-span-1">Sync frequency (Days)</Label>
<Label className="col-span-2 md:col-span-1">
Sync frequency (Days)
</Label>
<NumberInput
className="col-span-3"
className="col-span-2 md:col-span-3"
disabled={isLoading}
max={365}
min={1}
Expand All @@ -68,9 +70,9 @@ export default function General(): JSX.Element {
/>
</Field>
<Field>
<Label className="col-span-1">Sync Time</Label>
<Label className="col-span-2 md:col-span-1">Sync Time</Label>
<Select<number>
className="col-span-3"
className="col-span-2 md:col-span-3"
disabled={isLoading}
onChange={setProperty('syncHour')}
options={[
Expand Down Expand Up @@ -104,16 +106,16 @@ export default function General(): JSX.Element {
/>
</Field>
<Field>
<Label className="col-span-1">
Treat soft matches as unmonitored
<Label className="col-span-2 md:col-span-1">
Treat soft matches as unmonitored?
<Hint className="mt-2">
Soft matches are movies that match a rule but cannot be given a
deletion date because of dynamic conditions such as watch status,
rating, etc.?
rating, etc.
</Hint>
</Label>
<Checkbox
className="col-span-3"
className="col-span-2 md:col-span-3"
disabled={isLoading}
onChange={setProperty('treatSoftMatchAsUnmonitored')}
value={settings?.treatSoftMatchAsUnmonitored}
Expand Down
12 changes: 6 additions & 6 deletions apps/client/src/views/settings/radarr.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -97,11 +97,11 @@ export default function Radarr(): JSX.Element {
</Alert>
)}
<Field>
<Label className="col-span-1" required>
<Label className="col-span-2 md:col-span-1" required>
Url
</Label>
<Input
className="col-span-3"
className="col-span-2 md:col-span-3"
disabled={settingsLoading || pingLoading}
onChange={setProperty('radarrUrl')}
placeholder="http://localhost:7878"
Expand All @@ -110,11 +110,11 @@ export default function Radarr(): JSX.Element {
/>
</Field>
<Field>
<Label className="col-span-1" required>
<Label className="col-span-2 md:col-span-1" required>
API Key
</Label>
<Input
className="col-span-3"
className="col-span-2 md:col-span-3"
disabled={settingsLoading || pingLoading}
onChange={setProperty('radarrApiKey')}
required
Expand All @@ -123,11 +123,11 @@ export default function Radarr(): JSX.Element {
/>
</Field>
<Field>
<Label className="col-span-1">
<Label className="col-span-2 md:col-span-1">
Exclude deleted movies from Radarr lists?
</Label>
<Checkbox
className="col-span-3"
className="col-span-2 md:col-span-3"
disabled={settingsLoading || pingLoading}
onChange={setProperty('radarrAddImportListExclusion')}
value={settings?.radarrAddImportListExclusion}
Expand Down
8 changes: 4 additions & 4 deletions apps/client/src/views/settings/tautulli.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -77,11 +77,11 @@ export default function Tautulli(): JSX.Element {
</Alert>
)}
<Field>
<Label className="col-span-1" required>
<Label className="col-span-2 md:col-span-1" required>
Url
</Label>
<Input
className="col-span-3"
className="col-span-2 md:col-span-3"
disabled={settingsLoading || pingLoading}
onChange={setProperty('tautulliUrl')}
placeholder="http://localhost:8181"
Expand All @@ -90,11 +90,11 @@ export default function Tautulli(): JSX.Element {
/>
</Field>
<Field>
<Label className="col-span-1" required>
<Label className="col-span-2 md:col-span-1" required>
API Key
</Label>
<Input
className="col-span-3"
className="col-span-2 md:col-span-3"
disabled={settingsLoading || pingLoading}
onChange={setProperty('tautulliApiKey')}
required
Expand Down

0 comments on commit 25551a9

Please sign in to comment.