Restore movie/studio data on edit cancel (#476)

This commit is contained in:
WithoutPants
2020-04-20 12:46:55 +10:00
committed by GitHub
parent 359e80f364
commit 7e747fd8a9
4 changed files with 67 additions and 55 deletions

View File

@@ -165,6 +165,11 @@ export const Movie: React.FC = () => {
ImageUtils.onImageChange(event, onBackImageLoad); ImageUtils.onImageChange(event, onBackImageLoad);
} }
function onToggleEdit() {
setIsEditing(!isEditing);
updateMovieData(movie);
}
function renderDeleteAlert() { function renderDeleteAlert() {
return ( return (
<Modal <Modal
@@ -266,7 +271,7 @@ export const Movie: React.FC = () => {
objectName={name ?? "movie"} objectName={name ?? "movie"}
isNew={isNew} isNew={isNew}
isEditing={isEditing} isEditing={isEditing}
onToggleEdit={() => setIsEditing(!isEditing)} onToggleEdit={onToggleEdit}
onSave={onSave} onSave={onSave}
onImageChange={onImageChange} onImageChange={onImageChange}
onBackImageChange={onBackImageChange} onBackImageChange={onBackImageChange}

View File

@@ -41,5 +41,8 @@ export const MovieScenesPanel: React.FC<IMovieScenesPanel> = ({ movie }) => {
return filter; return filter;
} }
if (movie && movie.id) {
return <SceneList subComponent filterHook={filterHook} />; return <SceneList subComponent filterHook={filterHook} />;
}
return <></>;
}; };

View File

@@ -150,6 +150,11 @@ export const Studio: React.FC = () => {
); );
} }
function onToggleEdit() {
setIsEditing(!isEditing);
updateStudioData(studio);
}
return ( return (
<div className="row"> <div className="row">
<div <div
@@ -180,7 +185,7 @@ export const Studio: React.FC = () => {
objectName={name ?? "studio"} objectName={name ?? "studio"}
isNew={isNew} isNew={isNew}
isEditing={isEditing} isEditing={isEditing}
onToggleEdit={() => setIsEditing(!isEditing)} onToggleEdit={onToggleEdit}
onSave={onSave} onSave={onSave}
onImageChange={onImageChangeHandler} onImageChange={onImageChangeHandler}
onAutoTag={onAutoTag} onAutoTag={onAutoTag}

View File

@@ -63,20 +63,20 @@ const renderInputGroup = (options: {
{options.value} {options.value}
</a> </a>
); );
} else { }
return ( return (
<Form.Control <Form.Control
className="text-input" className="text-input"
readOnly={!options.isEditing} readOnly={!options.isEditing}
plaintext={!options.isEditing} plaintext={!options.isEditing}
value={options.value} value={options.value ?? ""}
placeholder={options.placeholder ?? options.title} placeholder={options.placeholder ?? options.title}
onChange={(event: React.FormEvent<HTMLInputElement>) => onChange={(event: React.FormEvent<HTMLInputElement>) =>
options.onChange(event.currentTarget.value) options.onChange(event.currentTarget.value)
} }
/> />
); );
}
} }
const renderDurationInput = (options: { const renderDurationInput = (options: {
@@ -86,7 +86,7 @@ const renderDurationInput = (options: {
asString?: boolean asString?: boolean
onChange: (value: string | undefined) => void; onChange: (value: string | undefined) => void;
}) => { }) => {
let numericValue: number | undefined = undefined; let numericValue: number | undefined;
if (options.value) { if (options.value) {
if (!options.asString) { if (!options.asString) {
try { try {
@@ -100,7 +100,7 @@ const renderDurationInput = (options: {
} }
if (!options.isEditing) { if (!options.isEditing) {
let durationString = undefined; let durationString;
if (numericValue !== undefined) { if (numericValue !== undefined) {
durationString = DurationUtils.secondsToString(numericValue); durationString = DurationUtils.secondsToString(numericValue);
} }
@@ -108,26 +108,26 @@ const renderDurationInput = (options: {
return ( return (
<Form.Control <Form.Control
className="text-input" className="text-input"
readOnly={true} readOnly
plaintext={true} plaintext
defaultValue={durationString} defaultValue={durationString}
/> />
); );
} else { }
return ( return (
<DurationInput <DurationInput
disabled={!options.isEditing} disabled={!options.isEditing}
numericValue={numericValue} numericValue={numericValue}
onValueChange={(valueAsNumber: number, valueAsString? : string) => { onValueChange={(valueAsNumber: number, valueAsString? : string) => {
let value = valueAsString;
if (!options.asString) { if (!options.asString) {
valueAsString = valueAsNumber !== undefined ? valueAsNumber.toString() : undefined; value = valueAsNumber !== undefined ? valueAsNumber.toString() : undefined;
} }
options.onChange(valueAsString); options.onChange(value);
}} }}
/> />
); );
}
} }
const renderHtmlSelect = (options: { const renderHtmlSelect = (options: {
@@ -140,12 +140,12 @@ const renderHtmlSelect = (options: {
return ( return (
<Form.Control <Form.Control
className="text-input" className="text-input"
readOnly={true} readOnly
plaintext={true} plaintext
defaultValue={options.value} defaultValue={options.value}
/> />
); );
} else { }
return ( return (
<Form.Control <Form.Control
as="select" as="select"
@@ -164,7 +164,6 @@ const renderHtmlSelect = (options: {
))} ))}
</Form.Control> </Form.Control>
); );
}
} }
// TODO: isediting // TODO: isediting