Skip to content
Snippets Groups Projects
ProjectInfoDrawer.component.tsx 3.62 KiB
Newer Older
import { useAppSelector } from '@/redux/hooks/useAppSelector';
import {
  diseaseNameSelector,
  projectNameSelector,
  versionSelector,
  organismNameSelector,
  diseaseLinkSelector,
  organismLinkSelector,
} from '@/redux/project/project.selectors';
import { DrawerHeading } from '@/shared/DrawerHeading';
import { apiPath } from '@/redux/apiPath';
import { LinkButton } from '@/shared/LinkButton';
import { mainMapModelDescriptionSelector } from '@/redux/models/models.selectors';
import './ProjectInfoDrawer.styles.css';
import { useAppDispatch } from '@/redux/hooks/useAppDispatch';
import { useEffect } from 'react';
import { openPublicationsModal } from '@/redux/modal/modal.slice';

export const ProjectInfoDrawer = (): JSX.Element => {
  const dispatch = useAppDispatch();
  const diseaseName = useAppSelector(diseaseNameSelector);
  const diseaseLink = useAppSelector(diseaseLinkSelector);
  const organismLink = useAppSelector(organismLinkSelector);
  const organismName = useAppSelector(organismNameSelector);
  const projectName = useAppSelector(projectNameSelector);
  const version = useAppSelector(versionSelector);
  const description = useAppSelector(mainMapModelDescriptionSelector);

  const sourceDownloadLink = window.location.hostname + apiPath.getSourceFile();

  useEffect(() => {
    // dispatch(getPublications());
  }, [dispatch]);

  const onPublicationsClick = (): void => {
    dispatch(openPublicationsModal());
  };

  return (
    <div data-testid="export-drawer" className="h-full max-h-full">
      <DrawerHeading title="Project info" />
      <div className="h-[calc(100%-93px)] max-h-[calc(100%-93px)] overflow-y-auto px-6">
        <p className="mt-6">
          Name: <span className="font-semibold">{projectName}</span>
        </p>
        <p className="mt-4">
          version: <span className="font-semibold">{version}</span>
        </p>
        <div className="mt-4">Data:</div>
        <ul className="list-disc pl-6 ">
          <li className="mt-2 text-hyperlink-blue">
            <button type="button" onClick={onPublicationsClick} className="text-sm font-semibold">
          <li className="mt-2 text-hyperlink-blue">
            <a
              href="https://minerva.pages.uni.lu/doc/"
              target="_blank"
              rel="noopener noreferrer"
              className="font-semibold hover:underline"
            >
              Manual
            </a>
          </li>
          <li className="mt-2 text-hyperlink-blue">
            <span className="text-black">Disease: </span>
            <a
              href={diseaseLink}
              target="_blank"
              rel="noopener noreferrer"
              className="font-semibold hover:underline"
            >
              {diseaseName}
            </a>
          </li>
          <li className="mt-2 text-hyperlink-blue">
            <span className="text-black">Organism: </span>
            <a
              href={organismLink}
              target="_blank"
              rel="noopener noreferrer"
              className="font-semibold hover:underline"
            >
              {organismName}
            </a>
          </li>
        </ul>
        <LinkButton className="mt-6" href={sourceDownloadLink} download="sourceFile.txt">
          Download source file
        </LinkButton>
        {description && (
          <div
            data-testid="project-description"
            className="anchor-tag mt-7 rounded-lg bg-cultured px-4 py-2"
            // eslint-disable-next-line react/no-danger
            dangerouslySetInnerHTML={{ __html: description }}
          />
        )}
      </div>
    </div>
  );
};