From 075ed055ffcf24f48fc2e30c3599144bc6c06a75 Mon Sep 17 00:00:00 2001 From: Colin Date: Tue, 24 Sep 2024 10:22:18 -0400 Subject: [PATCH] More notifyError --- eslint.config.mjs | 1 + .../renderers/RpcRenderedSvgGroup.tsx | 6 +- .../renderers/ServerSideRenderedContent.tsx | 6 +- packages/core/util/index.ts | 2 +- .../src/BreakendMultiLevelOptionDialog.tsx | 69 +++++++------- .../src/BreakendSingleLevelOptionDialog.tsx | 39 ++++---- .../src/AlignmentsFeatureDetail/util.ts | 2 +- .../SharedLinearPileupDisplayMixin.ts | 4 +- .../src/CircularView/models/model.ts | 3 + .../AutocompleteTextField.tsx | 2 +- .../components/SearchResultsTable.tsx | 2 +- .../src/SpreadsheetView/components/util.ts | 7 +- .../importAdapters/BedpeImport.ts | 1 + .../BreakendMultiLevelOptionDialog.tsx | 2 + .../BreakendSingleLevelOptionDialog.tsx | 2 + .../importAdapters/components/FeatureMenu.tsx | 63 ++++++------- .../importAdapters/components/LocString.tsx | 2 +- .../SpreadsheetView/models/ImportWizard.ts | 2 +- .../SpreadsheetView/models/SpreadsheetView.ts | 2 +- .../SvInspectorView/models/SvInspectorView.ts | 89 ++++++++----------- .../LaunchBreakendPanel.tsx | 6 +- .../saved-sessions/jbrowse_analytics.js | 2 +- .../jbrowse-desktop/src/indexJobsModel.ts | 15 +--- products/jbrowse-web/src/SessionLoader.ts | 2 +- .../jbrowse-web/src/components/JBrowse.tsx | 3 +- .../src/tests/SVInspector.test.tsx | 3 - 26 files changed, 169 insertions(+), 168 deletions(-) create mode 100644 plugins/spreadsheet-view/src/SpreadsheetView/importAdapters/components/BreakendMultiLevelOptionDialog.tsx create mode 100644 plugins/spreadsheet-view/src/SpreadsheetView/importAdapters/components/BreakendSingleLevelOptionDialog.tsx diff --git a/eslint.config.mjs b/eslint.config.mjs index 6447d40db5..2ee51af394 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -139,6 +139,7 @@ export default tseslint.config( '@typescript-eslint/no-unsafe-member-access': 'off', '@typescript-eslint/no-unsafe-argument': 'off', '@typescript-eslint/no-unsafe-assignment': 'off', + '@typescript-eslint/no-deprecated': 'off', '@typescript-eslint/restrict-plus-operands': 'off', '@typescript-eslint/no-unsafe-call': 'off', '@typescript-eslint/no-unsafe-return': 'off', diff --git a/packages/core/pluggableElementTypes/renderers/RpcRenderedSvgGroup.tsx b/packages/core/pluggableElementTypes/renderers/RpcRenderedSvgGroup.tsx index a154263186..0886d31ff2 100644 --- a/packages/core/pluggableElementTypes/renderers/RpcRenderedSvgGroup.tsx +++ b/packages/core/pluggableElementTypes/renderers/RpcRenderedSvgGroup.tsx @@ -69,7 +69,7 @@ const OldHydrate = observer(function OldHydrate(props: Props) { function doHydrate() { if (domNode && html) { if (domNode.innerHTML) { - // eslint-disable-next-line @typescript-eslint/no-deprecated + unmountComponentAtNode(domNode) } @@ -81,7 +81,7 @@ const OldHydrate = observer(function OldHydrate(props: Props) { // hydration for when we have some free time. helps keep the // framerate up. rIC(() => { - // eslint-disable-next-line @typescript-eslint/no-deprecated + hydrate(, domNode) }) } @@ -89,7 +89,7 @@ const OldHydrate = observer(function OldHydrate(props: Props) { doHydrate() return () => { if (domNode) { - // eslint-disable-next-line @typescript-eslint/no-deprecated + unmountComponentAtNode(domNode) } } diff --git a/packages/core/pluggableElementTypes/renderers/ServerSideRenderedContent.tsx b/packages/core/pluggableElementTypes/renderers/ServerSideRenderedContent.tsx index 8566a33769..51bb7d1d06 100644 --- a/packages/core/pluggableElementTypes/renderers/ServerSideRenderedContent.tsx +++ b/packages/core/pluggableElementTypes/renderers/ServerSideRenderedContent.tsx @@ -82,12 +82,12 @@ const OldHydrate = observer(function ({ const domNode = ref.current function doHydrate() { if (domNode) { - // eslint-disable-next-line @typescript-eslint/no-deprecated + unmountComponentAtNode(domNode) domNode.innerHTML = html rIC(() => { - // eslint-disable-next-line @typescript-eslint/no-deprecated + hydrate( @@ -102,7 +102,7 @@ const OldHydrate = observer(function ({ return () => { if (domNode) { - // eslint-disable-next-line @typescript-eslint/no-deprecated + unmountComponentAtNode(domNode) } } diff --git a/packages/core/util/index.ts b/packages/core/util/index.ts index 0046a00143..0f0ec9921b 100644 --- a/packages/core/util/index.ts +++ b/packages/core/util/index.ts @@ -1458,7 +1458,7 @@ export function renderToStaticMarkup( if (createRootFn) { createRootFn(div).render(node) } else { - // eslint-disable-next-line @typescript-eslint/no-deprecated + render(node, div) } }) diff --git a/packages/sv-core/src/BreakendMultiLevelOptionDialog.tsx b/packages/sv-core/src/BreakendMultiLevelOptionDialog.tsx index 75412d5f5c..edaac4b5e0 100644 --- a/packages/sv-core/src/BreakendMultiLevelOptionDialog.tsx +++ b/packages/sv-core/src/BreakendMultiLevelOptionDialog.tsx @@ -4,7 +4,7 @@ import { Button, DialogActions, DialogContent } from '@mui/material' import { getSnapshot } from 'mobx-state-tree' import { Dialog } from '@jbrowse/core/ui' import { when } from 'mobx' -import { getSession, Feature } from '@jbrowse/core/util' +import { Feature, AbstractSessionModel } from '@jbrowse/core/util' import type { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view' import type { Assembly } from '@jbrowse/core/assemblyManager/assembly' @@ -29,17 +29,17 @@ function stripIds(arr: Track[]) { } const BreakendMultiLevelOptionDialog = observer(function ({ - model, + session, handleClose, feature, assemblyName, viewType, view, }: { - model: unknown + session: AbstractSessionModel handleClose: () => void feature: Feature - view: LinearGenomeViewModel + view?: LinearGenomeViewModel assemblyName: string viewType: { getBreakendCoveringRegions: (arg: { @@ -63,23 +63,28 @@ const BreakendMultiLevelOptionDialog = observer(function ({ title="Multi-level breakpoint split view options" > - { - setCopyTracks(event.target.checked) - }} - /> +
Launch multi-level breakpoint split view
+ {view ? ( + <> + { + setCopyTracks(event.target.checked) + }} + /> - {copyTracks ? ( - { - setMirror(event.target.checked) - }} - /> + {copyTracks ? ( + { + setMirror(event.target.checked) + }} + /> + ) : null} + ) : null}
@@ -87,21 +92,23 @@ const BreakendMultiLevelOptionDialog = observer(function ({ onClick={() => { // eslint-disable-next-line @typescript-eslint/no-floating-promises ;(async () => { - const session = getSession(model) try { - const asm = - await session.assemblyManager.waitForAssembly(assemblyName) - if (!asm) { + const { assemblyManager } = session + const assembly = + await assemblyManager.waitForAssembly(assemblyName) + if (!assembly) { throw new Error(`assembly ${assemblyName} not found`) } const { refName, pos, mateRefName, matePos } = viewType.getBreakendCoveringRegions({ feature, - assembly: asm, + assembly: assembly, }) - const viewTracks = getSnapshot(view.tracks) as Track[] + const viewTracks = view + ? (getSnapshot(view.tracks) as Track[]) + : [] const breakpointSplitView = session.addView( 'BreakpointSplitView', { @@ -114,7 +121,7 @@ const BreakendMultiLevelOptionDialog = observer(function ({ { type: 'LinearGenomeView', hideHeader: true, - tracks: stripIds(getSnapshot(view.tracks)), + tracks: stripIds(viewTracks), }, { type: 'LinearGenomeView', @@ -126,8 +133,10 @@ const BreakendMultiLevelOptionDialog = observer(function ({ ], }, ) as unknown as { views: LinearGenomeViewModel[] } - const r1 = asm.regions!.find(r => r.refName === refName) - const r2 = asm.regions!.find(r => r.refName === mateRefName) + const r1 = assembly.regions!.find(r => r.refName === refName) + const r2 = assembly.regions!.find( + r => r.refName === mateRefName, + ) if (!r1 || !r2) { throw new Error("can't find regions") } @@ -172,7 +181,7 @@ const BreakendMultiLevelOptionDialog = observer(function ({ breakpointSplitView.views[0]!.centerAt(pos, refName) } catch (e) { console.error(e) - session.notify(`${e}`) + session.notifyError(`${e}`, e) } })() handleClose() diff --git a/packages/sv-core/src/BreakendSingleLevelOptionDialog.tsx b/packages/sv-core/src/BreakendSingleLevelOptionDialog.tsx index a1a17e2310..18dbbd6785 100644 --- a/packages/sv-core/src/BreakendSingleLevelOptionDialog.tsx +++ b/packages/sv-core/src/BreakendSingleLevelOptionDialog.tsx @@ -4,10 +4,10 @@ import { Button, DialogActions, DialogContent, TextField } from '@mui/material' import { getSnapshot } from 'mobx-state-tree' import { Dialog } from '@jbrowse/core/ui' import { - getSession, Feature, gatherOverlaps, useLocalStorage, + AbstractSessionModel, } from '@jbrowse/core/util' import type { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view' import type { Assembly } from '@jbrowse/core/assemblyManager/assembly' @@ -33,17 +33,17 @@ function stripIds(arr: Track[]) { } const BreakendSingleLevelOptionDialog = observer(function ({ - model, + session, handleClose, feature, assemblyName, viewType, view, }: { - model: unknown + session: AbstractSessionModel handleClose: () => void feature: Feature - view: LinearGenomeViewModel + view?: LinearGenomeViewModel assemblyName: string viewType: { getBreakendCoveringRegions: (arg: { @@ -70,13 +70,15 @@ const BreakendSingleLevelOptionDialog = observer(function ({ title="Single-level breakpoint split view options" > - { - setCopyTracks(event.target.checked) - }} - /> + {view ? ( + { + setCopyTracks(event.target.checked) + }} + /> + ) : null}