diff --git a/packages/core/data_adapters/BaseAdapter.ts b/packages/core/data_adapters/BaseAdapter.ts index 7edb35eabc..6e7580784e 100644 --- a/packages/core/data_adapters/BaseAdapter.ts +++ b/packages/core/data_adapters/BaseAdapter.ts @@ -4,10 +4,7 @@ import { isStateTreeNode, getSnapshot } from 'mobx-state-tree' import { ObservableCreate } from '../util/rxjs' import { checkAbortSignal, observeAbortSignal } from '../util' import { Feature } from '../util/simpleFeature' -import { - AnyConfigurationModel, - ConfigurationSchema, -} from '../configuration/configurationSchema' +import { AnyConfigurationModel, ConfigurationSchema } from '../configuration' import { getSubAdapterType } from './dataAdapterCache' import { AugmentedRegion as Region, NoAssemblyRegion } from '../util/types' import { blankStats, rectifyStats, scoresToStats } from '../util/stats' diff --git a/packages/core/ui/ReturnToImportFormDialog.tsx b/packages/core/ui/ReturnToImportFormDialog.tsx new file mode 100644 index 0000000000..d40534b71e --- /dev/null +++ b/packages/core/ui/ReturnToImportFormDialog.tsx @@ -0,0 +1,78 @@ +import React from 'react' +import { observer } from 'mobx-react' +import { makeStyles } from '@material-ui/core/styles' +import { + Button, + Dialog, + DialogActions, + DialogContent, + DialogTitle, + Divider, + IconButton, + Typography, +} from '@material-ui/core' +import CloseIcon from '@material-ui/icons/Close' + +const useStyles = makeStyles(theme => ({ + closeButton: { + position: 'absolute', + right: theme.spacing(1), + top: theme.spacing(1), + color: theme.palette.grey[500], + }, +})) + +function ReturnToImportFormDialog({ + model, + handleClose, +}: { + model: { clearView: Function } + handleClose: () => void +}) { + const classes = useStyles() + return ( + + + Reference sequence + {handleClose ? ( + handleClose()} + > + + + ) : null} + + + + + + Are you sure you want to return to the import form? This will lose + your current view + + + + + + + + ) +} + +export default observer(ReturnToImportFormDialog) diff --git a/packages/core/ui/index.ts b/packages/core/ui/index.ts index a23334b1fe..6a6f29e5e7 100644 --- a/packages/core/ui/index.ts +++ b/packages/core/ui/index.ts @@ -1,6 +1,7 @@ export * from './theme' export { LogoFull, Logomark } from './Logo' export { default as App } from './App' +export { default as ReturnToImportFormDialog } from './ReturnToImportFormDialog' export { default as ErrorMessage } from './ErrorMessage' export { default as AssemblySelector } from './AssemblySelector' export { default as FileSelector } from './FileSelector' diff --git a/packages/core/util/Base1DViewModel.ts b/packages/core/util/Base1DViewModel.ts index 6338721fdf..4410da675c 100644 --- a/packages/core/util/Base1DViewModel.ts +++ b/packages/core/util/Base1DViewModel.ts @@ -1,7 +1,7 @@ import { types, cast, getSnapshot, Instance } from 'mobx-state-tree' import { clamp, viewBpToPx } from './index' import { Feature } from './simpleFeature' -import { Region } from './types/mst' +import { Region, ElementId } from './types/mst' import { Region as IRegion } from './types' import calculateDynamicBlocks from './calculateDynamicBlocks' import calculateStaticBlocks from './calculateStaticBlocks' @@ -16,6 +16,7 @@ export interface BpOffset { const Base1DView = types .model('Base1DView', { + id: ElementId, displayedRegions: types.array(Region), bpPerPx: 0, offsetPx: 0, @@ -41,6 +42,11 @@ const Base1DView = types get width() { return self.volatileWidth }, + get assemblyNames() { + return [ + ...new Set(self.displayedRegions.map(region => region.assemblyName)), + ] + }, get displayedRegionsTotalPx() { return this.totalBp / self.bpPerPx