Generate content for specific scenes (#672)

* Add UI dialog for scene(s)
* Move preview preset to config
This commit is contained in:
WithoutPants
2020-07-19 11:59:18 +10:00
committed by GitHub
parent 8e4945325d
commit c104c6d075
27 changed files with 552 additions and 148 deletions

View File

@@ -1,4 +1,4 @@
import React from "react";
import React, { useState } from "react";
import _ from "lodash";
import { useHistory } from "react-router-dom";
import {
@@ -9,11 +9,13 @@ import { queryFindScenes } from "src/core/StashService";
import { useScenesList } from "src/hooks";
import { ListFilterModel } from "src/models/list-filter/filter";
import { DisplayMode } from "src/models/list-filter/types";
import { showWhenSelected } from "src/hooks/ListHook";
import { WallPanel } from "../Wall/WallPanel";
import { SceneCard } from "./SceneCard";
import { SceneListTable } from "./SceneListTable";
import { EditScenesDialog } from "./EditScenesDialog";
import { DeleteScenesDialog } from "./DeleteScenesDialog";
import { SceneGenerateDialog } from "./SceneGenerateDialog";
interface ISceneList {
subComponent?: boolean;
@@ -25,11 +27,18 @@ export const SceneList: React.FC<ISceneList> = ({
filterHook,
}) => {
const history = useHistory();
const [isGenerateDialogOpen, setIsGenerateDialogOpen] = useState(false);
const otherOperations = [
{
text: "Play Random",
onClick: playRandom,
},
{
text: "Generate...",
onClick: generate,
isDisplayed: showWhenSelected,
},
];
const addKeybinds = (
@@ -82,6 +91,25 @@ export const SceneList: React.FC<ISceneList> = ({
}
}
async function generate() {
setIsGenerateDialogOpen(true);
}
function maybeRenderSceneGenerateDialog(selectedIds: Set<string>) {
if (isGenerateDialogOpen) {
return (
<>
<SceneGenerateDialog
selectedIds={Array.from(selectedIds.values())}
onClose={() => {
setIsGenerateDialogOpen(false);
}}
/>
</>
);
}
}
function renderEditScenesDialog(
selectedScenes: SlimSceneDataFragment[],
onClose: (applied: boolean) => void
@@ -123,7 +151,7 @@ export const SceneList: React.FC<ISceneList> = ({
);
}
function renderContent(
function renderScenes(
result: FindScenesQueryResult,
filter: ListFilterModel,
selectedIds: Set<string>,
@@ -149,5 +177,19 @@ export const SceneList: React.FC<ISceneList> = ({
}
}
function renderContent(
result: FindScenesQueryResult,
filter: ListFilterModel,
selectedIds: Set<string>,
zoomIndex: number
) {
return (
<>
{maybeRenderSceneGenerateDialog(selectedIds)}
{renderScenes(result, filter, selectedIds, zoomIndex)}
</>
);
}
return listData.template;
};