import React from "react"; import { Table } from "react-bootstrap"; import { Link } from "react-router-dom"; import * as GQL from "src/core/generated-graphql"; import { NavUtils, TextUtils } from "src/utils"; interface ISceneListTableProps { scenes: GQL.SlimSceneDataFragment[]; } export const SceneListTable: React.FC = ( props: ISceneListTableProps ) => { function renderSceneImage(scene: GQL.SlimSceneDataFragment) { const style: React.CSSProperties = { backgroundImage: `url('${scene.paths.screenshot}')`, lineHeight: 5, backgroundSize: "contain", display: "inline-block", backgroundPosition: "center", backgroundRepeat: "no-repeat" }; return ( ); } function renderDuration(scene: GQL.SlimSceneDataFragment) { if (scene.file.duration === undefined) { return; } return TextUtils.secondsToTimestamp(scene.file.duration ?? 0); } function renderTags(tags: GQL.Tag[]) { return tags.map(tag => (
{tag.name}
)); } function renderPerformers(performers: Partial[]) { return performers.map(performer => (
{performer.name}
)); } function renderStudio(studio: Partial | undefined) { if (studio) { return (
{studio.name}
); } } function renderSceneRow(scene: GQL.SlimSceneDataFragment) { return ( {renderSceneImage(scene)}
{scene.title ?? TextUtils.fileNameFromPath(scene.path)}
{scene.rating ? scene.rating : ""} {renderDuration(scene)} {renderTags(scene.tags)} {renderPerformers(scene.performers)} {renderStudio(scene.studio ?? undefined)} ); } return (
{props.scenes.map(renderSceneRow)}
Title Rating Duration Tags Performers Studio
); };