From d57226e5a802ecd6607faf67f32621e2da725a35 Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Wed, 19 Jul 2023 00:48:11 -0400 Subject: Moved all components to app folder --- app/travel-advisory/HistoryModal.js | 40 ++++++++++++++++++++++ app/travel-advisory/ListCountries.js | 66 ++++++++++++++++++++++++++++++++++++ app/travel-advisory/page.js | 4 +-- 3 files changed, 108 insertions(+), 2 deletions(-) create mode 100644 app/travel-advisory/HistoryModal.js create mode 100644 app/travel-advisory/ListCountries.js (limited to 'app/travel-advisory') diff --git a/app/travel-advisory/HistoryModal.js b/app/travel-advisory/HistoryModal.js new file mode 100644 index 0000000..3ef2ea8 --- /dev/null +++ b/app/travel-advisory/HistoryModal.js @@ -0,0 +1,40 @@ +const HistoryModal = ({ isVisible, onClose, countries, dangerLevel, history }) => { + if (!isVisible) return null; + const handleClose = (e) => { + if(e.target.id === 'wrapper') onClose(); + } + + let historyList; + if (history && history.length > 0) { + historyList = history.map((event, index) => { + return ( +
  • {event}
  • + ) + }) + } else { + historyList =
  • Currently no diplomatic tensions in this country.
  • ; + } + + return ( +
    +
    +
    +
    +
    +
    +

    {countries}

    +

    {dangerLevel}

    +
    +
    +

    History

    +
      {historyList}
    +
    +
    +
    +
    +
    +
    + ) +} + +export default HistoryModal; diff --git a/app/travel-advisory/ListCountries.js b/app/travel-advisory/ListCountries.js new file mode 100644 index 0000000..c2e233d --- /dev/null +++ b/app/travel-advisory/ListCountries.js @@ -0,0 +1,66 @@ +"use client" +import countriesData from '@/app/travel-advisory/countries.json' assert { type: 'json' }; +import HistoryModal from "@/app/travel-advisory/HistoryModal"; +import { useState } from "react"; + +export function getDangerLevel(danger) { + let dangerLevel; + switch (danger) { + case 0: + dangerLevel = "Take normal security precautions" + break; + case 1: + dangerLevel = "Exercise a high degree of caution" + break; + case 2: + dangerLevel = "Avoid non-essential travel" + break; + case 3: + dangerLevel = "Avoid all travel" + break; + default: + dangerLevel = "Seems like the danger level is broken!" + break; + } + + return dangerLevel; +} + +export function Countries(){ + // eslint-disable-next-line react-hooks/rules-of-hooks + const [showModal, setShowModal] = useState(false); + const [selectedCountry, setSelectedCountry] = useState(null); + const [selectedDangerLevel, setSelectedDangerLevel] = useState(null); + const [selectedCountryHistory, setSelectedCountryHistory] = useState(null); + const countries = countriesData.countries; + + return countries.map((country) => { + let dangerLevel = getDangerLevel(country.danger); + + const settlementsList = country.settlements.map((settlement) => { + return ( +
    +

    {settlement.name}

    +

    {getDangerLevel(settlement.danger)}

    +
    + ) + }) + + return ( +
    +
    +

    {country.name}

    +

    {dangerLevel}

    +
    {settlementsList}
    + +
    + setShowModal(false)} countries={selectedCountry} dangerLevel={selectedDangerLevel} history={selectedCountryHistory} /> +
    + ) + }) +} diff --git a/app/travel-advisory/page.js b/app/travel-advisory/page.js index 415b6c2..259aaa4 100644 --- a/app/travel-advisory/page.js +++ b/app/travel-advisory/page.js @@ -1,5 +1,5 @@ -import { Countries, getDangerLevel } from "@/components/travel-advisory/ListCountries"; -import Header from "@/components/Header"; +import { Countries, getDangerLevel } from "@/app/travel-advisory/ListCountries"; +import Header from "@/app/Header"; export const metadata = { title: 'Travel Advisory', -- cgit v1.2.3