export preview dialog when using timeline export

This commit is contained in:
Josh Hawkins 2024-10-13 11:45:27 -05:00
parent caa70b3e50
commit 3a9af74f54
3 changed files with 36 additions and 10 deletions

View File

@ -3,7 +3,7 @@ import { Drawer, DrawerContent, DrawerTrigger } from "../ui/drawer";
import { Button } from "../ui/button"; import { Button } from "../ui/button";
import { FaArrowDown, FaCalendarAlt, FaCog, FaFilter } from "react-icons/fa"; import { FaArrowDown, FaCalendarAlt, FaCog, FaFilter } from "react-icons/fa";
import { TimeRange } from "@/types/timeline"; import { TimeRange } from "@/types/timeline";
import { ExportContent } from "./ExportDialog"; import { ExportContent, ExportPreviewDialog } from "./ExportDialog";
import { ExportMode } from "@/types/filter"; import { ExportMode } from "@/types/filter";
import ReviewActivityCalendar from "./ReviewActivityCalendar"; import ReviewActivityCalendar from "./ReviewActivityCalendar";
import { SelectSeparator } from "../ui/select"; import { SelectSeparator } from "../ui/select";
@ -34,12 +34,14 @@ type MobileReviewSettingsDrawerProps = {
currentTime: number; currentTime: number;
range?: TimeRange; range?: TimeRange;
mode: ExportMode; mode: ExportMode;
showExportPreview: boolean;
reviewSummary?: ReviewSummary; reviewSummary?: ReviewSummary;
allLabels: string[]; allLabels: string[];
allZones: string[]; allZones: string[];
onUpdateFilter: (filter: ReviewFilter) => void; onUpdateFilter: (filter: ReviewFilter) => void;
setRange: (range: TimeRange | undefined) => void; setRange: (range: TimeRange | undefined) => void;
setMode: (mode: ExportMode) => void; setMode: (mode: ExportMode) => void;
setShowExportPreview: (showPreview: boolean) => void;
}; };
export default function MobileReviewSettingsDrawer({ export default function MobileReviewSettingsDrawer({
features = DEFAULT_DRAWER_FEATURES, features = DEFAULT_DRAWER_FEATURES,
@ -50,12 +52,14 @@ export default function MobileReviewSettingsDrawer({
currentTime, currentTime,
range, range,
mode, mode,
showExportPreview,
reviewSummary, reviewSummary,
allLabels, allLabels,
allZones, allZones,
onUpdateFilter, onUpdateFilter,
setRange, setRange,
setMode, setMode,
setShowExportPreview,
}: MobileReviewSettingsDrawerProps) { }: MobileReviewSettingsDrawerProps) {
const [drawerMode, setDrawerMode] = useState<DrawerMode>("none"); const [drawerMode, setDrawerMode] = useState<DrawerMode>("none");
@ -282,6 +286,13 @@ export default function MobileReviewSettingsDrawer({
show={mode == "timeline"} show={mode == "timeline"}
onSave={() => onStartExport()} onSave={() => onStartExport()}
onCancel={() => setMode("none")} onCancel={() => setMode("none")}
onPreview={() => setShowExportPreview(true)}
/>
<ExportPreviewDialog
camera={camera}
range={range}
showPreview={showExportPreview}
setShowPreview={setShowExportPreview}
/> />
<Drawer <Drawer
modal={!(isIOS && drawerMode == "export")} modal={!(isIOS && drawerMode == "export")}

View File

@ -1,4 +1,4 @@
import { LuX } from "react-icons/lu"; import { LuVideo, LuX } from "react-icons/lu";
import { Button } from "../ui/button"; import { Button } from "../ui/button";
import { FaCompactDisc } from "react-icons/fa"; import { FaCompactDisc } from "react-icons/fa";
import { cn } from "@/lib/utils"; import { cn } from "@/lib/utils";
@ -6,12 +6,14 @@ import { cn } from "@/lib/utils";
type SaveExportOverlayProps = { type SaveExportOverlayProps = {
className: string; className: string;
show: boolean; show: boolean;
onPreview: () => void;
onSave: () => void; onSave: () => void;
onCancel: () => void; onCancel: () => void;
}; };
export default function SaveExportOverlay({ export default function SaveExportOverlay({
className, className,
show, show,
onPreview,
onSave, onSave,
onCancel, onCancel,
}: SaveExportOverlayProps) { }: SaveExportOverlayProps) {
@ -24,6 +26,22 @@ export default function SaveExportOverlay({
"mx-auto mt-5 text-center", "mx-auto mt-5 text-center",
)} )}
> >
<Button
className="flex items-center gap-1 text-primary"
size="sm"
onClick={onCancel}
>
<LuX />
Cancel
</Button>
<Button
className="flex items-center gap-1"
size="sm"
onClick={onPreview}
>
<LuVideo />
Preview Export
</Button>
<Button <Button
className="flex items-center gap-1" className="flex items-center gap-1"
variant="select" variant="select"
@ -33,14 +51,6 @@ export default function SaveExportOverlay({
<FaCompactDisc /> <FaCompactDisc />
Save Export Save Export
</Button> </Button>
<Button
className="flex items-center gap-1 text-primary"
size="sm"
onClick={onCancel}
>
<LuX />
Cancel
</Button>
</div> </div>
</div> </div>
); );

View File

@ -140,6 +140,7 @@ export function RecordingView({
const [exportMode, setExportMode] = useState<ExportMode>("none"); const [exportMode, setExportMode] = useState<ExportMode>("none");
const [exportRange, setExportRange] = useState<TimeRange>(); const [exportRange, setExportRange] = useState<TimeRange>();
const [showExportPreview, setShowExportPreview] = useState(false);
// move to next clip // move to next clip
@ -412,6 +413,7 @@ export function RecordingView({
latestTime={timeRange.before} latestTime={timeRange.before}
mode={exportMode} mode={exportMode}
range={exportRange} range={exportRange}
showPreview={showExportPreview}
setRange={(range) => { setRange={(range) => {
setExportRange(range); setExportRange(range);
@ -420,6 +422,7 @@ export function RecordingView({
} }
}} }}
setMode={setExportMode} setMode={setExportMode}
setShowPreview={setShowExportPreview}
/> />
)} )}
{isDesktop && ( {isDesktop && (
@ -473,11 +476,13 @@ export function RecordingView({
latestTime={timeRange.before} latestTime={timeRange.before}
mode={exportMode} mode={exportMode}
range={exportRange} range={exportRange}
showExportPreview={showExportPreview}
allLabels={reviewFilterList.labels} allLabels={reviewFilterList.labels}
allZones={reviewFilterList.zones} allZones={reviewFilterList.zones}
onUpdateFilter={updateFilter} onUpdateFilter={updateFilter}
setRange={setExportRange} setRange={setExportRange}
setMode={setExportMode} setMode={setExportMode}
setShowExportPreview={setShowExportPreview}
/> />
</div> </div>
</div> </div>