Skip to content

Commit

Permalink
feat: reset automatic assignments
Browse files Browse the repository at this point in the history
close #1488
  • Loading branch information
hamed-musallam committed Apr 21, 2022
1 parent b988f7d commit 1441c5c
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 8 deletions.
@@ -1,16 +1,17 @@
/** @jsxImportSource @emotion/react */
import { SvgNmrAssignment2 } from 'cheminfo-font';
import { FaBolt } from 'react-icons/fa';

import Button from '../../elements/ButtonToolTip';
import { tablePanelStyle } from '../extra/BasicPanelStyle';
import DefaultPanelHeader from '../header/DefaultPanelHeader';
import { SpectraAutomaticPickingButton } from '../header/SpectraAutomaticPickingButton';

import AutomaticAssignmentTable from './AutomaticAssignmentTable';
import { useGetAssignments } from './useGetAssignments';
import { useAutoAssignments } from './useAutoAssignments';

function AutomaticAssignment() {
const { getAssignments, assignments } = useGetAssignments();
const { getAssignments, assignments, restAssignments } = useAutoAssignments();
return (
<div css={tablePanelStyle}>
{
Expand All @@ -19,6 +20,9 @@ function AutomaticAssignment() {
<Button popupTitle="automatic assignment" onClick={getAssignments}>
<SvgNmrAssignment2 style={{ fontSize: '18px' }} />
</Button>
<Button popupTitle="reset assignment" onClick={restAssignments}>
<FaBolt />
</Button>
</DefaultPanelHeader>
}

Expand Down
Expand Up @@ -7,13 +7,13 @@ import { CustomColumn } from '../../elements/ReactTable/utility/addCustomColumn'
import { SET_AUTOMATIC_ASSIGNMENTS } from '../../reducer/types/Types';
import NoTableData from '../extra/placeholder/NoTableData';

import { AutoAssignmentsData } from './useGetAssignments';
import { AutoAssignmentsData } from './useAutoAssignments';

interface AutomaticAssignmentTableProps {
data: AutoAssignmentsData[];
}

function PeaksTable({ data }: AutomaticAssignmentTableProps) {
function AutomaticAssignmentTable({ data }: AutomaticAssignmentTableProps) {
const dispatch = useDispatch();

const assignHandler = useCallback(
Expand Down Expand Up @@ -77,4 +77,4 @@ function PeaksTable({ data }: AutomaticAssignmentTableProps) {
);
}

export default memo(PeaksTable);
export default memo(AutomaticAssignmentTable);
Expand Up @@ -5,7 +5,7 @@ import {
SpectraData2D,
} from 'nmr-processing';
import OCL from 'openchemlib/full';
import { useCallback, useMemo, useState } from 'react';
import { useCallback, useMemo, useRef, useState } from 'react';

import { Datum1D } from '../../../data/types/data1d';
import { Datum2D } from '../../../data/types/data2d/Datum2D';
Expand Down Expand Up @@ -34,17 +34,30 @@ function mapSpectra(data: (Datum1D | Datum2D)[]) {
}, []);
}

export function useGetAssignments() {
export function useAutoAssignments() {
const dispatch = useDispatch();
const { data, molecules } = useChartData();
const originData = useRef<SpectraData[]>();
const alert = useAlert();
const [assignments, setAssignments] = useState<AutoAssignmentsData[]>([]);

const restAssignments = useCallback(() => {
dispatch({
type: SET_AUTOMATIC_ASSIGNMENTS,
payload: { assignments: originData.current },
});
}, [dispatch]);

const getAssignments = useCallback(() => {
void (async () => {
const hideLoading = await alert.showLoading('Auto Assignments');
const molecule = OCL.Molecule.fromMolfile(molecules[0]?.molfile || '');
const spectra = mapSpectra(data);

if (!originData.current) {
originData.current = spectra;
}

const result = await getAssignmentsData(
{
spectra,
Expand All @@ -66,8 +79,9 @@ export function useGetAssignments() {
() => ({
getAssignments,
assignments,
restAssignments,
}),

[assignments, getAssignments],
[assignments, getAssignments, restAssignments],
);
}

0 comments on commit 1441c5c

Please sign in to comment.