Style fixes

This commit is contained in:
Infinite
2020-01-29 10:52:10 +01:00
parent ac3d03715f
commit 247ad0a470
18 changed files with 272 additions and 201 deletions

View File

@@ -80,7 +80,7 @@ export const MainNavbar: React.FC = () => {
> >
<Button className="minimal"> <Button className="minimal">
<Icon icon={i.icon} /> <Icon icon={i.icon} />
{i.text} <span>{i.text}</span>
</Button> </Button>
</LinkContainer> </LinkContainer>
))} ))}

View File

@@ -161,7 +161,7 @@ export const SettingsConfigurationPanel: React.FC = () => {
<h4>Library</h4> <h4>Library</h4>
<Form.Group> <Form.Group>
<Form.Group id="stashes"> <Form.Group id="stashes">
<Form.Label>Stashes</Form.Label> <h6>Stashes</h6>
<FolderSelect <FolderSelect
directories={stashes} directories={stashes}
onDirectoriesChanged={onStashesChanged} onDirectoriesChanged={onStashesChanged}
@@ -172,8 +172,9 @@ export const SettingsConfigurationPanel: React.FC = () => {
</Form.Group> </Form.Group>
<Form.Group id="database-path"> <Form.Group id="database-path">
<Form.Label>Database Path</Form.Label> <h6>Database Path</h6>
<Form.Control <Form.Control
className="col-6"
defaultValue={databasePath} defaultValue={databasePath}
onChange={(e: any) => setDatabasePath(e.target.value)} onChange={(e: any) => setDatabasePath(e.target.value)}
/> />
@@ -183,8 +184,9 @@ export const SettingsConfigurationPanel: React.FC = () => {
</Form.Group> </Form.Group>
<Form.Group id="generated-path"> <Form.Group id="generated-path">
<Form.Label>Generated Path</Form.Label> <h6>Generated Path</h6>
<Form.Control <Form.Control
className="col-6"
defaultValue={generatedPath} defaultValue={generatedPath}
onChange={(e: any) => setGeneratedPath(e.target.value)} onChange={(e: any) => setGeneratedPath(e.target.value)}
/> />
@@ -195,11 +197,13 @@ export const SettingsConfigurationPanel: React.FC = () => {
</Form.Group> </Form.Group>
<Form.Group> <Form.Group>
<Form.Label>Excluded Patterns</Form.Label> <h6>Excluded Patterns</h6>
<Form.Group>
{excludes {excludes
? excludes.map((regexp, i) => ( && excludes.map((regexp, i) => (
<InputGroup> <InputGroup>
<Form.Control <Form.Control
className="col-6"
value={regexp} value={regexp}
onChange={(e: any) => onChange={(e: any) =>
excludeRegexChanged(i, e.target.value) excludeRegexChanged(i, e.target.value)
@@ -215,13 +219,12 @@ export const SettingsConfigurationPanel: React.FC = () => {
</InputGroup.Append> </InputGroup.Append>
</InputGroup> </InputGroup>
)) ))
: ""} }
</Form.Group>
<Button variant="danger" onClick={() => excludeAddRegex()}> <Button className="minimal" onClick={() => excludeAddRegex()}>
<Icon icon="plus" /> <Icon icon="plus" />
</Button> </Button>
<div> <Form.Text>
<p>
<a <a
href="https://github.com/stashapp/stash/wiki/Exclude-file-configuration" href="https://github.com/stashapp/stash/wiki/Exclude-file-configuration"
rel="noopener noreferrer" rel="noopener noreferrer"
@@ -232,8 +235,7 @@ export const SettingsConfigurationPanel: React.FC = () => {
</span> </span>
<Icon icon="question-circle" /> <Icon icon="question-circle" />
</a> </a>
</p> </Form.Text>
</div>
</Form.Group> </Form.Group>
</Form.Group> </Form.Group>
@@ -242,8 +244,9 @@ export const SettingsConfigurationPanel: React.FC = () => {
<Form.Group> <Form.Group>
<h4>Video</h4> <h4>Video</h4>
<Form.Group id="transcode-size"> <Form.Group id="transcode-size">
<Form.Label>Maximum transcode size</Form.Label> <h6>Maximum transcode size</h6>
<Form.Control <Form.Control
className="col-6"
as="select" as="select"
onChange={(event: React.FormEvent<HTMLSelectElement>) => onChange={(event: React.FormEvent<HTMLSelectElement>) =>
setMaxTranscodeSize(translateQuality(event.currentTarget.value)) setMaxTranscodeSize(translateQuality(event.currentTarget.value))
@@ -261,8 +264,9 @@ export const SettingsConfigurationPanel: React.FC = () => {
</Form.Text> </Form.Text>
</Form.Group> </Form.Group>
<Form.Group id="streaming-transcode-size"> <Form.Group id="streaming-transcode-size">
<Form.Label>Maximum streaming transcode size</Form.Label> <h6>Maximum streaming transcode size</h6>
<Form.Control <Form.Control
className="col-6"
as="select" as="select"
onChange={(event: React.FormEvent<HTMLSelectElement>) => onChange={(event: React.FormEvent<HTMLSelectElement>) =>
setMaxStreamingTranscodeSize( setMaxStreamingTranscodeSize(
@@ -288,8 +292,9 @@ export const SettingsConfigurationPanel: React.FC = () => {
<Form.Group> <Form.Group>
<h4>Authentication</h4> <h4>Authentication</h4>
<Form.Group id="username"> <Form.Group id="username">
<Form.Label>Username</Form.Label> <h6>Username</h6>
<Form.Control <Form.Control
className="col-6"
defaultValue={username} defaultValue={username}
onChange={(e: React.FormEvent<HTMLInputElement>) => onChange={(e: React.FormEvent<HTMLInputElement>) =>
setUsername(e.currentTarget.value) setUsername(e.currentTarget.value)
@@ -300,8 +305,9 @@ export const SettingsConfigurationPanel: React.FC = () => {
</Form.Text> </Form.Text>
</Form.Group> </Form.Group>
<Form.Group id="password"> <Form.Group id="password">
<Form.Label>Password</Form.Label> <h6>Password</h6>
<Form.Control <Form.Control
className="col-6"
type="password" type="password"
defaultValue={password} defaultValue={password}
onChange={(e: React.FormEvent<HTMLInputElement>) => onChange={(e: React.FormEvent<HTMLInputElement>) =>
@@ -318,8 +324,9 @@ export const SettingsConfigurationPanel: React.FC = () => {
<h4>Logging</h4> <h4>Logging</h4>
<Form.Group id="log-file"> <Form.Group id="log-file">
<Form.Label>Log file</Form.Label> <h6>Log file</h6>
<Form.Control <Form.Control
className="col-6"
defaultValue={logFile} defaultValue={logFile}
onChange={(e: React.FormEvent<HTMLInputElement>) => onChange={(e: React.FormEvent<HTMLInputElement>) =>
setLogFile(e.currentTarget.value) setLogFile(e.currentTarget.value)
@@ -333,6 +340,7 @@ export const SettingsConfigurationPanel: React.FC = () => {
<Form.Group> <Form.Group>
<Form.Check <Form.Check
id="log-terminal"
checked={logOut} checked={logOut}
label="Log to terminal" label="Log to terminal"
onChange={() => setLogOut(!logOut)} onChange={() => setLogOut(!logOut)}
@@ -344,8 +352,9 @@ export const SettingsConfigurationPanel: React.FC = () => {
</Form.Group> </Form.Group>
<Form.Group id="log-level"> <Form.Group id="log-level">
<Form.Label>Log Level</Form.Label> <h6>Log Level</h6>
<Form.Control <Form.Control
className="col-6"
as="select" as="select"
onChange={(event: React.FormEvent<HTMLSelectElement>) => onChange={(event: React.FormEvent<HTMLSelectElement>) =>
setLogLevel(event.currentTarget.value) setLogLevel(event.currentTarget.value)
@@ -362,6 +371,7 @@ export const SettingsConfigurationPanel: React.FC = () => {
<Form.Group> <Form.Group>
<Form.Check <Form.Check
id="log-http"
checked={logAccess} checked={logAccess}
label="Log http access" label="Log http access"
onChange={() => setLogAccess(!logAccess)} onChange={() => setLogAccess(!logAccess)}

View File

@@ -1,6 +1,6 @@
import React, { useEffect, useState } from "react"; import React, { useEffect, useState } from "react";
import { Button, Form } from "react-bootstrap"; import { Button, Form } from "react-bootstrap";
import { LoadingIndicator } from 'src/components/Shared'; import { DurationInput, LoadingIndicator } from 'src/components/Shared';
import { StashService } from "src/core/StashService"; import { StashService } from "src/core/StashService";
import { useToast } from "src/hooks"; import { useToast } from "src/hooks";
@@ -61,11 +61,13 @@ export const SettingsInterfacePanel: React.FC = () => {
<Form.Group> <Form.Group>
<Form.Label>Scene / Marker Wall</Form.Label> <Form.Label>Scene / Marker Wall</Form.Label>
<Form.Check <Form.Check
id="wall-show-title"
checked={wallShowTitle} checked={wallShowTitle}
label="Display title and tags" label="Display title and tags"
onChange={() => setWallShowTitle(!wallShowTitle)} onChange={() => setWallShowTitle(!wallShowTitle)}
/> />
<Form.Check <Form.Check
id="wall-sound-enabled"
checked={soundOnPreview} checked={soundOnPreview}
label="Enable sound" label="Enable sound"
onChange={() => setSoundOnPreview(!soundOnPreview)} onChange={() => setSoundOnPreview(!soundOnPreview)}
@@ -76,8 +78,9 @@ export const SettingsInterfacePanel: React.FC = () => {
</Form.Group> </Form.Group>
<Form.Group> <Form.Group>
<Form.Label>Scene List</Form.Label> <h5>Scene List</h5>
<Form.Check <Form.Check
id="show-text-studios"
checked={showStudioAsText} checked={showStudioAsText}
label="Show Studios as text" label="Show Studios as text"
onChange={() => { onChange={() => {
@@ -87,8 +90,9 @@ export const SettingsInterfacePanel: React.FC = () => {
</Form.Group> </Form.Group>
<Form.Group> <Form.Group>
<Form.Label>Scene Player</Form.Label> <h5>Scene Player</h5>
<Form.Check <Form.Check
id="auto-start-video"
checked={autostartVideo} checked={autostartVideo}
label="Auto-start video" label="Auto-start video"
onChange={() => { onChange={() => {
@@ -98,27 +102,21 @@ export const SettingsInterfacePanel: React.FC = () => {
<Form.Group id="max-loop-duration"> <Form.Group id="max-loop-duration">
<Form.Label>Maximum loop duration</Form.Label> <Form.Label>Maximum loop duration</Form.Label>
<Form.Control <DurationInput
type="number" className="col-4"
defaultValue={maximumLoopDuration} numericValue={maximumLoopDuration}
onChange={(event: React.FormEvent<HTMLInputElement>) => onValueChange={duration => setMaximumLoopDuration(duration)}
setMaximumLoopDuration(
Number.parseInt(event.currentTarget.value, 10) ?? 0
)
}
min={0}
step={1}
/> />
<Form.Text className="text-muted"> <Form.Text className="text-muted">
Maximum scene duration - in seconds - where scene player will loop Maximum scene duration where scene player will loop the video - 0 to disable
the video - 0 to disable
</Form.Text> </Form.Text>
</Form.Group> </Form.Group>
</Form.Group> </Form.Group>
<Form.Group> <Form.Group>
<Form.Label>Custom CSS</Form.Label> <h5>Custom CSS</h5>
<Form.Check <Form.Check
id="custom-css"
checked={cssEnabled} checked={cssEnabled}
label="Custom CSS enabled" label="Custom CSS enabled"
onChange={() => { onChange={() => {
@@ -131,6 +129,7 @@ export const SettingsInterfacePanel: React.FC = () => {
value={css} value={css}
onChange={(e: any) => setCSS(e.target.value)} onChange={(e: any) => setCSS(e.target.value)}
rows={16} rows={16}
className="col-6"
></Form.Control> ></Form.Control>
<Form.Text className="text-muted"> <Form.Text className="text-muted">
Page must be reloaded for changes to take effect. Page must be reloaded for changes to take effect.

View File

@@ -1,5 +1,5 @@
import React, { useState } from "react"; import React, { useState } from "react";
import { Form, Col } from "react-bootstrap"; import { Form } from "react-bootstrap";
import * as GQL from "src/core/generated-graphql"; import * as GQL from "src/core/generated-graphql";
import { StashService } from "src/core/StashService"; import { StashService } from "src/core/StashService";
@@ -37,12 +37,11 @@ const LogElement: React.FC<ILogElementProps> = ({ logEntry }) => {
const level = logEntry.level.padEnd(GQL.LogLevel.Progress.length); const level = logEntry.level.padEnd(GQL.LogLevel.Progress.length);
return ( return (
<> <div className="row">
<span>{logEntry.time}</span>&nbsp; <span className="log-time">{logEntry.time}</span>
<span className={levelClass(logEntry.level)}>{level}</span>&nbsp; <span className={`${levelClass(logEntry.level)}`}>{level}</span>
<span>{logEntry.message}</span> <span className="col-9">{logEntry.message}</span>
<br /> </div>
</>
); );
}; };
@@ -100,11 +99,9 @@ export const SettingsLogsPanel: React.FC = () => {
<> <>
<h4>Logs</h4> <h4>Logs</h4>
<Form.Row id="log-level"> <Form.Row id="log-level">
<Col xs={1}> <Form.Label className="col-2">Log Level</Form.Label>
<Form.Label>Log Level</Form.Label>
</Col>
<Col xs={2}>
<Form.Control <Form.Control
className="col-2"
as="select" as="select"
defaultValue={logLevel} defaultValue={logLevel}
onChange={event => setLogLevel(event.currentTarget.value)} onChange={event => setLogLevel(event.currentTarget.value)}
@@ -115,7 +112,6 @@ export const SettingsLogsPanel: React.FC = () => {
</option> </option>
))} ))}
</Form.Control> </Form.Control>
</Col>
</Form.Row> </Form.Row>
<div className="logs"> <div className="logs">
{maybeRenderError} {maybeRenderError}

View File

@@ -25,6 +25,7 @@ export const GenerateButton: React.FC = () => {
} }
return ( return (
<>
<Form.Group> <Form.Group>
<Form.Check <Form.Check
id="sprite-task" id="sprite-task"
@@ -50,12 +51,15 @@ export const GenerateButton: React.FC = () => {
label="Transcodes (MP4 conversions of unsupported video formats)" label="Transcodes (MP4 conversions of unsupported video formats)"
onChange={() => setTranscodes(!transcodes)} onChange={() => setTranscodes(!transcodes)}
/> />
<Button id="generate" type="submit" onClick={() => onGenerate()}> </Form.Group>
<Form.Group>
<Button id="generate" variant="secondary" type="submit" onClick={() => onGenerate()}>
Generate Generate
</Button> </Button>
<Form.Text className="text-muted"> <Form.Text className="text-muted">
Generate supporting image, sprite, video, vtt and other files. Generate supporting image, sprite, video, vtt and other files.
</Form.Text> </Form.Text>
</Form.Group> </Form.Group>
</>
); );
}; };

View File

@@ -183,20 +183,23 @@ export const SettingsTasksPanel: React.FC = () => {
{renderImportAlert()} {renderImportAlert()}
{renderCleanAlert()} {renderCleanAlert()}
<h4>Running Jobs</h4> <h5>Running Jobs</h5>
{renderJobStatus()} {renderJobStatus()}
<hr /> <hr />
<h4>Library</h4> <h5>Library</h5>
<Form.Group> <Form.Group>
<Form.Check <Form.Check
id="use-file-metadata"
checked={useFileMetadata} checked={useFileMetadata}
label="Set name, date, details from metadata (if present)" label="Set name, date, details from metadata (if present)"
onChange={() => setUseFileMetadata(!useFileMetadata)} onChange={() => setUseFileMetadata(!useFileMetadata)}
/> />
<Button id="scan" type="submit" onClick={() => onScan()}> </Form.Group>
<Form.Group>
<Button variant="secondary" type="submit" onClick={() => onScan()}>
Scan Scan
</Button> </Button>
<Form.Text className="text-muted"> <Form.Text className="text-muted">
@@ -206,25 +209,30 @@ export const SettingsTasksPanel: React.FC = () => {
<hr /> <hr />
<h4>Auto Tagging</h4> <h5>Auto Tagging</h5>
<Form.Group> <Form.Group>
<Form.Check <Form.Check
id="autotag-performers"
checked={autoTagPerformers} checked={autoTagPerformers}
label="Performers" label="Performers"
onChange={() => setAutoTagPerformers(!autoTagPerformers)} onChange={() => setAutoTagPerformers(!autoTagPerformers)}
/> />
<Form.Check <Form.Check
id="autotag-studios"
checked={autoTagStudios} checked={autoTagStudios}
label="Studios" label="Studios"
onChange={() => setAutoTagStudios(!autoTagStudios)} onChange={() => setAutoTagStudios(!autoTagStudios)}
/> />
<Form.Check <Form.Check
id="autotag-tags"
checked={autoTagTags} checked={autoTagTags}
label="Tags" label="Tags"
onChange={() => setAutoTagTags(!autoTagTags)} onChange={() => setAutoTagTags(!autoTagTags)}
/> />
<Button id="autoTag" type="submit" onClick={() => onAutoTag()}> </Form.Group>
<Form.Group>
<Button variant="secondary" type="submit" onClick={() => onAutoTag()}>
Auto Tag Auto Tag
</Button> </Button>
<Form.Text className="text-muted"> <Form.Text className="text-muted">
@@ -233,14 +241,16 @@ export const SettingsTasksPanel: React.FC = () => {
</Form.Group> </Form.Group>
<Form.Group> <Form.Group>
<Button> <Link to="/sceneFilenameParser">
<Link to="/sceneFilenameParser">Scene Filename Parser</Link> <Button variant="secondary">
Scene Filename Parser
</Button> </Button>
</Link>
</Form.Group> </Form.Group>
<hr /> <hr />
<h4>Generated Content</h4> <h5>Generated Content</h5>
<GenerateButton /> <GenerateButton />
<Form.Group> <Form.Group>
<Button <Button
@@ -258,10 +268,11 @@ export const SettingsTasksPanel: React.FC = () => {
<hr /> <hr />
<h4>Metadata</h4> <h5>Metadata</h5>
<Form.Group> <Form.Group>
<Button <Button
id="export" id="export"
variant="secondary"
type="submit" type="submit"
onClick={() => onClick={() =>
StashService.queryMetadataExport().then(() => { StashService.queryMetadataExport().then(() => {

View File

@@ -0,0 +1,33 @@
.logs {
font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace;
font-size: smaller;
max-height: 100vh;
overflow-x: hidden;
overflow-y: auto;
padding-top: 1rem;
white-space: pre-wrap;
.debug {
color: lightgreen;
font-weight: bold;
}
.info {
color: white;
font-weight: bold;
}
.warning {
color: orange;
font-weight: bold;
}
.error {
color: red;
font-weight: bold;
}
}
.log-time {
margin-right: 1rem;
}

View File

@@ -8,6 +8,7 @@ interface IProps {
numericValue: number; numericValue: number;
onValueChange(valueAsNumber: number): void; onValueChange(valueAsNumber: number): void;
onReset?(): void; onReset?(): void;
className?: string;
} }
export const DurationInput: React.FC<IProps> = (props: IProps) => { export const DurationInput: React.FC<IProps> = (props: IProps) => {
@@ -61,7 +62,7 @@ export const DurationInput: React.FC<IProps> = (props: IProps) => {
} }
return ( return (
<Form.Group> <Form.Group className={props.className}>
<InputGroup> <InputGroup>
<Form.Control <Form.Control
disabled={props.disabled} disabled={props.disabled}

View File

@@ -62,8 +62,10 @@ export const FolderSelect: React.FC<IProps> = (props: IProps) => {
)} )}
</InputGroup.Append> </InputGroup.Append>
</InputGroup> </InputGroup>
<ul className="folder-list">
{selectableDirectories.map(path => { {selectableDirectories.map(path => {
return ( return (
<li className="folder-item">
<Button <Button
variant="link" variant="link"
key={path} key={path}
@@ -71,12 +73,14 @@ export const FolderSelect: React.FC<IProps> = (props: IProps) => {
> >
{path} {path}
</Button> </Button>
</li>
); );
})} })}
</ul>
</div> </div>
</Modal.Body> </Modal.Body>
<Modal.Footer> <Modal.Footer>
<Button onClick={() => onSelectDirectory()}>Add</Button> <Button variant="success" onClick={() => onSelectDirectory()}>Add</Button>
</Modal.Footer> </Modal.Footer>
</Modal> </Modal>
); );
@@ -99,7 +103,7 @@ export const FolderSelect: React.FC<IProps> = (props: IProps) => {
})} })}
</Form.Group> </Form.Group>
<Button onClick={() => setIsDisplayingDialog(true)}>Add Directory</Button> <Button variant="secondary" onClick={() => setIsDisplayingDialog(true)}>Add Directory</Button>
</> </>
); );
}; };

View File

@@ -324,9 +324,13 @@ const SelectComponent: React.FC<ISelectProps & ITypeProps> = ({
}] : items; }] : items;
const styles = { const styles = {
option: (provided:CSSProperties) => ({ option: (base:CSSProperties) => ({
...provided, ...base,
color: "#000" color: "#000"
}),
container: (base:CSSProperties, state:any) => ({
...base,
zIndex: state.isFocused ? 10 : base.zIndex
}) })
}; };

View File

@@ -47,3 +47,15 @@
margin-left: 0 !important; margin-left: 0 !important;
padding: 1px 7px; padding: 1px 7px;
} }
.folder-list {
margin-top: .5rem 0 0 0;
max-height: 30vw;
overflow-x: auto;
}
.folder-item {
button {
padding: 0;
}
}

View File

@@ -12,9 +12,10 @@ export const StudioCard: React.FC<IProps> = ({ studio }) => {
<Card className="studio-card"> <Card className="studio-card">
<Link <Link
to={`/studios/${studio.id}`} to={`/studios/${studio.id}`}
className="studio previewable image" className="studio-image"
style={{ backgroundImage: `url(${studio.image_path})` }} >
/> <img alt={studio.name} src={studio.image_path ?? ''} />
</Link>
<div className="card-section"> <div className="card-section">
<h5 className="text-truncate">{studio.name}</h5> <h5 className="text-truncate">{studio.name}</h5>
<span>{studio.scene_count} scenes.</span> <span>{studio.scene_count} scenes.</span>

View File

@@ -256,7 +256,7 @@ export const ListFilter: React.FC<IListFilterProps> = (
as="select" as="select"
onChange={onChangePageSize} onChange={onChangePageSize}
value={props.filter.itemsPerPage.toString()} value={props.filter.itemsPerPage.toString()}
className="filter-item" className="filter-item col-1"
> >
{PAGE_SIZE_OPTIONS.map(s => ( {PAGE_SIZE_OPTIONS.map(s => (
<option value={s} key={s}>{s}</option> <option value={s} key={s}>{s}</option>

View File

@@ -64,7 +64,7 @@ export const SceneMarkerForm: React.FC<ISceneMarkerForm> = ({ sceneID, editingMa
.catch(err => Toast.error(err)); .catch(err => Toast.error(err));
} }
const renderTitleField = (fieldProps: FieldProps<string>) => ( const renderTitleField = (fieldProps: FieldProps<string>) => (
<div className="col-6"> <div className="col-10">
<MarkerTitleSuggest <MarkerTitleSuggest
initialMarkerTitle={fieldProps.field.value} initialMarkerTitle={fieldProps.field.value}
onChange={(query: string) => onChange={(query: string) =>
@@ -75,6 +75,7 @@ export const SceneMarkerForm: React.FC<ISceneMarkerForm> = ({ sceneID, editingMa
); );
const renderSecondsField = (fieldProps: FieldProps<string>) => ( const renderSecondsField = (fieldProps: FieldProps<string>) => (
<div className="col-3">
<DurationInput <DurationInput
onValueChange={s => fieldProps.form.setFieldValue("seconds", s)} onValueChange={s => fieldProps.form.setFieldValue("seconds", s)}
onReset={() => onReset={() =>
@@ -85,6 +86,7 @@ export const SceneMarkerForm: React.FC<ISceneMarkerForm> = ({ sceneID, editingMa
} }
numericValue={Number.parseInt(fieldProps.field.value ?? '0', 10)} numericValue={Number.parseInt(fieldProps.field.value ?? '0', 10)}
/> />
</div>
); );
const renderPrimaryTagField = (fieldProps: FieldProps<string>) => ( const renderPrimaryTagField = (fieldProps: FieldProps<string>) => (
@@ -129,25 +131,27 @@ export const SceneMarkerForm: React.FC<ISceneMarkerForm> = ({ sceneID, editingMa
<Form.Label htmlFor="title" className="col-2"> <Form.Label htmlFor="title" className="col-2">
Scene Marker Title Scene Marker Title
</Form.Label> </Form.Label>
<Field name="title" className="col-6"> <Field name="title">
{renderTitleField} {renderTitleField}
</Field> </Field>
<Form.Label htmlFor="seconds" className="col-1">Time</Form.Label>
<Field name="seconds" className="col-2">
{renderSecondsField}
</Field>
</Form.Group> </Form.Group>
<Form.Group className="row"> <Form.Group className="row">
<Form.Label htmlFor="primaryTagId" className="col-2"> <Form.Label htmlFor="primaryTagId" className="col-2">
Primary Tag Primary Tag
</Form.Label> </Form.Label>
<div className="col-4"> <div className="col-6">
<Field name="primaryTagId"> <Field name="primaryTagId">
{renderPrimaryTagField} {renderPrimaryTagField}
</Field> </Field>
</div> </div>
<Form.Label htmlFor="seconds" className="col-1">Time</Form.Label>
<Field name="seconds">
{renderSecondsField}
</Field>
</Form.Group>
<Form.Group className="row">
<Form.Label htmlFor="tagIds" className="col-2">Tags</Form.Label> <Form.Label htmlFor="tagIds" className="col-2">Tags</Form.Label>
<div className="col-4"> <div className="col-10">
<Field name="tagIds"> <Field name="tagIds">
{renderTagsField} {renderTagsField}
</Field> </Field>

View File

@@ -194,7 +194,7 @@ export class ScenePlayerImpl extends React.Component<
return ( return (
<ReactJWPlayer <ReactJWPlayer
playerId={JWUtils.playerID} playerId={JWUtils.playerID}
playerScript="http://192.168.1.65:9999/jwplayer/jwplayer.js" playerScript="http://localhost:9999/jwplayer/jwplayer.js"
customProps={config} customProps={config}
onReady={this.onReady} onReady={this.onReady}
onSeeked={this.onSeeked} onSeeked={this.onSeeked}

View File

@@ -0,0 +1,15 @@
.studio-card {
padding: .5rem;
}
.studio-image {
height: 150px;
line-height: 150px;
text-align: center;
img {
max-height: 100%;
max-width: 100%;
vertical-align: middle;
}
}

View File

@@ -332,37 +332,6 @@ video.preview.portrait {
white-space: pre-line; white-space: pre-line;
} }
.logs {
font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace;
font-size: smaller;
max-height: 100vh;
overflow-y: auto;
padding-right: 10px;
white-space: pre-wrap;
width: 120ch;
word-break: break-all;
.debug {
color: lightgreen;
font-weight: bold;
}
.info {
color: white;
font-weight: bold;
}
.warning {
color: orange;
font-weight: bold;
}
.error {
color: red;
font-weight: bold;
}
}
.studio { .studio {
.image { .image {
background-position: center !important; background-position: center !important;
@@ -507,8 +476,6 @@ video.preview.portrait {
/* BOOTSTRAP OVERRIDES */ /* BOOTSTRAP OVERRIDES */
.form-control { .form-control {
width: inherit;
&-plaintext { &-plaintext {
color: $text-color; color: $text-color;
@@ -564,3 +531,13 @@ video.preview.portrait {
.tab-content { .tab-content {
padding-bottom: 2rem; padding-bottom: 2rem;
} }
.svg-inline--fa {
margin: 0 .4rem;
}
.btn .svg-inline--fa {
&:last-child:first-child {
margin: 0;
}
}

View File

@@ -51,8 +51,8 @@ button.minimal {
content: none; content: none;
} }
nav .svg-inline--fa { .nav-link {
margin-right: 7px; color: $text-color;
} }
.nav-tabs { .nav-tabs {