diff --git a/README.md b/README.md
index e7c58d0..23e7286 100644
--- a/README.md
+++ b/README.md
@@ -4,4 +4,23 @@ This is a basic website which consists of multiple pages.
Data about continents, countries as well as currencies can be retrieved.
As basis for the information provided, the GraphQL API at [https://countries.trevorblades.com](https://countries.trevorblades.com) is used.
-More information can be found in the [corresponding GitHub repository](https://github.com/trevorblades/countries).
\ No newline at end of file
+More information can be found in the [corresponding GitHub repository](https://github.com/trevorblades/countries).
+
+## Exercise
+
+### Getting Started
+
+We're going to build a small webpage which displays continents and countries of the world.
+The basic structure is already there, you need to integrate a GraphQL API to fetch the data from.
+You can access GraphiQL of this API with the url [https://countries.trevorblades.com/](https://countries.trevorblades.com/).
+
+Play around with the API and get familiar with available queries and the fields of the returned objects as well as the relations.
+
+### Tasks
+
+Let's develop a webpage which displays continent and country information.
+You need to provide the needed GraphQL queries and set some information based on the response from the API.
+
+1. Add the necessary GraphQL queries in the JavaScript files
+2. Insert some information into the page based on the response from the API
+3. Test the wepage if all information is displayed correctly
diff --git a/continent.html b/continent.html
new file mode 100644
index 0000000..87242fa
--- /dev/null
+++ b/continent.html
@@ -0,0 +1,18 @@
+
+
+
+
+ Continent - World Information System
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/continents.html b/continents.html
new file mode 100644
index 0000000..11ada97
--- /dev/null
+++ b/continents.html
@@ -0,0 +1,18 @@
+
+
+
+
+ All Continents - World Information System
+
+
+
+
+ All continents
+
+
+
+
+
\ No newline at end of file
diff --git a/country.html b/country.html
new file mode 100644
index 0000000..cebe4a7
--- /dev/null
+++ b/country.html
@@ -0,0 +1,33 @@
+
+
+
+
+ Country - World Information System
+
+
+
+
+
+
+
+
+ Languages
+
+ Currencies
+
+ Phone Prefix
+
+ Flag
+
+
+
+
\ No newline at end of file
diff --git a/currency.html b/currency.html
new file mode 100644
index 0000000..b4e779a
--- /dev/null
+++ b/currency.html
@@ -0,0 +1,18 @@
+
+
+
+
+ Countries paying in - World Information System
+
+
+
+
+ Countries paying in
+
+
+
+
+
\ No newline at end of file
diff --git a/js/continent.js b/js/continent.js
new file mode 100644
index 0000000..1a77fd8
--- /dev/null
+++ b/js/continent.js
@@ -0,0 +1,19 @@
+const continentCode = new URLSearchParams(window.location.search).get("code");
+const countryList = document.getElementById("country-list");
+fetch("https://countries.trevorblades.com/", {
+ "method": "POST",
+ "body": JSON.stringify(
+ {
+ query: "query continent($code: ID!) { continent(code: $code) { name countries { name code }}}",
+ "operationName": "continent",
+ "variables": { "code": continentCode }
+ }), headers: { "Content-Type": "application/json" }
+}).then(response => response.json()).then(({ data }) => {
+ document.getElementById("continent-heading").innerText = data.continent.name;
+ const countries = data.continent.countries;
+ for (const country of countries) {
+ const newListItem = document.createElement("li");
+ newListItem.innerHTML = ` ${country.name} `;
+ countryList.append(newListItem);
+ }
+});
\ No newline at end of file
diff --git a/js/continents.js b/js/continents.js
new file mode 100644
index 0000000..4a38dab
--- /dev/null
+++ b/js/continents.js
@@ -0,0 +1,17 @@
+const continentList = document.getElementById("continent-list");
+fetch("https://countries.trevorblades.com/", {
+ method: "POST",
+ body: JSON.stringify(
+ {
+ query: "query allContinents { continents { name code }}",
+ "operationName": "allContinents"
+ }),
+ headers: { "Content-Type": "application/json" }
+}).then(response => response.json()).then(({ data }) => {
+ const continents = data.continents;
+ for (const continent of continents) {
+ const newListItem = document.createElement("li");
+ newListItem.innerHTML = ` ${continent.name} `;
+ continentList.append(newListItem);
+ }
+});
\ No newline at end of file
diff --git a/js/country.js b/js/country.js
new file mode 100644
index 0000000..96f73e0
--- /dev/null
+++ b/js/country.js
@@ -0,0 +1,34 @@
+const countryCode = new URLSearchParams(window.location.search).get("code");
+const languageList = document.getElementById("language-list");
+const currencyList = document.getElementById("currency-list");
+const phonePrefixList = document.getElementById("phone-prefix-list");
+fetch("https://countries.trevorblades.com/", {
+ "method": "POST",
+ "body": JSON.stringify(
+ {
+ query: "query country($code: ID!) { country(code: $code) { name capital phones currencies languages { name native } emoji }}",
+ "operationName": "country",
+ "variables": { "code": countryCode }
+ }),
+ headers: { "Content-Type": "application/json" }
+}).then(response => response.json()).then(({ data }) => {
+ document.getElementById("country-heading").innerText = data.country.name;
+ document.getElementById("country-capital").innerText = data.country.capital;
+ document.getElementById("flag-symbol").innerText = data.country.emoji;
+
+ for (const language of data.country.languages) {
+ const newListItem = document.createElement("li");
+ newListItem.innerText = language.name;
+ languageList.append(newListItem);
+ }
+ for (const currency of data.country.currencies) {
+ const newListItem = document.createElement("li");
+ newListItem.innerHTML = `${currency}`;
+ currencyList.append(newListItem);
+ }
+ for (const phonePrefix of data.country.phones) {
+ const newListItem = document.createElement("li");
+ newListItem.innerText = `+${phonePrefix}`;
+ phonePrefixList.append(newListItem);
+ }
+});
\ No newline at end of file
diff --git a/js/currency.js b/js/currency.js
new file mode 100644
index 0000000..fdbc512
--- /dev/null
+++ b/js/currency.js
@@ -0,0 +1,20 @@
+const currency = new URLSearchParams(window.location.search).get("currency");
+const countryList = document.getElementById("country-list");
+fetch("https://countries.trevorblades.com/", {
+ "method": "POST",
+ "body": JSON.stringify(
+ {
+ query: "query countriesPayingIn($currency: [String!]!) {countries(filter: {currency: {in:$currency}}) { name code }}",
+ "operationName": "countriesPayingIn",
+ "variables": { "currency": currency }
+ }),
+ headers: { "Content-Type": "application/json" }
+}).then(response => response.json()).then(({ data }) => {
+ document.getElementById("currency").innerText = currency;
+ const countries = data.countries;
+ for (const country of countries) {
+ const newListItem = document.createElement("li");
+ newListItem.innerHTML = ` ${country.name} `;
+ countryList.append(newListItem);
+ }
+});
\ No newline at end of file