All files / client/src/views/event-log EventLogNewAssignment.tsx

85.71% Statements 6/7
50% Branches 5/10
100% Functions 2/2
85.71% Lines 6/7

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85                                356x         27x   27x 27x                                                                                                         1x       1x      
import { ReactElement } from "react";
import { useTranslation } from "react-i18next";
import styled from "styled-components";
import { Link } from "react-router";
import { getWeekdayAndTime } from "shared/utils/timeFormatter";
import { AppRoute } from "client/app/AppRoutes";
import { ProgramItem } from "shared/types/models/programItem";
import { EventLogItem } from "shared/types/models/eventLog";
import { config } from "shared/config";
import { RemoveLotterySignupsStrategy } from "shared/config/eventConfigTypes";
 
interface Props {
  eventLogItem: EventLogItem;
  programItems: readonly ProgramItem[];
  showDetails: boolean;
}
export const EventLogNewAssignment = ({
  eventLogItem,
  programItems,
  showDetails,
}: Props): ReactElement | null => {
  const { t } = useTranslation();
 
  const foundProgramItem = programItems.find(
    (programItem) => programItem.programItemId === eventLogItem.programItemId,
  );
 
  return (
    <div>
      {!foundProgramItem && (
        <span>
          {t("eventLogActions.newAssignmentProgramItemMissing", {
            PROGRAM_ITEM_ID: eventLogItem.programItemId,
          })}
        </span>
      )}
 
      {foundProgramItem && (
        <>
          <span>
            {t("eventLogActions.newAssignment", {
              PROGRAM_TYPE: t(
                `programTypeIllative.${foundProgramItem.programType}`,
              ),
            })}{" "}
            <StyledLink
              to={`${AppRoute.PROGRAM_ITEM}/${eventLogItem.programItemId}`}
            >
              {foundProgramItem.title}
            </StyledLink>
            .
          </span>
 
          {showDetails && (
            <>
              <TextRow>
                {t("eventLog.programItemDetails", {
                  START_TIME: getWeekdayAndTime(foundProgramItem.startTime),
                  LOCATION: foundProgramItem.location,
                })}
              </TextRow>
              {config.event().removeLotterySignupsStrategy ===
                RemoveLotterySignupsStrategy.OVERLAP && (
                <TextRow>{t("eventLog.overlapLotterySignupsRemoved")}</TextRow>
              )}
              {config.event().removeLotterySignupsStrategy ===
                RemoveLotterySignupsStrategy.ALL_UPCOMING && (
                <TextRow>{t("eventLog.upcomingLotterySignupsRemoved")}</TextRow>
              )}
            </>
          )}
        </>
      )}
    </div>
  );
};
 
const TextRow = styled.div`
  margin: 8px 0 0 0;
`;
 
const StyledLink = styled(Link)`
  margin: 8px 0 0 0;
`;