vitessce
Version:
Vitessce app and React component library
128 lines (121 loc) • 4.24 kB
JavaScript
import React from 'react';
import version from '../version.json';
function DatasetList(props) {
const { configs, theme } = props;
const aClassName = 'list-group-item list-group-item-action flex-column align-items-start bg-secondary';
const links = configs.map(
({ id, name, description }) => (
<div className={aClassName} key={id}>
<a
href={`?dataset=${id}&theme=${theme}`}
key={id}
>
<h5>{name}</h5>
<p>{description}</p>
</a>
<a
href={`?dataset=${id}&theme=${theme}&small`}
style={{ fontSize: '75%' }}
>
{name} as component
</a>
</div>
),
);
return (
<div className="list-group">
{links}
</div>
);
}
function Form(props) {
const { configs, theme } = props;
return (
<form method="GET">
<h1>Vitessce</h1>
<div>Select a dataset:</div>
<DatasetList configs={configs} theme={theme} />
<br />
<div>Or specify URL of configuration:</div>
<div className="input-group mb-3">
<input type="text" name="url" className="form-control" />
<input type="hidden" name="theme" value={theme} />
<div className="input-group-append">
<button className="btn btn-outline-secondary" type="submit">Load</button>
</div>
</div>
</form>
);
}
function Info() {
return (
<>
<p className="info-paragraph">
Vitessce is a visual integration tool for exploration of spatial single cell experiments.
Its modular design is optimized for scalable, linked visualizations that support the
spatial and non-spatial representation of tissue-, cell- and molecule-level data.
Vitessce integrates the <a href="http://viv.gehlenborglab.org/">Viv library</a> to visualize
highly multiplexed, high-resolution, high-bit depth image data directly from
OME-TIFF files and Bio-Formats-compatible Zarr stores.
</p>
<h5 className="info-section-text">
Contributors
</h5>
<ul>
<li><a href="https://github.com/keller-mark">Mark Keller</a></li>
<li><a href="https://github.com/mccalluc">Chuck McCallum</a></li>
<li><a href="https://github.com/ilan-gold">Ilan Gold</a></li>
<li><a href="https://github.com/manzt">Trevor Manz</a></li>
<li><a href="https://github.com/thomaslchan">Tos Chan</a></li>
<li><a href="https://github.com/jkmarx">Jennifer Marx</a></li>
<li><a href="https://github.com/pkharchenko">Peter Kharchenko</a></li>
<li><a href="https://github.com/ngehlenborg">Nils Gehlenborg</a></li>
</ul>
<h5 className="info-section-text">
Source Code
</h5>
<ul>
<li><a href="https://github.com/vitessce/vitessce">GitHub</a></li>
<li><a href="https://www.npmjs.com/package/vitessce">NPM</a></li>
</ul>
<h5 className="info-section-text">
Funding
</h5>
<ul>
<li>
NIH/OD Human BioMolecular Atlas Program (HuBMAP)
(OT2OD026677, PI: Nils Gehlenborg).
</li>
<li>
NIH/NLM Biomedical Informatics and Data Science Research Training Program
(T15LM007092, PI: Nils Gehlenborg)
</li>
<li>Harvard Stem Cell Institute (CF-0014-17-03, PI: Nils Gehlenborg)</li>
</ul>
<p className="info-section-text">
This deployment: branch={version.branch} | hash={version.hash} | date={version.date}
</p>
</>
);
}
export default function Welcome(props) {
const { configs, theme } = props;
return (
<div className={`vitessce-container vitessce-theme-${theme} welcome-container`}>
<div className="react-grid-layout container-fluid" style={{ height: 'max(100vh, 100%)' }}>
<div className="row">
<div className="welcome-col-left">
<div className="card card-body bg-primary">
<Form configs={configs} theme={theme} />
</div>
</div>
<div className="welcome-col-right">
<div className="card card-body bg-primary">
<Info />
</div>
</div>
</div>
</div>
</div>
);
}