From cf43a825d8d444da08f9d6294840107983cc7bd2 Mon Sep 17 00:00:00 2001 From: 7dJx1qP <38586902+7dJx1qP@users.noreply.github.com> Date: Thu, 14 Oct 2021 23:17:40 -0400 Subject: [PATCH] Add performer star ratings to main view (#1844) * add performer star ratings to main view * remove ratings from details and edit tab. move ratings hotkeys from edit tab to main view --- .../components/Changelog/versions/v0110.md | 1 + .../Performers/PerformerDetails/Performer.tsx | 42 +++++++++++++++++ .../PerformerDetailsPanel.tsx | 19 -------- .../PerformerDetails/PerformerEditPanel.tsx | 45 ------------------- 4 files changed, 43 insertions(+), 64 deletions(-) diff --git a/ui/v2.5/src/components/Changelog/versions/v0110.md b/ui/v2.5/src/components/Changelog/versions/v0110.md index 180c85d9f..c1e69897d 100644 --- a/ui/v2.5/src/components/Changelog/versions/v0110.md +++ b/ui/v2.5/src/components/Changelog/versions/v0110.md @@ -4,6 +4,7 @@ * Added interface options to disable creating performers/studios/tags from dropdown selectors. ([#1814](https://github.com/stashapp/stash/pull/1814)) ### 🎨 Improvements +* Moved Performer rating stars from details/edit tabs to heading section of performer page. ([#1844](https://github.com/stashapp/stash/pull/1844)) * Optimised scanning process. ([#1816](https://github.com/stashapp/stash/pull/1816)) ### 🐛 Bug fixes diff --git a/ui/v2.5/src/components/Performers/PerformerDetails/Performer.tsx b/ui/v2.5/src/components/Performers/PerformerDetails/Performer.tsx index b694dfe98..cc40c8ff0 100644 --- a/ui/v2.5/src/components/Performers/PerformerDetails/Performer.tsx +++ b/ui/v2.5/src/components/Performers/PerformerDetails/Performer.tsx @@ -18,6 +18,7 @@ import { } from "src/components/Shared"; import { useLightbox, useToast } from "src/hooks"; import { TextUtils } from "src/utils"; +import { RatingStars } from "src/components/Scenes/SceneDetails/RatingStars"; import { PerformerDetailsPanel } from "./PerformerDetailsPanel"; import { PerformerOperationsPanel } from "./PerformerOperationsPanel"; import { PerformerScenesPanel } from "./PerformerScenesPanel"; @@ -97,6 +98,30 @@ export const Performer: React.FC = () => { Mousetrap.bind("o", () => setActiveTabKey("operations")); Mousetrap.bind("f", () => setFavorite(!performer.favorite)); + // numeric keypresses get caught by jwplayer, so blur the element + // if the rating sequence is started + Mousetrap.bind("r", () => { + if (document.activeElement instanceof HTMLElement) { + document.activeElement.blur(); + } + + Mousetrap.bind("0", () => setRating(NaN)); + Mousetrap.bind("1", () => setRating(1)); + Mousetrap.bind("2", () => setRating(2)); + Mousetrap.bind("3", () => setRating(3)); + Mousetrap.bind("4", () => setRating(4)); + Mousetrap.bind("5", () => setRating(5)); + + setTimeout(() => { + Mousetrap.unbind("0"); + Mousetrap.unbind("1"); + Mousetrap.unbind("2"); + Mousetrap.unbind("3"); + Mousetrap.unbind("4"); + Mousetrap.unbind("5"); + }, 1000); + }); + return () => { Mousetrap.unbind("a"); Mousetrap.unbind("e"); @@ -209,6 +234,19 @@ export const Performer: React.FC = () => { } } + function setRating(v: number | null) { + if (performer.id) { + updatePerformer({ + variables: { + input: { + id: performer.id, + rating: v, + }, + }, + }); + } + } + const renderIcons = () => (