├── site
├── service-worker.js
├── server
│ ├── news_content
│ │ ├── .placeholder_file
│ │ ├── ae.json
│ │ ├── bg.json
│ │ ├── br.json
│ │ ├── cn.json
│ │ ├── cz.json
│ │ ├── de.json
│ │ ├── eg.json
│ │ ├── gr.json
│ │ ├── hk.json
│ │ ├── hu.json
│ │ ├── id.json
│ │ ├── il.json
│ │ ├── jp.json
│ │ ├── kr.json
│ │ ├── lt.json
│ │ ├── lv.json
│ │ ├── no.json
│ │ ├── pl.json
│ │ ├── pt.json
│ │ ├── ro.json
│ │ ├── rs.json
│ │ ├── ru.json
│ │ ├── si.json
│ │ ├── sk.json
│ │ ├── th.json
│ │ ├── tr.json
│ │ ├── tw.json
│ │ ├── ua.json
│ │ ├── cu.json
│ │ ├── at.json
│ │ ├── mx.json
│ │ ├── ch.json
│ │ ├── se.json
│ │ ├── ve.json
│ │ ├── gb.json
│ │ ├── ng.json
│ │ ├── co.json
│ │ ├── ca.json
│ │ ├── nl.json
│ │ ├── za.json
│ │ ├── ie.json
│ │ ├── it.json
│ │ ├── nz.json
│ │ ├── my.json
│ │ ├── sa.json
│ │ ├── sg.json
│ │ ├── us.json
│ │ ├── ma.json
│ │ ├── in.json
│ │ ├── ph.json
│ │ ├── ar.json
│ │ ├── be.json
│ │ ├── fr.json
│ │ └── au.json
│ ├── live_updates_data.js
│ ├── current_cases_data.js
│ ├── get_total_cases.php
│ ├── news.php
│ └── get_live_updates.php
├── favicon.ico
├── full_logo.png
├── assets
│ ├── img
│ │ ├── creator.png
│ │ └── icon_sourcefile.pxd
│ │ │ ├── metadata.info
│ │ │ ├── QuickLook
│ │ │ ├── Icon.tiff
│ │ │ └── Thumbnail.tiff
│ │ │ └── data
│ │ │ └── F8BE6F09-16C0-4AC1-8331-A280B9FC876A
│ ├── css
│ │ ├── components
│ │ │ ├── row.css
│ │ │ ├── container.css
│ │ │ ├── panel.css
│ │ │ ├── reload-btn.css
│ │ │ ├── col.css
│ │ │ ├── loader.css
│ │ │ └── masthead.css
│ │ ├── parts
│ │ │ ├── about.css
│ │ │ ├── current-cases.css
│ │ │ ├── links.css
│ │ │ ├── latest-news.css
│ │ │ └── main-app.css
│ │ ├── main.css
│ │ └── abstracts
│ │ │ ├── variables.css
│ │ │ └── global.css
│ ├── favicon
│ │ ├── apple-icon.png
│ │ ├── favicon-16x16.png
│ │ ├── favicon-32x32.png
│ │ ├── favicon-96x96.png
│ │ ├── ms-icon-70x70.png
│ │ ├── apple-icon-57x57.png
│ │ ├── apple-icon-60x60.png
│ │ ├── apple-icon-72x72.png
│ │ ├── apple-icon-76x76.png
│ │ ├── ms-icon-144x144.png
│ │ ├── ms-icon-150x150.png
│ │ ├── ms-icon-310x310.png
│ │ ├── android-icon-36x36.png
│ │ ├── android-icon-48x48.png
│ │ ├── android-icon-72x72.png
│ │ ├── android-icon-96x96.png
│ │ ├── apple-icon-114x114.png
│ │ ├── apple-icon-120x120.png
│ │ ├── apple-icon-144x144.png
│ │ ├── apple-icon-152x152.png
│ │ ├── apple-icon-180x180.png
│ │ ├── android-icon-144x144.png
│ │ ├── android-icon-192x192.png
│ │ └── apple-icon-precomposed.png
│ └── js
│ │ ├── masthead.js
│ │ ├── app.js
│ │ ├── current_cases.js
│ │ ├── main.js
│ │ ├── news.js
│ │ └── fitty.js
├── browserconfig.xml
├── manifest.json
└── index.php
├── site_demo.png
├── .gitignore
├── cronjobs
├── current_cases.py
├── live_updates.py
└── news.py
├── LICENSE.txt
└── README.md
/site/service-worker.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/site/server/news_content/.placeholder_file:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/site/server/news_content/ae.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/bg.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/br.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/cn.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/cz.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/de.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/eg.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/gr.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/hk.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/hu.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/id.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/il.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/jp.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/kr.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/lt.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/lv.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/no.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/pl.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/pt.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/ro.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/rs.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/ru.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/si.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/sk.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/th.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/tr.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/tw.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site/server/news_content/ua.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":0,"articles":[]}
--------------------------------------------------------------------------------
/site_demo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site_demo.png
--------------------------------------------------------------------------------
/site/server/live_updates_data.js:
--------------------------------------------------------------------------------
1 | const liveVideoURL = 'https://www.youtube.com/embed/8qW4j_zy1D8';
--------------------------------------------------------------------------------
/site/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/favicon.ico
--------------------------------------------------------------------------------
/site/full_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/full_logo.png
--------------------------------------------------------------------------------
/site/assets/img/creator.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/img/creator.png
--------------------------------------------------------------------------------
/site/assets/css/components/row.css:
--------------------------------------------------------------------------------
1 | .container > .row {
2 | display: block;
3 | width: 100%;
4 | height: auto;
5 | }
6 |
--------------------------------------------------------------------------------
/site/assets/favicon/apple-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/favicon/apple-icon.png
--------------------------------------------------------------------------------
/site/assets/favicon/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/favicon/favicon-16x16.png
--------------------------------------------------------------------------------
/site/assets/favicon/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/favicon/favicon-32x32.png
--------------------------------------------------------------------------------
/site/assets/favicon/favicon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/favicon/favicon-96x96.png
--------------------------------------------------------------------------------
/site/assets/favicon/ms-icon-70x70.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/favicon/ms-icon-70x70.png
--------------------------------------------------------------------------------
/site/assets/favicon/apple-icon-57x57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/favicon/apple-icon-57x57.png
--------------------------------------------------------------------------------
/site/assets/favicon/apple-icon-60x60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/favicon/apple-icon-60x60.png
--------------------------------------------------------------------------------
/site/assets/favicon/apple-icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/favicon/apple-icon-72x72.png
--------------------------------------------------------------------------------
/site/assets/favicon/apple-icon-76x76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/favicon/apple-icon-76x76.png
--------------------------------------------------------------------------------
/site/assets/favicon/ms-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/favicon/ms-icon-144x144.png
--------------------------------------------------------------------------------
/site/assets/favicon/ms-icon-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/favicon/ms-icon-150x150.png
--------------------------------------------------------------------------------
/site/assets/favicon/ms-icon-310x310.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/favicon/ms-icon-310x310.png
--------------------------------------------------------------------------------
/site/assets/favicon/android-icon-36x36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/favicon/android-icon-36x36.png
--------------------------------------------------------------------------------
/site/assets/favicon/android-icon-48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/favicon/android-icon-48x48.png
--------------------------------------------------------------------------------
/site/assets/favicon/android-icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/favicon/android-icon-72x72.png
--------------------------------------------------------------------------------
/site/assets/favicon/android-icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/favicon/android-icon-96x96.png
--------------------------------------------------------------------------------
/site/assets/favicon/apple-icon-114x114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/favicon/apple-icon-114x114.png
--------------------------------------------------------------------------------
/site/assets/favicon/apple-icon-120x120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/favicon/apple-icon-120x120.png
--------------------------------------------------------------------------------
/site/assets/favicon/apple-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/favicon/apple-icon-144x144.png
--------------------------------------------------------------------------------
/site/assets/favicon/apple-icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/favicon/apple-icon-152x152.png
--------------------------------------------------------------------------------
/site/assets/favicon/apple-icon-180x180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/favicon/apple-icon-180x180.png
--------------------------------------------------------------------------------
/site/assets/favicon/android-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/favicon/android-icon-144x144.png
--------------------------------------------------------------------------------
/site/assets/favicon/android-icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/favicon/android-icon-192x192.png
--------------------------------------------------------------------------------
/site/assets/favicon/apple-icon-precomposed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/favicon/apple-icon-precomposed.png
--------------------------------------------------------------------------------
/site/assets/img/icon_sourcefile.pxd/metadata.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/img/icon_sourcefile.pxd/metadata.info
--------------------------------------------------------------------------------
/site/assets/img/icon_sourcefile.pxd/QuickLook/Icon.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/img/icon_sourcefile.pxd/QuickLook/Icon.tiff
--------------------------------------------------------------------------------
/site/assets/img/icon_sourcefile.pxd/QuickLook/Thumbnail.tiff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/img/icon_sourcefile.pxd/QuickLook/Thumbnail.tiff
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | scrapers/who_live/node_modules
3 | .DS_Store
4 | */.DS_Store
5 | */*/.DS_Store
6 | */*/*/.DS_Store
7 | */*/*/*/.DS_Store
8 | */*/*/*/*/.DS_Store
9 | site/server/api_keys.php
--------------------------------------------------------------------------------
/site/server/current_cases_data.js:
--------------------------------------------------------------------------------
1 | const totalCurrentCases = '218175';
2 | const totalDeaths = '8937';
3 | const totalRecoveries = '84383';
4 | const totalCurrentCasesLastUpdated = '2020-03-18T22:22:25+00:00';
5 |
--------------------------------------------------------------------------------
/site/assets/img/icon_sourcefile.pxd/data/F8BE6F09-16C0-4AC1-8331-A280B9FC876A:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gaberomualdo/covid-live-monitor/HEAD/site/assets/img/icon_sourcefile.pxd/data/F8BE6F09-16C0-4AC1-8331-A280B9FC876A
--------------------------------------------------------------------------------
/site/assets/js/masthead.js:
--------------------------------------------------------------------------------
1 | const mastheadMobileTitleTextElm = document.querySelector('.masthead .mobile-title .text');
2 |
3 | window.addEventListener('load', () => {
4 | fitty(mastheadMobileTitleTextElm);
5 | });
6 |
--------------------------------------------------------------------------------
/site/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 | #ffffff
--------------------------------------------------------------------------------
/site/assets/css/components/container.css:
--------------------------------------------------------------------------------
1 | body > .container {
2 | width: 100%;
3 | min-height: 100vh;
4 | background-color: var(--darker-color);
5 | box-sizing: border-box;
6 | padding: 1.25rem;
7 | display: block;
8 | }
9 |
10 | @media only screen and (max-width: 600px) {
11 | body > .container {
12 | padding: 0.5rem;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/site/assets/css/parts/about.css:
--------------------------------------------------------------------------------
1 | .panel.about .panel-title {
2 | margin-bottom: 0.75rem;
3 | }
4 |
5 | .panel.about p {
6 | font-size: 0.8rem;
7 | line-height: 1.75;
8 | opacity: 0.95;
9 | }
10 | .panel.about p:not(:last-child) {
11 | margin-bottom: 1rem;
12 | }
13 |
14 | .panel.about a {
15 | font-weight: 600;
16 | text-decoration: none;
17 | display: inline;
18 | transition: transform 0.2s;
19 | }
20 | .panel.about a:hover {
21 | text-decoration: underline;
22 | }
23 |
--------------------------------------------------------------------------------
/site/assets/css/components/panel.css:
--------------------------------------------------------------------------------
1 | .panel {
2 | display: block;
3 | overflow: hidden;
4 | width: 100%;
5 | height: auto;
6 | background-color: var(--dark-color);
7 | border-radius: 4px;
8 | box-shadow: 0 0.15rem 1rem var(--shadow-color);
9 | box-sizing: border-box;
10 | padding: 1rem;
11 | }
12 |
13 | .panel:not(:last-child) {
14 | margin-bottom: 1.25rem;
15 | }
16 |
17 | .panel .panel-title {
18 | text-transform: uppercase;
19 | font-weight: 600;
20 | line-height: 1.15;
21 | font-size: 1.3rem;
22 | }
23 |
--------------------------------------------------------------------------------
/site/assets/css/components/reload-btn.css:
--------------------------------------------------------------------------------
1 | .container > .reload-btn {
2 | border: none;
3 | position: fixed;
4 | z-index: 99999;
5 | bottom: 1rem;
6 | right: 1rem;
7 | height: 3.5rem;
8 | width: 3.5rem;
9 | border-radius: 50%;
10 | background-color: var(--dark-color);
11 | box-shadow: 0 0.15rem 1rem var(--shadow-color);
12 | box-sizing: border-box;
13 | padding: calc(0.75rem - 1px);
14 | border: 1px solid var(--white-color);
15 | display: none;
16 | }
17 | .container > .reload-btn svg {
18 | fill: var(--white-color);
19 | width: 2rem;
20 | height: 2rem;
21 | }
22 |
23 | @media only screen and (max-width: 600px) {
24 | .container.cases-about-active > .reload-btn {
25 | display: block;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/site/assets/css/main.css:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;700&display=swap');
2 | @import url('https://fonts.googleapis.com/css2?family=Inconsolata:wght@700&display=swap');
3 |
4 | @import 'abstracts/variables.css?v=2';
5 | @import 'abstracts/global.css?v=2';
6 |
7 | @import 'components/loader.css?v=2';
8 | @import 'components/container.css?v=2';
9 |
10 | @import 'components/row.css?v=2';
11 | @import 'components/col.css?v=2';
12 | @import 'components/panel.css?v=2';
13 |
14 | @import 'components/masthead.css?v=2';
15 |
16 | @import 'components/reload-btn.css?v=2';
17 |
18 | @import 'parts/latest-news.css?v=2';
19 | @import 'parts/current-cases.css?v=2';
20 | @import 'parts/links.css?v=2';
21 | @import 'parts/about.css?v=2';
22 | @import 'parts/main-app.css?v=2';
23 |
--------------------------------------------------------------------------------
/site/assets/css/components/col.css:
--------------------------------------------------------------------------------
1 | .col {
2 | width: var(--col-width);
3 | display: block;
4 | float: left;
5 | }
6 | .col:not(:last-child) {
7 | margin-right: 1rem;
8 | }
9 |
10 | /* width of each column */
11 | .col.left {
12 | width: var(--col-left-width);
13 | }
14 | .col.right {
15 | width: var(--col-right-width);
16 | }
17 | .col.center {
18 | width: calc(100% - (var(--col-left-width) + var(--col-right-width)) - (1rem * 2));
19 | }
20 |
21 | /* mobile */
22 | @media only screen and (max-width: 1050px) {
23 | .col {
24 | width: 100% !important;
25 | margin-right: 0 !important;
26 | display: none;
27 | }
28 |
29 | /* nav functionality */
30 | .container.calculator-active .col.center,
31 | .container.news-active .col.right,
32 | .container.cases-about-active .col.left {
33 | display: block;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/cronjobs/current_cases.py:
--------------------------------------------------------------------------------
1 | """
2 | This file runs a basic cronjob every minute to send a request to a PHP server
3 | that gets and updates the current total case count.
4 | """
5 |
6 | import schedule
7 | import requests
8 | from datetime import date, datetime
9 | from time import gmtime, strftime, sleep
10 |
11 | # function to be run every minute
12 | def update_current_cases():
13 | try:
14 | request = requests.get("https://covid19.xtrp.io/server/get_total_cases.php")
15 | if(request.status_code == 200):
16 | print(request.text)
17 | else:
18 | print("ERROR: " + str(request.status_code))
19 | except:
20 | print("ERROR")
21 |
22 | # run function initially
23 | update_current_cases()
24 |
25 | # start and run cronjob
26 | schedule.every(5).minutes.do(update_current_cases)
27 |
28 | while True:
29 | schedule.run_pending()
30 | sleep(20)
31 |
--------------------------------------------------------------------------------
/site/assets/css/abstracts/variables.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --theme-color: #da1333;
3 |
4 | --regular-color: #78909c;
5 | --white-color: #ffffff;
6 |
7 | --dark-color: #37474f;
8 | --darker-color: #263238;
9 | --subdark-color: #546e7a;
10 | --somewhat-subdark-color: #455a64;
11 |
12 | --light-color: #eceff1;
13 |
14 | --medium-color: #b0bec5;
15 | --somewhat-submedium-color: #d5dbde;
16 | --submedium-color: #dde3e6;
17 | --supermedium-color: #90a4ae;
18 |
19 | --green-color: #27ae60;
20 | --dark-green-color: #1e8449;
21 |
22 | --shadow-color: rgba(38, 50, 56, 0.625);
23 | --light-shadow-color: rgba(55, 71, 79, 0.2);
24 |
25 | /* NOTE: when replacing container width, replace media queries in components/container.css to match */
26 | --container-width: 1200px;
27 |
28 | --col-left-width: 16rem;
29 | --col-right-width: 20rem;
30 | }
31 |
--------------------------------------------------------------------------------
/site/server/news_content/cu.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":1,"articles":[{"source":{"id":"cnn","name":"CNN"},"author":null,"title":"La importancia del triunfo de Egan Bernal en la Ruta de Occitania - CNN","description":"Egan Bernal regresó con una victoria después del parón causado por el coronavirus. Fue en la Ruta de Occitania, donde el colombiano campeón del Tour de Francia 2019 se quedó con el título por encim…","url":"https://cnnespanol.cnn.com/video/egan-bernal-colombia-gana-ruta-de-occitania-tour-de-francia-deportes-cnne-pkg/","urlToImage":"https://cnnespanol.cnn.com/wp-content/uploads/2020/08/200804165346-egan-bernal-pic-depo-full-169.jpg?quality=100&strip=info","publishedAt":"2020-08-04T20:57:00Z","content":"Egan Bernal regresó con una victoria después del parón causado por el coronavirus. Fue en la Ruta de Occitania, donde el colombiano campeón del Tour de Francia 2019 se quedó con el título por encima … [+108 chars]"}]}
--------------------------------------------------------------------------------
/site/assets/css/abstracts/global.css:
--------------------------------------------------------------------------------
1 | * {
2 | margin: 0;
3 | padding: 0;
4 | font-family: inherit;
5 | outline: none;
6 | color: inherit;
7 | fill: inherit;
8 | -webkit-font-smoothing: antialiased;
9 | -moz-osx-font-smoothing: grayscale;
10 | }
11 |
12 | body {
13 | color: var(--white-color);
14 | fill: var(--white-color);
15 | font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
16 | }
17 |
18 | ::selection {
19 | background-color: var(--medium-color);
20 | }
21 |
22 | .built-by {
23 | font-size: 0.9rem;
24 | text-align: right;
25 | margin-bottom: 0.75rem;
26 | display: none;
27 | }
28 | .built-by a {
29 | font-weight: 600;
30 | text-decoration: none;
31 | }
32 | .built-by a:hover {
33 | text-decoration: underline;
34 | }
35 | @media only screen and (max-width: 1050px) {
36 | .built-by {
37 | display: block;
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/site/assets/css/parts/current-cases.css:
--------------------------------------------------------------------------------
1 | .panel.current-cases .case-count-container {
2 | width: 100%;
3 | }
4 |
5 | .panel.current-cases .case-count-container .case-count {
6 | text-align: center;
7 | line-height: 1.15;
8 | color: var(--theme-color);
9 | text-shadow: 0 0 3px var(--theme-color);
10 | }
11 | .panel.current-cases .case-count-container .case-count span {
12 | font-family: 'Inconsolata', 'Andale Mono', 'Courier New', Courier, monospace;
13 | }
14 |
15 | .panel.current-cases .last-updated {
16 | float: right;
17 | font-size: 0.85rem;
18 | line-height: 1.35;
19 | opacity: 0.6;
20 | margin-top: 0.5rem;
21 | }
22 |
23 | .panel.stats p {
24 | line-height: 1.25;
25 | font-size: 0.9rem;
26 | }
27 | .panel.stats p:not(:last-child) {
28 | margin-bottom: 0.625rem;
29 | }
30 | .panel.stats p > * {
31 | display: inline-block;
32 | }
33 | .panel.stats p > strong {
34 | opacity: 0.7;
35 | font-weight: 500;
36 | }
37 | .panel.stats p > span {
38 | margin-left: 0.5rem;
39 | }
40 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | Copyright 2020 xtrp.io
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
--------------------------------------------------------------------------------
/cronjobs/live_updates.py:
--------------------------------------------------------------------------------
1 | """
2 | This file runs a basic cronjob every day to send a request to a PHP server
3 | that gets and updates the current live WHO video.
4 | """
5 |
6 | import schedule
7 | import requests
8 | from datetime import date, datetime
9 | from time import gmtime, strftime, sleep
10 |
11 | countries = ["ae","ar","at","au","be","bg","br","ca","ch","cn","co","cu","cz","de","eg","fr","gb","gr","hk","hu","id","ie","il","in","it","jp","kr","lt","lv","ma","mx","my","ng","nl","no","nz","ph","pl","pt","ro","rs","ru","sa","se","sg","si","sk","th","tr","tw","ua","us","ve","za"];
12 |
13 | # function to be run every minute
14 | def live_updates():
15 | request = requests.get("https://covid19.xtrp.io/server/get_live_updates.php")
16 | if(request.status_code == 200):
17 | print('Successful request with message: ' + request.text)
18 | else:
19 | print("ERROR: " + str(request.status_code))
20 |
21 | # run function initially
22 | live_updates()
23 |
24 | # start and run cronjob
25 | schedule.every().day.at("12:00").do(live_updates)
26 |
27 | while True:
28 | schedule.run_pending()
29 | sleep(20)
--------------------------------------------------------------------------------
/cronjobs/news.py:
--------------------------------------------------------------------------------
1 | """
2 | This file runs a basic cronjob every day to send a request to a PHP server
3 | that gets and updates the current total case count.
4 | """
5 |
6 | import schedule
7 | import requests
8 | from datetime import date, datetime
9 | from time import gmtime, strftime, sleep
10 |
11 | countries = ["ae","ar","at","au","be","bg","br","ca","ch","cn","co","cu","cz","de","eg","fr","gb","gr","hk","hu","id","ie","il","in","it","jp","kr","lt","lv","ma","mx","my","ng","nl","no","nz","ph","pl","pt","ro","rs","ru","sa","se","sg","si","sk","th","tr","tw","ua","us","ve","za"];
12 |
13 | # function to be run every minute
14 | def update_news():
15 | for country in countries:
16 | try:
17 | request = requests.get("https://covid19.xtrp.io/server/news.php?country=" + country + "&fromcache=false")
18 | if(request.status_code == 200):
19 | print('Finished country code ' + country)
20 | else:
21 | print("ERROR: " + str(request.status_code))
22 | except:
23 | print("ERROR")
24 |
25 | # run function initially
26 | update_news()
27 |
28 | # start and run cronjob
29 | schedule.every().day.at("12:00").do(update_news)
30 |
31 | while True:
32 | schedule.run_pending()
33 | sleep(20)
--------------------------------------------------------------------------------
/site/assets/css/parts/links.css:
--------------------------------------------------------------------------------
1 | .panel.links {
2 | padding: 0.2rem 0;
3 | text-align: center;
4 | font-size: 0;
5 | }
6 | .panel.links a {
7 | text-align: left;
8 | display: block;
9 | float: left;
10 | width: 100%;
11 | min-height: 2.5rem;
12 | box-sizing: border-box;
13 | padding: 0.8rem 1rem;
14 | font-size: 0.95rem;
15 | line-height: 1.5rem;
16 | text-decoration: none;
17 | opacity: 0.6;
18 | transition: opacity 0.2s;
19 | cursor: pointer;
20 | }
21 | .panel.links a:hover {
22 | opacity: 1;
23 | }
24 |
25 | .panel.links a > * {
26 | display: inline-block;
27 | vertical-align: top;
28 | }
29 |
30 | .panel.links a svg,
31 | .panel.links a img {
32 | height: 1.5rem;
33 | width: auto;
34 | margin-left: 0.5rem;
35 | }
36 |
37 | .panel.links a.creator img {
38 | width: 1.5rem;
39 | height: 1.5rem;
40 | border-radius: 50%;
41 | background-color: var(--subdark-color);
42 | transform: scale(1.1);
43 | }
44 |
45 | .panel.links hr {
46 | border: none;
47 | width: calc(100% - 2rem);
48 | display: inline-block;
49 | border-bottom: 1px solid var(--supermedium-color);
50 | }
51 |
52 | @media only screen and (max-width: 1050px) {
53 | .panel.links {
54 | display: none;
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/site/assets/css/components/loader.css:
--------------------------------------------------------------------------------
1 | body > .loader {
2 | background-color: var(--darker-color);
3 | width: 100%;
4 | height: 100vh;
5 | position: fixed;
6 | z-index: 9999;
7 | box-sizing: border-box;
8 | overflow: hidden;
9 | }
10 | body > .loader .loader-inner {
11 | width: 5rem;
12 | height: 5rem;
13 | border-radius: 50%;
14 | border: 0.5rem solid var(--dark-color);
15 | border-left-color: var(--theme-color);
16 | position: absolute;
17 | top: 50%;
18 | left: 50%;
19 | transform: translate(-50%, -50%);
20 | animation: spin 1s linear 0s infinite;
21 | }
22 |
23 | @-moz-keyframes spin {
24 | from {
25 | -moz-transform: translate(-50%, -50%) rotate(0deg);
26 | }
27 | to {
28 | -moz-transform: translate(-50%, -50%) rotate(360deg);
29 | }
30 | }
31 | @-webkit-keyframes spin {
32 | from {
33 | -webkit-transform: translate(-50%, -50%) rotate(0deg);
34 | }
35 | to {
36 | -webkit-transform: translate(-50%, -50%) rotate(360deg);
37 | }
38 | }
39 | @keyframes spin {
40 | from {
41 | transform: translate(-50%, -50%) rotate(0deg);
42 | }
43 | to {
44 | transform: translate(-50%, -50%) rotate(360deg);
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/site/assets/js/app.js:
--------------------------------------------------------------------------------
1 | // app nav functionality
2 | (() => {
3 | const overviewBtn = document.querySelector('.panel.main-app .tab-select li.overview');
4 | const healthBtn = document.querySelector('.panel.main-app .tab-select li.health');
5 |
6 | const mainAppContainer = document.querySelector('.panel.main-app');
7 |
8 | const clearCurrentTab = () => {
9 | mainAppContainer.classList.remove('overview-active');
10 | mainAppContainer.classList.remove('health-active');
11 | };
12 |
13 | overviewBtn.addEventListener('click', () => {
14 | clearCurrentTab();
15 | mainAppContainer.classList.add('overview-active');
16 | removeHashFromURL();
17 | });
18 |
19 | healthBtn.addEventListener('click', () => {
20 | clearCurrentTab();
21 | mainAppContainer.classList.add('health-active');
22 | });
23 | })();
24 |
25 | // live video updates from the WHO
26 | (() => {
27 | const overviewPanelVideoContainerElm = document.querySelector('.panel.main-app .tabs > section.overview > .video-container');
28 | overviewPanelVideoContainerElm.innerHTML += `
29 |
30 | `;
31 | })();
32 |
--------------------------------------------------------------------------------
/site/server/get_total_cases.php:
--------------------------------------------------------------------------------
1 | find('.maincounter-number > span'));
8 |
9 | if(array_key_exists(0, $spans)) {
10 | $number = $spans[0]->innertext;
11 | $number = str_replace(',', '', $number);
12 | $number = str_replace(' ', '', $number);
13 |
14 | $deathsnumber = $spans[1]->innertext;
15 | $deathsnumber = str_replace(',', '', $deathsnumber);
16 | $deathsnumber = str_replace(' ', '', $deathsnumber);
17 |
18 | $recoveriesnumber = $spans[2]->innertext;
19 | $recoveriesnumber = str_replace(',', '', $recoveriesnumber);
20 | $recoveriesnumber = str_replace(' ', '', $recoveriesnumber);
21 |
22 | if(is_numeric($number) && is_numeric($deathsnumber) && is_numeric($recoveriesnumber)) {
23 | file_put_contents("current_cases_data.js", "const totalCurrentCases = '" . $number . "';\nconst totalDeaths = '" . $deathsnumber . "';\nconst totalRecoveries = '" . $recoveriesnumber . "';\nconst totalCurrentCasesLastUpdated = '" . (date("c")) . "';\n");
24 | echo "Success (" . $number . " total cases).";
25 | }else {
26 | echo "Failure.";
27 | }
28 | }else {
29 | var_dump($spans);
30 | echo "Failure: [0] index does not exist";
31 | }
32 | ?>
33 |
--------------------------------------------------------------------------------
/site/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "short_name": "Coronavirus Monitor",
3 | "name": "Coronavirus Live Monitor",
4 | "theme_color": "#DA1333",
5 | "background_color": "#263238",
6 | "display": "standalone",
7 | "icons": [
8 | {
9 | "src": "assets/favicon/android-icon-36x36.png",
10 | "sizes": "36x36",
11 | "type": "image/png",
12 | "density": "0.75"
13 | },
14 | {
15 | "src": "assets/favicon/android-icon-48x48.png",
16 | "sizes": "48x48",
17 | "type": "image/png",
18 | "density": "1.0"
19 | },
20 | {
21 | "src": "assets/favicon/android-icon-72x72.png",
22 | "sizes": "72x72",
23 | "type": "image/png",
24 | "density": "1.5"
25 | },
26 | {
27 | "src": "assets/favicon/android-icon-96x96.png",
28 | "sizes": "96x96",
29 | "type": "image/png",
30 | "density": "2.0"
31 | },
32 | {
33 | "src": "assets/favicon/android-icon-144x144.png",
34 | "sizes": "144x144",
35 | "type": "image/png",
36 | "density": "3.0"
37 | },
38 | {
39 | "src": "assets/favicon/android-icon-192x192.png",
40 | "sizes": "192x192",
41 | "type": "image/png",
42 | "density": "4.0"
43 | }
44 | ]
45 | }
46 |
--------------------------------------------------------------------------------
/site/server/news_content/at.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":2,"articles":[{"source":{"id":null,"name":"Science.orf.at"},"author":"ORF.at","title":"Studie: Risiko in Schulen gut zu managen - ORF.at","description":"Das Risiko für Coronavirus-Ausbrüche in Schulen und Kindergärten lässt sich einer Studie aus Australien zufolge mit Maßnahmen wie Kontaktverfolgung gering halten.","url":"https://science.orf.at/stories/3201308/","urlToImage":"https://ibs.orf.at/science?image=https%3A%2F%2Ftubestatic.orf.at%2Fmims%2F2020%2F32%2F84%2Fcrops%2Fw%3D1200%2Ch%3D627%2Cq%3D75%2F641998_master_220784_themenbild_schulbeginn_fuer_volksschulen_ahs-unterstufen_neue_mittelschulen_nms_und_sonderschulen_nach_corona-sperre_.jpg%3Fs%3Da547bd3b47d10fad212d645dfdc4fccab66adda5","publishedAt":"2020-08-04T08:26:25Z","content":"Obwohl mit dem Virus infizierte Lehrerinnen, Betreuer und Kinder ihre jeweilige Einrichtung aufgesucht hätten, als sie bereits infektiös waren, seien dort nur wenige weitere Menschen infiziert worden… [+2105 chars]"},{"source":{"id":null,"name":"K.at"},"author":"Agenturen","title":"Coronavirus: ForscherInnen identifizierten Ziel für Arzneimittel - k.at","description":"WissenschafterInnen der Goethe-Universität Frankfurt haben ein mögliches Ziel für neue Anti-SARS-CoV-2-Medikamente entdeckt.","url":"https://k.at/news/coronavirus-forscher-identifizierten-ziel-fuer-arzneimittel/400989710","urlToImage":"https://image.k.at/images/facebook/4556042/81670356455784384_BLD_Online.jpg","publishedAt":"2020-08-03T14:46:44Z","content":null}]}
--------------------------------------------------------------------------------
/site/server/news.php:
--------------------------------------------------------------------------------
1 | $sec_in_day) {
30 | $url = 'https://newsapi.org/v2/top-headlines?country=' . $country . '&q=coronavirus&apiKey=' . $newsAPIKey;
31 | $resp = file_get_contents($url);
32 | if(!$resp) {
33 | echo 'Bad Request';
34 | } else {
35 | file_put_contents('news_content/' . $country . '.json', $resp);
36 | echo $resp;
37 | }
38 | } else {
39 | echo "Only update cache once a day at maximum.";
40 | }
41 | }
42 | } else {
43 | echo 'Bad Request';
44 | }
45 |
46 | ?>
--------------------------------------------------------------------------------
/site/server/news_content/mx.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":2,"articles":[{"source":{"id":null,"name":"El Universal"},"author":null,"title":"Coronavirus 4 de agosto. Suman casi 450 mil casos de Covid en México; hay 48 mil muertes | El Universal - El Universal","description":"Sigue aquí la transmisión completa de la conferencia sobre casos de coronavirus en México, desde Palacio Nacional","url":"https://www.eluniversal.com.mx/nacion/sociedad/coronavirus-4-de-agosto-suman-casi-450-mil-casos-de-covid-en-mexico-hay-48-mil","urlToImage":"https://www.eluniversal.com.mx/sites/default/files/2020/08/04/cmx.jpg","publishedAt":"2020-08-05T00:06:17Z","content":"México sumó, al corte de este 4 de agosto, 48 mil 869 muertes por Covid-19, con 449 mil 961 casos de contagios confirmados de coronavirus, según informaron autoridades de la Secretaría de Salud.\r\nJos… [+832 chars]"},{"source":{"id":null,"name":"Publimetro.com.mx"},"author":"Publisport","title":"El español Rafael Nadal no participará en el US Open - Publimetro México","description":"El tenista español, Rafael Nadal, anunció este martes que no participará en US Open debido a la situación que se está viviendo por el coronavirus","url":"https://www.publimetro.com.mx/mx/deportes/2020/08/04/rafael-nadal-no-participara-us-open.html","urlToImage":"https://media.metrolatam.com/2020/08/04/gettyimages11987-6e08b2f5b3d01973a25b10f65de21dc0-1200x800.jpg","publishedAt":"2020-08-04T18:33:00Z","content":"El tenista español, Rafael Nadal, anunció este martes que no participará en US Open debido a la situación que se está viviendo en Estados Unidos y en todo el mundo con la pandemia del coronavirus.\r\nM… [+1734 chars]"}]}
--------------------------------------------------------------------------------
/site/server/news_content/ch.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":2,"articles":[{"source":{"id":null,"name":"20 Minuten"},"author":"SDA","title":"Ab Mittwoch: Belgien streicht Waadt und Wallis von der Risikoliste - 20 Minuten","description":"Belgien passt seine Coronavirus-Risikoliste an. Genf bleibt weiterhin darauf.","url":"https://www.20min.ch/story/waadt-und-wallis-ab-mittwoch-nicht-mehr-auf-belgischer-risiko-liste-663333915276","urlToImage":"https://cdn.unitycms.io/image/ocroped/1200,1200,1000,1000,0,0/4DnxshwmY-w/67iWi132q-R9ohP3914Et6.jpg","publishedAt":"2020-08-04T17:34:56Z","content":"Belgien passt seine Coronavirus-Risikoliste an. Genf bleibt weiterhin darauf. \r\n1 / 8Drei Kantone waren auf der belgischen Roten Liste: Waadt, Wallis und Genf. \r\nKEYSTONE\r\nNun wurde die Liste wieder … [+1704 chars]"},{"source":{"id":null,"name":"Tagesanzeiger.ch"},"author":"Werner Bartens","title":"Coronavirus-Spätfolgen – Selbst milde Covid-19-Verläufe können Spuren am Herzen hinterlassen - Tages-Anzeiger","description":"Auch nach einer überstandenen Corona-Infektion bleibt der Herzmuskel oft entzündet. Viele Patienten klagen zudem noch Monate später über Atemnot und Müdigkeit.","url":"https://www.tagesanzeiger.ch/selbst-milde-covid-19-verlaeufe-koennen-spuren-am-herzen-hinterlassen-462013726331","urlToImage":"https://cdn.unitycms.io/image/ocroped/1200,1200,1000,1000,0,0/9ex80b9i770/EUvPgjG9KUS8Bez4EnKHQQ.jpg","publishedAt":"2020-08-03T19:34:00Z","content":"Publiziert: 03.08.2020, 21:34\r\nPatient bei der Corona-Nachsorge in Italien. Auch nach einer überstandenen Infektion klagen viele Betroffene über Müdigkeit oder Schwierigkeiten beim Atmen.\r\nFoto: Marc… [+3673 chars]"}]}
--------------------------------------------------------------------------------
/site/server/get_live_updates.php:
--------------------------------------------------------------------------------
1 | $sec_in_day ) {
20 | $respJSON = json_decode($resp, true);
21 |
22 | $latestVidId = "";
23 |
24 | foreach ($respJSON['items'] as $idx => $item) {
25 | $itemtitle = strtolower($item['snippet']['title']);
26 | // not great identification for a press conference, but totally fine if it displays another one of WHOs videos
27 | // currently the WHO doesn't seem to be totally consistent in how they are showing their press briefings, on YouTube and on their website, so this is adequate for now
28 | if(contains('briefing', $itemtitle) || contains('press', $itemtitle) || contains('conference', $itemtitle)) {
29 | $latestVidId = $item['id']['videoId'];
30 | break;
31 | }
32 | }
33 |
34 | if(strlen($latestVidId) > 0) {
35 | file_put_contents("live_updates_data.js", "const liveVideoURL = 'https://www.youtube.com/embed/" . $latestVidId . "';");
36 | echo "Success: " . $latestVidId;
37 | } else {
38 | echo "Latest press video not found";
39 | }
40 | } else {
41 | echo "Only update once a day at maximum.";
42 | }
43 | }
44 | ?>
45 |
--------------------------------------------------------------------------------
/site/server/news_content/se.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":2,"articles":[{"source":{"id":null,"name":"Aftonbladet.se"},"author":"TT","title":"Uppmärksammad antikroppsstudie anmäld - Aftonbladet","description":"Forskare vid Uppsala universitet provtog, utan etiskt tillstånd, drygt 450 personer för antikroppar mot coronaviruset i en uppmärksammad pilotstudie. Ärendet har plockats upp av åklagare – men studien var aldrig menad för publikation enligt forskarna, skriver…","url":"https://www.aftonbladet.se/nyheter/a/0nMAzg/uppmarksammad-antikroppsstudie-anmald","urlToImage":"https://imgs.aftonbladet-cdn.se/v2/images/e536973a-b745-4ba7-933b-8905991a28ff?fit=crop&h=1243&q=50&w=1900&s=c26b998b0db06c87e37eb41adb723e06c0ab1284","publishedAt":"2020-08-04T20:26:00Z","content":"Av: TT\r\nPublicerad: 04 augusti 2020 kl. 22.26\r\nForskare vid Uppsala universitet provtog, utan etiskt tillstånd, drygt 450 personer för antikroppar mot coronaviruset i en uppmärksammad pilotstudie.\r\nÄ… [+1402 chars]"},{"source":{"id":"svenska-dagbladet","name":"Svenska Dagbladet"},"author":"Johan Carlström","title":"Kronans utveckling hänger på andra coronavåg | Johan Carlström - Svenska Dagbladet","description":"ANALYS. Kronfesten kan mycket väl fortsätta. Mycket hänger på vad som händer på börsen och hur väl länder lyckas stoppa coronavirusets framfart.","url":"https://www.svd.se/kronans-framtid-hanger-pa-andra-virusvag","urlToImage":"https://svd.vgc.no/v2/images/dd215af0-a9e3-44cf-9506-971abab06bc7?h=630&q=80&upscale=true&w=1200&s=5a10702e26821b167ac516a0c4bb865457d0b382","publishedAt":"2020-08-04T18:03:56Z","content":"Kronan har gått otroligtstarkt under coronakrisen. Efter ett stort tapp under krisens inledningsfas har den svenska valutan återhämtat sig med råge och handlas i dag betydligt starkare än innan krise… [+180 chars]"}]}
--------------------------------------------------------------------------------
/site/server/news_content/ve.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":2,"articles":[{"source":{"id":null,"name":"Elfildeo.com"},"author":"https://www.facebook.com/alejandra.gonzalezcen","title":"Crisis en los Cardenales: Yadier Molina anuncia que dio positivo por Coronavirus (Covid-19) - El Fildeo","description":"El receptor de los Cardenales de San Luis Yadier Molina anunció a través de su cuenta de Instagram que dio positivo por Coronavirus (Covid-19) en la temporada 2020 de MLB","url":"https://elfildeo.com/mlb/yadier-molina-positivo-coronavirus-covid-cardenales-ultimas-noticias/114514/2020/","urlToImage":"https://i0.wp.com/elfildeo.com/wp-content/uploads/2020/08/Yadier-Molina-Cardneales-de-San-Luis.jpg?fit=1200%2C800&ssl=1","publishedAt":"2020-08-04T16:27:00Z","content":"El receptor de los Cardenales de San Luis Yadier Molina anunció a través de su cuenta de Instagram que dio positivo por Coronavirus (Covid-19) en la temporada 2020 de MLB.\r\nYadier Molina es uno de lo… [+1742 chars]"},{"source":{"id":"cnn","name":"CNN"},"author":null,"title":"Nicolás Maduro tilda de «imbéciles» a los que dudan de la voz de Diosdado Cabello en enlace telefónico - CNN","description":"Maduro sostuvo una reunión por videoconferencia televisada, este lunes, con la dirección nacional del Partido Socialista Unido de Venezuela (PSUV). Cabello, quien tiene coronavirus, “no se pudo con…","url":"https://cnnespanol.cnn.com/2020/08/04/nicolas-maduro-tilda-de-imbeciles-a-los-que-dudan-de-que-era-la-voz-de-diosdado-cabello-en-enlace-telefonico/","urlToImage":"https://cnnespanol.cnn.com/wp-content/uploads/2019/08/190822142335-cnnee-diosdado-cabello-full-169.jpg?quality=100&strip=info","publishedAt":"2020-08-04T10:22:00Z","content":"(CNN Español) — El cuestionado presidente de Venezuela, Nicolás Maduro, calificó de «imbéciles» a quienes duden de la voz de Diosdado Cabello, tras un enlace telefónico atribuido al presidente de la … [+1399 chars]"}]}
--------------------------------------------------------------------------------
/site/assets/js/current_cases.js:
--------------------------------------------------------------------------------
1 | // elm vars
2 | const currentCaseCountElm = document.querySelector('.panel.current-cases .case-count');
3 | const deathsCountElm = document.querySelector('.panel.stats .deaths span');
4 | const recoveriesCountElm = document.querySelector('.panel.stats .recoveries span');
5 | const activeCountElm = document.querySelector('.panel.stats .active span');
6 | const currentCaseCountLastUpdatedElm = document.querySelector('.panel.current-cases .last-updated');
7 |
8 | // set current case count and last updated
9 | (() => {
10 | // current case count
11 | const numberParts = numberWithCommas(parseInt(totalCurrentCases)).split(',');
12 | let finalCurrentCaseCountHTML = '';
13 |
14 | numberParts.forEach((part, ind) => {
15 | finalCurrentCaseCountHTML += `${part}`;
16 | if (ind < numberParts.length - 1) {
17 | finalCurrentCaseCountHTML += ',';
18 | }
19 | });
20 |
21 | currentCaseCountElm.innerHTML = finalCurrentCaseCountHTML;
22 |
23 | // last updated
24 | currentCaseCountLastUpdatedElm.innerText = 'Updated ' + moment(totalCurrentCasesLastUpdated).fromNow();
25 |
26 | // deaths and recoveries
27 | deathsCountElm.innerHTML = `${numberWithCommas(parseInt(totalDeaths))} (${Math.floor(
28 | (parseInt(totalDeaths) / parseInt(totalCurrentCases)) * 100
29 | ).toString()}%)`;
30 | recoveriesCountElm.innerHTML = `${numberWithCommas(parseInt(totalRecoveries))} (${Math.floor(
31 | (parseInt(totalRecoveries) / parseInt(totalCurrentCases)) * 100
32 | ).toString()}%)`;
33 |
34 | const totalActive = parseInt(totalCurrentCases) - parseInt(totalRecoveries) - parseInt(totalDeaths);
35 | activeCountElm.innerHTML = `${numberWithCommas(totalActive)} (${Math.floor(
36 | (totalActive / parseInt(totalCurrentCases)) * 100
37 | ).toString()}%)`;
38 | })();
39 |
40 | window.addEventListener('load', () => {
41 | fitty(currentCaseCountElm);
42 | });
43 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | Your new hub for news, information, and latest updates about the Coronavirus (COVID-19) outbreak.
11 |
12 | 
13 |
14 | ## Tech Stack
15 |
16 | - HTML, CSS, and Javascript (ES6) — Public Site
17 | - PHP — Public Routes to Update Cases (includes web scraping for cases) and Press Video Data
18 | - Node.js/Express.js — Local web server to scrape W.H.O. site for latest press video
19 | - Python — Cronjobs to request PHP servers and local servers
20 |
21 | ## Third Party Software Used
22 |
23 | - Various NPM packages including Express.js, Puppeteer, and more
24 | - Various Python/PyPi modules including requests, scheduler, and more
25 | - [NewsAPI](https://newsapi.org/) for fetching latest news
26 | - [Moment.js](https://momentjs.com/) for displaying dates and times nicely
27 |
28 | ## File Structure
29 |
30 | - `cronjobs` — Python programs to create services that run periodically to update data for the site.
31 | - `scrapers` — Web scrapers to scrape third-party sites for data.
32 | - `site` — The main frontend site written in plain HTML, CSS, and JavaScript.
33 | - `site/server` — Files which run on the server to update public data for the frontend site. These files are then called/requested by the cronjobs.
34 |
35 | ## License and Credits
36 |
37 | Coronavirus Live Monitor was built solely by web developer and student [Gabriel Romualdo](https://xtrp.io/).
38 |
39 | The code is completely OSS and is MIT Licensed. See LICENSE.txt for details.
40 |
--------------------------------------------------------------------------------
/site/server/news_content/gb.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":3,"articles":[{"source":{"id":"bbc-news","name":"BBC News"},"author":"https://www.facebook.com/bbcnews","title":"Coronavirus: Are people in Manchester respecting the new restrictions? - BBC News","description":"People in Manchester react to new lockdown laws which make it illegal to visit each other's homes.","url":"https://www.bbc.co.uk/news/uk-england-manchester-53648368","urlToImage":"https://ichef.bbci.co.uk/news/1024/branded_news/AD3E/production/_113805344_hi062764318.jpg","publishedAt":"2020-08-04T23:06:18Z","content":"Image copyrightReutersImage caption\r\n Greater Manchester residents can be fined £100 rising to a maximum of £3,200 for flouting the rules\r\nIt has been five days since lockdown measures were tightened… [+5346 chars]"},{"source":{"id":null,"name":"The Guardian"},"author":"Jamie Grierson","title":"Lack of special border measures before UK coronavirus lockdown was 'serious mistake' - The Guardian","description":"Thousands of infections were brought to UK in 10 days prior to lockdown, MPs say","url":"https://www.theguardian.com/politics/2020/aug/05/lack-of-special-border-measures-before-uk-coronavirus-lockdown-was-serious-mistake","urlToImage":"https://i.guim.co.uk/img/media/948c9c95c705dfe89738ec4ada3ef987fd13a312/0_342_5315_3189/master/5315.jpg?width=1200&height=630&quality=85&auto=format&fit=crop&overlay-align=bottom%2Cleft&overlay-width=100p&overlay-base64=L2ltZy9zdGF0aWMvb3ZlcmxheXMvdGctZGVmYXVsdC5wbmc&enable=upscale&s=64f0046f43c62eb4312ccf3b565baceb","publishedAt":"2020-08-04T23:01:00Z","content":null},{"source":{"id":null,"name":"Mirror Online"},"author":"Joseph Wilkes","title":"UK coronavirus death toll rises by 89 in 25% drop on same day last week - Mirror Online","description":"The latest Department of Health figures have come out this afternoon and show the coronavirus death toll is now at 46,299 in all settings across the UK","url":"https://www.mirror.co.uk/news/uk-news/breaking-uk-coronavirus-death-toll-22468257","urlToImage":"https://i2-prod.mirror.co.uk/incoming/article22468337.ece/ALTERNATES/s1200/0_How-Royal-Papworth-Hospital-Adapted-To-Battle-A-Pandemic.jpg","publishedAt":"2020-08-04T17:14:00Z","content":"The UK's official coronavirus death toll has risen by 89 in the last 24 hours, the latest figures reveal. \r\nThis is a 25% drop from the same time last week - when 119 deaths were reported. \r\nA total … [+2788 chars]"}]}
--------------------------------------------------------------------------------
/site/server/news_content/ng.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":3,"articles":[{"source":{"id":null,"name":"CNET"},"author":"Katie Conner","title":"How to vacation safely this summer during the coronavirus - CNET","description":"Keep these nine straightforward rules in mind if you're planning a getaway.","url":"https://www.cnet.com/health/how-to-vacation-safely-this-summer-during-the-coronavirus/","urlToImage":"https://cnet3.cbsistatic.com/img/g3aWWiy3IjP5ZCUXnZOhsogfD4w=/267x770:4608x3456/756x567/2017/12/09/96ea85b4-e89c-4671-857b-a4eab4f3ede9/dscn0135.jpg","publishedAt":"2020-08-04T22:15:03Z","content":"Be safe while vacationing during the pandemic.\r\nEric Mack/CNET\r\nFor the most up-to-date news and information about the coronavirus pandemic, visit the WHO website.\r\nThe continuing surge of COVID-19 a… [+7265 chars]"},{"source":{"id":null,"name":"P.M. News"},"author":null,"title":"JUST IN: Bristow Helicopters sacks 100 pilots, engineers - P.M. News","description":"Bristow Helicopters has sacked 100 pilots and engineers following negative impact of Coronavirus on its business and the nation’s economy.","url":"https://www.pmnewsnigeria.com/2020/08/04/just-in-bristow-helicopters-sacks-100-pilots-engineers/","urlToImage":"https://i1.wp.com/www.pmnewsnigeria.com/wp-content/uploads/2020/08/Bristow-Helicopters.jpg?fit=650%2C350&ssl=1","publishedAt":"2020-08-04T17:56:24Z","content":"Bristow Helicopters\r\nBristow Helicopters has sacked 100 pilots and engineers following negative impact of Coronavirus on its business and the nations economy.\r\nThe company, in a statement on Tuesday … [+1511 chars]"},{"source":{"id":null,"name":"Naija247news.com"},"author":"Bisola Akinlabi","title":"Group kick against the exclusion of HIV-infected people from COVID-19 vaccine trial - Naija247news","description":"As large trials get underway to test the vaccines needed to stop the global coronavirus pandemic, one group has realized it is being left out and is not happy: people living with HIV. Several compa…","url":"https://naija247news.com/2020/08/03/group-kick-against-the-exclusion-of-hiv-infected-people-from-covid-19-vaccine-trial/","urlToImage":"https://i1.wp.com/naija247news.com/wp-content/uploads/2018/12/cropped-InstaLogo.jpg?fit=512%2C512&ssl=1","publishedAt":"2020-08-03T08:59:58Z","content":"As large trials get underway to test the vaccines needed to stop the global coronavirus pandemic, one group has realized it is being left out and is not happy: people living with HIV.\r\nSeveral compan… [+4663 chars]"}]}
--------------------------------------------------------------------------------
/site/server/news_content/co.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":3,"articles":[{"source":{"id":null,"name":"Portafolio.co"},"author":"Casa Editorial El Tiempo","title":"Autoridades entregan nuevo informe sobre coronavirus en el país - Portafolio.co","description":"En el país hay 142.716 casos activos. Hoy se reportaron 298 nuevas muertes por la enfermedad. | Economía | Portafolio.co","url":"https://www.portafolio.co/economia/casos-contagios-coronavirus-en-colombia-hoy-martes-4-de-agosto-de-2020-543354","urlToImage":"http://www.portafolio.co/files/article_content/uploads/2020/08/04/5f29ce0ccd6b3.jpeg","publishedAt":"2020-08-04T22:10:53Z","content":"El Ministerio de Salud y el Instituto Nacional de Salud confirmaron este martes otros 7.129 casos de coronavirus en el país, tras procesar 37.978 pruebas, con lo cual aumenta a 334.979 el número de p… [+1274 chars]"},{"source":{"id":null,"name":"Vanguardia.com"},"author":null,"title":"OMS no es tan optimista con la vacuna del coronavirus - Vanguardia","description":"La investigación de vacunas contra la COVID-19, que en algunos laboratorios de todo el mundo se halla ya en las últimas fases de pruebas es esperanzadora, pero “puede que nunca haya una panacea contra esta pandemia”, advirtió ayer el máximo responsable de la …","url":"https://www.vanguardia.com/mundo/oms-no-es-tan-optimista-con-la-vacuna-del-coronavirus-JM2709182","urlToImage":"https://www.vanguardia.com/binrepository/1200x800/0c86/1200d628/upper-right/12204/BXQB/c9e95827efbf038f0b0969f10113541505701dce_4684894_20200803171326.jpg","publishedAt":"2020-08-04T05:04:15Z","content":"La investigación de vacunas contra la COVID-19, que en algunos laboratorios de todo el mundo se halla ya en las últimas fases de pruebas es esperanzadora, pero puede que nunca haya una panacea contra… [+2308 chars]"},{"source":{"id":null,"name":"Laopinion.com.co"},"author":"Diario la Opinión","title":"Los cinco países en la carrera por la vacuna contra el coronavirus - La Opinión Cúcuta","description":"Se están desarrollando 149 vacunas experimentales para combatir la enfermedad.","url":"https://www.laopinion.com.co/mundo/los-cinco-paises-en-la-carrera-por-la-vacuna-contra-el-coronavirus-200527","urlToImage":"https://www.laopinion.com.co/sites/default/files/2020/08/03/imagen/vacuna.jpg","publishedAt":"2020-08-03T21:00:00Z","content":"Muchos laboratorios a nivel internacional han empezado a desarrollar la vacuna que ayudará a combatir el coronavirus.\r\nAntes de profundizar un poco el tema de vacunas, vale recordar de qué trata esta… [+2749 chars]"}]}
--------------------------------------------------------------------------------
/site/server/news_content/ca.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":3,"articles":[{"source":{"id":"cbc-news","name":"CBC News"},"author":null,"title":"Bianca Andreescu will defend U.S. Open title, Rafael Nadal out due to pandemic - CBC.ca","description":"Canada's Bianca Andreescu will defend her women's title at the U.S. Open, but defending men's champion Rafael Nadal said Tuesday he will skip it due to the coronavirus pandemic.","url":"https://www.cbc.ca/sports/tennis/rafael-nadal-us-open-withdrawal-1.5673945","urlToImage":"https://i.cbc.ca/1.5673958.1596566621!/fileImage/httpImage/image.jpg_gen/derivatives/16x9_620/1166624849.jpg","publishedAt":"2020-08-04T19:23:00Z","content":"Bianca Andreescu, the first Canadian to win a Grand Slam singles championship, will defend her women's title at the U.S. Open, but defending men's champion Rafael Nadal said Tuesday he will skip it d… [+1664 chars]"},{"source":{"id":"cbc-news","name":"CBC News"},"author":null,"title":"Lord & Taylor files for bankruptcy protection, plans to close all 38 stores - CBC.ca","description":"Venerable U.S. retailer Lord & Taylor filed for Chapter 11 bankruptcy on Sunday, becoming the latest in a growing list of storied names to do so amid the ongoing coronavirus outbreak that has crippled the retail sector.","url":"https://www.cbc.ca/news/business/lord-taylor-bankruptcy-1.5673825","urlToImage":"https://i.cbc.ca/1.5124275.1596563705!/cpImage/httpImage/image.jpg_gen/derivatives/16x9_620/lord-taylor-flagship.jpg","publishedAt":"2020-08-04T17:57:00Z","content":"Venerable U.S. retailer Lord & Taylor filed for Chapter 11 bankruptcy on Sunday, becoming the latest in a growing list of storied names to do so amid the ongoing coronavirus outbreak that has cri… [+1666 chars]"},{"source":{"id":null,"name":"Global News"},"author":"Staff","title":"Wuhan scientists interviewed over coronavirus origins, WHO says - Global News","description":"A World Health Organization team in China to probe the origins of COVID-19 had \"extensive discussions\" and exchanges with scientists in Wuhan.","url":"https://globalnews.ca/news/7248879/coronavirus-who-wuhan-scientists-interviewed/","urlToImage":"https://globalnews.ca/wp-content/uploads/2020/08/2020-07-30T164438Z_2111495434_RC2S3I9TPAYB_RTRMADP_3_HEALTH-CORONAVIRUS-WHO.jpg?quality=85&strip=all&w=720&h=379&crop=1","publishedAt":"2020-08-04T11:13:36Z","content":"A World Health Organization team in China to probe the origins of COVID-19 had “extensive discussions” and exchanges with scientists in Wuhan where the outbreak was first detected, a spokesman said o… [+2384 chars]"}]}
--------------------------------------------------------------------------------
/site/assets/css/parts/latest-news.css:
--------------------------------------------------------------------------------
1 | .panel.latest-news {
2 | max-height: calc(100vh - 8.25rem);
3 | overflow-y: auto;
4 | position: relative;
5 | padding-top: 0;
6 | }
7 |
8 | @media only screen and (max-width: 1050px) {
9 | .panel.latest-news {
10 | max-height: none;
11 | overflow-y: hidden;
12 | }
13 | }
14 |
15 | .panel.latest-news > .top {
16 | position: sticky;
17 | top: 0;
18 | background-color: var(--dark-color);
19 | padding-top: 1rem;
20 | z-index: 9998;
21 | }
22 | .panel.latest-news .panel-title {
23 | margin-bottom: 0.5rem;
24 | }
25 |
26 | /* select country */
27 | .panel.latest-news .select-country {
28 | height: 1.25rem;
29 | font-size: 0.8rem;
30 | padding-bottom: 1rem;
31 | border-bottom: 1px solid var(--white-color);
32 | }
33 | .panel.latest-news .select-country * {
34 | display: block;
35 | float: left;
36 | height: 1.1rem;
37 | line-height: 1.1rem;
38 | font-size: 0.7rem;
39 | }
40 |
41 | .panel.latest-news .select-country span {
42 | margin-right: 0.5rem;
43 | }
44 |
45 | .panel.latest-news .select-country select {
46 | border: none;
47 | background-color: transparent;
48 | border: 1px solid var(--white-color);
49 | border-radius: 4px;
50 | }
51 |
52 | /* news list */
53 | .panel.latest-news .news-list hr {
54 | border: none;
55 | border-top: 1px solid var(--medium-color);
56 | }
57 | .panel.latest-news .news-list hr:first-child {
58 | display: none;
59 | }
60 | .panel.latest-news .news-list .article {
61 | display: block;
62 | overflow: hidden;
63 | padding: 0.25rem 0;
64 | padding-bottom: 1rem;
65 | text-decoration: none;
66 | opacity: 0.7;
67 | transition: opacity 0.2s;
68 | }
69 | .panel.latest-news .news-list .article:hover {
70 | opacity: 1;
71 | }
72 |
73 | .panel.latest-news .news-list .article .top {
74 | height: 2.5rem;
75 | font-size: 0.9rem;
76 | box-sizing: border-box;
77 | padding: 0.25rem 0;
78 | }
79 | .panel.latest-news .news-list .article .top * {
80 | line-height: 2rem;
81 | display: block;
82 | float: right;
83 | }
84 | .panel.latest-news .news-list .article .top em {
85 | float: left;
86 | opacity: 0.7;
87 | }
88 |
89 | .panel.latest-news .news-list .article .main-picture {
90 | width: 100%;
91 | max-height: 10rem;
92 | object-fit: cover;
93 | border-radius: 4px;
94 | }
95 | @media only screen and (max-width: 1050px) {
96 | .panel.latest-news .news-list .article .main-picture {
97 | max-height: 45vw;
98 | }
99 | }
100 |
101 | .panel.latest-news .news-list .article .title {
102 | line-height: 1.35;
103 | font-size: 1rem;
104 | margin-top: 0.5rem;
105 | font-weight: 600;
106 | }
107 |
--------------------------------------------------------------------------------
/site/assets/css/components/masthead.css:
--------------------------------------------------------------------------------
1 | .row.top {
2 | margin-bottom: 1.75rem;
3 | }
4 | .masthead {
5 | min-height: 4rem;
6 | padding-top: 0;
7 | margin-bottom: 0 !important;
8 | }
9 | .masthead > * {
10 | display: block;
11 | float: left;
12 | margin-top: 1rem;
13 | }
14 |
15 | .masthead .title {
16 | height: 2rem;
17 | line-height: 2rem;
18 | font-size: 1.85rem;
19 | text-transform: uppercase;
20 | font-weight: 300;
21 | letter-spacing: 0.05rem;
22 | }
23 | .masthead .mobile-title {
24 | display: none;
25 | width: 100%;
26 | overflow: hidden;
27 | }
28 |
29 | .masthead > svg {
30 | height: 2rem;
31 | transform: scale(1.2);
32 | width: auto;
33 | margin-left: 0.25rem;
34 | margin-right: 1rem;
35 | fill: var(--theme-color);
36 | }
37 |
38 | /* mobile */
39 | .masthead .mobile-title {
40 | text-align: center;
41 | }
42 | .masthead .mobile-title .text {
43 | vertical-align: top;
44 | display: inline-block;
45 | line-height: 1.5;
46 | text-transform: uppercase;
47 | font-weight: 600;
48 | letter-spacing: 0.05rem;
49 | white-space: normal !important;
50 | }
51 | .masthead .mobile-nav {
52 | display: none;
53 | height: 3.75rem;
54 | width: 100%;
55 | overflow: hidden;
56 | margin-top: 0.5rem;
57 | }
58 | .masthead .mobile-nav button {
59 | border: none;
60 | background-color: transparent;
61 | width: 33.33%;
62 | display: block;
63 | float: left;
64 | height: 3.75rem;
65 | box-sizing: border-box;
66 | padding: 0.375rem 0;
67 | text-align: center;
68 | opacity: 0.7;
69 | border-radius: 3px;
70 | cursor: pointer;
71 | }
72 | .masthead .mobile-nav button:hover {
73 | opacity: 1;
74 | }
75 | .container.calculator-active .masthead .mobile-nav button.calculator,
76 | .container.news-active .masthead .mobile-nav button.news,
77 | .container.cases-about-active .masthead .mobile-nav button.cases-about {
78 | opacity: 1;
79 | background-color: var(--subdark-color);
80 | }
81 | .masthead .mobile-nav button svg {
82 | height: 1.75rem;
83 | width: auto;
84 | margin-bottom: 0.25rem;
85 | }
86 | .masthead .mobile-nav button p.label {
87 | height: 1rem;
88 | line-height: 1rem;
89 | font-size: 0.7rem;
90 | }
91 |
92 | @media only screen and (max-width: 1050px) {
93 | .row.top {
94 | position: sticky;
95 | top: -4px;
96 | z-index: 9999;
97 | }
98 |
99 | .masthead {
100 | border-bottom: 1px solid var(--medium-color);
101 | border-bottom-left-radius: 0;
102 | border-bottom-right-radius: 0;
103 | }
104 |
105 | .masthead .mobile-nav {
106 | display: block;
107 | }
108 |
109 | .masthead > svg {
110 | display: none;
111 | }
112 | .masthead .title {
113 | display: none;
114 | }
115 |
116 | .masthead .mobile-title {
117 | display: block;
118 | }
119 | }
120 |
--------------------------------------------------------------------------------
/site/server/news_content/nl.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":4,"articles":[{"source":{"id":null,"name":"Dpgmedia.net"},"author":null,"title":"Meerdere spelers en werknemers Ajax waren besmet met coronavirus - AD.nl","description":null,"url":"https://myprivacy.dpgmedia.net/?siteKey=V9f6VUvlHxq9wKIN&callbackUrl=https:%2f%2fwww.ad.nl%2fprivacy-gate%2faccept%3fredirectUri%3d%252fnederlands-voetbal%252fmeerdere-spelers-en-werknemers-ajax-waren-besmet-met-coronavirus%257ea05949b0%252f","urlToImage":null,"publishedAt":"2020-08-04T21:25:00Z","content":"AD en Krant.nl maken deel uit van DPG Media. Onze sites gebruiken cookies en vergelijkbare technologieën ('cookies') onder andere om je een optimale gebruikerservaring te bieden. Ook kunnen we hierdo… [+1389 chars]"},{"source":{"id":null,"name":"Dpgmedia.net"},"author":null,"title":"Live – Aandeel jongeren met coronavirus groeit | Den Haag zet meer handhavers en wielklem in op warme dagen - Volkskrant","description":null,"url":"https://myprivacy.dpgmedia.net/?siteKey=PUBX2BuuZfEPJ6vF&callbackUrl=https:%2f%2fwww.volkskrant.nl%2fprivacy-wall%2faccept%3fredirectUri%3d%252fnieuws-achtergrond%252flive-aandeel-jongeren-met-coronavirus-groeit-den-haag-zet-meer-handhavers-en-wielklem-in-op-warme-dagen%257eb1d89f42%252f","urlToImage":null,"publishedAt":"2020-08-04T20:05:00Z","content":"Volkskrant.nl en krant.nl maken deel uit van DPG Media. Onze sites gebruiken cookies en vergelijkbare technologieën (cookies) onder andere om u een optimale gebruikerservaring te bieden. Ook kunnen w… [+1252 chars]"},{"source":{"id":null,"name":"Dpgmedia.net"},"author":null,"title":"Steeds meer jonge mensen met coronavirus: 'Jongeren zijn niet onoverwinnelijk' - AD.nl","description":null,"url":"https://myprivacy.dpgmedia.net/?siteKey=V9f6VUvlHxq9wKIN&callbackUrl=https:%2f%2fwww.ad.nl%2fprivacy-gate%2faccept%3fredirectUri%3d%252fdossier-coronavirus%252fsteeds-meer-jonge-mensen-met-coronavirus-jongeren-zijn-niet-onoverwinnelijk%257ea1b90395f%252f","urlToImage":null,"publishedAt":"2020-08-04T18:58:19Z","content":"AD en Krant.nl maken deel uit van DPG Media. Onze sites gebruiken cookies en vergelijkbare technologieën ('cookies') onder andere om je een optimale gebruikerservaring te bieden. Ook kunnen we hierdo… [+1389 chars]"},{"source":{"id":null,"name":"Www.nu.nl"},"author":"NU.nl","title":"Aantal nieuwe coronabesmettingen bijna verdubbeld naar 2.588 - NU.nl","description":"2.588 personen in Nederland testten in de afgelopen week positief op het coronavirus, zo meldt het Rijksinstituut voor Volksgezondheid en Milieu (RIVM) dinsdag. Dat zijn er 1.259 meer dan de 1.329 positieve testuitslagen die vorige week zijn gemeld, terwijl e…","url":"https://www.nu.nl/coronavirus/6068591/aantal-nieuwe-coronabesmettingen-2588-bijna-verdubbeld-minder-getest.html","urlToImage":"https://media.nu.nl/m/ck7xznqayp8a_wd1280.jpg/aantal-nieuwe-coronabesmettingen-2588-bijna-verdubbeld-minder-getest.jpg","publishedAt":"2020-08-04T12:09:00Z","content":"2.588 personen in Nederland testten in de afgelopen week positief op het coronavirus, zo meldt het Rijksinstituut voor Volksgezondheid en Milieu (RIVM) dinsdag. Dat zijn er 1.259 meer dan de 1.329 po… [+3010 chars]"}]}
--------------------------------------------------------------------------------
/site/server/news_content/za.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":4,"articles":[{"source":{"id":null,"name":"CNET"},"author":"Katie Conner","title":"How to vacation safely this summer during the coronavirus - CNET","description":"Keep these nine straightforward rules in mind if you're planning a getaway.","url":"https://www.cnet.com/health/how-to-vacation-safely-this-summer-during-the-coronavirus/","urlToImage":"https://cnet3.cbsistatic.com/img/g3aWWiy3IjP5ZCUXnZOhsogfD4w=/267x770:4608x3456/756x567/2017/12/09/96ea85b4-e89c-4671-857b-a4eab4f3ede9/dscn0135.jpg","publishedAt":"2020-08-04T22:15:03Z","content":"Be safe while vacationing during the pandemic.\r\nEric Mack/CNET\r\nFor the most up-to-date news and information about the coronavirus pandemic, visit the WHO website.\r\nThe continuing surge of COVID-19 a… [+7265 chars]"},{"source":{"id":null,"name":"EWN"},"author":"Reuters","title":"Oil prices drop on fuel demand worries as coronavirus flares up - EWN","description":"US West Texas Intermediate (WTI) crude futures fell 22 cents, or 0.5% to $40.79 a barrel at 0132 GMT, while Brent crude futures fell 27 cents, or 0.6% to $43.88 a barrel.","url":"https://ewn.co.za/2020/08/04/oil-prices-drop-on-fuel-demand-worries-as-coronavirus-flares-up","urlToImage":"http://cdn.primedia.co.za/primedia-broadcasting/image/upload/c_fill,h_437,w_700/ftjfuzs593tkirgezp48","publishedAt":"2020-08-04T04:50:19Z","content":"US West Texas Intermediate (WTI) crude futures fell 22 cents, or 0.5% to $40.79 a barrel at 0132 GMT, while Brent crude futures fell 27 cents, or 0.6% to $43.88 a barrel.\r\n MELBOURNE Oil prices fell … [+2161 chars]"},{"source":{"id":null,"name":"Businesstech.co.za"},"author":"https://www.facebook.com/BusinessTechSA","title":"516,862 confirmed coronavirus cases in South Africa as deaths climb to 8,539 - BusinessTech","description":"Health minister Dr Zweli Mkhize has announced that there are now a total of 516,862 cases of coronavirus in South Africa.","url":"https://businesstech.co.za/news/trending/422244/516862-confirmed-coronavirus-cases-in-south-africa-as-deaths-climb-to-8539/","urlToImage":"https://businesstech.co.za/news/wp-content/uploads/2020/05/Covid-19-e1589870469837.png","publishedAt":"2020-08-03T20:04:10Z","content":"Health minister Dr Zweli Mkhize has announced that there are now a total of 516,862 cases of coronavirus in South Africa.\r\nThis is an increase of 5,377 cases from the 511,485 infections reported prev… [+2203 chars]"},{"source":{"id":"news24","name":"News24"},"author":"","title":"'Pathetic!' - Trump lashes out at virus coordinator - News24","description":"President Donald Trump has lashed out at his coronavirus response coordinator Deborah Birx after she sounded a grim warning about the pandemic's new surge, calling her remarks \"pathetic.\"","url":"https://www.news24.com/news24/world/news/pathetic-trump-lashes-out-at-virus-coordinator-20200803","urlToImage":"https://cdn.24.co.za/files/Cms/General/d/10352/d1c47c32fcb348fbb282e13c29594c83.jpg","publishedAt":"2020-08-03T16:01:45Z","content":"
Coronavirus coordinator Deborah Birx warned about the pandemic's new surge, telling CNN the US is entering a new phase of viral speed.
US President Donald Trumped lashed out at her sa… [+2506 chars]"}]}
--------------------------------------------------------------------------------
/site/server/news_content/ie.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":4,"articles":[{"source":{"id":null,"name":"Offaly Express"},"author":"Justin Kelly","title":"New Offaly coronavirus outbreak confirmed as workplace shuts down - Offaly Express","description":"The source of Offaly's most recent coronavirus outbreak has been confirmed at Carroll Cuisine meat factory in Tullamore. Offaly had gone through July with just four new confirmed cases but last weekend, nine new cases were confirmed countywide. Seven of these…","url":"https://www.offalyexpress.ie/news/home/563889/new-offaly-coronavirus-outbreak-confirmed-as-workplace-shuts-down.html","urlToImage":"https://www.offalyexpress.ie/resizer/600/315/true/1596576384802.jpg--new_offaly_coronavirus_outbreak_confirmed_as_workplace_shuts_down.jpg?1596576384000","publishedAt":"2020-08-04T21:39:41Z","content":"The source of Offaly's most recent coronavirus outbreak has been confirmed at Carroll Cuisine meat factory in Tullamore.\r\nOffaly had gone through July with just four new confirmed cases but last week… [+1493 chars]"},{"source":{"id":null,"name":"Irish Mirror"},"author":"Brynmor Pattison","title":"Coronavirus Ireland cases update as 45 more confirmed with no further deaths - Irish Mirror","description":"The latest statement from the National Public Health Emergency Team (NPHET) is in","url":"https://www.irishmirror.ie/news/irish-news/health-news/coronavirus-ireland-cases-update-45-22468613","urlToImage":"https://i2-prod.irishmirror.ie/incoming/article22468668.ece/ALTERNATES/s1200/0_JS216398332.jpg","publishedAt":"2020-08-04T16:31:00Z","content":"There have been 45 more coronavirus cases confirmed in Ireland, with no further deaths.\r\nThe latest statement from the National Public Health Emergency Team (NPHET) is in.\r\nThe update brings the tota… [+2098 chars]"},{"source":{"id":"rte","name":"RTE"},"author":"RTÉ News","title":"Cabinet meet to discuss recommendations on Phase 4 - RTE.ie","description":"All the latest updates as Government meets to discuss recommendations from the National Public Health Emergency Team on Phase 4 of the easing of coronavirus restrictions.","url":"https://www.rte.ie/news/2020/0804/1157298-live-tracker-gov-phase-four/","urlToImage":"https://img.rasset.ie/0014ee6b-1600.jpg","publishedAt":"2020-08-04T14:44:30Z","content":"RTÉ.ie is the website of Raidió Teilifís Éireann, Ireland's National Public Service Broadcaster.RTÉ is not responsible for the content of external internet sites. Images courtesy of Sportsfile and Ge… [+21 chars]"},{"source":{"id":null,"name":"Irish Mirror"},"author":"Edel Hughes","title":"Coronavirus Ireland: Fourth day in a row without any deaths but Kildare sees one-third of all new infections - Irish Mirror","description":"The number of cases confirmed in the past week is double that recorded in the previous seven days","url":"https://www.irishmirror.ie/news/irish-news/health-news/coronavirus-ireland-latest-cases-breakdown-22463367","urlToImage":"https://i2-prod.mirror.co.uk/incoming/article22329152.ece/ALTERNATES/s1200/0_Live-samples-are-held-in-a-container-during-the-opening-of-the-new-Covid-19-testing-lab.jpg","publishedAt":"2020-08-03T18:23:00Z","content":"Another 46 cases of Covid-19 were confirmed in Ireland on Monday with no new deaths.\r\nIt's the fourth day in a row without a virus-related death being recorded.\r\nBut the number of cases confirmed in … [+2410 chars]"}]}
--------------------------------------------------------------------------------
/site/server/news_content/it.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":5,"articles":[{"source":{"id":null,"name":"Lanazione.it"},"author":"La Nazione","title":"Coronavirus, il nuovo focolaio scoperto per caso: mamma, papà e tre bambini contagiati - LA NAZIONE","description":"Prato, cinque i positivi. La positività emersa per gli esami a uno dei componenti, che doveva essere ricoverato in ospedale per altri motivi","url":"https://www.lanazione.it/prato/cronaca/coronavirus-prato-1.5385213","urlToImage":"https://immagini.quotidiano.net/?url=http%3A%2F%2Fp1014p.quotidiano.net%3A80%2Fpolopoly_fs%2F1.5057090.1585181083%21%2FhttpImage%2Fimage.jpg_gen%2Fderivatives%2Fwidescreen%2Fimage.jpg&w=700&h=391","publishedAt":"2020-08-04T17:25:00Z","content":"Prato, 4 agosto 2020 - Un nuovo focolaio di coronavirus scoperto quasi per caso. Scoperto cioé durante alcuni esami medici per altre motivazioni. Stavolta accade a Prato. Quattro i positivi individua… [+681 chars]"},{"source":{"id":null,"name":"Tg24.sky.it"},"author":"Redazione Sky TG24","title":"Coronavirus, l'estate dopo il lockdown: le regole regione per regione. FOTO - Sky Tg24 ","description":"Leggi su Sky TG24 l'articolo Coronavirus, l'estate dopo il lockdown: le regole regione per regione. FOTO","url":"https://tg24.sky.it/cronaca/2020/08/04/covid-regioni-regole-estate","urlToImage":"https://static.sky.it/images/skytg24/it/cronaca/2020/08/04/covid-regioni-regole-estate/hero_covid_regioni_getty.jpg","publishedAt":"2020-08-04T16:04:31Z","content":"L'isolamento e la sorveglianza sanitaria riguardano anche chi arriva da Regno Unito, Irlanda del Nord, Andorra, Principato di Monaco, Repubblica di San Marino, Città del Vaticano"},{"source":{"id":null,"name":"Fanpage.it"},"author":"Alessia Rabbai","title":"Nel Lazio positiva una famiglia tornata dalle vacanze in Puglia - Fanpage.it","description":"Sono rientrate nel Lazio in auto dopo una vacanza in Puglia le sei persone risultate positive al coronavirus, unite tra loro da un collegamento famigliare. La Regione ha reso noto che è partita l'indagine epidemiologica per risalire ai loro contatti e sottopo…","url":"https://www.fanpage.it/roma/nel-lazio-positive-sei-persone-tornate-dalle-vancanze-in-puglia/","urlToImage":"https://static.fanpage.it/wp-content/uploads/sites/2/2020/06/test-sierologici-san-raffaele-pisana.jpg","publishedAt":"2020-08-04T15:52:54Z","content":"Sei persone tra i diciassette casi accertati oggi positive al coronavirus sono rientrate nel Lazio dopo una vacanza in Puglia. A renderlo noto la Regione, al termine della consueta task force tra ass… [+1764 chars]"},{"source":{"id":null,"name":"Ilgiorno.it"},"author":"Il Giorno","title":"Coronavirus Lombardia, 44 nuovi casi e un morto. Due province a zero contagi - IL GIORNO","description":"Tra le province lombarde solo Milano mantiene nuovi contagi a due cifre. Aumentano guariti e dimessi","url":"https://www.ilgiorno.it/cronaca/coronavirus-lombardia-1.5385011","urlToImage":"https://immagini.quotidiano.net/?url=http%3A%2F%2Fp1014p.quotidiano.net%3A80%2Fpolopoly_fs%2F1.5092262.1596551973%21%2FhttpImage%2Fimage.jpg_gen%2Fderivatives%2Fwidescreen%2Fimage.jpg&w=700&h=391","publishedAt":"2020-08-04T15:06:49Z","content":"Milano, 4 agosto 2020 - L'altalena dei nuovi contagi da Cronavirus in Lombardia fa registrare 44 nuovi positivi nelle ultime 24 ore (con un lievena aumento risoetti a ieri, quando erano +25), a segu… [+2387 chars]"},{"source":{"id":null,"name":"Liberoquotidiano.it"},"author":"@libero_official","title":"Coronavirus, Pier Luigi Lopalco fa marcia indietro sui contagi: \"Fatico ad ammetterlo, mi ero sbagliato\" - Liberoquotidiano.it","description":"Lo chiamano il virologo guru di Michele Emiliano . E non a caso, dato che potrebbe candidarsi con il Pd in Puglia: stiamo parlando di Pier Luigi Lop...","url":"https://www.liberoquotidiano.it/news/italia/24096593/coronavirus-pier-luigi-lopalco-contagi-mi-ero-sbagliato.html","urlToImage":"https://img2.liberoquotidiano.it/images/2020/08/04/144709683-06233f30-4ac6-40dc-ae7f-e62b53596a8f.jpg","publishedAt":"2020-08-04T14:40:00Z","content":"Lo chiamano il virologo guru di Michele Emiliano. E non a caso, dato che potrebbe candidarsi con il Pd in Puglia: stiamo parlando di Pier Luigi Lopalco, responsabile della task force pugliese per il … [+1482 chars]"}]}
--------------------------------------------------------------------------------
/site/server/news_content/nz.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":5,"articles":[{"source":{"id":null,"name":"Stuff.co.nz"},"author":null,"title":"Covid-19: These dogs are trained to sniff out coronavirus and most have a 100 per cent success rate - Stuff.co.nz","description":"OPINION: What does a pandemic smell like? Specially trained detector dogs seem to know and are successfully sniffing out the coronavirus.","url":"https://www.stuff.co.nz/national/health/coronavirus/122352131/covid19-these-dogs-are-trained-to-sniff-out-coronavirus-and-most-have-a-100-per-cent-success-rate","urlToImage":"https://resources.stuff.co.nz/content/dam/images/2/0/u/f/p/v/image.related.StuffLandscapeSixteenByNine.1420x800.20ufib.png/1596584539697.jpg","publishedAt":"2020-08-04T23:40:00Z","content":"OPINION: What does a pandemic smell like? If dogs could talk, they might be able to tell us.\r\n Were part of an international research team, led by Dominique Grandjean at Frances National Veterinary S… [+5527 chars]"},{"source":{"id":null,"name":"New Zealand Herald"},"author":"NZ Herald","title":"Covid 19 coronavirus: Dr Ashley Bloomfield's dire warning - NZ should brace for second wave - New Zealand Herald","description":"It's likely an outbreak will happen in the community, Dr Bloomfield warns.","url":"https://www.nzherald.co.nz/nz/news/article.cfm?c_id=1&objectid=12353807","urlToImage":"https://www.nzherald.co.nz/resizer/EUj7vd1y-CcmMBWmiEOWtu2kTLo=/1200x0/smart/filters:quality(70)/cloudfront-ap-southeast-2.images.arcpublishing.com/nzme/H62UDNUJ75FLXLNEHREE4C5HKI.jpg","publishedAt":"2020-08-04T21:48:46Z","content":"The country's top health official today reiterated a dire warning that New Zealand should brace for a second wave of Covid-19 to sweep through the community, similar to the outbreak wreaking havoc in… [+2693 chars]"},{"source":{"id":null,"name":"The Conversation Africa"},"author":"Anne-Lise Chaber, Susan Hazel","title":"These dogs are trained to sniff out the coronavirus. Most have a 100% success rate - The Conversation AU","description":"We're working with professional trainers in South Australia, Victoria and New South Wales to train dogs to sniff out COVID-19. They could be highly valuable in managing the spread of infection.","url":"https://theconversation.com/these-dogs-are-trained-to-sniff-out-the-coronavirus-most-have-a-100-success-rate-143756","urlToImage":"https://images.theconversation.com/files/351013/original/file-20200804-16-1fpvzpn.jpg?ixlib=rb-1.1.0&rect=57%2C612%2C5378%2C2685&q=45&auto=format&w=1356&h=668&fit=crop","publishedAt":"2020-08-04T19:56:00Z","content":"What does a pandemic smell like? If dogs could talk, they might be able to tell us.\r\nWere part of an international research team, led by Dominique Grandjean at Frances National Veterinary School of A… [+5422 chars]"},{"source":{"id":null,"name":"Stuff.co.nz"},"author":null,"title":"Coronavirus: NZ could end up like Melbourne, experts warn - Stuff.co.nz","description":"Melbourne is under a strict new lockdown with a second wave of coronavirus sweeping the city. Could that happen here?","url":"https://www.stuff.co.nz/national/health/coronavirus/122337409/coronavirus-nz-could-end-up-like-melbourne-experts-warn","urlToImage":"https://resources.stuff.co.nz/content/dam/images/4/y/n/m/j/o/image.related.StuffLandscapeSixteenByNine.1420x800.20u45d.png/1596566535399.jpg","publishedAt":"2020-08-04T17:00:00Z","content":"A large Covid-19 outbreak would overwhelm contact tracing systems and force the country into lockdown, experts warn.\r\n Epidemiologist Sir David Skegg says it is almost inevitable Covid-19 will reappe… [+4548 chars]"},{"source":{"id":null,"name":"New Zealand Herald"},"author":"NZ Herald","title":"Covid 19 coronavirus: Three new cases - one child, two women - New Zealand Herald","description":"The ministry will announce about 1pm whether there are any new cases of Covid-19.","url":"https://www.nzherald.co.nz/nz/news/article.cfm?c_id=1&objectid=12352955","urlToImage":"https://www.nzherald.co.nz/resizer/gb_AHe2sYlI01hjpJMF7C1IEBd4=/1200x0/smart/filters:quality(70)/cloudfront-ap-southeast-2.images.arcpublishing.com/nzme/UXADRCOXL5C25PXQ5D6AEZNWFA.jpg","publishedAt":"2020-08-03T10:51:45Z","content":"New Zealand has three new cases of Covid-19 in managed isolation yesterday.\r\n \"The first case we are reporting today is the child of a previously reported case,\" the Ministry of Health said in a stat… [+4718 chars]"}]}
--------------------------------------------------------------------------------
/site/server/news_content/my.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":5,"articles":[{"source":{"id":null,"name":"The Star Online"},"author":"Manas Mishra, Carl O'Donnell","title":"Novavax coronavirus vaccine induces immune response in small study - The Star Online","description":"(Reuters) - Novavax Inc said on Tuesday its experimental COVID-19 vaccine produced antibodies against the novel coronavirus, according to initial data from a small, early-stage clinical trial.","url":"https://www.thestar.com.my/news/world/2020/08/05/novavax-coronavirus-vaccine-induces-immune-response-in-small-study","urlToImage":"https://apicms.thestar.com.my/uploads/images/2020/08/05/807130.JPG","publishedAt":"2020-08-04T20:35:00Z","content":"(Reuters) - Novavax Inc said on Tuesday its experimental COVID-19 vaccine produced antibodies against the novel coronavirus, according to initial data from a small, early-stage clinical trial. \r\nThe … [+2627 chars]"},{"source":{"id":null,"name":"Malay Mail"},"author":"Malay Mail","title":"Vietnam’s new Covid-19 outbreak started in early July, says govt - Malay Mail","description":"HANOI, Aug 4 — Vietnam’s recent coronavirus outbreak in the central city of Danang, which led to over 200 cases and eight deaths, appears to have started early in July, the government said on toay, amid concern the virus may have been spreading undetected ear…","url":"https://www.malaymail.com/news/world/2020/08/04/vietnams-new-covid-19-outbreak-started-in-early-july-says-govt/1891056","urlToImage":"https://media.malaymail.com/resize_cache/uploads/articles/2020/2020-08/20200804danang-seo.JPG","publishedAt":"2020-08-04T15:00:10Z","content":"Healthcare workers wearing protective hazmat suits are seen inside the military hospital 17 amid of spread of the coronavirus disease (Covid-19) in Da Nang city, Vietnam August 4, 2020. Reuters pic\r\n… [+727 chars]"},{"source":{"id":null,"name":"Medical Xpress"},"author":"Willie Weir","title":"How we found coronavirus in a cat - Medical Xpress","description":"Since the outset of the coronavirus pandemic, the potential role of animals in catching and spreading the disease has been closely examined by scientists. This is because the virus that causes COVID-19 belongs to the family of coronaviruses that cause disease…","url":"https://medicalxpress.com/news/2020-08-coronavirus-cat.html","urlToImage":"https://scx2.b-cdn.net/gfx/news/2020/howwefoundco.jpg","publishedAt":"2020-08-04T13:30:02Z","content":"Since the outset of the coronavirus pandemic, the potential role of animals in catching and spreading the disease has been closely examined by scientists. This is because the virus that causes COVID-… [+4573 chars]"},{"source":{"id":null,"name":"CNBC"},"author":"Reuters","title":"Regeneron says antibody cocktail prevents and treats coronavirus in animals - CNBC","description":"Regeneron Pharmaceuticals said the Covid-19 antibody-drug combination it is developing both prevented and treated the disease in rhesus macaques and hamsters, adding to hope that it might work for people.","url":"https://www.cnbc.com/2020/08/04/regeneron-says-antibody-cocktail-prevents-and-treats-coronavirus-in-animals.html","urlToImage":"https://image.cnbcfm.com/api/v1/image/102748608-RTX1CSZA.jpg?v=1591874970","publishedAt":"2020-08-04T09:23:00Z","content":"Regeneron Pharmaceuticals said on Monday that the Covid-19 antibody-drug combination it is developing both prevented and treated the disease in rhesus macaques and hamsters, adding to hope that it mi… [+1784 chars]"},{"source":{"id":null,"name":"Paul Tan's Automotive News"},"author":"Jonathan Lee","title":"Proton sells 13,216 vehicles in July, highest in 8 years - paultan.org - Paul Tan's Automotive News","description":"It appears that the automotive market is steadily rebounding from the coronavirus pandemic, the total industry volume (TIV) reaching a 13-month high in July thanks to the sales and service tax exemptions. One big beneficiary …","url":"https://paultan.org/2020/08/04/proton-sells-13216-vehicles-in-july-highest-in-8-years/","urlToImage":"https://s3.paultan.org/image/2020/07/Proton_Saga_Anniversary_Edition_Bodykit_Accessories_Malaysia-1-1200x800.jpg","publishedAt":"2020-08-04T09:01:23Z","content":"It appears that the automotive market is steadily rebounding from the coronavirus pandemic, the total industry volume (TIV) reaching a 13-month high in July thanks to the sales and service tax exempt… [+2056 chars]"}]}
--------------------------------------------------------------------------------
/site/assets/js/main.js:
--------------------------------------------------------------------------------
1 | // get rem in px function
2 | // code taken from user etham on https://stackoverflow.com/questions/36532307/rem-px-in-javascript
3 | const convertRemToPixels = rem => {
4 | return rem * parseFloat(getComputedStyle(document.documentElement).fontSize);
5 | };
6 |
7 | // fire event function
8 | // code taken from user Kooilnc on https://stackoverflow.com/questions/2705583/how-to-simulate-a-click-with-javascript
9 | const fireDOMEvent = (el, etype) => {
10 | if (el.fireEvent) {
11 | el.fireEvent('on' + etype);
12 | } else {
13 | var evObj = document.createEvent('Events');
14 | evObj.initEvent(etype, true, false);
15 | el.dispatchEvent(evObj);
16 | }
17 | };
18 |
19 | // remove URL hash function
20 | // code taken from user Andy E on https://stackoverflow.com/questions/1397329/how-to-remove-the-hash-from-window-location-url-with-javascript-without-page-r/5298684#5298684
21 | const removeHashFromURL = () => {
22 | var scrollV,
23 | scrollH,
24 | loc = window.location;
25 | if ('pushState' in history) history.pushState('', document.title, loc.pathname + loc.search);
26 | else {
27 | // Prevent scrolling by storing the page's current scroll offset
28 | scrollV = document.body.scrollTop;
29 | scrollH = document.body.scrollLeft;
30 |
31 | loc.hash = '';
32 |
33 | // Restore the scroll offset, should be flicker free
34 | document.body.scrollTop = scrollV;
35 | document.body.scrollLeft = scrollH;
36 | }
37 | };
38 |
39 | // add comma separators to numbers function
40 | // code taken from user Elias Zamaria on https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript
41 | const numberWithCommas = x => {
42 | return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
43 | };
44 |
45 | // list of parts that are ready and loaded
46 | let partsThatAreLoaded = [];
47 |
48 | // if page is loaded, remove loader and go
49 | const checkIfAllPartsAreLoaded = () => {
50 | const partsThatShouldBeLoaded = ['news', 'window'];
51 |
52 | let isLoaded = true;
53 | partsThatShouldBeLoaded.forEach(part => {
54 | if (partsThatAreLoaded.indexOf(part) == -1) {
55 | isLoaded = false;
56 | }
57 | });
58 |
59 | // if is loaded, stop loader
60 | if (isLoaded) {
61 | document.querySelector('body > .loader').remove();
62 | document.querySelector('body > .container').style.opacity = '1';
63 | }
64 | };
65 |
66 | // window is loaded
67 | window.addEventListener('load', () => {
68 | partsThatAreLoaded.push('window');
69 | checkIfAllPartsAreLoaded();
70 | });
71 |
72 | // mobile nav functionality
73 | (() => {
74 | const calculatorBtn = document.querySelector('.masthead .mobile-nav button.calculator');
75 | const newsBtn = document.querySelector('.masthead .mobile-nav button.news');
76 | const casesAndAboutBtn = document.querySelector('.masthead .mobile-nav button.cases-about');
77 |
78 | const container = document.querySelector('.container');
79 |
80 | const clearCurrentTab = () => {
81 | container.classList.remove('calculator-active');
82 | container.classList.remove('cases-about-active');
83 | container.classList.remove('news-active');
84 | };
85 |
86 | calculatorBtn.addEventListener('click', () => {
87 | clearCurrentTab();
88 | container.classList.add('calculator-active');
89 | window.location.hash = 'calculator';
90 | });
91 |
92 | newsBtn.addEventListener('click', () => {
93 | clearCurrentTab();
94 | container.classList.add('news-active');
95 | window.location.hash = 'news';
96 | });
97 |
98 | casesAndAboutBtn.addEventListener('click', () => {
99 | clearCurrentTab();
100 | container.classList.add('cases-about-active');
101 | removeHashFromURL();
102 |
103 | setTimeout(() => {
104 | fitty(currentCaseCountElm);
105 | }, 1000 / 60);
106 | });
107 |
108 | if (window.location.hash == '#calculator') {
109 | fireDOMEvent(calculatorBtn, 'click');
110 | } else if (window.location.hash == '#news') {
111 | fireDOMEvent(newsBtn, 'click');
112 | }
113 | })();
114 |
--------------------------------------------------------------------------------
/site/server/news_content/sa.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":5,"articles":[{"source":{"id":"cnn","name":"CNN"},"author":"Leah Asmelash, CNN","title":"Detroit Lions' Matthew Stafford's wife blames NFL for harassment received after false positive coronavirus test - CNN","description":"After a false positive Covid-19 test put Matthew Stafford, quarterback for the Detroit Lions, on the NFL's Injured Reserve/Covid list, life has been terrible. And his wife blames the NFL.","url":"https://www.cnn.com/2020/08/04/us/matthew-stafford-false-positive-covid-trnd/index.html","urlToImage":"https://cdn.cnn.com/cnnnext/dam/assets/200804171851-matthew-stafford-false-positive-covid-trnd-super-tease.jpg","publishedAt":"2020-08-04T23:38:00Z","content":"(CNN)After a false positive Covid-19 test put Matthew Stafford, quarterback for the Detroit Lions, on the NFL's Injured Reserve/Covid list, life has been terrible. And his wife blames the NFL.\r\nThat'… [+1024 chars]"},{"source":{"id":"the-washington-post","name":"The Washington Post"},"author":"Seung Min Kim, Erica Werner, Carol D. Leonnig, Jeff Stein","title":"White House, Democrats agree to try for coronavirus relief deal on evictions, unemployment by week’s end - The Washington Post","description":"Congress probably wouldn’t be able to vote on the package until next week, meaning that jobless Americans would have to wait.","url":"https://www.washingtonpost.com/politics/lawmakers-say-they-cant-return-home-without-coronavirus-deal-while-white-house-aides-are-split-on-use-of-executive-powers/2020/08/04/b19e7404-d688-11ea-b9b2-1ea733b97910_story.html","urlToImage":"https://www.washingtonpost.com/wp-apps/imrs.php?src=https://arc-anglerfish-washpost-prod-washpost.s3.amazonaws.com/public/Y27MVWWWRII6VEYO3CCRRRL5ZQ.jpg&w=1440","publishedAt":"2020-08-04T23:02:00Z","content":"The agreement on a timeline came in a meeting with House Speaker Nancy Pelosi (D-Calif.), Senate Minority Leader Charles E. Schumer (D-N.Y.), Treasury Secretary Steven Mnuchin and White House Chief o… [+6299 chars]"},{"source":{"id":"the-hill","name":"The Hill"},"author":"Jordain Carney","title":"GOP expects Senate to be in session next week without coronavirus deal | TheHill - The Hill","description":"Senate Republicans said on Tuesday that they expect to be in session next week as negotiations on...","url":"https://thehill.com/homenews/senate/510517-gop-expects-senate-to-be-in-session-next-week-without-coronavirus-deal","urlToImage":"https://thehill.com/sites/default/files/cornynjohn_072720gn_lead.jpg","publishedAt":"2020-08-04T19:16:01Z","content":"Senate Republicans said on Tuesday that they expect to be in session next week as negotiations on a fifth coronavirus bill appear to be at an \"impasse.\"\r\nThe tentative plan, described by GOP senators… [+4437 chars]"},{"source":{"id":"usa-today","name":"USA Today"},"author":"Chris Bumbaca","title":"Cardinals' Yadier Molina one of St. Louis players who tested positive for coronavirus - USA TODAY","description":"St. Louis Cardinals catcher Yadier Molina revealed Tuesday he is one the team's 13 players who have tested positive for coronavirus.","url":"https://www.usatoday.com/story/sports/mlb/cardinals/2020/08/04/coronavirus-st-louis-cardinals-yadier-molina-tests-positive/3289500001/","urlToImage":"https://www.gannett-cdn.com/presto/2020/08/04/USAT/399375a1-9148-42dd-89a8-89b498c7d433-Yadi_COVID.jpg?crop=1877,1056,x286,y104&width=1600&height=800&fit=bounds","publishedAt":"2020-08-04T16:45:44Z","content":"What Im Hearing: Bob Nightengale on the latest outbreak in MLB\r\nUSA TODAY\r\nYadier Molina revealed Tuesday he is one of the St. Louis Cardinals players positive for the coronavirus. \r\n\"I am saddened t… [+1417 chars]"},{"source":{"id":null,"name":"Medical Xpress"},"author":"Science X staff","title":"Exposure to common cold coronaviruses can teach the immune system to recognize SARS-CoV-2 - Medical Xpress","description":"Your immune system's 'memory' T cells keep track of the viruses they have seen before. This immune cell memory gives the cells a headstart in recognizing and fighting off repeat invaders.","url":"https://medicalxpress.com/news/2020-08-exposure-common-cold-coronaviruses-immune.html","urlToImage":"https://scx2.b-cdn.net/gfx/news/hires/2020/exposuretoco.jpg","publishedAt":"2020-08-04T14:40:05Z","content":"Your immune system's 'memory' T cells keep track of the viruses they have seen before. This immune cell memory gives the cells a headstart in recognizing and fighting off repeat invaders.\r\nNow, a new… [+3883 chars]"}]}
--------------------------------------------------------------------------------
/site/server/news_content/sg.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":5,"articles":[{"source":{"id":null,"name":"Bristol Post"},"author":"Emma Grimshaw","title":"No new Bristol coronavirus cases as UK deaths at lowest level since before lockdown - Bristol Live","description":"A total of 670 new Covid cases have been reported across the country","url":"https://www.bristolpost.co.uk/news/bristol-news/no-new-bristol-coronavirus-cases-4395219","urlToImage":"https://i2-prod.bristolpost.co.uk/incoming/article4342613.ece/ALTERNATES/s1200/1_COVID-19-Testing-Continues-Across-NSW-Following-Confirmed-Coronavirus-Cases-In-Albury.jpg","publishedAt":"2020-08-04T18:50:00Z","content":"No new Bristol coronavirus cases have been recorded in the last 24 hours, according to figures released by Public Health England today (August 4).\r\nGovernment data show our city's total remains at 1,… [+1017 chars]"},{"source":{"id":null,"name":"CNA"},"author":"CNA","title":"Indonesia to have capacity to produce 250 million doses of COVID-19 vaccine a year - CNA","description":"JAKARTA: Indonesia will have capacity to produce 250 million doses a year of a coronavirus vaccine by the end of 2020 pending trials on humans, a minister said on Tuesday (Aug 4), as the country seeks to halt a wave of infections that has shown no sign of rel…","url":"https://www.channelnewsasia.com/news/asia/indonesia-capacity-produce-250-million-doses-covid-19-vaccine-12989942","urlToImage":"https://cna-sg-res.cloudinary.com/image/upload/q_auto,f_auto/image/12989938/16x9/991/557/cf816bed2da212e6f98da317ed080068/dZ/view-of-bio-farma-office-covid-19-vaccine-production-in-bandung-1.jpg","publishedAt":"2020-08-04T14:05:58Z","content":"JAKARTA: Indonesia will have capacity to produce 250 million doses a year of a coronavirus vaccine by the end of 2020 pending trials on humans, a minister said on Tuesday (Aug 4), as the country seek… [+1781 chars]"},{"source":{"id":null,"name":"CNA"},"author":"CNA","title":"Hong Kong reports 80 new COVID-19 cases, mostly local transmissions - CNA","description":"Hong Kong reported 80 new coronavirus cases on Tuesday, including 75 that were locally transmitted, as authorities raced to contain a third wave of the outbreak which has seen infections soar over the past month.","url":"https://www.channelnewsasia.com/news/asia/covid-19-coronavirus-hong-kong-new-cases-aug-4-12989198","urlToImage":"https://cna-sg-res.cloudinary.com/image/upload/q_auto,f_auto/image/12989196/16x9/991/557/25a17c89771c70469888c6968a2d018a/gi/file-photo--a-woman-wears-a-surgical-mask-while-walking-at-central-following-the-coronavirus-disease--covid-19--outbreak-in-hong-kong--1.jpg","publishedAt":"2020-08-04T09:09:52Z","content":"HONG KONG: Hong Kong reported 80 new COVID-19 cases on Tuesday (Aug 4), including 75 that were locally transmitted, as authorities race to contain a third wave of the outbreak that has seen infection… [+2045 chars]"},{"source":{"id":null,"name":"Yahoo Entertainment"},"author":"BBC","title":"Coronavirus: Millions return to lockdown in Philippines - Yahoo Singapore News","description":"A strict curb on movements has been re-imposed in the capital Manila after a surge in Covid infections.","url":"https://news.yahoo.com/coronavirus-millions-return-lockdown-philippines-034819266.html","urlToImage":"https://s.yimg.com/uu/api/res/1.2/WpK_mV740bPKMRf67xq_HQ--~B/aD01NDk7dz05NzY7c209MTthcHBpZD15dGFjaHlvbg--/https://media.zenfs.com/en-gb/bbc_us_articles_995/c2554c11b0f8cea996d4c1b7e63ad42c","publishedAt":"2020-08-04T08:18:27Z","content":"Tens of millions of people in the Philippines are back in lockdown, after doctors warned a surge in new coronavirus cases could push the healthcare system to collapse.\r\nStay-at-home orders are now in… [+1740 chars]"},{"source":{"id":null,"name":"The Straits Times"},"author":"TEE ZHUO","title":"Coronavirus: Monitoring devices for travellers on stay-home notice outside of facilities do not store personal data or record video, audio - The Straits Times","description":"Any data transmitted is also protected by end-to-end certificate-based encryption, the authorities said.. Read more at straitstimes.com.","url":"https://www.straitstimes.com/singapore/devices-do-not-store-personal-data-or-record-video-audio","urlToImage":"https://www.straitstimes.com/sites/default/files/media-youtube/xMqrG7Iivys.jpg","publishedAt":"2020-08-03T21:00:00Z","content":"Users who have to don a new monitoring device while they serve out their stay-home notice (SHN) need not fear that their actions will be snooped on, the authorities said yesterday.\r\nThe electronic wr… [+2888 chars]"}]}
--------------------------------------------------------------------------------
/site/server/news_content/us.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":5,"articles":[{"source":{"id":"cnn","name":"CNN"},"author":"Leah Asmelash, CNN","title":"Detroit Lions' Matthew Stafford's wife blames NFL for harassment received after false positive coronavirus test - CNN","description":"After a false positive Covid-19 test put Matthew Stafford, quarterback for the Detroit Lions, on the NFL's Injured Reserve/Covid list, life has been terrible. And his wife blames the NFL.","url":"https://www.cnn.com/2020/08/04/us/matthew-stafford-false-positive-covid-trnd/index.html","urlToImage":"https://cdn.cnn.com/cnnnext/dam/assets/200804171851-matthew-stafford-false-positive-covid-trnd-super-tease.jpg","publishedAt":"2020-08-04T23:38:00Z","content":"(CNN)After a false positive Covid-19 test put Matthew Stafford, quarterback for the Detroit Lions, on the NFL's Injured Reserve/Covid list, life has been terrible. And his wife blames the NFL.\r\nThat'… [+1024 chars]"},{"source":{"id":"the-washington-post","name":"The Washington Post"},"author":"Seung Min Kim, Erica Werner, Carol D. Leonnig, Jeff Stein","title":"White House, Democrats agree to try for coronavirus relief deal on evictions, unemployment by week’s end - The Washington Post","description":"Congress probably wouldn’t be able to vote on the package until next week, meaning that jobless Americans would have to wait.","url":"https://www.washingtonpost.com/politics/lawmakers-say-they-cant-return-home-without-coronavirus-deal-while-white-house-aides-are-split-on-use-of-executive-powers/2020/08/04/b19e7404-d688-11ea-b9b2-1ea733b97910_story.html","urlToImage":"https://www.washingtonpost.com/wp-apps/imrs.php?src=https://arc-anglerfish-washpost-prod-washpost.s3.amazonaws.com/public/Y27MVWWWRII6VEYO3CCRRRL5ZQ.jpg&w=1440","publishedAt":"2020-08-04T23:02:00Z","content":"The agreement on a timeline came in a meeting with House Speaker Nancy Pelosi (D-Calif.), Senate Minority Leader Charles E. Schumer (D-N.Y.), Treasury Secretary Steven Mnuchin and White House Chief o… [+6299 chars]"},{"source":{"id":null,"name":"Deadline"},"author":"Tom Tapp","title":"California Coronavirus Update: Top Health Official Reveals State Has Been Underreporting New COVID-19 Cases; County Numbers Also Have “Discrepancies” - Deadline","description":"On Tuesday, an unusual message was posted on the California state COVID-19 dashboard. It read, “Due to the issues with the state’s electronic laboratory system, these data represent an underreporting of actual positive cases in one single day.” There was no f…","url":"https://deadline.com/2020/08/california-coronavirus-state-underreported-new-cases-data-issue-1203004021/","urlToImage":"https://pmcdeadline2.files.wordpress.com/2020/07/screen-shot-2020-07-14-at-12.06.07-pm.png?w=1024","publishedAt":"2020-08-04T21:46:00Z","content":"On Tuesday, an unusual message was posted on the California state COVID-19 dashboard. It read, “Due to the issues with the state’s electronic laboratory system, these data represent an underreporting… [+4244 chars]"},{"source":{"id":"the-hill","name":"The Hill"},"author":"Jordain Carney","title":"GOP expects Senate to be in session next week without coronavirus deal | TheHill - The Hill","description":"Senate Republicans said on Tuesday that they expect to be in session next week as negotiations on...","url":"https://thehill.com/homenews/senate/510517-gop-expects-senate-to-be-in-session-next-week-without-coronavirus-deal","urlToImage":"https://thehill.com/sites/default/files/cornynjohn_072720gn_lead.jpg","publishedAt":"2020-08-04T19:16:01Z","content":"Senate Republicans said on Tuesday that they expect to be in session next week as negotiations on a fifth coronavirus bill appear to be at an \"impasse.\"\r\nThe tentative plan, described by GOP senators… [+4437 chars]"},{"source":{"id":null,"name":"Medical Xpress"},"author":"Science X staff","title":"Exposure to common cold coronaviruses can teach the immune system to recognize SARS-CoV-2 - Medical Xpress","description":"Your immune system's 'memory' T cells keep track of the viruses they have seen before. This immune cell memory gives the cells a headstart in recognizing and fighting off repeat invaders.","url":"https://medicalxpress.com/news/2020-08-exposure-common-cold-coronaviruses-immune.html","urlToImage":"https://scx2.b-cdn.net/gfx/news/hires/2020/exposuretoco.jpg","publishedAt":"2020-08-04T14:40:05Z","content":"Your immune system's 'memory' T cells keep track of the viruses they have seen before. This immune cell memory gives the cells a headstart in recognizing and fighting off repeat invaders.\r\nNow, a new… [+3883 chars]"}]}
--------------------------------------------------------------------------------
/site/assets/js/news.js:
--------------------------------------------------------------------------------
1 | // elm vars
2 | const newsCountrySelectBoxElm = document.querySelector('.panel.latest-news .select-country .country-select-box');
3 | const newsListElm = document.querySelector('.panel.latest-news .news-list');
4 |
5 | // get ip address to infer location if possible
6 | (() => {
7 | fetch('https://ipapi.co/json/')
8 | .then((response) => {
9 | response.text().then((text) => {
10 | // infer country code from list of possible country codes
11 | const responseObj = JSON.parse(text);
12 | const possibleCountryCodes = 'ae ar at au be bg br ca ch cn co cu cz de eg fr gb gr hk hu id ie il in it jp kr lt lv ma mx my ng nl no nz ph pl pt ro rs ru sa se sg si sk th tr tw ua us ve za'.split(
13 | ' '
14 | );
15 | const responseCountryCode = responseObj['country_code'].toLowerCase();
16 | if (possibleCountryCodes.indexOf(responseCountryCode) > -1) {
17 | newsCountrySelectBoxElm.value = responseCountryCode;
18 | } else {
19 | // if no match found, use USA as default country
20 | newsCountrySelectBoxElm.value = 'us';
21 | }
22 |
23 | fireDOMEvent(newsCountrySelectBoxElm, 'change');
24 |
25 | // show select box
26 | newsCountrySelectBoxElm.style.display = 'block';
27 | });
28 | })
29 | .catch((err) => {
30 | console.error(err.message);
31 | newsCountrySelectBoxElm.value = 'us';
32 | fireDOMEvent(newsCountrySelectBoxElm, 'change');
33 | });
34 | })();
35 |
36 | // load news articles when country select is updated
37 | newsCountrySelectBoxElm.addEventListener('change', () => {
38 | const countryCode = newsCountrySelectBoxElm.value;
39 | fetch(`/server/news.php?country=${countryCode}`)
40 | .then((response) => {
41 | response
42 | .json()
43 | .then((responseObj) => {
44 | // remove existing content of news list
45 | newsListElm.innerHTML = '';
46 |
47 | // loop through articles and add to news list elm
48 | const articles = responseObj['articles'];
49 | articles.forEach((article, index) => {
50 | if (index <= 10) {
51 | let articleTitle = article['title'].split('-');
52 | articleTitle.pop();
53 | articleTitle = articleTitle.join('-');
54 |
55 | newsListElm.innerHTML += `
56 |
57 |
58 |
Sorry, an error occurred fetching latest articles.
';
94 |
95 | // news has loaded, update var if needed
96 | if (partsThatAreLoaded.indexOf('news') == -1) {
97 | partsThatAreLoaded.push('news');
98 | checkIfAllPartsAreLoaded();
99 | }
100 | });
101 | });
102 |
--------------------------------------------------------------------------------
/site/server/news_content/ma.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":6,"articles":[{"source":{"id":null,"name":"H24info.ma"},"author":"Driss Douad","title":"Covid-19: Tanger-Assilah et Fès soumis à des mesures strictes, à partir de mercredi 20h - H24info le portail d'information Marocain","description":"Prenant en considération le nombre croissant des contaminations au nouveau coronavirus (Covid-19) et des décès enregistrés ces derniers jours, et pour préserver la santé et l'intégrité des citoyennes et citoyens, le gouvernement a décidé l'application, à part…","url":"https://www.h24info.ma/maroc/covid-19-tanger-assilah-et-fes-soumis-a-des-mesures-strictes-a-partir-de-mercredi-20h/","urlToImage":"https://www.h24info.ma/wp-content/uploads/2020/04/Barrage-etat-durgence.jpg","publishedAt":"2020-08-04T21:50:00Z","content":"Prenant en considération le nombre croissant des contaminations au nouveau coronavirus (Covid-19) et des décès enregistrés ces derniers jours, et pour préserver la santé et l’intégrité des citoyennes… [+1907 chars]"},{"source":{"id":null,"name":"Lavieeco.com"},"author":"Lavieeco","title":"Covid-19 au Maroc : le bilan du ministère de la Santé, ce Mardi 4 Août à 18h - La Vie Éco","description":"1.021 nouveaux cas d'infection au coronavirus (Covid-19) et 661 guérisons ont été enregistrés au Maroc au cours des dernières 24 heures, a annoncé mardi le ministère de la Santé.","url":"https://www.lavieeco.com/coronavirus/covid-19-au-maroc-le-bilan-du-ministere-de-la-sante-ce-dimanche-2-aout-a-18h-2/","urlToImage":"https://www.lavieeco.com/wp-content/uploads/2020/06/IMG_20200608_174802.png","publishedAt":"2020-08-04T17:15:00Z","content":"1.021 nouveaux cas d’infection au coronavirus (Covid-19) et 661 guérisons ont été enregistrés au Maroc au cours des dernières 24 heures, a annoncé mardi le ministère de la Santé.Ce nouveau bilan port… [+427 chars]"},{"source":{"id":null,"name":"Maroc-diplomatique.net"},"author":"#","title":"Coronavirus: près de 700.000 morts dans le monde, des masques obligatoires en plein air - Maroc diplomatique","description":"Le cap des 700.000 morts du Covid-19 dans le monde est en passe d'être franchi et l'accélération de la pandémie pousse certains pays à prendre","url":"https://maroc-diplomatique.net/coronavirus-pres-de-700-000-morts-dans-le-monde/","urlToImage":"https://maroc-diplomatique.net/wp-content/uploads/2020/08/morts.jpg","publishedAt":"2020-08-04T16:11:54Z","content":"Dans le célèbre Quartier Rouge d’Amsterdam aux Pays-Bas, le masque sera obligatoire à partir de mercredi, tout comme dans les quartiers commerçants de Rotterdam.\r\nEn France, sur la place Saint-Pierre… [+4591 chars]"},{"source":{"id":null,"name":"2m.ma"},"author":"2M.ma","title":"Coronavirus : les enfants de moins de 5 ans pourraient avoir une charge virale 100 plus élevée que les adultes - 2M Maroc","description":"Une nouvelle étude portant sur les risques potentiels de transmission du coronavirus chez les enfants a révélé que les enfants de moins de 5 ans avaient une charge virale jusqu’à 100 fois plus élevée dans leurs voies respiratoires que les adultes. Parue dans …","url":"https://2m.ma/fr/news/coronavirus-les-enfants-de-moins-de-5-ans-pourraient-avoir-une-charge-virale-100-plus-elevee-que-les-adultes-20200803/","urlToImage":"https://2m.ma/site_media/uploads/imagesarticle/2020/8/3/1589983108covid19-port-masque-enfants-reponses-questions-courantes_BKUOBkg.image_corps_article.jpg","publishedAt":"2020-08-04T09:03:35Z","content":null},{"source":{"id":"google-news","name":"Google News"},"author":null,"title":"Coronavirus : un jour dans le monde - Hespress Français","description":null,"url":"https://news.google.com/__i/rss/rd/articles/CBMiSGh0dHBzOi8vZnIuaGVzcHJlc3MuY29tLzE1OTA1NC1jb3JvbmF2aXJ1cy11bi1qb3VyLWRhbnMtbGUtbW9uZGUtNTMuaHRtbNIBTGh0dHBzOi8vZnIuaGVzcHJlc3MuY29tLzE1OTA1NC1jb3JvbmF2aXJ1cy11bi1qb3VyLWRhbnMtbGUtbW9uZGUtNTMuaHRtbC9hbXA?oc=5","urlToImage":null,"publishedAt":"2020-08-03T22:31:00Z","content":null},{"source":{"id":null,"name":"Bladi.net"},"author":null,"title":"Le risque de contamination au Covid-19 reste plus élevé chez les soignants - Marocains du monde","description":"Les soignants ont presque 3,5 fois plus de risques d'être atteints du coronavirus que le reste de la population au Royaume-Uni et aux États-Unis. C’est ce que révèle une étude publiée dans The Lancet.","url":"https://www.bladi.net/le-risque-de-contamination-au-covid-19-reste-plus-eleve-chez-les,72306.html","urlToImage":"https://www.bladi.net/IMG/arton72306.jpg","publishedAt":"2020-08-03T10:30:00Z","content":"Cette étude a été réalisée entre le 24 mars et le 23 avril au Royaume-Uni et aux États-Unis. Elle sest basée sur lanalyse des données entrées par les utilisateurs dans une application spéciale \"Covid… [+1469 chars]"}]}
--------------------------------------------------------------------------------
/site/server/news_content/in.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":6,"articles":[{"source":{"id":"al-jazeera-english","name":"Al Jazeera English"},"author":"Ted Regencia","title":"UN says coronavirus has disrupted education of 1 billion: Live - Al Jazeera English","description":"UN chief Antonio Guterres said schools were closed in 160 countries in mid-July, amid coronavirus pandemic.","url":"https://www.aljazeera.com/news/2020/08/latin-america-tops-million-coronavirus-cases-live-updates-200803231440849.html","urlToImage":"https://www.aljazeera.com/mritems/Images/2020/8/4/dafe025637924ac28cc57a5959d2737d_18.jpg","publishedAt":"2020-08-04T23:40:00Z","content":"
The United Nations chief Antonio Guterres said the COVID-19 outbreak has led to the largest disruption of education in history, with schools closed in more than 160 countries in mid-July, aff… [+33241 chars]"},{"source":{"id":null,"name":"The Indian Express"},"author":"Express Web Desk","title":"Coronavirus LIVE updates: Leaders Dharmendra Pradhan, Siddaramiah test Covid-19 positive - The Indian Express","description":"Coronavirus India News Live Updates: As per the latest data, the recovery rate among COVID-19 patients in India has risen to 66.31 per cent, while the fatality rate has further dropped to 2.10 per cent.","url":"https://indianexpress.com/article/coronavirus/coronavirus-india-live-updates-total-cases-deaths-covid-tracker-covaxin-vaccine-trials-6538314/","urlToImage":"https://images.indianexpress.com/2020/06/Dharmendra-Pradhan.jpg?w=759","publishedAt":"2020-08-04T18:24:12Z","content":"Coronavirus India LIVE updates: Sanitation work at malls in Mumbai.\r\nBihar Chief Minister Nitish Kumar on Monday said that the state is facing a threat from coronavirus spread because of its highest … [+2725 chars]"},{"source":{"id":null,"name":"TRT World"},"author":"TRTWorld","title":"WHO and China in discussions to trace origins of coronavirus - TRT World","description":"Scientists think the novel coronavirus likely jumped from a wild animal, such as a bat, via an intermediary species, possibly the anteater-like pangolin. However, China says a full investigation may have to wait until the pandemic is under control.","url":"https://www.trtworld.com/asia/who-and-china-in-discussions-to-trace-origins-of-coronavirus-38642","urlToImage":"https://cdni0.trtworld.com/w480/h270/q75/71822_CHN200210CoronavirusAP_1596549084596.jpeg","publishedAt":"2020-08-04T15:36:45Z","content":"Scientists think the novel coronavirus likely jumped from a wild animal, such as a bat, via an intermediary species, possibly the anteater-like pangolin. However, China says a full investigation may … [+2668 chars]"},{"source":{"id":null,"name":"Firstpost"},"author":null,"title":"SARS-CoV-2 strains show little variability, COVID-19 vaccine could be effective against all, finds study - Firstpost","description":"Published in journal 'Frontiers in Microbiology', the study drew from the analysis of 48,635 novel coronavirus genomes, which were isolated in labs all over the world","url":"https://www.firstpost.com/health/sars-cov-2-strains-show-little-variability-covid-19-vaccine-could-be-effective-against-all-finds-study-8672241.html","urlToImage":"https://images.firstpost.com/wp-content/uploads/large_file_plugin/2020/06/1593074304_covid19ap.jpeg","publishedAt":"2020-08-04T15:18:04Z","content":"Published in journal 'Frontiers in Microbiology', the study drew from the analysis of 48,635 novel coronavirus genomes, which were isolated in labs all over the world\r\nIn some \"good news\" for scienti… [+2073 chars]"},{"source":{"id":"the-hindu","name":"The Hindu"},"author":"Bindu Shajan Perappadan","title":"Coronavirus | No specific drug, vaccine for COVID-19 yet, says ICMR - The Hindu","description":"Social distancing and hygiene continue to be best protection against virus, he says","url":"https://www.thehindu.com/news/national/coronavirus-no-specific-drug-vaccine-for-covid-19-yet-says-icmr/article32270132.ece","urlToImage":"https://www.thehindu.com/news/national/h4o4tn/article32270129.ece/ALTERNATES/LANDSCAPE_615/BALRAMBHARGAVA","publishedAt":"2020-08-04T14:43:28Z","content":"There is currently no specific drug or vaccine for COVID-19 and while the pandemic is progressing rapidly, vaccine development is taking time, Indian Council of Medical Research (ICMR) Director Gener… [+3369 chars]"},{"source":{"id":null,"name":"Livemint"},"author":"Staff Writer","title":"Pandemic going at devastating pace, Covid-19 vaccine needs time for trials: Govt - Livemint","description":"No specific drug or vaccine is available for the virus so far, the health ministry said.India is conducting 479 tests per day per million population for detection of coronavirus, the govt added","url":"https://www.livemint.com/news/india/covid-19-india-conducting-479-tests-per-day-per-million-population-says-govt-11596538020486.html","urlToImage":"https://images.livemint.com/img/2020/08/04/600x338/Rajesh_1596538195668_1596538198924.jpeg","publishedAt":"2020-08-04T11:23:05Z","content":"The Union Health Ministry on Tuesday briefed the media on the Covid-19 situation in the country. In terms of Covid-19 vaccine situation, Health Ministry, Rajesh Bhushan said that no specific drug or … [+3499 chars]"}]}
--------------------------------------------------------------------------------
/site/server/news_content/ph.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":7,"articles":[{"source":{"id":null,"name":"The Manila Times"},"author":null,"title":"LatAm, Caribbean virus cases hit 5M – The Manila Times - The Manila Times","description":"GENEVA: Latin America and the Caribbean surpassed 5 million coronavirus cases on Monday (Tuesday in Manila) as the World Health Organization (WHO) warned there might never be a “silver bullet” for the pandemic. Global infections passed 18 million, with Brazil…","url":"https://www.manilatimes.net/2020/08/05/news/world/latam-caribbean-virus-cases-hit-5m/751055/","urlToImage":"https://www.manilatimes.net/wp-content/uploads/2020/08/LatAm20200805.jpg","publishedAt":"2020-08-04T17:14:05Z","content":"GENEVA: Latin America and the Caribbean surpassed 5 million coronavirus cases on Monday (Tuesday in Manila) as the World Health Organization (WHO) warned there might never be a silver bullet for the … [+3200 chars]"},{"source":{"id":null,"name":"The Manila Times"},"author":null,"title":"WHO: No ‘silver bullet’ vs virus – The Manila Times - The Manila Times","description":"GENEVA: The World Health Organization (WHO) warned that there might never be a “silver bullet” for the new coronavirus despite the rush to discover effective vaccines. The WHO urged governments and citizens to focus on doing the known basics such as testing, …","url":"https://www.manilatimes.net/2020/08/05/news/national/who-no-silver-bullet-vs-virus/751009/","urlToImage":"https://www.manilatimes.net/wp-content/uploads/2020/04/WHO.jpg","publishedAt":"2020-08-04T16:19:10Z","content":"GENEVA: The World Health Organization (WHO) warned that there might never be a silver bullet for the new coronavirus despite the rush to discover effective vaccines.\r\nWHO Director-General Tedros Adha… [+2262 chars]"},{"source":{"id":null,"name":"Businessmirror.com.ph"},"author":"Samuel P. Medenilla","title":"PHL to spend P1.5 billion for Covax facility for Covid vaccine–DOST | Samuel P. Medenilla - Business Mirror","description":"THE government may spend around P1.5 billion for the country’s participation in the Covid-19 (novel coronavirus disease) Vaccines Global Access (Covax) facility, according to the Department of Science and Technology (DOST). In an online press briefing on Tues…","url":"https://businessmirror.com.ph/2020/08/05/phl-to-spend-p1-5-billion-for-covax-facility-for-covid-vaccine-dost/","urlToImage":"https://businessmirror.com.ph/wp-content/uploads/2020/08/top02-080520.jpg","publishedAt":"2020-08-04T16:06:23Z","content":"THE government may spend around P1.5 billion for the countrys participation in the Covid-19 (novel coronavirus disease) Vaccines Global Access (Covax) facility, according to the Department of Science… [+2642 chars]"},{"source":{"id":null,"name":"The Straits Times"},"author":"RAUL DANCEL","title":"Philippines posts record daily rise in coronavirus cases, could become South-east Asia's new epicentre - The Straits Times","description":"The grim news came on the first day of a tough new lockdown that will confine some 27 million to their homes for two weeks.. Read more at straitstimes.com.","url":"https://www.straitstimes.com/asia/se-asia/philippines-posts-record-daily-rise-in-coronavirus-cases-could-become-south-east-asias","urlToImage":"https://www.straitstimes.com/sites/default/files/styles/x_large/public/articles/2020/08/04/yq-manilacov-04082022.jpg?itok=0ppF9M_J","publishedAt":"2020-08-04T11:52:17Z","content":"MANILA - The Philippines could soon become the new epicentre for the coronavirus pandemic in South-east Asia, as it reported another record single-day jump in infections on Tuesday (Aug 4).\r\nThe grim… [+3128 chars]"},{"source":{"id":"google-news","name":"Google News"},"author":null,"title":"Duterte reimposes coronavirus lockdown as he criticises doctors - Al Jazeera English","description":null,"url":"https://news.google.com/__i/rss/rd/articles/CBMiK2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9cVlCb21ka3l6S03SAQA?oc=5","urlToImage":null,"publishedAt":"2020-08-04T11:37:45Z","content":null},{"source":{"id":null,"name":"GMA News"},"author":"","title":"Philippines logs record-high 6,352 new COVID-19 cases, total up to 112,593 - GMA News","description":"The Philippines once again broke its own record for the highest number of new coronavirus disease 2019 (COVID-19) cases in a single day after the Department of Health (DOH) announced 6,352 new infections on Tuesday, bringing the total to 112,593.","url":"https://www.gmanetwork.com/news/news/nation/749801/philippines-logs-record-high-6-352-new-covid-19-cases-total-up-to-112-593/story//","urlToImage":"https://images.gmanews.tv/webpics/2020/01/doh_building_2020_01_29_17_04_17.jpg","publishedAt":"2020-08-04T08:36:00Z","content":null},{"source":{"id":null,"name":"GMA News"},"author":"","title":"Harvard researchers want more ‘crappy’ tests for COVID-19 - GMA News","description":"The aphorism "perfect is the enemy of good enough" has been played out to tragic effect in the US's inadequate testing for the coronavirus, according to researchers calling for quick tests that cost only about a dollar each, and which may not be…","url":"https://www.gmanetwork.com/news/scitech/science/749742/harvard-researchers-want-more-crappy-tests-for-covid-19/story//","urlToImage":"https://images.gmanews.tv/webpics/2020/07/2020-07-03T003035Z_1599388959_RC2CLH9MBQGK_RTRMADP_3_HEALTH-CORONAVIRUS-USA-TESTING_2020_07_07_04_01_36.JPG","publishedAt":"2020-08-04T01:39:00Z","content":null}]}
--------------------------------------------------------------------------------
/site/server/news_content/ar.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":7,"articles":[{"source":{"id":null,"name":"Clarín"},"author":"Clarín.com","title":"Coronavirus en Argentina: confirman otras 168 muertes y 6.792 nuevos casos, las mayores cifras diarias - Clarín","description":"En un día de cifras récord, el Ministerio de Salud informó este martes 6.792 nuevos casos positivos de coronavirus y otras 168 muertes. De esta forma, el total de contagiados de COVID-19 es de 213.535 en el país y los fallecidos llegaron a 3.979.Unos de los d…","url":"https://www.clarin.com/sociedad/coronavirus-argentina-confirman-168-muertes-6-792-nuevos-casos-ultimas-24-horas_0_x78VbLDUy.html","urlToImage":"https://images.clarin.com/2020/08/04/desinfeccion-de-pasajeros-en-buenos___1yB5YBq_j_1200x630__1.jpg","publishedAt":"2020-08-05T00:24:34Z","content":"En un día de cifras récord, el Ministerio de Salud informó este martes 6.792 nuevos casos positivos de coronavirus y otras 168 muertes. De esta forma, el total de contagiados de COVID-19 es de 213.53… [+2807 chars]"},{"source":{"id":null,"name":"Lacapital.com.ar"},"author":"La Capital","title":"Se produjo la segunda muerte en el día por coronavirus en la provincia de Santa Fe - La Capital (Rosario)","description":"Era un hombre de 80 años con domicilio en Casilda con comorbilidades. Más temprano había fallecido un paciente de Correa de 48 años.","url":"https://www.lacapital.com.ar/pandemia/se-produjo-la-segunda-muerte-el-dia-coronavirus-la-provincia-santa-fe-n2601277.html","urlToImage":"https://media.lacapital.com.ar/adjuntos/203/imagenes/028/592/0028592420.png","publishedAt":"2020-08-04T23:25:00Z","content":"El Ministerio de Salud confirmó la segunda muerte del día en la provincia de Santa Fe por coronavirus Covid-19.\r\nSe trata de un hombre de 80 años con domicilio en Casilda que presentaba comorbilidade… [+1128 chars]"},{"source":{"id":null,"name":"Perfil.com"},"author":"Bloomberg Inc","title":"Coronavirus:nuevo tratamiento de anticuerpos apunta a casos leves - Perfil.com","description":"Uno de los primeros estudios prometedores para pacientes con casos leves de covid-19 avanzó a los ensayos","url":"https://www.perfil.com/noticias/bloomberg/coronavirus-nuevo-tratamiento-anticuerpos-apunta-casos-leves.phtml","urlToImage":"https://fotos.perfil.com/2020/07/21/0721vacuna-coronavirus-989840.jpg","publishedAt":"2020-08-04T21:28:13Z","content":"Noticias Relacionadas\r\nUno de los primeros tratamientos prometedores para pacientes con casos leves de coronavirus avanzó el martes a los ensayos clínicos de fase intermedia, para ver si los anticuer… [+3308 chars]"},{"source":{"id":"la-nacion","name":"La Nacion"},"author":"Redacción LA NACION","title":"Coronavirus hoy en Perú: cuántos casos se registran al 4 de Agosto - LA NACION","description":"","url":"https://www.lanacion.com.ar/el-mundo/coronavirus-hoy-en-peru-cuantos-casos-se-registran-al-4-de-agosto-nid2411887","urlToImage":"//bucket2.glanacion.com/anexos/fotos/75/3336375.jpg","publishedAt":"2020-08-04T20:43:00Z","content":"Coronavirus hoy en Perú: cuántos casos se registran al 4 de Agosto\r\n Fuente: LA NACION\r\nLa epidemia de neumonía viral provocada por un nuevo coronavirus se expande por el mundo y la preocupación tamb… [+820 chars]"},{"source":{"id":"la-nacion","name":"La Nacion"},"author":"Apoorva Mandavilli","title":"Daño colateral: el peor de los monstruos se está propagando y no es el coronavirus - LA NACION","description":"","url":"https://www.lanacion.com.ar/el-mundo/el-peor-monstruos-se-esta-propagando-no-nid2412384","urlToImage":"//bucket3.glanacion.com/anexos/fotos/16/3335616.jpg","publishedAt":"2020-08-04T17:55:00Z","content":"En la concentración de esfuerzos en la lucha contra el coronavirus, fueron desatendidas otras enfermedades letales\r\n Fuente: LA NACION\r\nNUEVA YORK.- Empieza con un poco de fiebre y malestar general, … [+8536 chars]"},{"source":{"id":null,"name":"Adnsur.com.ar"},"author":"ADNSur","title":"Los seis \"tipos\" de coronavirus de acuerdo a los síntomas que provocan - ADN Sur","description":"Científicos de la Universidad King’s College London revelaron que existen seis formas diferentes de COVID-19.","url":"https://www.adnsur.com.ar/sociedad/los-seis--tipos--de-coronavirus-de-acuerdo-a-los-sintomas-que-provocan_a5f29343a35bdab46d72ea7bb","urlToImage":"https://adnsur-app.tadevel.xyz/hostname/www.adnsur.com.ar/api/v1/image/article/5f29343a35bdab46d72ea7bb/facebook?v=11f38d61ef271228ef2b02c3633e50b9","publishedAt":"2020-08-04T13:19:00Z","content":"LONDRES - El análisis de los datos de la aplicación COVID Symptom Study, dirigida por investigadores del King’s College London en conjunto con el hospital Guy’s and St Thomas, reveló que hay seis “ti… [+7600 chars]"},{"source":{"id":null,"name":"Crónica "},"author":"Crónica","title":"Jefe de Gabinete de Brasil tiene coronavirus y ya es el séptimo ministro infectado - Crónica ","description":"Se trata de Walter Braga Netto, quien permanecerá aislado y cumplirá su tarea de forma remota. El país sudamericano podría llegar esta semana a los 100.000 decesos por el Covid-19.","url":"https://www.cronica.com.ar/mundo/Jefe-de-Gabinete-de-Brasil-tiene-coronavirus-y-ya-es-el-septimo-ministro-infectado-20200803-0040.html","urlToImage":"https://www.cronica.com.ar/__export/1596484792304/sites/cronica/img/2020/08/03/walter_braga_netto_jair_bolsonaro_1_crop1596484721518.jpg","publishedAt":"2020-08-03T20:39:54Z","content":"El jefe del Gabinete de Brasil, Walter Braga Netto, dio este lunes positivo en coronavirus y se convirtió en el séptimo ministro del presidente Jair Bolsonaro en contraer la enfermedad, que alcanza a… [+1711 chars]"}]}
--------------------------------------------------------------------------------
/site/server/news_content/be.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":6,"articles":[{"source":{"id":null,"name":"Le Soir"},"author":"Par Le Soir","title":"Coronavirus: «On n'est pas dans une deuxième vague», affirme Frédérique Jacobs, porte-parole interfédérale - Le Soir","description":"La porte-parole interfédérale dans la lutte contre le coronavirus était invitée sur le plateau de RTL pour expliquer la hausse de cas en Belgique.","url":"https://www.lesoir.be/317206/article/2020-08-04/coronavirus-nest-pas-dans-une-deuxieme-vague-affirme-frederique-jacobs-porte","urlToImage":"https://www.lesoir.be/sites/default/files/dpistyles_v2/ena_16_9_extra_big/2020/08/04/node_317206/27657106/public/2020/08/04/B9724198707Z.1_20200804212739_000+GVOGEIB5A.2-0.jpg?itok=6vDb9jTQ1596570632","publishedAt":"2020-08-04T19:06:00Z","content":"La porte-parole interfédérale Frédérique Jacobs, invitée sur le plateau de RTL TVI ce mardi soir, a expliqué pourquoi selon elle la Belgique nest pas dans une deuxième vague de coronavirus.\r\n« On nes… [+947 chars]"},{"source":{"id":null,"name":"RTBF"},"author":null,"title":"Coronavirus : Verviers durcit le ton avec des mesures plus ciblées pour lutter contre le Covid - RTBF","description":"Dans un communiqué, la bourgmestre de Verviers, Muriel Targnion, durcit le ton et se pose des questions : \"pourquoi une progression si importante à Verviers ?\"Selon son analyse des chiffres de l’augmentation des cas de Covid-19, la bourgmestre...","url":"https://www.rtbf.be/info/regions/liege/detail_coronavirus-verviers-durcit-le-ton-avec-des-mesures-plus-ciblees-pour-lutter-contre-le-covid?id=10555081","urlToImage":"https://ds1.static.rtbf.be/article/image/1248x702/2/5/2/c7da2202001ef3739c67954b4c9dbb31-1596560856.png","publishedAt":"2020-08-04T17:11:03Z","content":"Dans un communiqué, la bourgmestre de Verviers, Muriel Targnion, durcit le ton et se pose des questions : \"pourquoi une progression si importante à Verviers ?\"Selon son analyse des chiffres de laugme… [+2392 chars]"},{"source":{"id":null,"name":"RTBF"},"author":null,"title":"Coronavirus: près de 700.000 morts dans le monde, des masques obligatoires en plein air - RTBF","description":"Le cap des 700.000 morts du Covid-19 dans le monde est en passe d'être franchi et l'accélération de la pandémie pousse certains pays à prendre des mesures de reconfinement, comme les Philippines, ou rendre le masque obligatoire localement en plein air,...","url":"https://www.rtbf.be/info/economie/detail_coronavirus-pres-de-700-000-morts-dans-le-monde-des-masques-obligatoires-en-plein-air?id=10555185","urlToImage":"https://ds1.static.rtbf.be/article/image/1248x702/0/1/e/798acc6dd44dad45daa902c0c45e26ea971f2fc0.jpg","publishedAt":"2020-08-04T16:56:56Z","content":"Le cap des 700.000 morts du Covid-19 dans le monde est en passe d'être franchi et l'accélération de la pandémie pousse certains pays à prendre des mesures de reconfinement, comme les Philippines, ou … [+4936 chars]"},{"source":{"id":null,"name":"RTBF"},"author":null,"title":"Cigarettes, vapoteuses, leurs fumées peuvent-elles transmettre le coronavirus ? - RTBF","description":"Ce lundi, une internaute nous interpellait avec la question suivante : \"Bonjour, je croise souvent dans la rue ou autres lieux, des fumeurs qui laissent tomber le masque et ne se gênent pas pour recracher leur fumée ou tousser bien sûr sans leur masque...","url":"https://www.rtbf.be/info/societe/detail_cigarettes-vapoteuses-leurs-fumees-peuvent-elles-transmettre-le-coronavirus?id=10554787","urlToImage":"https://ds1.static.rtbf.be/article/image/1248x702/6/6/9/ba203c265ffb4d4b9427962d90816d4a-1596529325.jpg","publishedAt":"2020-08-04T09:53:00Z","content":"Ce lundi, une internaute nous interpellait avec la question suivante : \"Bonjour, je croise souvent dans la rue ou autres lieux, des fumeurs qui laissent tomber le masque et ne se gênent pas pour recr… [+2426 chars]"},{"source":{"id":null,"name":"RTBF"},"author":null,"title":"Des Japonais ont développé des masques capables de traduire en 8 langues - RTBF","description":"Avec la pandémie qui touche toute la planète, ils sont devenus inévitables partout. Nous parlons évidemment des masques. Si ces petits \"outils\" dans la lutte contre le coronavirus sont rejetés par certains qui y voient une atteinte à leur liberté,...","url":"https://www.rtbf.be/info/economie/detail_des-japonais-ont-developpe-des-masques-capables-de-traduire-en-8-langues?id=10554775","urlToImage":"https://ds1.static.rtbf.be/article/image/1248x702/4/e/4/c7da2202001ef3739c67954b4c9dbb31-1596527497.png","publishedAt":"2020-08-04T08:42:40Z","content":"Avec la pandémie qui touche toute la planète, ils sont devenus inévitables partout. Nous parlons évidemment des masques. Si ces petits \"outils\" dans la lutte contre le coronavirus sont rejetés par ce… [+554 chars]"},{"source":{"id":null,"name":"Lavenir.net"},"author":"Thomas BERNARD","title":"INFOGRAPHIE | 70.000 cas de coronavirus en Belgique: comment l'épidémie s'est répandue dans les provinces depuis le 1er mars - l'avenir.net","description":"La Belgique vient de franchir la barre des 70.000 cas confirmés de coronavirus. L’épidémie avait faibli mais reprend depuis plusieurs semaines. Avec des disparités par province.","url":"https://www.lavenir.net/cnt/dmf20200804_01496347/70-000-cas-de-coronavirus-en-belgique-comment-l-epidemie-s-est-repandue-dans-les-provinces-depuis-le-1er-mars","urlToImage":"https://static.lavenir.net/assets/images_upload/actu24/2020/08/04/20dd01a2-d588-11ea-b18d-b85f3da3ad14_web__scale_0.1123381_0.1123381.jpg?height=335&width=636&mode=crop&watermark=ave-overlay","publishedAt":"2020-08-04T06:30:00Z","content":null}]}
--------------------------------------------------------------------------------
/site/server/news_content/fr.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":6,"articles":[{"source":{"id":null,"name":"Public"},"author":null,"title":"Mauvaise nouvelle pour TiboInshape : le vidéaste annonce dans un long message, avoir des problèmes de santé - Public.fr","description":"Ce mardi 4 août 2020, le célèbre youtubeur TiboInshape a annoncé à ses abonnés sur Instagram qu'il vient d'être testé positif au coronavirus. Honnête, le vidéaste de 28 ans a également parlé de ses symptômes après avoir avoué que sa compagne, la vidéaste &quo…","url":"https://www.public.fr/Toutes-les-photos/Mauvaise-nouvelle-pour-TiboInshape-le-videaste-annonce-dans-un-long-message-avoir-des-problemes-de-sante-1649173","urlToImage":"https://resize-public.ladmedia.fr/img/var/public/storage/images/toutes-les-photos/mauvaise-nouvelle-pour-tiboinshape-le-videaste-annonce-dans-un-long-message-avoir-des-problemes-de-sante-1649173/43789314-1-fre-FR/Mauvaise-nouvelle-pour-TiboInshape-le-videaste-annonce-dans-un-long-message-avoir-des-problemes-de-sante.jpg","publishedAt":"2020-08-04T20:15:00Z","content":"Voilà des semaines que le gouvernement tente de faire respecter les nouvelles mesures sanitaires liées à la crise du coronavirus. Si le port du masque est désormais obligatoire dans tous les lieux pu… [+2260 chars]"},{"source":{"id":null,"name":"20 Minutes"},"author":"J.-L.D.","title":"Coronavirus : 30.296 personnes sont décédées en France, le nombre de réanimations toujours en hausse - 20 Minutes","description":"Le chiffre des décès en Ehpad a lui été revu à la baisse","url":"https://www.20minutes.fr/sante/2834411-20200804-coronavirus-30296-personnes-decedees-france-nombre-reanimations-toujours-hausse","urlToImage":"https://img.20mn.fr/XBT_IoBCSSmLVEbadsANBQ/648x360_le-nombre-de-cas-de-coronavirus-a-augmente-ces-derniers-jours-en-france.jpg","publishedAt":"2020-08-04T18:55:18Z","content":"Le nombre de cas de coronavirus a augmenté ces derniers jours en France. PHILIPPE LOPEZ / AFP\r\n30.296 personnes sont décédées au total en France de lépidémie de \r\ncoronavirus, dont 19.790 au sein des… [+557 chars]"},{"source":{"id":null,"name":"Boursorama"},"author":null,"title":"Dans le rouge au 1er semestre, Accor prévoit 1.000 suppressions de postes - Boursorama","description":"PARIS (Reuters) - Pénalisé par la crise sanitaire liée au coronavirus et par les mesures de confinement et fermetures de frontières qui l'ont accompagnée, le groupe hôtelier Accor a conclu le 30 juin un premier semestre catastrophique qui l'a conduit à annonc…","url":"https://www.boursorama.com/bourse/actualites/dans-le-rouge-au-1er-semestre-accor-prevoit-1-000-suppressions-de-postes-7295d4cb5990c9a3790b75a10495ee68","urlToImage":"https://s.brsimg.com/static-000/cache/i/content/images/d/d/b/ddbdbe7872e9494cfbe4596b45c1ff20-800x519.jpg","publishedAt":"2020-08-04T17:11:00Z","content":"DANS LE ROUGE AU 1ER SEMESTRE, ACCOR PRÉVOIT 1.000 SUPPRESSIONS DE POSTES\r\nPARIS (Reuters) - Pénalisé par la crise sanitaire liée au coronavirus et par les mesures de confinement et fermetures de fro… [+3032 chars]"},{"source":{"id":null,"name":"20 Minutes"},"author":"20 Minutes avec AFP","title":"Coronavirus en Australie : Des centaines de personnes contaminées ont enfreint l’ordre de confinement - 20 Minutes","description":"Les autorités ont annoncé le déploiement d’un demi-millier de militaires supplémentaires pour faire respecter les nouvelles mesures","url":"https://www.20minutes.fr/monde/2834167-20200804-coronavirus-australie-centaines-personnes-contaminees-enfreint-ordre-confinement","urlToImage":"https://img.20mn.fr/kV5OX37tRKCYEi3Ffzb5KQ/648x360_des-passagers-attendent-le-tram-a-melbourne-le-3-aout-2020.jpg","publishedAt":"2020-08-04T09:56:00Z","content":"Des passagers attendent le tram à Melbourne, le 3 août 2020. Speed Media//SIPA\r\nEn Australie, des centaines de personnes atteintes du \r\nCovid-19 ont enfreint lobligation de rester chez elles, ont ann… [+2383 chars]"},{"source":{"id":null,"name":"Orange.fr"},"author":"https://www.facebook.com/orangeactufr","title":"Coronavirus : le Conseil scientifique anticipe déjà une seconde vague à l'automne ou l'hiver - Actu Orange","description":"Dans un avis communiqué le 27 juillet, le groupe de scientifiques rappelle que \"l'avenir de l'épidémie à court terme est en grande partie entre les mains des citoyens\". En l'absence d'immunité collective, un retour du Covid-19 dans les prochains mois est lui …","url":"https://actu.orange.fr/france/coronavirus-le-conseil-scientifique-anticipe-deja-une-seconde-vague-a-l-automne-ou-l-hiver-magic-CNT000001sc3JR.html","urlToImage":"http://media2.woopic.com/api/v1/images/661%2Fmagic-article-actu%2F520%2F52c%2F98dc7a656d014984a4d2341fc1%2Fcoronavirus-le-conseil-scientifique-anticipe-deja-une-seconde-vague-a-l-automne-ou-l-hiver%7C52052c98dc7a656d014984a4d2341fc1.png?format=470x264&facedetect=1&quality=85","publishedAt":"2020-08-04T09:15:00Z","content":"Orange avec Media Services, publié le mardi 04 août 2020 à 11h15\r\nDans un avis communiqué le 27 juillet, le groupe de scientifiques rappelle que \"l'avenir de l'épidémie à court terme est en grande pa… [+1981 chars]"},{"source":{"id":null,"name":"Linternaute.com"},"author":"Benoit Deshayes","title":"Covid-19 en France : tous les chiffres, courbes et cartes sur le coronavirus - Linternaute.com","description":"COVID 19. La pandémie de coronavirus continue de sévir en France. Retrouvez nos cartes, courbes, statistiques et toutes les données relatives au Covid-19.","url":"https://www.linternaute.com/actualite/guide-vie-quotidienne/2489651-covid-19-en-france-chiffres-courbes-cartes-l-evolution-du-coronavirus-simplifiee/","urlToImage":"https://img-4.linternaute.com/E2_670e1eQm8U6dUupgyVeqoc7c=/540x/smart/ecbcf1dee64148acabe312564ab59e8d/ccmcms-linternaute/17504420.jpg","publishedAt":"2020-08-03T08:55:00Z","content":"COVID 19. La pandémie de coronavirus continue de sévir en France. Retrouvez nos cartes, courbes, statistiques et toutes les données relatives au Covid-19. \r\nDepuis des mois, chaque jour, Santé publiq… [+6633 chars]"}]}
--------------------------------------------------------------------------------
/site/server/news_content/au.json:
--------------------------------------------------------------------------------
1 | {"status":"ok","totalResults":7,"articles":[{"source":{"id":"abc-news-au","name":"ABC News (AU)"},"author":"Alicia Nally","title":"Coronavirus Australia live news: Wednesday, August 5 - ABC News","description":"The ABC understands Victoria will report about 725 new coronavirus cases today, ahead of new restrictions on businesses beginning from midnight tonight. Follow live.","url":"https://www.abc.net.au/news/2020-08-05/coronavirus-australia-live-news-worker-permits-melbourne/12524320","urlToImage":"https://www.abc.net.au/cm/rimage/12414910-16x9-large.jpg?v=2","publishedAt":"2020-08-05T00:16:00Z","content":"Just nowWedWednesday5AugAugust2020 at 12:49amBy Jacqueline Howard\r\nInformation for Queenslanders temporarily interstate \r\nDo we know what the QLD border closure means for QLD residents who are tempor… [+7178 chars]"},{"source":{"id":"abc-news-au","name":"ABC News (AU)"},"author":"Michael Janda","title":"Virgin Australia to slash 3,000 jobs for slimmed post-coronavirus operations - ABC News","description":"Virgin Australia reveals plans to make about a third of its workforce redundant, with approximately 3,000 jobs expected to go under new owners Bain Capital, while 6,000 staff remain.","url":"https://www.abc.net.au/news/2020-08-05/virgin-australia-airline-to-slim-down-post-coronavirus/12525186","urlToImage":"https://www.abc.net.au/cm/rimage/12393428-16x9-large.jpg?v=3","publishedAt":"2020-08-04T23:09:00Z","content":"Virgin Australia has revealed plans to make about a third of its workforce redundant, with approximately 3,000 jobs expected to go under new owners Bain Capital, while 6,000 staff remain.\r\nKey points… [+5080 chars]"},{"source":{"id":null,"name":"The Sydney Morning Herald"},"author":"Mary Ward","title":"Coronavirus updates LIVE: Victoria's stage four business restrictions come into effect as state's COVID-19 case surge continues; Australian death toll stands at 232 - The Sydney Morning Herald","description":"Non-essential Victorian retail stores have been directed to shut tonight, as the state returns to remote learning.","url":"https://www.smh.com.au/national/coronavirus-updates-live-victoria-s-stage-four-business-restrictions-come-into-effect-as-state-s-covid-19-case-surge-continues-australian-death-toll-stands-at-232-20200804-p55igs.html","urlToImage":"https://static.ffx.io/images/$zoom_0.20436125048243922%2C$multiply_0.7554%2C$ratio_1.776846%2C$width_1059%2C$x_0%2C$y_110/t_crop_custom/q_86%2Cf_auto/t_smh_no_age_social_wm/8b97c3effd4af2614315d6361e8777e52025f657","publishedAt":"2020-08-04T22:33:00Z","content":"She's at home on a couple of days off, he said.\r\nShe had a concussion, had her hair pulled out. But alarmingly was subjected to an attack that escalated from nothing.\r\nShe's in as good spirits as you… [+1209 chars]"},{"source":{"id":"abc-news-au","name":"ABC News (AU)"},"author":"Kevin Nguyen, Alison Xiao","title":"Victorians entering NSW aren't being placed into coronavirus hotel quarantine, here's why - ABC News","description":"As Victoria's coronavirus cases remain high and Melbourne enters stricter lockdown, NSW Health rejects calls to force travellers from Melbourne into hotel quarantine and says it has a strict screening process in place at airports.","url":"https://www.abc.net.au/news/2020-08-05/victorians-not-going-into-nsw-coronavirus-hotel-quarantine/12523538","urlToImage":"https://www.abc.net.au/cm/rimage/12524208-16x9-large.jpg?v=2","publishedAt":"2020-08-04T19:14:00Z","content":"As Victoria's coronavirus cases remain high and Melbourne enters stage 4 restrictions, some political leaders in NSW have called for those entering the state from the southern border to be treated as… [+4857 chars]"},{"source":{"id":"abc-news-au","name":"ABC News (AU)"},"author":"ABC News","title":"Coronavirus update: WHO team in China had 'extensive discussions' with scientists in Wuhan, Philippines records daily case high - ABC News","description":"The World Health Organization says a team sent to China for preliminary investigations into the origins of the coronavirus received updates on epidemiological studies and animal health research from Chinese counterparts, while The Philippines records a region…","url":"https://www.abc.net.au/news/2020-08-05/coronavirus-update-australia-covid19-who-china-philippines/12524350","urlToImage":"https://www.abc.net.au/cm/rimage/12170870-16x9-large.jpg?v=2","publishedAt":"2020-08-04T17:18:00Z","content":"The World Health Organization says a team sent to China for preliminary investigations into the origins of the coronavirus had \"extensive discussions\" with scientists in Wuhan.\r\nMeanwhile The Philipp… [+7551 chars]"},{"source":{"id":null,"name":"The Advertiser"},"author":"Andrew Hough, Gretel Sneath, Ben Harvy","title":"One coronavirus case overturned in South Australia as urgent health alert issued for northern suburbs businesses visited by infected - The Advertiser","description":"One of South Australia’s latest COVID-19 cases has been overturned after it was found a woman with no links to Victoria falsely tested positive for the infection.","url":"https://www.adelaidenow.com.au/coronavirus/two-more-coronavirus-cases-in-south-australia-as-urgent-health-alert-issued-for-northern-suburbs-businesses-they-visited/news-story/c9b303d3cebcac7887fa34a5fb755fb2","urlToImage":"https://cdn.newsapi.com.au/image/v1/b211503da51e55d8b63f19a8ebf82551","publishedAt":"2020-08-04T06:42:00Z","content":"One of South Australias latest COVID-19 cases has been overturned after it was found a woman with no links to Victoria falsely tested positive for the infection.\r\nChief public health officer Professo… [+8295 chars]"},{"source":{"id":"news-com-au","name":"News.com.au"},"author":"Sam Clench","title":"Coronavirus: Donald Trump cites Australia to justify anti-lockdown stance - NEWS.com.au","description":"Coronavirus: Donald Trump cites Australia to justify anti-lockdown stance","url":"https://www.news.com.au/lifestyle/health/health-problems/coronavirus-donald-trump-cites-australia-to-justify-antilockdown-stance/news-story/57cb8f71ae2dbc569d644257558e70cb","urlToImage":"https://cdn.newsapi.com.au/image/v1/565bfeea674ac7cb62bbebeba590de60?width=650","publishedAt":"2020-08-04T00:57:50Z","content":"US President Donald Trump has cited the worsening coronavirus situation in Australia to justify his stance that a lockdown would inflict more harm than it would prevent.Speaking to reporters at today… [+4275 chars]"}]}
--------------------------------------------------------------------------------
/site/assets/css/parts/main-app.css:
--------------------------------------------------------------------------------
1 | /* main app panel */
2 | .panel.main-app {
3 | max-height: calc(100vh - 8.25rem);
4 | height: calc(100vh - 8.25rem);
5 | position: relative;
6 | padding-top: 0;
7 | display: flex;
8 | flex-direction: column;
9 | box-sizing: border-box;
10 | }
11 |
12 | @media only screen and (max-width: 1050px) {
13 | .panel.main-app {
14 | height: auto;
15 | max-height: none;
16 | overflow-y: hidden;
17 | }
18 | }
19 |
20 | /* tabselect functionality */
21 | .panel.main-app {
22 | padding-top: 0.5rem;
23 | }
24 | .panel.main-app .tab-select {
25 | flex-basis: 2rem;
26 | flex-shrink: 0;
27 | list-style: none;
28 | margin-top: 0.5rem;
29 | margin-bottom: 1.4rem;
30 | display: block;
31 | font-size: 0;
32 | }
33 | .panel.main-app .tab-select li {
34 | font-size: 1rem;
35 | height: 2rem;
36 | box-sizing: border-box;
37 | display: inline-block;
38 | margin-right: 1rem;
39 | border-bottom: 2px solid var(--subdark-color);
40 | line-height: calc(2rem - 2px);
41 | padding: 0 0.25rem;
42 | cursor: pointer;
43 | opacity: 0.8;
44 | transition: opacity 0.2s, border-color 0.2s;
45 | user-select: none;
46 | }
47 | .panel.main-app .tab-select li:hover {
48 | opacity: 1;
49 | border-color: var(--supermedium-color);
50 | }
51 |
52 | .panel.main-app.overview-active .tab-select li.overview,
53 | /*.panel.main-app.stock-active .tab-select li.stock,*/
54 | .panel.main-app.health-active .tab-select li.health {
55 | border-color: var(--white-color);
56 | opacity: 1;
57 | font-weight: 600;
58 | }
59 |
60 | .panel.main-app .tabs > section {
61 | display: none;
62 | }
63 |
64 | .panel.main-app.overview-active .tabs > section.overview,
65 | /*.panel.main-app.stock-active .tabs > section.stock,*/
66 | .panel.main-app.health-active .tabs > section.health {
67 | display: block;
68 | }
69 |
70 | @media only screen and (max-width: 550px) {
71 | .panel.main-app .tab-select li {
72 | margin-right: 0.25rem;
73 | }
74 | .panel.main-app .tab-select li span {
75 | display: none;
76 | }
77 | }
78 |
79 | .panel.main-app .tabs > section .panel-title {
80 | line-height: 1.5;
81 | /* border-bottom: 1px solid var(--regular-color);*/
82 | margin-bottom: 0.95rem !important;
83 | }
84 |
85 | .panel.main-app .tabs > section .sources {
86 | font-size: 0.9rem;
87 | opacity: 0.7;
88 | overflow: hidden;
89 | padding-top: 1rem;
90 | border-top: 1px solid var(--supermedium-color);
91 | }
92 |
93 | .panel.main-app .tabs > section * {
94 | line-height: 1.5;
95 | }
96 |
97 | .panel.main-app .tabs > section > *:not(:last-child),
98 | .panel.main-app .tabs > section > .sources > *:not(:last-child) {
99 | margin-bottom: 1rem;
100 | }
101 |
102 | .panel.main-app .tabs > section a {
103 | text-decoration: none;
104 | font-weight: 600;
105 | }
106 | .panel.main-app .tabs > section a:hover {
107 | text-decoration: underline;
108 | }
109 |
110 | .panel.main-app .tabs > section > ul {
111 | margin-left: 3rem;
112 | }
113 |
114 | @media only screen and (max-width: 600px) {
115 | .panel.main-app .tabs > section > ul {
116 | margin-left: 1.5rem;
117 | }
118 | }
119 |
120 | .panel.main-app .tabs > section > ul > li {
121 | color: var(--somewhat-submedium-color);
122 | }
123 | .panel.main-app .tabs > section > ul > li strong {
124 | color: var(--white-color);
125 | }
126 |
127 | .panel.main-app .tabs > section > ul > li:not(:last-child) {
128 | margin-bottom: 0.25rem;
129 | }
130 |
131 | /* styled links */
132 | .panel.main-app .tabs > section .styled-link {
133 | display: block;
134 | float: left;
135 | width: 100%;
136 | box-sizing: border-box;
137 | padding: 0.5rem 0.75rem;
138 | border: 1px solid var(--regular-color);
139 | border-radius: 4px;
140 | min-height: 3rem;
141 | opacity: 0.7;
142 | transition: opacity 0.2s, transform 0.2s, box-shadow 0.2s !important;
143 | backface-visibility: hidden;
144 | text-decoration: none !important;
145 | }
146 | .panel.main-app .tabs > section .styled-link:not(:last-child) {
147 | margin-bottom: 1.15rem;
148 | }
149 | .panel.main-app .tabs > section .styled-link:hover {
150 | opacity: 1;
151 | transform: translateY(-1px);
152 | box-shadow: 0 0.25rem 1rem var(--shadow-color);
153 | }
154 | .panel.main-app .tabs > section .styled-link:active {
155 | box-shadow: 0 0.125rem 0.5rem var(--shadow-color);
156 | transform: translateY(0);
157 | }
158 |
159 | .panel.main-app .tabs > section .styled-link > * {
160 | display: inline-block;
161 | min-height: 2rem;
162 | line-height: 2rem;
163 | vertical-align: top;
164 | }
165 | .panel.main-app .tabs > section .styled-link > span {
166 | margin-right: 0.5rem;
167 | }
168 | .panel.main-app .tabs > section .styled-link > svg {
169 | height: 2rem;
170 | width: auto;
171 | transform: scale(0.85) translateY(-0.075rem);
172 | fill: var(--white-color);
173 | }
174 |
175 | /* live updates section */
176 | .panel.main-app.overview-active .tabs {
177 | display: flex !important;
178 | flex-direction: column;
179 | flex-basis: 100%;
180 | }
181 | .panel.main-app.overview-active .tabs > section.overview {
182 | display: flex !important;
183 | flex-direction: column;
184 | flex-basis: 100%;
185 | }
186 |
187 | @media only screen and (max-width: 1050px) {
188 | .panel.main-app .tabs > section.overview {
189 | flex-basis: 75vh !important;
190 | }
191 | }
192 |
193 | @media only screen and (max-width: 900px) {
194 | .panel.main-app .tabs > section.overview {
195 | flex-basis: 50vh !important;
196 | }
197 | }
198 |
199 | /* live updates section styled links */
200 | @media only screen and (min-width: 830px) {
201 | .panel.main-app .tabs > section.overview .styled-link {
202 | width: calc(50% - (1.25rem / 2));
203 | margin-bottom: 0;
204 | }
205 | .panel.main-app .tabs > section.overview .styled-link:not(:last-child) {
206 | margin-right: 1.25rem;
207 | }
208 | }
209 |
210 | /* live updates section video container */
211 | .panel.main-app .tabs > section.overview .video-container {
212 | flex-basis: 100%;
213 | width: 100%;
214 | overflow: hidden;
215 | border-radius: 4px;
216 | margin-right: auto;
217 | margin-left: auto;
218 | flex-grow: 1;
219 | position: relative;
220 | }
221 | .panel.main-app .tabs > section.overview .video-container iframe {
222 | position: absolute;
223 | }
224 |
225 | /* stock section
226 |
227 | /* stock widget
228 | .panel.main-app .tabs > section.stock .stock-widget {
229 | width: 100%;
230 | height: 42.5rem;
231 | }
232 |
233 | .panel.main-app .tabs > section.stock .panel-title {
234 | margin-bottom: 0.5rem !important;
235 | }
236 | .panel.main-app .tabs > section.stock p {
237 | opacity: 0.7;
238 | }
239 |
240 | /* don't show numbers in stock widget
241 | .tv-widget-watch-list__quote-column:last-child {
242 | opacity: 0;
243 | }
244 | */
245 |
--------------------------------------------------------------------------------
/site/assets/js/fitty.js:
--------------------------------------------------------------------------------
1 | /*
2 | * fitty v2.3.0 - Snugly resizes text to fit its parent container
3 | * Copyright (c) 2020 Rik Schennink (https://pqina.nl/)
4 | */
5 | !(function(e, t) {
6 | if ('function' == typeof define && define.amd) define(['module', 'exports'], t);
7 | else if ('undefined' != typeof exports) t(module, exports);
8 | else {
9 | var n = { exports: {} };
10 | t(n, n.exports), (e.fitty = n.exports);
11 | }
12 | })(this, function(e, t) {
13 | 'use strict';
14 | Object.defineProperty(t, '__esModule', { value: !0 });
15 | var E =
16 | Object.assign ||
17 | function(e) {
18 | for (var t = 1; t < arguments.length; t++) {
19 | var n = arguments[t];
20 | for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i]);
21 | }
22 | return e;
23 | };
24 | (t.default = (function(n) {
25 | if (n) {
26 | var r = { IDLE: 0, DIRTY_CONTENT: 1, DIRTY_LAYOUT: 2, DIRTY: 3 },
27 | i = [],
28 | e = null,
29 | o =
30 | 'requestAnimationFrame' in n
31 | ? function() {
32 | n.cancelAnimationFrame(e),
33 | (e = n.requestAnimationFrame(function() {
34 | return u(
35 | i.filter(function(e) {
36 | return e.dirty && e.active;
37 | })
38 | );
39 | }));
40 | }
41 | : function() {},
42 | t = function(t) {
43 | return function() {
44 | i.forEach(function(e) {
45 | return (e.dirty = t);
46 | }),
47 | o();
48 | };
49 | },
50 | u = function(e) {
51 | e
52 | .filter(function(e) {
53 | return !e.styleComputed;
54 | })
55 | .forEach(function(e) {
56 | e.styleComputed = s(e);
57 | }),
58 | e.filter(f).forEach(d);
59 | var t = e.filter(c);
60 | t.forEach(l),
61 | t.forEach(function(e) {
62 | d(e), a(e);
63 | }),
64 | t.forEach(p);
65 | },
66 | a = function(e) {
67 | return (e.dirty = r.IDLE);
68 | },
69 | l = function(e) {
70 | (e.availableWidth = e.element.parentNode.clientWidth),
71 | (e.currentWidth = e.element.scrollWidth),
72 | (e.previousFontSize = e.currentFontSize),
73 | (e.currentFontSize = Math.min(Math.max(e.minSize, (e.availableWidth / e.currentWidth) * e.previousFontSize), e.maxSize)),
74 | (e.whiteSpace = e.multiLine && e.currentFontSize === e.minSize ? 'normal' : 'nowrap');
75 | },
76 | c = function(e) {
77 | return e.dirty !== r.DIRTY_LAYOUT || (e.dirty === r.DIRTY_LAYOUT && e.element.parentNode.clientWidth !== e.availableWidth);
78 | },
79 | s = function(e) {
80 | var t = n.getComputedStyle(e.element, null);
81 | (e.currentFontSize = parseInt(t.getPropertyValue('font-size'), 10)),
82 | (e.display = t.getPropertyValue('display')),
83 | (e.whiteSpace = t.getPropertyValue('white-space'));
84 | },
85 | f = function(e) {
86 | var t = !1;
87 | return (
88 | !e.preStyleTestCompleted &&
89 | (/inline-/.test(e.display) || ((t = !0), (e.display = 'inline-block')),
90 | 'nowrap' !== e.whiteSpace && ((t = !0), (e.whiteSpace = 'nowrap')),
91 | (e.preStyleTestCompleted = !0),
92 | t)
93 | );
94 | },
95 | d = function(e) {
96 | e.originalStyle || (e.originalStyle = e.element.getAttribute('style') || ''),
97 | (e.element.style.cssText =
98 | e.originalStyle + ';white-space:' + e.whiteSpace + ';display:' + e.display + ';font-size:' + e.currentFontSize + 'px');
99 | },
100 | p = function(e) {
101 | e.element.dispatchEvent(
102 | new CustomEvent('fit', {
103 | detail: { oldValue: e.previousFontSize, newValue: e.currentFontSize, scaleFactor: e.currentFontSize / e.previousFontSize }
104 | })
105 | );
106 | },
107 | v = function(e, t) {
108 | return function() {
109 | (e.dirty = t), e.active && o();
110 | };
111 | },
112 | m = function(e) {
113 | b(e), (e.newbie = !0), (e.dirty = !0), i.push(e);
114 | },
115 | y = function(t) {
116 | return function() {
117 | (i = i.filter(function(e) {
118 | return e.element !== t.element;
119 | })),
120 | t.observeMutations && t.observer.disconnect(),
121 | (t.element.style.cssText = t.originalStyle);
122 | };
123 | },
124 | h = function(e) {
125 | return function() {
126 | e.active || ((e.active = !0), o());
127 | };
128 | },
129 | S = function(e) {
130 | return function() {
131 | return (e.active = !1);
132 | };
133 | },
134 | b = function(e) {
135 | e.observeMutations &&
136 | ((e.observer = new MutationObserver(v(e, r.DIRTY_CONTENT))), e.observer.observe(e.element, e.observeMutations));
137 | },
138 | w = {
139 | minSize: 16,
140 | maxSize: 512,
141 | multiLine: !0,
142 | observeMutations: 'MutationObserver' in n && { subtree: !0, childList: !0, characterData: !0 }
143 | },
144 | T = null,
145 | z = function() {
146 | n.clearTimeout(T), (T = n.setTimeout(t(r.DIRTY_LAYOUT), D.observeWindowDelay));
147 | },
148 | F = ['resize', 'orientationchange'];
149 | return (
150 | Object.defineProperty(D, 'observeWindow', {
151 | set: function(e) {
152 | var t = (e ? 'add' : 'remove') + 'EventListener';
153 | F.forEach(function(e) {
154 | n[t](e, z);
155 | });
156 | }
157 | }),
158 | (D.observeWindow = !0),
159 | (D.observeWindowDelay = 100),
160 | (D.fitAll = t(r.DIRTY)),
161 | D
162 | );
163 | }
164 | function g(e, t) {
165 | var n = E({}, w, t),
166 | i = e.map(function(e) {
167 | var t = E({}, n, { element: e, active: !0 });
168 | return m(t), { element: e, fit: v(t, r.DIRTY), unfreeze: h(t), freeze: S(t), unsubscribe: y(t) };
169 | });
170 | return o(), i;
171 | }
172 | function D(e) {
173 | var t,
174 | n = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {};
175 | return 'string' == typeof e ? g(((t = document.querySelectorAll(e)), [].slice.call(t)), n) : g([e], n)[0];
176 | }
177 | })('undefined' == typeof window ? null : window)),
178 | (e.exports = t.default);
179 | });
180 |
--------------------------------------------------------------------------------
/site/index.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Coronavirus (COVID-19) Live Monitor
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 |
50 |
51 |
52 |