@jbrowse/plugin-linear-genome-view
Version:
JBrowse 2 linear genome view
81 lines (80 loc) • 5.47 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const jsx_runtime_1 = require("react/jsx-runtime");
const react_1 = require("react");
const ui_1 = require("@jbrowse/core/ui");
const util_1 = require("@jbrowse/core/util");
const Close_1 = __importDefault(require("@mui/icons-material/Close"));
const material_1 = require("@mui/material");
const mobx_react_1 = require("mobx-react");
const mui_1 = require("tss-react/mui");
const ImportFormRefNameAutocomplete_1 = __importDefault(require("./ImportFormRefNameAutocomplete"));
const searchUtils_1 = require("../../searchUtils");
const useStyles = (0, mui_1.makeStyles)()(theme => ({
importFormContainer: {
padding: theme.spacing(2),
},
button: {
margin: theme.spacing(2),
},
container: {
padding: theme.spacing(4),
},
}));
const LinearGenomeViewImportForm = (0, mobx_react_1.observer)(function ({ model, }) {
var _a;
const { classes } = useStyles();
const session = (0, util_1.getSession)(model);
const { assemblyNames, assemblyManager } = session;
const { error } = model;
const [selectedAsm, setSelectedAsm] = (0, react_1.useState)(assemblyNames[0]);
const [option, setOption] = (0, react_1.useState)();
const assembly = assemblyManager.get(selectedAsm);
const assemblyError = assemblyNames.length
? assembly === null || assembly === void 0 ? void 0 : assembly.error
: 'No configured assemblies';
const displayError = assemblyError || error;
const [value, setValue] = (0, react_1.useState)('');
const regions = assembly === null || assembly === void 0 ? void 0 : assembly.regions;
const assemblyLoaded = !!regions;
const r0 = regions ? ((_a = regions[0]) === null || _a === void 0 ? void 0 : _a.refName) || '' : '';
(0, react_1.useEffect)(() => {
setValue(r0);
}, [r0, selectedAsm]);
return ((0, jsx_runtime_1.jsxs)("div", { className: classes.container, children: [displayError ? (0, jsx_runtime_1.jsx)(ui_1.ErrorMessage, { error: displayError }) : null, (0, jsx_runtime_1.jsx)(material_1.Container, { className: classes.importFormContainer, children: (0, jsx_runtime_1.jsx)("form", { onSubmit: async (event) => {
var _a;
event.preventDefault();
model.setError(undefined);
if (value) {
try {
if ((option === null || option === void 0 ? void 0 : option.getDisplayString()) === value &&
option.hasLocation()) {
await (0, searchUtils_1.navToOption)({
option,
model,
assemblyName: selectedAsm,
});
}
else if ((_a = option === null || option === void 0 ? void 0 : option.results) === null || _a === void 0 ? void 0 : _a.length) {
model.setSearchResults(option.results, option.getLabel(), selectedAsm);
}
else if (assembly) {
await (0, searchUtils_1.handleSelectedRegion)({ input: value, assembly, model });
}
}
catch (e) {
console.error(e);
session.notify(`${e}`, 'warning');
}
}
}, children: (0, jsx_runtime_1.jsxs)(material_1.Grid, { container: true, spacing: 1, justifyContent: "center", alignItems: "center", children: [(0, jsx_runtime_1.jsx)(material_1.FormControl, { children: (0, jsx_runtime_1.jsx)(ui_1.AssemblySelector, { onChange: val => {
setSelectedAsm(val);
}, localStorageKey: "lgv", session: session, selected: selectedAsm }) }), selectedAsm ? (assemblyError ? ((0, jsx_runtime_1.jsx)(Close_1.default, { style: { color: 'red' } })) : assemblyLoaded ? ((0, jsx_runtime_1.jsx)(material_1.FormControl, { children: (0, jsx_runtime_1.jsx)(ImportFormRefNameAutocomplete_1.default, { value: value, setValue: setValue, selectedAsm: selectedAsm, setOption: setOption, model: model }) })) : ((0, jsx_runtime_1.jsx)(material_1.CircularProgress, { size: 20, disableShrink: true }))) : null, (0, jsx_runtime_1.jsx)(material_1.FormControl, { children: (0, jsx_runtime_1.jsx)(material_1.Button, { type: "submit", disabled: !value, className: classes.button, variant: "contained", color: "primary", children: "Open" }) }), (0, jsx_runtime_1.jsx)(material_1.FormControl, { children: (0, jsx_runtime_1.jsx)(material_1.Button, { disabled: !value, className: classes.button, onClick: () => {
model.setError(undefined);
model.showAllRegionsInAssembly(selectedAsm);
}, variant: "contained", color: "secondary", children: "Show all regions in assembly" }) })] }) }) })] }));
});
exports.default = LinearGenomeViewImportForm;