diff --git a/src/circularGenomeBuilderRenderer.tsx b/src/circularGenomeBuilderRenderer.tsx index 199ef4be4..ed20927a6 100644 --- a/src/circularGenomeBuilderRenderer.tsx +++ b/src/circularGenomeBuilderRenderer.tsx @@ -2,12 +2,12 @@ import * as electron from "electron"; const ipc = electron.ipcRenderer; import * as React from "react"; -import { GetKeyEvent, KeySubEvent } from "./req/ipcEvents"; -import { makeWindowDockable } from "./req/renderer/dock"; +import {GetKeyEvent, KeySubEvent} from "./req/ipcEvents"; +import {makeWindowDockable} from "./req/renderer/dock"; import "./req/renderer/styles/defaults"; import "./req/renderer/commonBehaviour"; -import { CircularGenomeBuilderViewProps, CircularGenomeBuilderView } from './req/renderer/views/circularGenomeBuilderView/circularGenomeBuilderView'; -import { renderAppRoot } from './req/renderer/renderAppRoot'; +import {CircularGenomeBuilderViewProps, CircularGenomeBuilderView} from "./req/renderer/views/circularGenomeBuilderView/circularGenomeBuilderView"; +import {renderAppRoot} from "./req/renderer/renderAppRoot"; class CircularGenomeBuilderApp extends React.Component<{},CircularGenomeBuilderViewProps> { diff --git a/src/req/renderer/views/circularGenomeBuilderView/circularGenomeBuilderView.tsx b/src/req/renderer/views/circularGenomeBuilderView/circularGenomeBuilderView.tsx index 7b1a66ffb..f21b5a1ad 100644 --- a/src/req/renderer/views/circularGenomeBuilderView/circularGenomeBuilderView.tsx +++ b/src/req/renderer/views/circularGenomeBuilderView/circularGenomeBuilderView.tsx @@ -2,19 +2,21 @@ import * as electron from "electron"; const ipc = electron.ipcRenderer; import * as React from "react"; -import { AppBar } from '../../components/appBar'; -import { Toolbar } from '../../components/toolBar'; -import { IconButton } from '../../components/iconButton'; -import { MenuRounded } from '../../components/icons/menuRounded'; -import { white } from '../../styles/colours'; -import { CircularFigure } from '../../circularFigure/circularFigure'; -import { Fasta } from '../../../fasta'; -import { SaveKeyEvent } from '../../../ipcEvents'; -import { CircularGenome } from './containers/circularGenome/circularGenome'; -import { DonutLargeOutlined } from '../../components/icons/donutLargeOutlined'; -import { WavesOutlined } from '../../components/icons/wavesOutlined'; -import { FigureSelectOverlay } from './containers/overlays/figureSelectOverlay'; -import { appBar } from './containers/styles/appBar'; + +import {AppBar} from "../../components/appBar"; +import {Toolbar} from "../../components/toolBar"; +import {IconButton} from "../../components/iconButton"; +import {MenuRounded} from "../../components/icons/menuRounded"; +import {white} from "../../styles/colours"; +import {CircularFigure} from "../../circularFigure/circularFigure"; +import {Fasta} from "../../../fasta"; +import {SaveKeyEvent} from "../../../ipcEvents"; +import {DonutLargeOutlined} from "../../components/icons/donutLargeOutlined"; +import {WavesOutlined} from "../../components/icons/wavesOutlined"; + +import {CircularGenome} from "./containers/circularGenome/circularGenome"; +import {FigureSelectOverlay} from "./containers/overlays/figureSelectOverlay"; +import {appBar} from "./containers/styles/appBar"; export interface CircularGenomeBuilderViewState { @@ -29,7 +31,8 @@ export interface CircularGenomeBuilderViewProps { export class CircularGenomeBuilderView extends React.Component { - public constructor(props: CircularGenomeBuilderViewProps) { + public constructor(props: CircularGenomeBuilderViewProps) + { super(props); this.state = { @@ -37,7 +40,8 @@ export class CircularGenomeBuilderView extends React.Component @@ -58,8 +63,9 @@ export class CircularGenomeBuilderView extends React.Component { + classes={{colorPrimary: white}} + onClick={() => + { this.setState({ figureSelectDrawerOpen: !this.state.figureSelectDrawerOpen }); @@ -70,14 +76,14 @@ export class CircularGenomeBuilderView extends React.Component @@ -85,13 +91,15 @@ export class CircularGenomeBuilderView extends React.Component { - this.props.figures.map((x) => { - if (x.uuid == this.state.selectedFigure) { + this.props.figures.map((x) => + { + if (x.uuid == this.state.selectedFigure) + { return ( - ) + ); } return null; }) diff --git a/src/req/renderer/views/circularGenomeBuilderView/containers/circularGenome/circularGenome.tsx b/src/req/renderer/views/circularGenomeBuilderView/containers/circularGenome/circularGenome.tsx index 106f5243c..1f7a951bd 100644 --- a/src/req/renderer/views/circularGenomeBuilderView/containers/circularGenome/circularGenome.tsx +++ b/src/req/renderer/views/circularGenomeBuilderView/containers/circularGenome/circularGenome.tsx @@ -1,9 +1,10 @@ import * as React from "react"; -import { CircularFigure, getBaseFigureTemplateFromCache, assembleCompilableBaseFigureTemplates } from '../../../../circularFigure/circularFigure'; -import { Plasmid } from '../../../../../ngplasmid/lib/plasmid'; -import { Layer } from './layer'; -import { Node, loadFromString } from '../../../../../ngplasmid/lib/html'; +import {CircularFigure, getBaseFigureTemplateFromCache, assembleCompilableBaseFigureTemplates} from "../../../../circularFigure/circularFigure"; +import {Plasmid} from "../../../../../ngplasmid/lib/plasmid"; +import {Node, loadFromString} from "../../../../../ngplasmid/lib/html"; + +import {Layer} from "./layer"; export interface CircularGenomeState { @@ -89,7 +90,8 @@ export class CircularGenome extends React.Component { - this.props.figure.visibleLayers.map((layer) => { + this.props.figure.visibleLayers.map((layer) => + { return ( ; @@ -14,7 +14,8 @@ export class Layer extends React.Component { private canvasRef = React.createRef(); private canvas = document.createElement("canvas"); - public constructor(props: LayerProps) { + public constructor(props: LayerProps) + { super(props); this.updateCanvas = this.updateCanvas.bind(this); @@ -23,21 +24,26 @@ export class Layer extends React.Component } - public async updateCanvas() { - let plasmid = this.props.plasmidCache.find((x) => { + public async updateCanvas() + { + let plasmid = this.props.plasmidCache.find((x) => + { if (x.uuid == this.props.target) return true; return false; }); - if (!plasmid) { + if (!plasmid) + { this.props.loadPlasmid(this.props.target); } - else if (plasmid && this.canvas) { + else if (plasmid && this.canvas) + { let ctx: CanvasRenderingContext2D | null = this.canvas.getContext("2d"); - if (ctx) { + if (ctx) + { this.canvas.width = this.props.figure.width; this.canvas.height = this.props.figure.height; console.log(plasmid.plasmid.renderStart() + plasmid.plasmid.renderEnd()); @@ -46,7 +52,8 @@ export class Layer extends React.Component } } - public componentDidMount() { + public componentDidMount() + { if(this.canvasRef.current) { this.canvasRef.current.appendChild(this.canvas); @@ -54,7 +61,8 @@ export class Layer extends React.Component } } - public componentDidUpdate() { + public componentDidUpdate() + { this.updateCanvas(); } @@ -68,7 +76,8 @@ export class Layer extends React.Component return true; } - public render(): JSX.Element { + public render(): JSX.Element + { console.log("render layer"); return ( diff --git a/src/req/renderer/views/circularGenomeBuilderView/containers/overlays/figureSelectOverlay.tsx b/src/req/renderer/views/circularGenomeBuilderView/containers/overlays/figureSelectOverlay.tsx index 11edda5e5..269308e2b 100644 --- a/src/req/renderer/views/circularGenomeBuilderView/containers/overlays/figureSelectOverlay.tsx +++ b/src/req/renderer/views/circularGenomeBuilderView/containers/overlays/figureSelectOverlay.tsx @@ -1,31 +1,34 @@ import * as React from "react"; -import { CircularGenomeBuilderView } from '../../circularGenomeBuilderView'; -import { GridWrapper } from '../../../../containers/gridWrapper'; -import { Grid } from '../../../../components/grid'; -import { Typography } from '../../../../components/typography'; -import { IconButton } from '../../../../components/iconButton'; -import { AddBox } from '../../../../components/icons/addBox'; -import { Overlay } from './overlay'; +import {CircularGenomeBuilderView} from "../../circularGenomeBuilderView"; +import {GridWrapper} from "../../../../containers/gridWrapper"; +import {Grid} from "../../../../components/grid"; +import {Typography} from "../../../../components/typography"; +import {IconButton} from "../../../../components/iconButton"; +import {AddBox} from "../../../../components/icons/addBox"; + +import {Overlay} from "./overlay"; export interface FigureSelectOverlayProps { builder: CircularGenomeBuilderView; } -export function FigureSelectOverlay(props: FigureSelectOverlayProps): JSX.Element { +export function FigureSelectOverlay(props: FigureSelectOverlayProps): JSX.Element +{ return ( { - props.builder.setState({ - figureSelectDrawerOpen: false - }); - }} + kind="drawerLeft" + onClose ={ () => + { + props.builder.setState({ + figureSelectDrawerOpen: false + }); + }} open={props.builder.state.figureSelectDrawerOpen} >
-
+
Open a Figure @@ -34,18 +37,20 @@ export function FigureSelectOverlay(props: FigureSelectOverlayProps): JSX.Elemen
{ - props.builder.props.fastas.map((fasta) => { + props.builder.props.fastas.map((fasta) => + { return (
-
+
{fasta.alias} { + onClick={() => + { props.builder.newFigure(fasta); }} > @@ -56,14 +61,17 @@ export function FigureSelectOverlay(props: FigureSelectOverlayProps): JSX.Elemen
{ - props.builder.props.figures.map((figure) => { - if (fasta.uuid == figure.uuidFasta) { + props.builder.props.figures.map((figure) => + { + if (fasta.uuid == figure.uuidFasta) + { return ( -
+
- { + + { props.builder.setState({ selectedFigure: figure.uuid, figureSelectDrawerOpen : false @@ -79,7 +87,7 @@ export function FigureSelectOverlay(props: FigureSelectOverlayProps): JSX.Elemen }) }
- ) + ); }) }
diff --git a/src/req/renderer/views/circularGenomeBuilderView/containers/overlays/overlay.tsx b/src/req/renderer/views/circularGenomeBuilderView/containers/overlays/overlay.tsx index 17120ecc8..afafcf74e 100644 --- a/src/req/renderer/views/circularGenomeBuilderView/containers/overlays/overlay.tsx +++ b/src/req/renderer/views/circularGenomeBuilderView/containers/overlays/overlay.tsx @@ -1,23 +1,23 @@ import * as React from "react"; import Draggable from "react-draggable"; +import {style} from "typestyle"; -import { Drawer } from '../../../../components/drawer'; -import { Grid } from '../../../../components/grid'; -import { BorderLeftOutlined } from '../../../../components/icons/borderLeftOutlined'; -import { IconButton } from '../../../../components/iconButton'; -import { Paper, PaperProps } from "../../../../components/paper"; -import { blue } from '../../../../styles/colours'; -import { BorderTopOutlined } from '../../../../components/icons/borderTopOutlined'; -import { BorderBottomOutlined } from '../../../../components/icons/borderBottomOutlined'; -import { BorderRightOutlined } from '../../../../components/icons/borderRightOutlined'; -import { BorderHorizontalOutlined } from '../../../../components/icons/borderHorizontalOutlined'; -import { Dialog } from '../../../../components/dialog'; -import { ChevronLeft } from '../../../../components/icons/chevronLeft'; -import { ArrowUpwardOutlined } from '../../../../components/icons/arrowUpwareOutlined'; -import { ArrowDownwardOutlined } from '../../../../components/icons/arrowDownwardOutlined'; -import { ChevronRight } from '../../../../components/icons/chevronRight'; -import { Close } from '../../../../components/icons/close'; -import { style } from 'typestyle'; +import {Drawer} from "../../../../components/drawer"; +import {Grid} from "../../../../components/grid"; +import {BorderLeftOutlined} from "../../../../components/icons/borderLeftOutlined"; +import {IconButton} from "../../../../components/iconButton"; +import {Paper, PaperProps} from "../../../../components/paper"; +import {blue} from "../../../../styles/colours"; +import {BorderTopOutlined} from "../../../../components/icons/borderTopOutlined"; +import {BorderBottomOutlined} from "../../../../components/icons/borderBottomOutlined"; +import {BorderRightOutlined} from "../../../../components/icons/borderRightOutlined"; +import {BorderHorizontalOutlined} from "../../../../components/icons/borderHorizontalOutlined"; +import {Dialog} from "../../../../components/dialog"; +import {ChevronLeft} from "../../../../components/icons/chevronLeft"; +import {ArrowUpwardOutlined} from "../../../../components/icons/arrowUpwareOutlined"; +import {ArrowDownwardOutlined} from "../../../../components/icons/arrowDownwardOutlined"; +import {ChevronRight} from "../../../../components/icons/chevronRight"; +import {Close} from "../../../../components/icons/close"; export interface OverlayProps { @@ -27,9 +27,10 @@ export interface OverlayProps { children: JSX.Element; } -function DraggablePaper(props: PaperProps) { +function DraggablePaper(props: PaperProps) +{ return ( - + ); @@ -39,16 +40,17 @@ function IconKindSelect(props: { kind: OverlayProps["kind"], setOverlayKind: (newKind: OverlayProps["kind"]) => void, onClose: OverlayProps["onClose"] -}): JSX.Element { +}): JSX.Element +{ return (
+ style={{marginBottom: "3vh"}}> props.setOverlayKind("drawerLeft")} > @@ -56,7 +58,7 @@ function IconKindSelect(props: { props.setOverlayKind("drawerTop")} > @@ -64,7 +66,7 @@ function IconKindSelect(props: { props.setOverlayKind("drawerBottom")} > @@ -72,7 +74,7 @@ function IconKindSelect(props: { props.setOverlayKind("drawerRight")} > @@ -80,7 +82,7 @@ function IconKindSelect(props: { props.setOverlayKind("modal")} > @@ -88,7 +90,7 @@ function IconKindSelect(props: { { @@ -110,47 +112,49 @@ const drawer = style({ marginTop: "6.5vh" }); -export function Overlay(props: OverlayProps): JSX.Element | null { +export function Overlay(props: OverlayProps): JSX.Element | null +{ let [kind, setKind] = React.useState(props.kind); - switch (kind) { - case "drawerLeft": - case "drawerTop": - case "drawerBottom": - case "drawerRight": - return ( - -
- - - {props.children} - -
-
- ); - case "modal": - return ( - + switch (kind) + { + case "drawerLeft": + case "drawerTop": + case "drawerBottom": + case "drawerRight": + return ( + +
{props.children} -
- ); +
+ + ); + case "modal": + return ( + + + + {props.children} + + + ); } return null; diff --git a/src/req/renderer/views/toolBarView/toolBarView.tsx b/src/req/renderer/views/toolBarView/toolBarView.tsx index fba0040dd..3e34f3367 100644 --- a/src/req/renderer/views/toolBarView/toolBarView.tsx +++ b/src/req/renderer/views/toolBarView/toolBarView.tsx @@ -18,7 +18,7 @@ import {OutputViewWebView} from "./views/outputViewWebView"; import {InputViewWebView} from "./views/inputViewWebView"; import {QCViewWebView} from "./views/QCViewWebView"; import {AlignViewWebView} from "./views/alignViewWebView"; -import { CircularGenomeBuilderWebView } from './views/circularGenomeBuilderWebView'; +import {CircularGenomeBuilderWebView} from "./views/circularGenomeBuilderWebView"; export interface ToolBarViewState