gepebdevelopers
5 years ago
160 changed files with 76006 additions and 0 deletions
@ -0,0 +1,237 @@ |
|||||
|
= Covid 19 Graphs Web Application |
||||
|
|
||||
|
==== ΠΑΝΕΠΙΣΤΗΜΙΟ ΔΥΤΙΚΗΣ ΑΤΤΙΚΗΣ |
||||
|
==== Υπολογιστική Νέφους και Υπηρεσίες |
||||
|
|
||||
|
|
||||
|
====== Τσαμαντιώτης Ηρακλής cs130004 |
||||
|
====== Μπίνας Γεώργιος cs130001 |
||||
|
|
||||
|
|
||||
|
|
||||
|
:sectnums: |
||||
|
|
||||
|
== Περιγραφή |
||||
|
Στα πλαίσια του εργαστηρίου Υπολογιστικής Νέφους και Υπηρεσίες υλοποιήθηκε μία web εφαρμογή η οποία παρέχει στον χρήστη ενημέρωση σχετικά με την κατάσταση της πανδημίας με την μορφή γραφημάτων. Ο χρήστης έχει την δυνατότητα να επιλέξει και να φιλτράρει τα αποτελέσματα βάση ημερομηνίας, ηπείρου και χώρας. Τα αποτελέσματα εμφανίζονται σε κατάλληλα γραφήματα τα οποία μπορούν να απεικονίσουν τα διαφορετικά κριτήρια που επιθυμεί ο χρήστης. |
||||
|
|
||||
|
|
||||
|
== Τεχνολογίες - Αρχιτεκτονικές |
||||
|
|
||||
|
Η εφαρμογή έχει αναπτυχθεί σε php και javascript και χρησιμοποιεί MySql database για την αποθήκευση των δεδομένων. |
||||
|
Για την ανάπτυξη της χρησιμοποιήθηκε η αρχιτεκτονική των Microservices. Χρησιμοποιείται Docker για το deploy ολων των επιμέρους στοιχείων (services) που χρειάζεται η εφαρμογή για να λειτουργεί και όλα αυτα τρέχουν ως services σε ένα swarm. |
||||
|
|
||||
|
=== Docker |
||||
|
|
||||
|
Σε δύο Vitrual Machines εχει εγκατατασταθεί Docker και έχουν σεταριστεί ώστε να δουλεύουν σε swarm mode. Ο ένας είναι ο manager και ο άλλος o worker. |
||||
|
Έχουν δημιουργηθεί 4 nodes, 2 στον manager και 2 στον worker. |
||||
|
|
||||
|
=== Database |
||||
|
|
||||
|
Για την αποθήκευση των δεδομένων που χρειάζεται η εφαρμογή χρησιμοποιείτε MySql database η οποία τρέχει ως service και δεν γίνεται replicated. |
||||
|
|
||||
|
=== RestFull WebServices Application |
||||
|
|
||||
|
Για την λήψη δεδομένων απο την database έχουν δημιουργηθεί Rest Web Services σε php τα οποία επιστρέφουν τα δεδομένα σε μορφή JSON. Υπάρχουν 12 Web Services τα οποία τρέχουν σε apache server ο οποίος έχει γίνει replicated σε 4 nodes. |
||||
|
|
||||
|
|
||||
|
=== Front Application |
||||
|
|
||||
|
Για την παρουσίαση των δεδομένων στον τελικό χρήστη έχει δημιουργηθεί ένα front end application σε php και javascript χρησιμοποιώντας Bootstrap JQuery και ApexCharts. Η εφαρμογή αυτή παρέχει τις σελίδες οι οποίες είναι διαθέσιμες στον τελικό χρήστη. Η κλήση στα rest services γίνεται κατευθείαν απο τον client και τα γραφήματα σχεδιάζονται με την χρήση του ApexCharts. Η εφαρμογή τρέχει σε apache server ο οποίος έχει γίνει replicated σε 4 nodes. |
||||
|
|
||||
|
=== Proxy |
||||
|
|
||||
|
Έχει γίνει deploy ένασ NGINX server o οποίος έχει γίνει replicated σε 4 nodes. Ο συγκεκριμένος server λειτουργεί ως proxy server. Παρέχει το ssl και κάνει την δρομολόγηση στην κατάλληλη εφαρμογή (Front Application, RestFull WebServices Application) ανάλογα με το path στο url. |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
== Installation |
||||
|
Για την εγκατάσταση της εφαρμογής υλοποιήθηκε το παρακάτω .yaml αρχείο το οποίο θα πρέπει να γίνει deploy απο τον manager του swarm. |
||||
|
[source,yaml] |
||||
|
version: "3.4" |
||||
|
services: |
||||
|
proxy: |
||||
|
image: nginx:1.17.9-alpine |
||||
|
deploy: |
||||
|
mode: replicated |
||||
|
restart_policy: |
||||
|
delay: 10s |
||||
|
max_attempts: 10 |
||||
|
window: 60s |
||||
|
replicas: 4 |
||||
|
placement: |
||||
|
# max_replicas_per_node: 1 |
||||
|
constraints: |
||||
|
- node.labels.group==server |
||||
|
ports: |
||||
|
- "8080:80" |
||||
|
- "9443:443" |
||||
|
volumes: |
||||
|
- /home/user/project_cloud/proxy.conf:/etc/nginx/conf.d/default.conf |
||||
|
- /home/user/project_cloud/public.crt:/etc/nginx/public.crt |
||||
|
- /home/user/project_cloud/private.key:/etc/nginx/private.key |
||||
|
networks: |
||||
|
- covid_19 |
||||
|
mysql_database: |
||||
|
image: mysql:latest |
||||
|
command: --default-authentication-plugin=mysql_native_password |
||||
|
environment: |
||||
|
MYSQL_ROOT_PASSWORD: [DATABASE ROOT PASSWORD] |
||||
|
ports: |
||||
|
- 3306:3306 |
||||
|
volumes: |
||||
|
- mysql_database:/var/lib/mysql |
||||
|
adminer_container: |
||||
|
image: adminer:latest |
||||
|
environment: |
||||
|
ADMINER_DEFAULT_SERVER: mysql_db_container |
||||
|
ports: |
||||
|
- 6060:8080 |
||||
|
apache2_application: |
||||
|
image: my_apache:0.1 |
||||
|
deploy: |
||||
|
mode: replicated |
||||
|
restart_policy: |
||||
|
delay: 10s |
||||
|
max_attempts: 10 |
||||
|
window: 60s |
||||
|
replicas: 4 |
||||
|
placement: |
||||
|
# max_replicas_per_node: 1 |
||||
|
constraints: |
||||
|
- node.labels.group==server |
||||
|
volumes: |
||||
|
- /home/user/project_cloud/application_php/www:/var/www/html |
||||
|
ports: |
||||
|
- 90:80 |
||||
|
networks: |
||||
|
- covid_19 |
||||
|
apache2_client: |
||||
|
image: my_apache:0.1 |
||||
|
deploy: |
||||
|
mode: replicated |
||||
|
restart_policy: |
||||
|
delay: 10s |
||||
|
max_attempts: 10 |
||||
|
window: 60s |
||||
|
replicas: 4 |
||||
|
placement: |
||||
|
# max_replicas_per_node: 1 |
||||
|
constraints: |
||||
|
- node.labels.group==server |
||||
|
volumes: |
||||
|
- /home/user/project_cloud/client/www:/var/www/html |
||||
|
ports: |
||||
|
- 91:80 |
||||
|
networks: |
||||
|
- covid_19 |
||||
|
volumes: |
||||
|
mysql_database: |
||||
|
networks: |
||||
|
covid_19: |
||||
|
driver: overlay |
||||
|
secrets: |
||||
|
secret_key: |
||||
|
external: true |
||||
|
access_key: |
||||
|
external: true |
||||
|
|
||||
|
Στον ίδιο φάκελο του project υλοποιήθηκε το αρχείο proxy.conf το οποίο είναι το configuration για τον proxy server. Επίσης στον φάκελο αυτό υπάρχουν τα private και public keys για την υλοποίηση του ssl. |
||||
|
|
||||
|
[source,conf] |
||||
|
proxy_cache_path /var/tmp levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off; |
||||
|
server { |
||||
|
listen 80; |
||||
|
server_name name.example.org; |
||||
|
return 301 https://83.212.77.22$request_uri; |
||||
|
} |
||||
|
server { |
||||
|
listen 443 ssl; |
||||
|
server_name name.example.org; |
||||
|
# To allow special characters in headers |
||||
|
ignore_invalid_headers off; |
||||
|
# Allow any size file to be uploaded. |
||||
|
# Set to a value such as 1000m; to restrict file size to a specific value |
||||
|
client_max_body_size 0; |
||||
|
# To disable buffering |
||||
|
proxy_buffering off; |
||||
|
ssl_certificate /etc/nginx/public.crt; |
||||
|
ssl_certificate_key /etc/nginx/private.key; |
||||
|
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; |
||||
|
ssl_ciphers HIGH:!aNULL:!MD5; |
||||
|
location /application/ { |
||||
|
proxy_cache my_cache; |
||||
|
proxy_set_header X-Real-IP $remote_addr; |
||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
||||
|
proxy_set_header X-Forwarded-Proto $scheme; |
||||
|
proxy_set_header Host $http_host; |
||||
|
proxy_set_header X-NginX-Proxy true; |
||||
|
proxy_ssl_session_reuse off; |
||||
|
proxy_redirect off; |
||||
|
proxy_connect_timeout 300; |
||||
|
# Default is HTTP/1, keepalive is only enabled in HTTP/1.1 |
||||
|
proxy_http_version 1.1; |
||||
|
proxy_set_header Connection ""; |
||||
|
chunked_transfer_encoding off; |
||||
|
proxy_pass http://apache2_client:80; |
||||
|
# Health Check endpoint might go here. See https://www.nginx.com/resources/wiki/modules/healthcheck/ |
||||
|
# /minio/health/live; |
||||
|
} |
||||
|
location /services/ { |
||||
|
proxy_cache my_cache; |
||||
|
proxy_set_header X-Real-IP $remote_addr; |
||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
||||
|
proxy_set_header X-Forwarded-Proto $scheme; |
||||
|
proxy_set_header Host $http_host; |
||||
|
proxy_set_header X-NginX-Proxy true; |
||||
|
proxy_ssl_session_reuse off; |
||||
|
proxy_redirect off; |
||||
|
proxy_connect_timeout 300; |
||||
|
# Default is HTTP/1, keepalive is only enabled in HTTP/1.1 |
||||
|
proxy_http_version 1.1; |
||||
|
proxy_set_header Connection ""; |
||||
|
chunked_transfer_encoding off; |
||||
|
proxy_pass http://apache2_application:80; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
Για την σύνδεση με την database θα πρέπει να συμπληρωθούν τα σωστά στοιχεία στο αρχείο project_cloud\application_php\www\services\connect.php |
||||
|
[source,php] |
||||
|
<?php |
||||
|
$DB_HOST = [IP]; |
||||
|
$DB_NAME = "covid_19_db"; |
||||
|
$DB_USER = "root"; |
||||
|
$DB_PASSWORD = [DATABASE ROOT PASSWORD]; |
||||
|
$CHARSET = 'utf8'; |
||||
|
try{ |
||||
|
$conn = new PDO("mysql:host=$DB_HOST;port=3306;dbname=$DB_NAME;charset=$CHARSET", $DB_USER, $DB_PASSWORD); |
||||
|
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // To turn on error mode for debugging errors |
||||
|
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); // To get maximum sql injection protection |
||||
|
// echo "Connected successfully"; |
||||
|
} |
||||
|
catch(PDOException $e){ |
||||
|
echo "Connection failed: " . $e->getMessage(); |
||||
|
} |
||||
|
?> |
||||
|
|
||||
|
Για να μπορεί η Front Application να πάρει δεδομένα απο την RestFull WebServices Application θα πρέπει να σεταριστούν τα σωστά urls στο αρχείο |
||||
|
project_cloud\client\www\application\js\webcall.js |
||||
|
[source,javascript] |
||||
|
var servicesURL = { |
||||
|
getAllCasesGroupByContinent : 'https://83.212.77.22:9443/services/get_all_cases_group_by_continent.php', |
||||
|
getContinents: 'https://83.212.77.22:9443/services/get_continents.php', |
||||
|
getGroupByChooseContinent: 'https://83.212.77.22:9443/services/get_group_by_choose_continent_data.php', |
||||
|
getCountries: 'https://83.212.77.22:9443/services/get_countries.php', |
||||
|
getCountryDataInSpecificDates: 'https://83.212.77.22:9443/services/get_country_data_specific_dates.php', |
||||
|
getLastDate: 'https://83.212.77.22:9443/services/get_last_date.php', |
||||
|
getContinentsDataInSpecificDates: 'https://83.212.77.22:9443/services/get_continent_data_specific_dates.php', |
||||
|
getTotalCasesAndDeaths: 'https://83.212.77.22:9443/services/get_total_cases_deaths.php' |
||||
|
} |
||||
|
|
||||
|
== Web Application Covid 19 |
||||
|
=== Index.php |
||||
|
image::images/index.PNG[] |
||||
|
|
||||
|
=== countryInDates.php |
||||
|
image::images/country.PNG[] |
||||
|
|
@ -0,0 +1,719 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="en"> |
||||
|
<head> |
||||
|
<meta charset="UTF-8"> |
||||
|
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]--> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||
|
<meta name="generator" content="Asciidoctor 1.5.5"> |
||||
|
<title>Covid 19 Graphs Web Application</title> |
||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"> |
||||
|
<style> |
||||
|
/* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */ |
||||
|
/* Remove comment around @import statement below when using as a custom stylesheet */ |
||||
|
/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/ |
||||
|
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block} |
||||
|
audio,canvas,video{display:inline-block} |
||||
|
audio:not([controls]){display:none;height:0} |
||||
|
[hidden],template{display:none} |
||||
|
script{display:none!important} |
||||
|
html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%} |
||||
|
a{background:transparent} |
||||
|
a:focus{outline:thin dotted} |
||||
|
a:active,a:hover{outline:0} |
||||
|
h1{font-size:2em;margin:.67em 0} |
||||
|
abbr[title]{border-bottom:1px dotted} |
||||
|
b,strong{font-weight:bold} |
||||
|
dfn{font-style:italic} |
||||
|
hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0} |
||||
|
mark{background:#ff0;color:#000} |
||||
|
code,kbd,pre,samp{font-family:monospace;font-size:1em} |
||||
|
pre{white-space:pre-wrap} |
||||
|
q{quotes:"\201C" "\201D" "\2018" "\2019"} |
||||
|
small{font-size:80%} |
||||
|
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} |
||||
|
sup{top:-.5em} |
||||
|
sub{bottom:-.25em} |
||||
|
img{border:0} |
||||
|
svg:not(:root){overflow:hidden} |
||||
|
figure{margin:0} |
||||
|
fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em} |
||||
|
legend{border:0;padding:0} |
||||
|
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0} |
||||
|
button,input{line-height:normal} |
||||
|
button,select{text-transform:none} |
||||
|
button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer} |
||||
|
button[disabled],html input[disabled]{cursor:default} |
||||
|
input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0} |
||||
|
input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box} |
||||
|
input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none} |
||||
|
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0} |
||||
|
textarea{overflow:auto;vertical-align:top} |
||||
|
table{border-collapse:collapse;border-spacing:0} |
||||
|
*,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box} |
||||
|
html,body{font-size:100%} |
||||
|
body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased} |
||||
|
a:hover{cursor:pointer} |
||||
|
img,object,embed{max-width:100%;height:auto} |
||||
|
object,embed{height:100%} |
||||
|
img{-ms-interpolation-mode:bicubic} |
||||
|
.left{float:left!important} |
||||
|
.right{float:right!important} |
||||
|
.text-left{text-align:left!important} |
||||
|
.text-right{text-align:right!important} |
||||
|
.text-center{text-align:center!important} |
||||
|
.text-justify{text-align:justify!important} |
||||
|
.hide{display:none} |
||||
|
img,object,svg{display:inline-block;vertical-align:middle} |
||||
|
textarea{height:auto;min-height:50px} |
||||
|
select{width:100%} |
||||
|
.center{margin-left:auto;margin-right:auto} |
||||
|
.spread{width:100%} |
||||
|
p.lead,.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{font-size:1.21875em;line-height:1.6} |
||||
|
.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em} |
||||
|
div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr} |
||||
|
a{color:#2156a5;text-decoration:underline;line-height:inherit} |
||||
|
a:hover,a:focus{color:#1d4b8f} |
||||
|
a img{border:none} |
||||
|
p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility} |
||||
|
p aside{font-size:.875em;line-height:1.35;font-style:italic} |
||||
|
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em} |
||||
|
h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0} |
||||
|
h1{font-size:2.125em} |
||||
|
h2{font-size:1.6875em} |
||||
|
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em} |
||||
|
h4,h5{font-size:1.125em} |
||||
|
h6{font-size:1em} |
||||
|
hr{border:solid #ddddd8;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0} |
||||
|
em,i{font-style:italic;line-height:inherit} |
||||
|
strong,b{font-weight:bold;line-height:inherit} |
||||
|
small{font-size:60%;line-height:inherit} |
||||
|
code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)} |
||||
|
ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit} |
||||
|
ul,ol,ul.no-bullet,ol.no-bullet{margin-left:1.5em} |
||||
|
ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em} |
||||
|
ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit} |
||||
|
ul.square{list-style-type:square} |
||||
|
ul.circle{list-style-type:circle} |
||||
|
ul.disc{list-style-type:disc} |
||||
|
ul.no-bullet{list-style:none} |
||||
|
ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0} |
||||
|
dl dt{margin-bottom:.3125em;font-weight:bold} |
||||
|
dl dd{margin-bottom:1.25em} |
||||
|
abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help} |
||||
|
abbr{text-transform:none} |
||||
|
blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd} |
||||
|
blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)} |
||||
|
blockquote cite:before{content:"\2014 \0020"} |
||||
|
blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)} |
||||
|
blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)} |
||||
|
@media only screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2} |
||||
|
h1{font-size:2.75em} |
||||
|
h2{font-size:2.3125em} |
||||
|
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em} |
||||
|
h4{font-size:1.4375em}} |
||||
|
table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede} |
||||
|
table thead,table tfoot{background:#f7f8f7;font-weight:bold} |
||||
|
table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left} |
||||
|
table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)} |
||||
|
table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7} |
||||
|
table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6} |
||||
|
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em} |
||||
|
h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400} |
||||
|
.clearfix:before,.clearfix:after,.float-group:before,.float-group:after{content:" ";display:table} |
||||
|
.clearfix:after,.float-group:after{clear:both} |
||||
|
*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word} |
||||
|
*:not(pre)>code.nobreak{word-wrap:normal} |
||||
|
*:not(pre)>code.nowrap{white-space:nowrap} |
||||
|
pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed} |
||||
|
em em{font-style:normal} |
||||
|
strong strong{font-weight:400} |
||||
|
.keyseq{color:rgba(51,51,51,.8)} |
||||
|
kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap} |
||||
|
.keyseq kbd:first-child{margin-left:0} |
||||
|
.keyseq kbd:last-child{margin-right:0} |
||||
|
.menuseq,.menu{color:rgba(0,0,0,.8)} |
||||
|
b.button:before,b.button:after{position:relative;top:-1px;font-weight:400} |
||||
|
b.button:before{content:"[";padding:0 3px 0 2px} |
||||
|
b.button:after{content:"]";padding:0 2px 0 3px} |
||||
|
p a>code:hover{color:rgba(0,0,0,.9)} |
||||
|
#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em} |
||||
|
#header:before,#header:after,#content:before,#content:after,#footnotes:before,#footnotes:after,#footer:before,#footer:after{content:" ";display:table} |
||||
|
#header:after,#content:after,#footnotes:after,#footer:after{clear:both} |
||||
|
#content{margin-top:1.25em} |
||||
|
#content:before{content:none} |
||||
|
#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0} |
||||
|
#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #ddddd8} |
||||
|
#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #ddddd8;padding-bottom:8px} |
||||
|
#header .details{border-bottom:1px solid #ddddd8;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap} |
||||
|
#header .details span:first-child{margin-left:-.125em} |
||||
|
#header .details span.email a{color:rgba(0,0,0,.85)} |
||||
|
#header .details br{display:none} |
||||
|
#header .details br+span:before{content:"\00a0\2013\00a0"} |
||||
|
#header .details br+span.author:before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)} |
||||
|
#header .details br+span#revremark:before{content:"\00a0|\00a0"} |
||||
|
#header #revnumber{text-transform:capitalize} |
||||
|
#header #revnumber:after{content:"\00a0"} |
||||
|
#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #ddddd8;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem} |
||||
|
#toc{border-bottom:1px solid #efefed;padding-bottom:.5em} |
||||
|
#toc>ul{margin-left:.125em} |
||||
|
#toc ul.sectlevel0>li>a{font-style:italic} |
||||
|
#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0} |
||||
|
#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none} |
||||
|
#toc li{line-height:1.3334;margin-top:.3334em} |
||||
|
#toc a{text-decoration:none} |
||||
|
#toc a:active{text-decoration:underline} |
||||
|
#toctitle{color:#7a2518;font-size:1.2em} |
||||
|
@media only screen and (min-width:768px){#toctitle{font-size:1.375em} |
||||
|
body.toc2{padding-left:15em;padding-right:0} |
||||
|
#toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #efefed;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto} |
||||
|
#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em} |
||||
|
#toc.toc2>ul{font-size:.9em;margin-bottom:0} |
||||
|
#toc.toc2 ul ul{margin-left:0;padding-left:1em} |
||||
|
#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em} |
||||
|
body.toc2.toc-right{padding-left:0;padding-right:15em} |
||||
|
body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #efefed;left:auto;right:0}} |
||||
|
@media only screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0} |
||||
|
#toc.toc2{width:20em} |
||||
|
#toc.toc2 #toctitle{font-size:1.375em} |
||||
|
#toc.toc2>ul{font-size:.95em} |
||||
|
#toc.toc2 ul ul{padding-left:1.25em} |
||||
|
body.toc2.toc-right{padding-left:0;padding-right:20em}} |
||||
|
#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px} |
||||
|
#content #toc>:first-child{margin-top:0} |
||||
|
#content #toc>:last-child{margin-bottom:0} |
||||
|
#footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em} |
||||
|
#footer-text{color:rgba(255,255,255,.8);line-height:1.44} |
||||
|
.sect1{padding-bottom:.625em} |
||||
|
@media only screen and (min-width:768px){.sect1{padding-bottom:1.25em}} |
||||
|
.sect1+.sect1{border-top:1px solid #efefed} |
||||
|
#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400} |
||||
|
#content h1>a.anchor:before,h2>a.anchor:before,h3>a.anchor:before,#toctitle>a.anchor:before,.sidebarblock>.content>.title>a.anchor:before,h4>a.anchor:before,h5>a.anchor:before,h6>a.anchor:before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em} |
||||
|
#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible} |
||||
|
#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none} |
||||
|
#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221} |
||||
|
.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em} |
||||
|
.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic} |
||||
|
table.tableblock>caption.title{white-space:nowrap;overflow:visible;max-width:0} |
||||
|
.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{color:rgba(0,0,0,.85)} |
||||
|
table.tableblock #preamble>.sectionbody>.paragraph:first-of-type p{font-size:inherit} |
||||
|
.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%} |
||||
|
.admonitionblock>table td.icon{text-align:center;width:80px} |
||||
|
.admonitionblock>table td.icon img{max-width:none} |
||||
|
.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase} |
||||
|
.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #ddddd8;color:rgba(0,0,0,.6)} |
||||
|
.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0} |
||||
|
.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px} |
||||
|
.exampleblock>.content>:first-child{margin-top:0} |
||||
|
.exampleblock>.content>:last-child{margin-bottom:0} |
||||
|
.sidebarblock{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px} |
||||
|
.sidebarblock>:first-child{margin-top:0} |
||||
|
.sidebarblock>:last-child{margin-bottom:0} |
||||
|
.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center} |
||||
|
.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0} |
||||
|
.literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8} |
||||
|
.sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1} |
||||
|
.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;padding:1em;font-size:.8125em} |
||||
|
.literalblock pre.nowrap,.literalblock pre[class].nowrap,.listingblock pre.nowrap,.listingblock pre[class].nowrap{overflow-x:auto;white-space:pre;word-wrap:normal} |
||||
|
@media only screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}} |
||||
|
@media only screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}} |
||||
|
.literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)} |
||||
|
.listingblock pre.highlightjs{padding:0} |
||||
|
.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px} |
||||
|
.listingblock pre.prettyprint{border-width:0} |
||||
|
.listingblock>.content{position:relative} |
||||
|
.listingblock code[data-lang]:before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:#999} |
||||
|
.listingblock:hover code[data-lang]:before{display:block} |
||||
|
.listingblock.terminal pre .command:before{content:attr(data-prompt);padding-right:.5em;color:#999} |
||||
|
.listingblock.terminal pre .command:not([data-prompt]):before{content:"$"} |
||||
|
table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none} |
||||
|
table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0;line-height:1.45} |
||||
|
table.pyhltable td.code{padding-left:.75em;padding-right:0} |
||||
|
pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #ddddd8} |
||||
|
pre.pygments .lineno{display:inline-block;margin-right:.25em} |
||||
|
table.pyhltable .linenodiv{background:none!important;padding-right:0!important} |
||||
|
.quoteblock{margin:0 1em 1.25em 1.5em;display:table} |
||||
|
.quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em} |
||||
|
.quoteblock blockquote,.quoteblock blockquote p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify} |
||||
|
.quoteblock blockquote{margin:0;padding:0;border:0} |
||||
|
.quoteblock blockquote:before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)} |
||||
|
.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0} |
||||
|
.quoteblock .attribution{margin-top:.5em;margin-right:.5ex;text-align:right} |
||||
|
.quoteblock .quoteblock{margin-left:0;margin-right:0;padding:.5em 0;border-left:3px solid rgba(0,0,0,.6)} |
||||
|
.quoteblock .quoteblock blockquote{padding:0 0 0 .75em} |
||||
|
.quoteblock .quoteblock blockquote:before{display:none} |
||||
|
.verseblock{margin:0 1em 1.25em 1em} |
||||
|
.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility} |
||||
|
.verseblock pre strong{font-weight:400} |
||||
|
.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex} |
||||
|
.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic} |
||||
|
.quoteblock .attribution br,.verseblock .attribution br{display:none} |
||||
|
.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)} |
||||
|
.quoteblock.abstract{margin:0 0 1.25em 0;display:block} |
||||
|
.quoteblock.abstract blockquote,.quoteblock.abstract blockquote p{text-align:left;word-spacing:0} |
||||
|
.quoteblock.abstract blockquote:before,.quoteblock.abstract blockquote p:first-of-type:before{display:none} |
||||
|
table.tableblock{max-width:100%;border-collapse:separate} |
||||
|
table.tableblock td>.paragraph:last-child p>p:last-child,table.tableblock th>p:last-child,table.tableblock td>p:last-child{margin-bottom:0} |
||||
|
table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede} |
||||
|
table.grid-all th.tableblock,table.grid-all td.tableblock{border-width:0 1px 1px 0} |
||||
|
table.grid-all tfoot>tr>th.tableblock,table.grid-all tfoot>tr>td.tableblock{border-width:1px 1px 0 0} |
||||
|
table.grid-cols th.tableblock,table.grid-cols td.tableblock{border-width:0 1px 0 0} |
||||
|
table.grid-all *>tr>.tableblock:last-child,table.grid-cols *>tr>.tableblock:last-child{border-right-width:0} |
||||
|
table.grid-rows th.tableblock,table.grid-rows td.tableblock{border-width:0 0 1px 0} |
||||
|
table.grid-all tbody>tr:last-child>th.tableblock,table.grid-all tbody>tr:last-child>td.tableblock,table.grid-all thead:last-child>tr>th.tableblock,table.grid-rows tbody>tr:last-child>th.tableblock,table.grid-rows tbody>tr:last-child>td.tableblock,table.grid-rows thead:last-child>tr>th.tableblock{border-bottom-width:0} |
||||
|
table.grid-rows tfoot>tr>th.tableblock,table.grid-rows tfoot>tr>td.tableblock{border-width:1px 0 0 0} |
||||
|
table.frame-all{border-width:1px} |
||||
|
table.frame-sides{border-width:0 1px} |
||||
|
table.frame-topbot{border-width:1px 0} |
||||
|
th.halign-left,td.halign-left{text-align:left} |
||||
|
th.halign-right,td.halign-right{text-align:right} |
||||
|
th.halign-center,td.halign-center{text-align:center} |
||||
|
th.valign-top,td.valign-top{vertical-align:top} |
||||
|
th.valign-bottom,td.valign-bottom{vertical-align:bottom} |
||||
|
th.valign-middle,td.valign-middle{vertical-align:middle} |
||||
|
table thead th,table tfoot th{font-weight:bold} |
||||
|
tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7} |
||||
|
tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold} |
||||
|
p.tableblock>code:only-child{background:none;padding:0} |
||||
|
p.tableblock{font-size:1em} |
||||
|
td>div.verse{white-space:pre} |
||||
|
ol{margin-left:1.75em} |
||||
|
ul li ol{margin-left:1.5em} |
||||
|
dl dd{margin-left:1.125em} |
||||
|
dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0} |
||||
|
ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em} |
||||
|
ul.unstyled,ol.unnumbered,ul.checklist,ul.none{list-style-type:none} |
||||
|
ul.unstyled,ol.unnumbered,ul.checklist{margin-left:.625em} |
||||
|
ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1em;font-size:.85em} |
||||
|
ul.checklist li>p:first-child>input[type="checkbox"]:first-child{width:1em;position:relative;top:1px} |
||||
|
ul.inline{margin:0 auto .625em auto;margin-left:-1.375em;margin-right:0;padding:0;list-style:none;overflow:hidden} |
||||
|
ul.inline>li{list-style:none;float:left;margin-left:1.375em;display:block} |
||||
|
ul.inline>li>*{display:block} |
||||
|
.unstyled dl dt{font-weight:400;font-style:normal} |
||||
|
ol.arabic{list-style-type:decimal} |
||||
|
ol.decimal{list-style-type:decimal-leading-zero} |
||||
|
ol.loweralpha{list-style-type:lower-alpha} |
||||
|
ol.upperalpha{list-style-type:upper-alpha} |
||||
|
ol.lowerroman{list-style-type:lower-roman} |
||||
|
ol.upperroman{list-style-type:upper-roman} |
||||
|
ol.lowergreek{list-style-type:lower-greek} |
||||
|
.hdlist>table,.colist>table{border:0;background:none} |
||||
|
.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none} |
||||
|
td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em} |
||||
|
td.hdlist1{font-weight:bold;padding-bottom:1.25em} |
||||
|
.literalblock+.colist,.listingblock+.colist{margin-top:-.5em} |
||||
|
.colist>table tr>td:first-of-type{padding:0 .75em;line-height:1} |
||||
|
.colist>table tr>td:last-of-type{padding:.25em 0} |
||||
|
.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd} |
||||
|
.imageblock.left,.imageblock[style*="float: left"]{margin:.25em .625em 1.25em 0} |
||||
|
.imageblock.right,.imageblock[style*="float: right"]{margin:.25em 0 1.25em .625em} |
||||
|
.imageblock>.title{margin-bottom:0} |
||||
|
.imageblock.thumb,.imageblock.th{border-width:6px} |
||||
|
.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em} |
||||
|
.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0} |
||||
|
.image.left{margin-right:.625em} |
||||
|
.image.right{margin-left:.625em} |
||||
|
a.image{text-decoration:none;display:inline-block} |
||||
|
a.image object{pointer-events:none} |
||||
|
sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super} |
||||
|
sup.footnote a,sup.footnoteref a{text-decoration:none} |
||||
|
sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline} |
||||
|
#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em} |
||||
|
#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em 0;border-width:1px 0 0 0} |
||||
|
#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;text-indent:-1.05em;margin-bottom:.2em} |
||||
|
#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none} |
||||
|
#footnotes .footnote:last-of-type{margin-bottom:0} |
||||
|
#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0} |
||||
|
.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0} |
||||
|
.gist .file-data>table td.line-data{width:99%} |
||||
|
div.unbreakable{page-break-inside:avoid} |
||||
|
.big{font-size:larger} |
||||
|
.small{font-size:smaller} |
||||
|
.underline{text-decoration:underline} |
||||
|
.overline{text-decoration:overline} |
||||
|
.line-through{text-decoration:line-through} |
||||
|
.aqua{color:#00bfbf} |
||||
|
.aqua-background{background-color:#00fafa} |
||||
|
.black{color:#000} |
||||
|
.black-background{background-color:#000} |
||||
|
.blue{color:#0000bf} |
||||
|
.blue-background{background-color:#0000fa} |
||||
|
.fuchsia{color:#bf00bf} |
||||
|
.fuchsia-background{background-color:#fa00fa} |
||||
|
.gray{color:#606060} |
||||
|
.gray-background{background-color:#7d7d7d} |
||||
|
.green{color:#006000} |
||||
|
.green-background{background-color:#007d00} |
||||
|
.lime{color:#00bf00} |
||||
|
.lime-background{background-color:#00fa00} |
||||
|
.maroon{color:#600000} |
||||
|
.maroon-background{background-color:#7d0000} |
||||
|
.navy{color:#000060} |
||||
|
.navy-background{background-color:#00007d} |
||||
|
.olive{color:#606000} |
||||
|
.olive-background{background-color:#7d7d00} |
||||
|
.purple{color:#600060} |
||||
|
.purple-background{background-color:#7d007d} |
||||
|
.red{color:#bf0000} |
||||
|
.red-background{background-color:#fa0000} |
||||
|
.silver{color:#909090} |
||||
|
.silver-background{background-color:#bcbcbc} |
||||
|
.teal{color:#006060} |
||||
|
.teal-background{background-color:#007d7d} |
||||
|
.white{color:#bfbfbf} |
||||
|
.white-background{background-color:#fafafa} |
||||
|
.yellow{color:#bfbf00} |
||||
|
.yellow-background{background-color:#fafa00} |
||||
|
span.icon>.fa{cursor:default} |
||||
|
.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default} |
||||
|
.admonitionblock td.icon .icon-note:before{content:"\f05a";color:#19407c} |
||||
|
.admonitionblock td.icon .icon-tip:before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111} |
||||
|
.admonitionblock td.icon .icon-warning:before{content:"\f071";color:#bf6900} |
||||
|
.admonitionblock td.icon .icon-caution:before{content:"\f06d";color:#bf3400} |
||||
|
.admonitionblock td.icon .icon-important:before{content:"\f06a";color:#bf0000} |
||||
|
.conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold} |
||||
|
.conum[data-value] *{color:#fff!important} |
||||
|
.conum[data-value]+b{display:none} |
||||
|
.conum[data-value]:after{content:attr(data-value)} |
||||
|
pre .conum[data-value]{position:relative;top:-.125em} |
||||
|
b.conum *{color:inherit!important} |
||||
|
.conum:not([data-value]):empty{display:none} |
||||
|
dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility} |
||||
|
h1,h2,p,td.content,span.alt{letter-spacing:-.01em} |
||||
|
p strong,td.content strong,div.footnote strong{letter-spacing:-.005em} |
||||
|
p,blockquote,dt,td.content,span.alt{font-size:1.0625rem} |
||||
|
p{margin-bottom:1.25rem} |
||||
|
.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em} |
||||
|
.exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc} |
||||
|
.print-only{display:none!important} |
||||
|
@media print{@page{margin:1.25cm .75cm} |
||||
|
*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important} |
||||
|
a{color:inherit!important;text-decoration:underline!important} |
||||
|
a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important} |
||||
|
a[href^="http:"]:not(.bare):after,a[href^="https:"]:not(.bare):after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em} |
||||
|
abbr[title]:after{content:" (" attr(title) ")"} |
||||
|
pre,blockquote,tr,img,object,svg{page-break-inside:avoid} |
||||
|
thead{display:table-header-group} |
||||
|
svg{max-width:100%} |
||||
|
p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3} |
||||
|
h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid} |
||||
|
#toc,.sidebarblock,.exampleblock>.content{background:none!important} |
||||
|
#toc{border-bottom:1px solid #ddddd8!important;padding-bottom:0!important} |
||||
|
.sect1{padding-bottom:0!important} |
||||
|
.sect1+.sect1{border:0!important} |
||||
|
#header>h1:first-child{margin-top:1.25rem} |
||||
|
body.book #header{text-align:center} |
||||
|
body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em 0} |
||||
|
body.book #header .details{border:0!important;display:block;padding:0!important} |
||||
|
body.book #header .details span:first-child{margin-left:0!important} |
||||
|
body.book #header .details br{display:block} |
||||
|
body.book #header .details br+span:before{content:none!important} |
||||
|
body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important} |
||||
|
body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always} |
||||
|
.listingblock code[data-lang]:before{display:block} |
||||
|
#footer{background:none!important;padding:0 .9375em} |
||||
|
#footer-text{color:rgba(0,0,0,.6)!important;font-size:.9em} |
||||
|
.hide-on-print{display:none!important} |
||||
|
.print-only{display:block!important} |
||||
|
.hide-for-print{display:none!important} |
||||
|
.show-for-print{display:inherit!important}} |
||||
|
</style> |
||||
|
</head> |
||||
|
<body class="article"> |
||||
|
<div id="header"> |
||||
|
<h1>Covid 19 Graphs Web Application</h1> |
||||
|
</div> |
||||
|
<div id="content"> |
||||
|
<div class="sect3"> |
||||
|
<h4 id="_πανεπιστημιο_δυτικησ_αττικησ">ΠΑΝΕΠΙΣΤΗΜΙΟ ΔΥΤΙΚΗΣ ΑΤΤΙΚΗΣ</h4> |
||||
|
|
||||
|
</div> |
||||
|
<div class="sect3"> |
||||
|
<h4 id="_υπολογιστική_νέφους_και_υπηρεσίες">Υπολογιστική Νέφους και Υπηρεσίες</h4> |
||||
|
<div class="sect5"> |
||||
|
<h6 id="_τσαμαντιώτης_ηρακλής_cs130004">Τσαμαντιώτης Ηρακλής cs130004</h6> |
||||
|
|
||||
|
</div> |
||||
|
<div class="sect5"> |
||||
|
<h6 id="_μπίνας_γεώργιος_cs130001">Μπίνας Γεώργιος cs130001</h6> |
||||
|
|
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="sect1"> |
||||
|
<h2 id="_περιγραφή">1. Περιγραφή</h2> |
||||
|
<div class="sectionbody"> |
||||
|
<div class="paragraph"> |
||||
|
<p>Στα πλαίσια του εργαστηρίου Υπολογιστικής Νέφους και Υπηρεσίες υλοποιήθηκε μία web εφαρμογή η οποία παρέχει στον χρήστη ενημέρωση σχετικά με την κατάσταση της πανδημίας με την μορφή γραφημάτων. Ο χρήστης έχει την δυνατότητα να επιλέξει και να φιλτράρει τα αποτελέσματα βάση ημερομηνίας, ηπείρου και χώρας. Τα αποτελέσματα εμφανίζονται σε κατάλληλα γραφήματα τα οποία μπορούν να απεικονίσουν τα διαφορετικά κριτήρια που επιθυμεί ο χρήστης.</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="sect1"> |
||||
|
<h2 id="_τεχνολογίες_αρχιτεκτονικές">2. Τεχνολογίες - Αρχιτεκτονικές</h2> |
||||
|
<div class="sectionbody"> |
||||
|
<div class="paragraph"> |
||||
|
<p>Η εφαρμογή έχει αναπτυχθεί σε php και javascript και χρησιμοποιεί MySql database για την αποθήκευση των δεδομένων. |
||||
|
Για την ανάπτυξη της χρησιμοποιήθηκε η αρχιτεκτονική των Microservices. Χρησιμοποιείται Docker για το deploy ολων των επιμέρους στοιχείων (services) που χρειάζεται η εφαρμογή για να λειτουργεί και όλα αυτα τρέχουν ως services σε ένα swarm.</p> |
||||
|
</div> |
||||
|
<div class="sect2"> |
||||
|
<h3 id="_docker">2.1. Docker</h3> |
||||
|
<div class="paragraph"> |
||||
|
<p>Σε δύο Vitrual Machines εχει εγκατατασταθεί Docker και έχουν σεταριστεί ώστε να δουλεύουν σε swarm mode. Ο ένας είναι ο manager και ο άλλος o worker. |
||||
|
Έχουν δημιουργηθεί 4 nodes, 2 στον manager και 2 στον worker.</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="sect2"> |
||||
|
<h3 id="_database">2.2. Database</h3> |
||||
|
<div class="paragraph"> |
||||
|
<p>Για την αποθήκευση των δεδομένων που χρειάζεται η εφαρμογή χρησιμοποιείτε MySql database η οποία τρέχει ως service και δεν γίνεται replicated.</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="sect2"> |
||||
|
<h3 id="_restfull_webservices_application">2.3. RestFull WebServices Application</h3> |
||||
|
<div class="paragraph"> |
||||
|
<p>Για την λήψη δεδομένων απο την database έχουν δημιουργηθεί Rest Web Services σε php τα οποία επιστρέφουν τα δεδομένα σε μορφή JSON. Υπάρχουν 12 Web Services τα οποία τρέχουν σε apache server ο οποίος έχει γίνει replicated σε 4 nodes.</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="sect2"> |
||||
|
<h3 id="_front_application">2.4. Front Application</h3> |
||||
|
<div class="paragraph"> |
||||
|
<p>Για την παρουσίαση των δεδομένων στον τελικό χρήστη έχει δημιουργηθεί ένα front end application σε php και javascript χρησιμοποιώντας Bootstrap JQuery και ApexCharts. Η εφαρμογή αυτή παρέχει τις σελίδες οι οποίες είναι διαθέσιμες στον τελικό χρήστη. Η κλήση στα rest services γίνεται κατευθείαν απο τον client και τα γραφήματα σχεδιάζονται με την χρήση του ApexCharts. Η εφαρμογή τρέχει σε apache server ο οποίος έχει γίνει replicated σε 4 nodes.</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="sect2"> |
||||
|
<h3 id="_proxy">2.5. Proxy</h3> |
||||
|
<div class="paragraph"> |
||||
|
<p>Έχει γίνει deploy ένασ NGINX server o οποίος έχει γίνει replicated σε 4 nodes. Ο συγκεκριμένος server λειτουργεί ως proxy server. Παρέχει το ssl και κάνει την δρομολόγηση στην κατάλληλη εφαρμογή (Front Application, RestFull WebServices Application) ανάλογα με το path στο url.</p> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="sect1"> |
||||
|
<h2 id="_installation">3. Installation</h2> |
||||
|
<div class="sectionbody"> |
||||
|
<div class="paragraph"> |
||||
|
<p>Για την εγκατάσταση της εφαρμογής υλοποιήθηκε το παρακάτω .yaml αρχείο το οποίο θα πρέπει να γίνει deploy απο τον manager του swarm.</p> |
||||
|
</div> |
||||
|
<div class="listingblock"> |
||||
|
<div class="content"> |
||||
|
<pre class="highlight"><code class="language-yaml" data-lang="yaml">version: "3.4" |
||||
|
services: |
||||
|
proxy: |
||||
|
image: nginx:1.17.9-alpine |
||||
|
deploy: |
||||
|
mode: replicated |
||||
|
restart_policy: |
||||
|
delay: 10s |
||||
|
max_attempts: 10 |
||||
|
window: 60s |
||||
|
replicas: 4 |
||||
|
placement: |
||||
|
# max_replicas_per_node: 1 |
||||
|
constraints: |
||||
|
- node.labels.group==server |
||||
|
ports: |
||||
|
- "8080:80" |
||||
|
- "9443:443" |
||||
|
volumes: |
||||
|
- /home/user/project_cloud/proxy.conf:/etc/nginx/conf.d/default.conf |
||||
|
- /home/user/project_cloud/public.crt:/etc/nginx/public.crt |
||||
|
- /home/user/project_cloud/private.key:/etc/nginx/private.key |
||||
|
networks: |
||||
|
- covid_19 |
||||
|
mysql_database: |
||||
|
image: mysql:latest |
||||
|
command: --default-authentication-plugin=mysql_native_password |
||||
|
environment: |
||||
|
MYSQL_ROOT_PASSWORD: [DATABASE ROOT PASSWORD] |
||||
|
ports: |
||||
|
- 3306:3306 |
||||
|
volumes: |
||||
|
- mysql_database:/var/lib/mysql |
||||
|
adminer_container: |
||||
|
image: adminer:latest |
||||
|
environment: |
||||
|
ADMINER_DEFAULT_SERVER: mysql_db_container |
||||
|
ports: |
||||
|
- 6060:8080 |
||||
|
apache2_application: |
||||
|
image: my_apache:0.1 |
||||
|
deploy: |
||||
|
mode: replicated |
||||
|
restart_policy: |
||||
|
delay: 10s |
||||
|
max_attempts: 10 |
||||
|
window: 60s |
||||
|
replicas: 4 |
||||
|
placement: |
||||
|
# max_replicas_per_node: 1 |
||||
|
constraints: |
||||
|
- node.labels.group==server |
||||
|
volumes: |
||||
|
- /home/user/project_cloud/application_php/www:/var/www/html |
||||
|
ports: |
||||
|
- 90:80 |
||||
|
networks: |
||||
|
- covid_19 |
||||
|
apache2_client: |
||||
|
image: my_apache:0.1 |
||||
|
deploy: |
||||
|
mode: replicated |
||||
|
restart_policy: |
||||
|
delay: 10s |
||||
|
max_attempts: 10 |
||||
|
window: 60s |
||||
|
replicas: 4 |
||||
|
placement: |
||||
|
# max_replicas_per_node: 1 |
||||
|
constraints: |
||||
|
- node.labels.group==server |
||||
|
volumes: |
||||
|
- /home/user/project_cloud/client/www:/var/www/html |
||||
|
ports: |
||||
|
- 91:80 |
||||
|
networks: |
||||
|
- covid_19 |
||||
|
volumes: |
||||
|
mysql_database: |
||||
|
networks: |
||||
|
covid_19: |
||||
|
driver: overlay |
||||
|
secrets: |
||||
|
secret_key: |
||||
|
external: true |
||||
|
access_key: |
||||
|
external: true</code></pre> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="paragraph"> |
||||
|
<p>Στον ίδιο φάκελο του project υλοποιήθηκε το αρχείο proxy.conf το οποίο είναι το configuration για τον proxy server. Επίσης στον φάκελο αυτό υπάρχουν τα private και public keys για την υλοποίηση του ssl.</p> |
||||
|
</div> |
||||
|
<div class="listingblock"> |
||||
|
<div class="content"> |
||||
|
<pre class="highlight"><code class="language-conf" data-lang="conf">proxy_cache_path /var/tmp levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off; |
||||
|
server { |
||||
|
listen 80; |
||||
|
server_name name.example.org; |
||||
|
return 301 https://83.212.77.22$request_uri; |
||||
|
} |
||||
|
server { |
||||
|
listen 443 ssl; |
||||
|
server_name name.example.org; |
||||
|
# To allow special characters in headers |
||||
|
ignore_invalid_headers off; |
||||
|
# Allow any size file to be uploaded. |
||||
|
# Set to a value such as 1000m; to restrict file size to a specific value |
||||
|
client_max_body_size 0; |
||||
|
# To disable buffering |
||||
|
proxy_buffering off; |
||||
|
ssl_certificate /etc/nginx/public.crt; |
||||
|
ssl_certificate_key /etc/nginx/private.key; |
||||
|
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; |
||||
|
ssl_ciphers HIGH:!aNULL:!MD5; |
||||
|
location /application/ { |
||||
|
proxy_cache my_cache; |
||||
|
proxy_set_header X-Real-IP $remote_addr; |
||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
||||
|
proxy_set_header X-Forwarded-Proto $scheme; |
||||
|
proxy_set_header Host $http_host; |
||||
|
proxy_set_header X-NginX-Proxy true; |
||||
|
proxy_ssl_session_reuse off; |
||||
|
proxy_redirect off; |
||||
|
proxy_connect_timeout 300; |
||||
|
# Default is HTTP/1, keepalive is only enabled in HTTP/1.1 |
||||
|
proxy_http_version 1.1; |
||||
|
proxy_set_header Connection ""; |
||||
|
chunked_transfer_encoding off; |
||||
|
proxy_pass http://apache2_client:80; |
||||
|
# Health Check endpoint might go here. See https://www.nginx.com/resources/wiki/modules/healthcheck/ |
||||
|
# /minio/health/live; |
||||
|
} |
||||
|
location /services/ { |
||||
|
proxy_cache my_cache; |
||||
|
proxy_set_header X-Real-IP $remote_addr; |
||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
||||
|
proxy_set_header X-Forwarded-Proto $scheme; |
||||
|
proxy_set_header Host $http_host; |
||||
|
proxy_set_header X-NginX-Proxy true; |
||||
|
proxy_ssl_session_reuse off; |
||||
|
proxy_redirect off; |
||||
|
proxy_connect_timeout 300; |
||||
|
# Default is HTTP/1, keepalive is only enabled in HTTP/1.1 |
||||
|
proxy_http_version 1.1; |
||||
|
proxy_set_header Connection ""; |
||||
|
chunked_transfer_encoding off; |
||||
|
proxy_pass http://apache2_application:80; |
||||
|
} |
||||
|
}</code></pre> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="paragraph"> |
||||
|
<p>Για την σύνδεση με την database θα πρέπει να συμπληρωθούν τα σωστά στοιχεία στο αρχείο project_cloud\application_php\www\services\connect.php</p> |
||||
|
</div> |
||||
|
<div class="listingblock"> |
||||
|
<div class="content"> |
||||
|
<pre class="highlight"><code class="language-php" data-lang="php"><?php |
||||
|
$DB_HOST = [IP]; |
||||
|
$DB_NAME = "covid_19_db"; |
||||
|
$DB_USER = "root"; |
||||
|
$DB_PASSWORD = [DATABASE ROOT PASSWORD]; |
||||
|
$CHARSET = 'utf8'; |
||||
|
try{ |
||||
|
$conn = new PDO("mysql:host=$DB_HOST;port=3306;dbname=$DB_NAME;charset=$CHARSET", $DB_USER, $DB_PASSWORD); |
||||
|
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // To turn on error mode for debugging errors |
||||
|
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); // To get maximum sql injection protection |
||||
|
// echo "Connected successfully"; |
||||
|
} |
||||
|
catch(PDOException $e){ |
||||
|
echo "Connection failed: " . $e->getMessage(); |
||||
|
} |
||||
|
?></code></pre> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="paragraph"> |
||||
|
<p>Για να μπορεί η Front Application να πάρει δεδομένα απο την RestFull WebServices Application θα πρέπει να σεταριστούν τα σωστά urls στο αρχείο |
||||
|
project_cloud\client\www\application\js\webcall.js</p> |
||||
|
</div> |
||||
|
<div class="listingblock"> |
||||
|
<div class="content"> |
||||
|
<pre class="highlight"><code class="language-javascript" data-lang="javascript">var servicesURL = { |
||||
|
getAllCasesGroupByContinent : 'https://83.212.77.22:9443/services/get_all_cases_group_by_continent.php', |
||||
|
getContinents: 'https://83.212.77.22:9443/services/get_continents.php', |
||||
|
getGroupByChooseContinent: 'https://83.212.77.22:9443/services/get_group_by_choose_continent_data.php', |
||||
|
getCountries: 'https://83.212.77.22:9443/services/get_countries.php', |
||||
|
getCountryDataInSpecificDates: 'https://83.212.77.22:9443/services/get_country_data_specific_dates.php', |
||||
|
getLastDate: 'https://83.212.77.22:9443/services/get_last_date.php', |
||||
|
getContinentsDataInSpecificDates: 'https://83.212.77.22:9443/services/get_continent_data_specific_dates.php', |
||||
|
getTotalCasesAndDeaths: 'https://83.212.77.22:9443/services/get_total_cases_deaths.php' |
||||
|
}</code></pre> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="sect1"> |
||||
|
<h2 id="_web_application_covid_19">4. Web Application Covid 19</h2> |
||||
|
<div class="sectionbody"> |
||||
|
<div class="sect2"> |
||||
|
<h3 id="_index_php">4.1. Index.php</h3> |
||||
|
<div class="imageblock"> |
||||
|
<div class="content"> |
||||
|
<img src="images/index.PNG" alt="index"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="sect2"> |
||||
|
<h3 id="_countryindates_php">4.2. countryInDates.php</h3> |
||||
|
<div class="imageblock"> |
||||
|
<div class="content"> |
||||
|
<img src="images/country.PNG" alt="country"> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div id="footer"> |
||||
|
<div id="footer-text"> |
||||
|
Last updated 2020-06-08 14:12:06 EEST |
||||
|
</div> |
||||
|
</div> |
||||
|
</body> |
||||
|
</html> |
After Width: | Height: | Size: 135 KiB |
After Width: | Height: | Size: 70 KiB |
@ -0,0 +1,19 @@ |
|||||
|
<?php |
||||
|
$DB_HOST = "83.212.77.22"; |
||||
|
$DB_NAME = "covid_19_db"; |
||||
|
$DB_USER = "root"; |
||||
|
$DB_PASSWORD = ""; |
||||
|
$CHARSET = 'utf8'; |
||||
|
try{ |
||||
|
$conn = new PDO("mysql:host=$DB_HOST;port=3306;dbname=$DB_NAME;charset=$CHARSET", $DB_USER, $DB_PASSWORD); |
||||
|
|
||||
|
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // To turn on error mode for debugging errors |
||||
|
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); // To get maximum sql injection protection |
||||
|
// echo "Connected successfully"; |
||||
|
} |
||||
|
catch(PDOException $e){ |
||||
|
echo "Connection failed: " . $e->getMessage(); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
?> |
@ -0,0 +1,189 @@ |
|||||
|
<?php |
||||
|
include "connect.php"; |
||||
|
////////////////////////////////////////////// Eisagogi sth Covid /////////////////////////////////////// |
||||
|
function insert_covid_19($dateRep,$cases,$deaths,$countriesAndTerritories,$geoId,$countryterritoryCode,$popData2018,$continentExp) |
||||
|
{ |
||||
|
global $conn; |
||||
|
try { |
||||
|
$query = $conn->prepare('INSERT INTO `data` (`dateRep`,`cases`,`deaths`,`countriesAndTerritories`,`geoId`,`countryterritoryCode`,`popData2018`,`continentExp`) VALUES (?, ?, ?, ?, ?, ?, ?, ?)'); |
||||
|
|
||||
|
|
||||
|
$query->bindParam(1, $dateRep, PDO::PARAM_STR); |
||||
|
$query->bindParam(2, $cases, PDO::PARAM_INT); |
||||
|
$query->bindParam(3, $deaths, PDO::PARAM_STR); |
||||
|
$query->bindParam(4, $countriesAndTerritories, PDO::PARAM_STR); |
||||
|
$query->bindParam(5, $geoId, PDO::PARAM_STR); |
||||
|
$query->bindParam(6, $countryterritoryCode, PDO::PARAM_STR); |
||||
|
$query->bindParam(7, $popData2018, PDO::PARAM_INT); |
||||
|
$query->bindParam(8, $continentExp, PDO::PARAM_STR); |
||||
|
$query->execute(); |
||||
|
$result = $query->rowCount(); |
||||
|
return $result; |
||||
|
} catch(PDOException $e){ |
||||
|
echo $e->getMessage();} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
///////////////////////////////////////select all data ////////////////////////////////////// |
||||
|
function index_covid_19() |
||||
|
{ |
||||
|
global $conn; |
||||
|
|
||||
|
$query = $conn->query("SELECT * FROM `data`"); |
||||
|
$result = $query->fetchAll(); |
||||
|
return $result; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
//select data in specific country |
||||
|
function index_covid_19_country($country) |
||||
|
{ |
||||
|
global $conn; |
||||
|
$query = $conn->prepare('SELECT * FROM `data` WHERE `countriesAndTerritories`=?'); |
||||
|
$query->bindParam(1, $country, PDO::PARAM_STR); |
||||
|
$query->execute(); |
||||
|
$result = $query->fetchAll(); |
||||
|
return $result; |
||||
|
} |
||||
|
|
||||
|
//////////////////////////////////////////// //////////////////////////////////// |
||||
|
|
||||
|
//select data in specific continentExp |
||||
|
function index_covid_19_continentExp($continentExp,$order) |
||||
|
{ |
||||
|
global $conn; |
||||
|
if($order == 1) |
||||
|
{ |
||||
|
$query = $conn->prepare('SELECT sum(cases) AS Cases, sum(deaths) AS Deaths, `countriesAndTerritories`, `continentExp` FROM `data` WHERE `continentExp`=? group by `countriesAndTerritories` order by cases desc'); |
||||
|
$query->bindParam(1, $continentExp, PDO::PARAM_STR); |
||||
|
$query->execute(); |
||||
|
$result = $query->fetchAll(); |
||||
|
return $result; |
||||
|
} |
||||
|
if($order == 2) |
||||
|
{ |
||||
|
$query = $conn->prepare('SELECT sum(cases) AS Cases, sum(deaths) AS Deaths, `countriesAndTerritories`, `continentExp` FROM `data` WHERE `continentExp`=? group by `countriesAndTerritories` order by Deaths desc'); |
||||
|
$query->bindParam(1, $continentExp, PDO::PARAM_STR); |
||||
|
$query->execute(); |
||||
|
$result = $query->fetchAll(); |
||||
|
return $result; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
function index_rows_covid_19_country($country) |
||||
|
{ |
||||
|
global $conn; |
||||
|
|
||||
|
$query = $conn->prepare('SELECT * FROM `data` WHERE `countriesAndTerritories`= ?'); |
||||
|
$query->bindParam(1, $country, PDO::PARAM_INT); |
||||
|
$query->execute(); |
||||
|
$result = $query->rowCount(); |
||||
|
return $result; |
||||
|
} |
||||
|
|
||||
|
// Check the last date |
||||
|
function index_covid_19_check_last_date_country($country) |
||||
|
{ |
||||
|
global $conn; |
||||
|
$query = $conn->prepare("SELECT * FROM `data` WHERE id IN (SELECT id FROM `data` WHERE `dateRep` = (SELECT MAX(`dateRep`) FROM `data` where `countriesAndTerritories`= ?)) ORDER BY id DESC LIMIT 1"); |
||||
|
$query->bindParam(1, $country, PDO::PARAM_STR); |
||||
|
$query->execute(); |
||||
|
$result = $query->fetch(); |
||||
|
return $result; |
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
||||
|
// Check the last date |
||||
|
function index_covid_19_check_last_date() |
||||
|
{ |
||||
|
global $conn; |
||||
|
$query = $conn->query("SELECT * FROM `data` WHERE id IN (SELECT id FROM `data` WHERE `dateRep` = (SELECT MAX(`dateRep`) FROM `data`)) ORDER BY id DESC LIMIT 1"); |
||||
|
$result = $query->fetch(); |
||||
|
return $result; |
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
||||
|
function index_covid_19_continents() |
||||
|
{ |
||||
|
global $conn; |
||||
|
|
||||
|
$query = $conn->query("SELECT `continentExp` FROM `data` group by `continentExp` "); |
||||
|
$result = $query->fetchAll(); |
||||
|
return $result; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
function index_covid_19_countriesAndTerritories() |
||||
|
{ |
||||
|
global $conn; |
||||
|
|
||||
|
$query = $conn->query("SELECT `countriesAndTerritories` FROM `data` group by `countriesAndTerritories` "); |
||||
|
$result = $query->fetchAll(); |
||||
|
return $result; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
///////////////////////////////////////select all data ////////////////////////////////////// |
||||
|
function index_covid_19_group_by_continent_all() |
||||
|
{ |
||||
|
global $conn; |
||||
|
|
||||
|
$query = $conn->query("SELECT sum(`cases`) AS Cases ,sum(`deaths`) AS Deaths, `continentExp`FROM `data` group by `continentExp`"); |
||||
|
$result = $query->fetchAll(); |
||||
|
return $result; |
||||
|
|
||||
|
} |
||||
|
/////////////////////////////////////// ////////////////////////////////////// |
||||
|
|
||||
|
function index_covid_19_specific_date_all_data($from_date,$until_date,$country) |
||||
|
{ |
||||
|
global $conn; |
||||
|
$query = $conn->prepare('SELECT * FROM `data` WHERE `dateRep` BETWEEN ? and ? and `countriesAndTerritories` = ? order by `dateRep` asc'); |
||||
|
$query->bindParam(1, $from_date, PDO::PARAM_STR); |
||||
|
$query->bindParam(2, $until_date, PDO::PARAM_STR); |
||||
|
$query->bindParam(3, $country, PDO::PARAM_STR); |
||||
|
$query->execute(); |
||||
|
$result = $query->fetchAll(); |
||||
|
return $result; |
||||
|
} |
||||
|
|
||||
|
function index_covid_19_specific_date_group_by_country($from_date,$until_date) |
||||
|
{ |
||||
|
global $conn; |
||||
|
$query = $conn->prepare('SELECT sum(cases) AS Cases, sum(`deaths`) AS Deaths,`countriesAndTerritories`, `continentExp` FROM `data` WHERE `dateRep` BETWEEN ? and ? group by `countriesAndTerritories` order by `cases` desc'); |
||||
|
$query->bindParam(1, $from_date, PDO::PARAM_STR); |
||||
|
$query->bindParam(2, $until_date, PDO::PARAM_STR); |
||||
|
$query->execute(); |
||||
|
$result = $query->fetchAll(); |
||||
|
return $result; |
||||
|
} |
||||
|
|
||||
|
function index_covid_19_specific_date_all_data_continent($from_date,$until_date,$continent) |
||||
|
{ |
||||
|
global $conn; |
||||
|
$query = $conn->prepare('SELECT sum(cases) AS Cases, sum(`deaths`) AS Deaths,`dateRep`, `continentExp` FROM `data` WHERE `dateRep` BETWEEN ? and ? and `continentExp` = ? group by `dateRep` order by `dateRep` asc'); |
||||
|
$query->bindParam(1, $from_date, PDO::PARAM_STR); |
||||
|
$query->bindParam(2, $until_date, PDO::PARAM_STR); |
||||
|
$query->bindParam(3, $continent, PDO::PARAM_STR); |
||||
|
$query->execute(); |
||||
|
$result = $query->fetchAll(); |
||||
|
return $result; |
||||
|
} |
||||
|
|
||||
|
function index_covid_19_total_cases_deaths() |
||||
|
{ |
||||
|
global $conn; |
||||
|
|
||||
|
$query = $conn->query("SELECT sum(`cases`) AS Cases ,sum(`deaths`) AS Deaths FROM `data`"); |
||||
|
$result = $query->fetchAll(); |
||||
|
return $result; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
?> |
||||
|
|
@ -0,0 +1,28 @@ |
|||||
|
<?php |
||||
|
error_reporting(0); |
||||
|
ob_start(); |
||||
|
header('Content-Type: application/json'); |
||||
|
header("Access-Control-Allow-Origin: *"); |
||||
|
include 'functions_covid_19.php'; |
||||
|
$title = "Index COVID-19"; |
||||
|
|
||||
|
$result_continent = index_covid_19_group_by_continent_all(); |
||||
|
|
||||
|
//foreach($result_continent as $row1) |
||||
|
//{ |
||||
|
|
||||
|
// echo" Cases:".$row1['Cases']."---"; |
||||
|
//echo" Deaths:".$row1['Deaths']."---"; |
||||
|
//echo" Country:".$row1['countriesAndTerritories']."---"; |
||||
|
//echo" Continent:".$row1['continentExp']."---"; |
||||
|
//echo"<br>"; |
||||
|
|
||||
|
|
||||
|
//} |
||||
|
|
||||
|
echo json_encode($result_continent,JSON_PRETTY_PRINT); |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
?> |
@ -0,0 +1,28 @@ |
|||||
|
<?php |
||||
|
error_reporting(0); |
||||
|
ob_start(); |
||||
|
header('Content-Type: application/json'); |
||||
|
header("Access-Control-Allow-Origin: *"); |
||||
|
include 'functions_covid_19.php'; |
||||
|
$title = "Index COVID-19"; |
||||
|
|
||||
|
$result_continent = index_covid_19(); |
||||
|
|
||||
|
//foreach($result_continent as $row1) |
||||
|
//{ |
||||
|
|
||||
|
// echo" Cases:".$row1['Cases']."---"; |
||||
|
//echo" Deaths:".$row1['Deaths']."---"; |
||||
|
//echo" Country:".$row1['countriesAndTerritories']."---"; |
||||
|
//echo" Continent:".$row1['continentExp']."---"; |
||||
|
//echo"<br>"; |
||||
|
|
||||
|
|
||||
|
//} |
||||
|
|
||||
|
echo json_encode($result_continent,JSON_PRETTY_PRINT); |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
?> |
@ -0,0 +1,31 @@ |
|||||
|
<?php |
||||
|
error_reporting(0); |
||||
|
ob_start(); |
||||
|
header('Content-Type: application/json'); |
||||
|
header("Access-Control-Allow-Origin: *"); |
||||
|
include 'functions_covid_19.php'; |
||||
|
$title = "Index COVID-19"; |
||||
|
|
||||
|
//$from_date = strip_tags($_POST['from_date']); |
||||
|
//$until_date = strip_tags($_POST['until_date']); |
||||
|
|
||||
|
$result_specific_dates = index_covid_19_specific_date_all_data('2020-03-01','2020-03-10'); |
||||
|
|
||||
|
//foreach($result_continent as $row1) |
||||
|
//{ |
||||
|
|
||||
|
// echo" Cases:".$row1['Cases']."---"; |
||||
|
//echo" Deaths:".$row1['Deaths']."---"; |
||||
|
//echo" Country:".$row1['countriesAndTerritories']."---"; |
||||
|
//echo" Continent:".$row1['continentExp']."---"; |
||||
|
//echo"<br>"; |
||||
|
|
||||
|
|
||||
|
//} |
||||
|
|
||||
|
echo json_encode($result_specific_dates,JSON_PRETTY_PRINT); |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
?> |
@ -0,0 +1,28 @@ |
|||||
|
<?php |
||||
|
error_reporting(0); |
||||
|
ob_start(); |
||||
|
header('Content-Type: application/json'); |
||||
|
header("Access-Control-Allow-Origin: *"); |
||||
|
include 'functions_covid_19.php'; |
||||
|
$title = "Index COVID-19"; |
||||
|
|
||||
|
$from_date = strip_tags($_POST['from_date']); |
||||
|
$until_date = strip_tags($_POST['until_date']); |
||||
|
$continent = strip_tags($_POST['continent']); |
||||
|
|
||||
|
//$from_date = '01/03/2020'; |
||||
|
//$until_date = '31/05/2020'; |
||||
|
//$continent = "Europe"; |
||||
|
|
||||
|
$date_from = date('Y-m-d', strtotime(str_replace('/', '-', $from_date))); |
||||
|
$date_until = date('Y-m-d', strtotime(str_replace('/', '-', $until_date))); |
||||
|
|
||||
|
|
||||
|
$result_specific_dates = index_covid_19_specific_date_all_data_continent($date_from,$date_until,$continent); |
||||
|
|
||||
|
echo json_encode($result_specific_dates,JSON_PRETTY_PRINT); |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
?> |
@ -0,0 +1,28 @@ |
|||||
|
<?php |
||||
|
error_reporting(0); |
||||
|
ob_start(); |
||||
|
header('Content-Type: application/json'); |
||||
|
header("Access-Control-Allow-Origin: *"); |
||||
|
include 'functions_covid_19.php'; |
||||
|
$title = "Index COVID-19"; |
||||
|
|
||||
|
$result_continent = index_covid_19_continents(); |
||||
|
|
||||
|
//foreach($result_continent as $row1) |
||||
|
//{ |
||||
|
|
||||
|
// echo" Cases:".$row1['Cases']."---"; |
||||
|
//echo" Deaths:".$row1['Deaths']."---"; |
||||
|
//echo" Country:".$row1['countriesAndTerritories']."---"; |
||||
|
//echo" Continent:".$row1['continentExp']."---"; |
||||
|
//echo"<br>"; |
||||
|
|
||||
|
|
||||
|
//} |
||||
|
|
||||
|
echo json_encode($result_continent,JSON_PRETTY_PRINT); |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
?> |
@ -0,0 +1,28 @@ |
|||||
|
<?php |
||||
|
error_reporting(0); |
||||
|
ob_start(); |
||||
|
header('Content-Type: application/json'); |
||||
|
header("Access-Control-Allow-Origin: *"); |
||||
|
include 'functions_covid_19.php'; |
||||
|
$title = "Index COVID-19"; |
||||
|
|
||||
|
$result_continent = index_covid_19_countriesAndTerritories(); |
||||
|
|
||||
|
//foreach($result_continent as $row1) |
||||
|
//{ |
||||
|
|
||||
|
// echo" Cases:".$row1['Cases']."---"; |
||||
|
//echo" Deaths:".$row1['Deaths']."---"; |
||||
|
//echo" Country:".$row1['countriesAndTerritories']."---"; |
||||
|
//echo" Continent:".$row1['continentExp']."---"; |
||||
|
//echo"<br>"; |
||||
|
|
||||
|
|
||||
|
//} |
||||
|
|
||||
|
echo json_encode($result_continent,JSON_PRETTY_PRINT); |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
?> |
@ -0,0 +1,25 @@ |
|||||
|
<?php |
||||
|
error_reporting(0); |
||||
|
ob_start(); |
||||
|
header('Content-Type: application/json'); |
||||
|
header("Access-Control-Allow-Origin: *"); |
||||
|
include 'functions_covid_19.php'; |
||||
|
$title = "Index COVID-19"; |
||||
|
|
||||
|
$from_date = strip_tags($_POST['from_date']); |
||||
|
$until_date = strip_tags($_POST['until_date']); |
||||
|
$country = strip_tags($_POST['country']); |
||||
|
|
||||
|
$date_from = date('Y-m-d', strtotime(str_replace('/', '-', $from_date))); |
||||
|
$date_until = date('Y-m-d', strtotime(str_replace('/', '-', $until_date))); |
||||
|
|
||||
|
|
||||
|
$result_specific_dates = index_covid_19_specific_date_all_data($date_from,$date_until,$country); |
||||
|
|
||||
|
|
||||
|
echo json_encode($result_specific_dates,JSON_PRETTY_PRINT); |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
?> |
@ -0,0 +1,97 @@ |
|||||
|
<?php |
||||
|
//error_reporting(0); |
||||
|
ini_set('max_execution_time', 6000); //600 seconds = 10 minutes |
||||
|
ob_start(); |
||||
|
include 'functions_covid_19.php'; |
||||
|
|
||||
|
|
||||
|
/* |
||||
|
//set map api url |
||||
|
$url = "https://opendata.ecdc.europa.eu/covid19/casedistribution/json/"; |
||||
|
|
||||
|
//call api |
||||
|
$json = file_get_contents($url); |
||||
|
$json_data = json_decode($json, true); |
||||
|
|
||||
|
$check_date = index_covid_19_check_last_date(); |
||||
|
|
||||
|
foreach($json_data as $row1) |
||||
|
{ |
||||
|
|
||||
|
foreach($row1 as $row_data) |
||||
|
|
||||
|
{ |
||||
|
|
||||
|
$date = date('Y-m-d', strtotime(str_replace('/', '-', $row_data['dateRep']))); |
||||
|
|
||||
|
if($check_date['dateRep'] == $date) |
||||
|
{ |
||||
|
echo"No data to insert!<br>"; |
||||
|
break; |
||||
|
} |
||||
|
$sql_result = insert_covid_19($date,$row_data['cases'],$row_data['deaths'],$row_data['countriesAndTerritories'],$row_data['geoId'],$row_data['countryterritoryCode'],$row_data['popData2018'],$row_data['continentExp']); |
||||
|
|
||||
|
if($sql_result) |
||||
|
{ |
||||
|
echo"-----".$date."------<br>"; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
*/ |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
$url = "https://opendata.ecdc.europa.eu/covid19/casedistribution/json/"; |
||||
|
|
||||
|
//call api |
||||
|
$json = file_get_contents($url); |
||||
|
$json_data = json_decode($json, true); |
||||
|
|
||||
|
|
||||
|
foreach($json_data as $row1) |
||||
|
{ |
||||
|
$currentCountry = ""; |
||||
|
$db_check_date =""; |
||||
|
foreach($row1 as $row_data) |
||||
|
|
||||
|
{ |
||||
|
|
||||
|
if($currentCountry != $row_data['countriesAndTerritories']){ |
||||
|
$currentCountry = $row_data['countriesAndTerritories']; |
||||
|
$db_check_date = index_covid_19_check_last_date_country($row_data['countriesAndTerritories']); |
||||
|
} |
||||
|
//$db_check_date = index_covid_19_check_last_date_country($row_data['countriesAndTerritories']); |
||||
|
$check_date = date_create($db_check_date['dateRep']); |
||||
|
|
||||
|
$insert_date = date('Y-m-d', strtotime(str_replace('/', '-', $row_data['dateRep']))); |
||||
|
$date = date_create($insert_date); |
||||
|
|
||||
|
if($date > $check_date) |
||||
|
{ |
||||
|
$sql_result = insert_covid_19($insert_date,$row_data['cases'],$row_data['deaths'],$row_data['countriesAndTerritories'],$row_data['geoId'],$row_data['countryterritoryCode'],$row_data['popData2018'],$row_data['continentExp']); |
||||
|
|
||||
|
if($sql_result) |
||||
|
{ |
||||
|
echo"-----Data insert!------<br>"; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
else{ |
||||
|
echo"No data to insert!<br>"; |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
|
||||
|
?> |
@ -0,0 +1,33 @@ |
|||||
|
<?php |
||||
|
error_reporting(0); |
||||
|
ob_start(); |
||||
|
header('Content-Type: application/json'); |
||||
|
header("Access-Control-Allow-Origin: *"); |
||||
|
include 'functions_covid_19.php'; |
||||
|
$title = "Index COVID-19"; |
||||
|
|
||||
|
$continent = strip_tags($_POST['continent']); |
||||
|
$order = strip_tags($_POST['order']); |
||||
|
|
||||
|
|
||||
|
//$continent = 'Europe'; |
||||
|
$result_specific_dates = index_covid_19_continentExp($continent, $order); |
||||
|
|
||||
|
//foreach($result_continent as $row1) |
||||
|
//{ |
||||
|
|
||||
|
// echo" Cases:".$row1['Cases']."---"; |
||||
|
//echo" Deaths:".$row1['Deaths']."---"; |
||||
|
//echo" Country:".$row1['countriesAndTerritories']."---"; |
||||
|
//echo" Continent:".$row1['continentExp']."---"; |
||||
|
//echo"<br>"; |
||||
|
|
||||
|
|
||||
|
//} |
||||
|
|
||||
|
echo json_encode($result_specific_dates,JSON_PRETTY_PRINT); |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
?> |
@ -0,0 +1,31 @@ |
|||||
|
<?php |
||||
|
error_reporting(0); |
||||
|
ob_start(); |
||||
|
header('Content-Type: application/json'); |
||||
|
header("Access-Control-Allow-Origin: *"); |
||||
|
include 'functions_covid_19.php'; |
||||
|
$title = "Index COVID-19"; |
||||
|
|
||||
|
$from_date = strip_tags($_POST['from_date']); |
||||
|
$until_date = strip_tags($_POST['until_date']); |
||||
|
|
||||
|
$result_specific_dates = index_covid_19_specific_date_group_by_country('2020-04-01','2020-05-01'); |
||||
|
|
||||
|
//foreach($result_continent as $row1) |
||||
|
//{ |
||||
|
|
||||
|
// echo" Cases:".$row1['Cases']."---"; |
||||
|
//echo" Deaths:".$row1['Deaths']."---"; |
||||
|
//echo" Country:".$row1['countriesAndTerritories']."---"; |
||||
|
//echo" Continent:".$row1['continentExp']."---"; |
||||
|
//echo"<br>"; |
||||
|
|
||||
|
|
||||
|
//} |
||||
|
|
||||
|
echo json_encode($result_specific_dates,JSON_PRETTY_PRINT); |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
?> |
@ -0,0 +1,17 @@ |
|||||
|
<?php |
||||
|
error_reporting(0); |
||||
|
ob_start(); |
||||
|
header('Content-Type: application/json'); |
||||
|
header("Access-Control-Allow-Origin: *"); |
||||
|
include 'functions_covid_19.php'; |
||||
|
$title = "Index COVID-19"; |
||||
|
|
||||
|
$result_last_date = index_covid_19_check_last_date(); |
||||
|
$date = date('d-m-Y', strtotime(str_replace('/', '-', $result_last_date['dateRep']))); |
||||
|
|
||||
|
echo json_encode($date,JSON_PRETTY_PRINT); |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
?> |
@ -0,0 +1,16 @@ |
|||||
|
<?php |
||||
|
error_reporting(0); |
||||
|
ob_start(); |
||||
|
header('Content-Type: application/json'); |
||||
|
header("Access-Control-Allow-Origin: *"); |
||||
|
include 'functions_covid_19.php'; |
||||
|
$title = "Index COVID-19"; |
||||
|
|
||||
|
$result_total = index_covid_19_total_cases_deaths(); |
||||
|
|
||||
|
echo json_encode($result_total,JSON_PRETTY_PRINT); |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
?> |
@ -0,0 +1,18 @@ |
|||||
|
<?php |
||||
|
|
||||
|
header("Access-Control-Allow-Origin: *"); |
||||
|
|
||||
|
$page = $_SERVER['PHP_SELF']; |
||||
|
|
||||
|
$now = time(); |
||||
|
$today = strtotime('3:00'); |
||||
|
$tomorrow = strtotime('tomorrow 3:00'); |
||||
|
if (($today - $now) > 0) { |
||||
|
$refreshTime = $today - $now; |
||||
|
} else { |
||||
|
$refreshTime = $tomorrow - $now; |
||||
|
} |
||||
|
|
||||
|
header("Refresh: $refreshTime; url=http://localhost/covid_19/services/get_data_from_url.php"); |
||||
|
|
||||
|
?> |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,663 @@ |
|||||
|
.apexcharts-canvas { |
||||
|
position: relative; |
||||
|
user-select: none; |
||||
|
/* cannot give overflow: hidden as it will crop tooltips which overflow outside chart area */ |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/* scrollbar is not visible by default for legend, hence forcing the visibility */ |
||||
|
.apexcharts-canvas ::-webkit-scrollbar { |
||||
|
-webkit-appearance: none; |
||||
|
width: 6px; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-canvas ::-webkit-scrollbar-thumb { |
||||
|
border-radius: 4px; |
||||
|
background-color: rgba(0, 0, 0, .5); |
||||
|
box-shadow: 0 0 1px rgba(255, 255, 255, .5); |
||||
|
-webkit-box-shadow: 0 0 1px rgba(255, 255, 255, .5); |
||||
|
} |
||||
|
|
||||
|
.apexcharts-canvas.apexcharts-theme-dark { |
||||
|
background: #424242; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-inner { |
||||
|
position: relative; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-text tspan { |
||||
|
font-family: inherit; |
||||
|
} |
||||
|
|
||||
|
.legend-mouseover-inactive { |
||||
|
transition: 0.15s ease all; |
||||
|
opacity: 0.20; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-series-collapsed { |
||||
|
opacity: 0; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-tooltip { |
||||
|
border-radius: 5px; |
||||
|
box-shadow: 2px 2px 6px -4px #999; |
||||
|
cursor: default; |
||||
|
font-size: 14px; |
||||
|
left: 62px; |
||||
|
opacity: 0; |
||||
|
pointer-events: none; |
||||
|
position: absolute; |
||||
|
top: 20px; |
||||
|
overflow: hidden; |
||||
|
white-space: nowrap; |
||||
|
z-index: 12; |
||||
|
transition: 0.15s ease all; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-tooltip.apexcharts-active { |
||||
|
opacity: 1; |
||||
|
transition: 0.15s ease all; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-tooltip.apexcharts-theme-light { |
||||
|
border: 1px solid #e3e3e3; |
||||
|
background: rgba(255, 255, 255, 0.96); |
||||
|
} |
||||
|
|
||||
|
.apexcharts-tooltip.apexcharts-theme-dark { |
||||
|
color: #fff; |
||||
|
background: rgba(30, 30, 30, 0.8); |
||||
|
} |
||||
|
|
||||
|
.apexcharts-tooltip * { |
||||
|
font-family: inherit; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.apexcharts-tooltip-title { |
||||
|
padding: 6px; |
||||
|
font-size: 15px; |
||||
|
margin-bottom: 4px; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title { |
||||
|
background: #ECEFF1; |
||||
|
border-bottom: 1px solid #ddd; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-tooltip.apexcharts-theme-dark .apexcharts-tooltip-title { |
||||
|
background: rgba(0, 0, 0, 0.7); |
||||
|
border-bottom: 1px solid #333; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-tooltip-text-value, |
||||
|
.apexcharts-tooltip-text-z-value { |
||||
|
display: inline-block; |
||||
|
font-weight: 600; |
||||
|
margin-left: 5px; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-tooltip-text-z-label:empty, |
||||
|
.apexcharts-tooltip-text-z-value:empty { |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-tooltip-text-value, |
||||
|
.apexcharts-tooltip-text-z-value { |
||||
|
font-weight: 600; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-tooltip-marker { |
||||
|
width: 12px; |
||||
|
height: 12px; |
||||
|
position: relative; |
||||
|
top: 0px; |
||||
|
margin-right: 10px; |
||||
|
border-radius: 50%; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-tooltip-series-group { |
||||
|
padding: 0 10px; |
||||
|
display: none; |
||||
|
text-align: left; |
||||
|
justify-content: left; |
||||
|
align-items: center; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-tooltip-series-group.apexcharts-active .apexcharts-tooltip-marker { |
||||
|
opacity: 1; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-tooltip-series-group.apexcharts-active, |
||||
|
.apexcharts-tooltip-series-group:last-child { |
||||
|
padding-bottom: 4px; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-tooltip-series-group-hidden { |
||||
|
opacity: 0; |
||||
|
height: 0; |
||||
|
line-height: 0; |
||||
|
padding: 0 !important; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-tooltip-y-group { |
||||
|
padding: 6px 0 5px; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-tooltip-candlestick { |
||||
|
padding: 4px 8px; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-tooltip-candlestick>div { |
||||
|
margin: 4px 0; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-tooltip-candlestick span.value { |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-tooltip-rangebar { |
||||
|
padding: 5px 8px; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-tooltip-rangebar .category { |
||||
|
font-weight: 600; |
||||
|
color: #777; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-tooltip-rangebar .series-name { |
||||
|
font-weight: bold; |
||||
|
display: block; |
||||
|
margin-bottom: 5px; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-xaxistooltip { |
||||
|
opacity: 0; |
||||
|
padding: 9px 10px; |
||||
|
pointer-events: none; |
||||
|
color: #373d3f; |
||||
|
font-size: 13px; |
||||
|
text-align: center; |
||||
|
border-radius: 2px; |
||||
|
position: absolute; |
||||
|
z-index: 10; |
||||
|
background: #ECEFF1; |
||||
|
border: 1px solid #90A4AE; |
||||
|
transition: 0.15s ease all; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-xaxistooltip.apexcharts-theme-dark { |
||||
|
background: rgba(0, 0, 0, 0.7); |
||||
|
border: 1px solid rgba(0, 0, 0, 0.5); |
||||
|
color: #fff; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-xaxistooltip:after, |
||||
|
.apexcharts-xaxistooltip:before { |
||||
|
left: 50%; |
||||
|
border: solid transparent; |
||||
|
content: " "; |
||||
|
height: 0; |
||||
|
width: 0; |
||||
|
position: absolute; |
||||
|
pointer-events: none; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-xaxistooltip:after { |
||||
|
border-color: rgba(236, 239, 241, 0); |
||||
|
border-width: 6px; |
||||
|
margin-left: -6px; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-xaxistooltip:before { |
||||
|
border-color: rgba(144, 164, 174, 0); |
||||
|
border-width: 7px; |
||||
|
margin-left: -7px; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-xaxistooltip-bottom:after, |
||||
|
.apexcharts-xaxistooltip-bottom:before { |
||||
|
bottom: 100%; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-xaxistooltip-top:after, |
||||
|
.apexcharts-xaxistooltip-top:before { |
||||
|
top: 100%; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-xaxistooltip-bottom:after { |
||||
|
border-bottom-color: #ECEFF1; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-xaxistooltip-bottom:before { |
||||
|
border-bottom-color: #90A4AE; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:after { |
||||
|
border-bottom-color: rgba(0, 0, 0, 0.5); |
||||
|
} |
||||
|
|
||||
|
.apexcharts-xaxistooltip-bottom.apexcharts-theme-dark:before { |
||||
|
border-bottom-color: rgba(0, 0, 0, 0.5); |
||||
|
} |
||||
|
|
||||
|
.apexcharts-xaxistooltip-top:after { |
||||
|
border-top-color: #ECEFF1 |
||||
|
} |
||||
|
|
||||
|
.apexcharts-xaxistooltip-top:before { |
||||
|
border-top-color: #90A4AE; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-xaxistooltip-top.apexcharts-theme-dark:after { |
||||
|
border-top-color: rgba(0, 0, 0, 0.5); |
||||
|
} |
||||
|
|
||||
|
.apexcharts-xaxistooltip-top.apexcharts-theme-dark:before { |
||||
|
border-top-color: rgba(0, 0, 0, 0.5); |
||||
|
} |
||||
|
|
||||
|
.apexcharts-xaxistooltip.apexcharts-active { |
||||
|
opacity: 1; |
||||
|
transition: 0.15s ease all; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-yaxistooltip { |
||||
|
opacity: 0; |
||||
|
padding: 4px 10px; |
||||
|
pointer-events: none; |
||||
|
color: #373d3f; |
||||
|
font-size: 13px; |
||||
|
text-align: center; |
||||
|
border-radius: 2px; |
||||
|
position: absolute; |
||||
|
z-index: 10; |
||||
|
background: #ECEFF1; |
||||
|
border: 1px solid #90A4AE; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-yaxistooltip.apexcharts-theme-dark { |
||||
|
background: rgba(0, 0, 0, 0.7); |
||||
|
border: 1px solid rgba(0, 0, 0, 0.5); |
||||
|
color: #fff; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-yaxistooltip:after, |
||||
|
.apexcharts-yaxistooltip:before { |
||||
|
top: 50%; |
||||
|
border: solid transparent; |
||||
|
content: " "; |
||||
|
height: 0; |
||||
|
width: 0; |
||||
|
position: absolute; |
||||
|
pointer-events: none; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-yaxistooltip:after { |
||||
|
border-color: rgba(236, 239, 241, 0); |
||||
|
border-width: 6px; |
||||
|
margin-top: -6px; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-yaxistooltip:before { |
||||
|
border-color: rgba(144, 164, 174, 0); |
||||
|
border-width: 7px; |
||||
|
margin-top: -7px; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-yaxistooltip-left:after, |
||||
|
.apexcharts-yaxistooltip-left:before { |
||||
|
left: 100%; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-yaxistooltip-right:after, |
||||
|
.apexcharts-yaxistooltip-right:before { |
||||
|
right: 100%; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-yaxistooltip-left:after { |
||||
|
border-left-color: #ECEFF1; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-yaxistooltip-left:before { |
||||
|
border-left-color: #90A4AE; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-yaxistooltip-left.apexcharts-theme-dark:after { |
||||
|
border-left-color: rgba(0, 0, 0, 0.5); |
||||
|
} |
||||
|
|
||||
|
.apexcharts-yaxistooltip-left.apexcharts-theme-dark:before { |
||||
|
border-left-color: rgba(0, 0, 0, 0.5); |
||||
|
} |
||||
|
|
||||
|
.apexcharts-yaxistooltip-right:after { |
||||
|
border-right-color: #ECEFF1; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-yaxistooltip-right:before { |
||||
|
border-right-color: #90A4AE; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-yaxistooltip-right.apexcharts-theme-dark:after { |
||||
|
border-right-color: rgba(0, 0, 0, 0.5); |
||||
|
} |
||||
|
|
||||
|
.apexcharts-yaxistooltip-right.apexcharts-theme-dark:before { |
||||
|
border-right-color: rgba(0, 0, 0, 0.5); |
||||
|
} |
||||
|
|
||||
|
.apexcharts-yaxistooltip.apexcharts-active { |
||||
|
opacity: 1; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-yaxistooltip-hidden { |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-xcrosshairs, |
||||
|
.apexcharts-ycrosshairs { |
||||
|
pointer-events: none; |
||||
|
opacity: 0; |
||||
|
transition: 0.15s ease all; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-xcrosshairs.apexcharts-active, |
||||
|
.apexcharts-ycrosshairs.apexcharts-active { |
||||
|
opacity: 1; |
||||
|
transition: 0.15s ease all; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-ycrosshairs-hidden { |
||||
|
opacity: 0; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-selection-rect { |
||||
|
cursor: move; |
||||
|
} |
||||
|
|
||||
|
.svg_select_boundingRect, .svg_select_points_rot { |
||||
|
pointer-events: none; |
||||
|
opacity: 0; |
||||
|
visibility: hidden; |
||||
|
} |
||||
|
.apexcharts-selection-rect + g .svg_select_boundingRect, |
||||
|
.apexcharts-selection-rect + g .svg_select_points_rot { |
||||
|
opacity: 0; |
||||
|
visibility: hidden; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-selection-rect + g .svg_select_points_l, |
||||
|
.apexcharts-selection-rect + g .svg_select_points_r { |
||||
|
cursor: ew-resize; |
||||
|
opacity: 1; |
||||
|
visibility: visible; |
||||
|
} |
||||
|
|
||||
|
.svg_select_points { |
||||
|
fill: #efefef; |
||||
|
stroke: #333; |
||||
|
rx: 2; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-canvas.apexcharts-zoomable .hovering-zoom { |
||||
|
cursor: crosshair |
||||
|
} |
||||
|
|
||||
|
.apexcharts-canvas.apexcharts-zoomable .hovering-pan { |
||||
|
cursor: move |
||||
|
} |
||||
|
|
||||
|
.apexcharts-zoom-icon, |
||||
|
.apexcharts-zoomin-icon, |
||||
|
.apexcharts-zoomout-icon, |
||||
|
.apexcharts-reset-icon, |
||||
|
.apexcharts-pan-icon, |
||||
|
.apexcharts-selection-icon, |
||||
|
.apexcharts-menu-icon, |
||||
|
.apexcharts-toolbar-custom-icon { |
||||
|
cursor: pointer; |
||||
|
width: 20px; |
||||
|
height: 20px; |
||||
|
line-height: 24px; |
||||
|
color: #6E8192; |
||||
|
text-align: center; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-zoom-icon svg, |
||||
|
.apexcharts-zoomin-icon svg, |
||||
|
.apexcharts-zoomout-icon svg, |
||||
|
.apexcharts-reset-icon svg, |
||||
|
.apexcharts-menu-icon svg { |
||||
|
fill: #6E8192; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-selection-icon svg { |
||||
|
fill: #444; |
||||
|
transform: scale(0.76) |
||||
|
} |
||||
|
|
||||
|
.apexcharts-theme-dark .apexcharts-zoom-icon svg, |
||||
|
.apexcharts-theme-dark .apexcharts-zoomin-icon svg, |
||||
|
.apexcharts-theme-dark .apexcharts-zoomout-icon svg, |
||||
|
.apexcharts-theme-dark .apexcharts-reset-icon svg, |
||||
|
.apexcharts-theme-dark .apexcharts-pan-icon svg, |
||||
|
.apexcharts-theme-dark .apexcharts-selection-icon svg, |
||||
|
.apexcharts-theme-dark .apexcharts-menu-icon svg, |
||||
|
.apexcharts-theme-dark .apexcharts-toolbar-custom-icon svg { |
||||
|
fill: #f3f4f5; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-canvas .apexcharts-zoom-icon.apexcharts-selected svg, |
||||
|
.apexcharts-canvas .apexcharts-selection-icon.apexcharts-selected svg, |
||||
|
.apexcharts-canvas .apexcharts-reset-zoom-icon.apexcharts-selected svg { |
||||
|
fill: #008FFB; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-theme-light .apexcharts-selection-icon:not(.apexcharts-selected):hover svg, |
||||
|
.apexcharts-theme-light .apexcharts-zoom-icon:not(.apexcharts-selected):hover svg, |
||||
|
.apexcharts-theme-light .apexcharts-zoomin-icon:hover svg, |
||||
|
.apexcharts-theme-light .apexcharts-zoomout-icon:hover svg, |
||||
|
.apexcharts-theme-light .apexcharts-reset-icon:hover svg, |
||||
|
.apexcharts-theme-light .apexcharts-menu-icon:hover svg { |
||||
|
fill: #333; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-selection-icon, |
||||
|
.apexcharts-menu-icon { |
||||
|
position: relative; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-reset-icon { |
||||
|
margin-left: 5px; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-zoom-icon, |
||||
|
.apexcharts-reset-icon, |
||||
|
.apexcharts-menu-icon { |
||||
|
transform: scale(0.85); |
||||
|
} |
||||
|
|
||||
|
.apexcharts-zoomin-icon, |
||||
|
.apexcharts-zoomout-icon { |
||||
|
transform: scale(0.7) |
||||
|
} |
||||
|
|
||||
|
.apexcharts-zoomout-icon { |
||||
|
margin-right: 3px; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-pan-icon { |
||||
|
transform: scale(0.62); |
||||
|
position: relative; |
||||
|
left: 1px; |
||||
|
top: 0px; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-pan-icon svg { |
||||
|
fill: #fff; |
||||
|
stroke: #6E8192; |
||||
|
stroke-width: 2; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-pan-icon.apexcharts-selected svg { |
||||
|
stroke: #008FFB; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-pan-icon:not(.apexcharts-selected):hover svg { |
||||
|
stroke: #333; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-toolbar { |
||||
|
position: absolute; |
||||
|
z-index: 11; |
||||
|
max-width: 176px; |
||||
|
text-align: right; |
||||
|
border-radius: 3px; |
||||
|
padding: 0px 6px 2px 6px; |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
align-items: center; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-menu { |
||||
|
background: #fff; |
||||
|
position: absolute; |
||||
|
top: 100%; |
||||
|
border: 1px solid #ddd; |
||||
|
border-radius: 3px; |
||||
|
padding: 3px; |
||||
|
right: 10px; |
||||
|
opacity: 0; |
||||
|
min-width: 110px; |
||||
|
transition: 0.15s ease all; |
||||
|
pointer-events: none; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-menu.apexcharts-menu-open { |
||||
|
opacity: 1; |
||||
|
pointer-events: all; |
||||
|
transition: 0.15s ease all; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-menu-item { |
||||
|
padding: 6px 7px; |
||||
|
font-size: 12px; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-theme-light .apexcharts-menu-item:hover { |
||||
|
background: #eee; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-theme-dark .apexcharts-menu { |
||||
|
background: rgba(0, 0, 0, 0.7); |
||||
|
color: #fff; |
||||
|
} |
||||
|
|
||||
|
@media screen and (min-width: 768px) { |
||||
|
.apexcharts-canvas:hover .apexcharts-toolbar { |
||||
|
opacity: 1; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.apexcharts-datalabel.apexcharts-element-hidden { |
||||
|
opacity: 0; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-pie-label, |
||||
|
.apexcharts-datalabels, |
||||
|
.apexcharts-datalabel, |
||||
|
.apexcharts-datalabel-label, |
||||
|
.apexcharts-datalabel-value { |
||||
|
cursor: default; |
||||
|
pointer-events: none; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-pie-label-delay { |
||||
|
opacity: 0; |
||||
|
animation-name: opaque; |
||||
|
animation-duration: 0.3s; |
||||
|
animation-fill-mode: forwards; |
||||
|
animation-timing-function: ease; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-canvas .apexcharts-element-hidden { |
||||
|
opacity: 0; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-hide .apexcharts-series-points { |
||||
|
opacity: 0; |
||||
|
} |
||||
|
|
||||
|
.apexcharts-gridline, |
||||
|
.apexcharts-annotation-rect, |
||||
|
.apexcharts-tooltip .apexcharts-marker, |
||||
|
.apexcharts-area-series .apexcharts-area, |
||||
|
.apexcharts-line, |
||||
|
.apexcharts-zoom-rect, |
||||
|
.apexcharts-toolbar svg, |
||||
|
.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events, |
||||
|
.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events, |
||||
|
.apexcharts-radar-series path, |
||||
|
.apexcharts-radar-series polygon { |
||||
|
pointer-events: none; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/* markers */ |
||||
|
|
||||
|
.apexcharts-marker { |
||||
|
transition: 0.15s ease all; |
||||
|
} |
||||
|
|
||||
|
@keyframes opaque { |
||||
|
0% { |
||||
|
opacity: 0; |
||||
|
} |
||||
|
100% { |
||||
|
opacity: 1; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/* Resize generated styles */ |
||||
|
|
||||
|
@keyframes resizeanim { |
||||
|
from { |
||||
|
opacity: 0; |
||||
|
} |
||||
|
to { |
||||
|
opacity: 0; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.resize-triggers { |
||||
|
animation: 1ms resizeanim; |
||||
|
visibility: hidden; |
||||
|
opacity: 0; |
||||
|
} |
||||
|
|
||||
|
.resize-triggers, |
||||
|
.resize-triggers>div, |
||||
|
.contract-trigger:before { |
||||
|
content: " "; |
||||
|
display: block; |
||||
|
position: absolute; |
||||
|
top: 0; |
||||
|
left: 0; |
||||
|
height: 100%; |
||||
|
width: 100%; |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
|
||||
|
.resize-triggers>div { |
||||
|
background: #eee; |
||||
|
overflow: auto; |
||||
|
} |
||||
|
|
||||
|
.contract-trigger:before { |
||||
|
width: 200%; |
||||
|
height: 200%; |
||||
|
} |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "ca", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"Gener", |
||||
|
"Febrer", |
||||
|
"Març", |
||||
|
"Abril", |
||||
|
"Maig", |
||||
|
"Juny", |
||||
|
"Juliol", |
||||
|
"Agost", |
||||
|
"Setembre", |
||||
|
"Octubre", |
||||
|
"Novembre", |
||||
|
"Desembre" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"Gen.", |
||||
|
"Febr.", |
||||
|
"Març", |
||||
|
"Abr.", |
||||
|
"Maig", |
||||
|
"Juny", |
||||
|
"Jul.", |
||||
|
"Ag.", |
||||
|
"Set.", |
||||
|
"Oct.", |
||||
|
"Nov.", |
||||
|
"Des." |
||||
|
], |
||||
|
"days": [ |
||||
|
"Diumenge", |
||||
|
"Dilluns", |
||||
|
"Dimarts", |
||||
|
"Dimecres", |
||||
|
"Dijous", |
||||
|
"Divendres", |
||||
|
"Dissabte" |
||||
|
], |
||||
|
"shortDays": ["Dg", "Dl", "Dt", "Dc", "Dj", "Dv", "Ds"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "Descarregar SVG", |
||||
|
"exportToPNG": "Descarregar PNG", |
||||
|
"exportToCSV": "Descarregar CSV", |
||||
|
"menu": "Menú", |
||||
|
"selection": "Seleccionar", |
||||
|
"selectionZoom": "Seleccionar Zoom", |
||||
|
"zoomIn": "Augmentar", |
||||
|
"zoomOut": "Disminuir", |
||||
|
"pan": "Navegació", |
||||
|
"reset": "Reiniciar Zoom" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "cs", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"Leden", |
||||
|
"Únor", |
||||
|
"Březen", |
||||
|
"Duben", |
||||
|
"Květen", |
||||
|
"Červen", |
||||
|
"Červenec", |
||||
|
"Srpen", |
||||
|
"Září", |
||||
|
"Říjen", |
||||
|
"Listopad", |
||||
|
"Prosinec" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"Led", |
||||
|
"Úno", |
||||
|
"Bře", |
||||
|
"Dub", |
||||
|
"Kvě", |
||||
|
"Čvn", |
||||
|
"Čvc", |
||||
|
"Srp", |
||||
|
"Zář", |
||||
|
"Říj", |
||||
|
"Lis", |
||||
|
"Pro" |
||||
|
], |
||||
|
"days": [ |
||||
|
"Neděle", |
||||
|
"Pondělí", |
||||
|
"Úterý", |
||||
|
"Středa", |
||||
|
"Čtvrtek", |
||||
|
"Pátek", |
||||
|
"Sobota" |
||||
|
], |
||||
|
"shortDays": ["Ne", "Po", "Út", "St", "Čt", "Pá", "So"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "Stáhnout SVG", |
||||
|
"exportToPNG": "Stáhnout PNG", |
||||
|
"exportToCSV": "Stáhnout CSV", |
||||
|
"menu": "Menu", |
||||
|
"selection": "Vybrat", |
||||
|
"selectionZoom": "Zoom: Vybrat", |
||||
|
"zoomIn": "Zoom: Přiblížit", |
||||
|
"zoomOut": "Zoom: Oddálit", |
||||
|
"pan": "Přesouvat", |
||||
|
"reset": "Resetovat" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "de", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"Januar", |
||||
|
"Februar", |
||||
|
"März", |
||||
|
"April", |
||||
|
"Mai", |
||||
|
"Juni", |
||||
|
"Juli", |
||||
|
"August", |
||||
|
"September", |
||||
|
"Oktober", |
||||
|
"November", |
||||
|
"Dezember" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"Jan", |
||||
|
"Feb", |
||||
|
"Mär", |
||||
|
"Apr", |
||||
|
"Mai", |
||||
|
"Jun", |
||||
|
"Jul", |
||||
|
"Aug", |
||||
|
"Sep", |
||||
|
"Okt", |
||||
|
"Nov", |
||||
|
"Dez" |
||||
|
], |
||||
|
"days": [ |
||||
|
"Sonntag", |
||||
|
"Montag", |
||||
|
"Dienstag", |
||||
|
"Mittwoch", |
||||
|
"Donnerstag", |
||||
|
"Freitag", |
||||
|
"Samstag" |
||||
|
], |
||||
|
"shortDays": ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "SVG speichern", |
||||
|
"exportToPNG": "PNG speichern", |
||||
|
"exportToCSV": "CSV speichern", |
||||
|
"menu": "Menü", |
||||
|
"selection": "Auswahl", |
||||
|
"selectionZoom": "Auswahl vergrößern", |
||||
|
"zoomIn": "Vergrößern", |
||||
|
"zoomOut": "Verkleinern", |
||||
|
"pan": "Verschieben", |
||||
|
"reset": "Zoom zurücksetzen" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "el", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"Ιανουάριος", |
||||
|
"Φεβρουάριος", |
||||
|
"Μάρτιος", |
||||
|
"Απρίλιος", |
||||
|
"Μάιος", |
||||
|
"Ιούνιος", |
||||
|
"Ιούλιος", |
||||
|
"Αύγουστος", |
||||
|
"Σεπτέμβριος", |
||||
|
"Οκτώβριος", |
||||
|
"Νοέμβριος", |
||||
|
"Δεκέμβριος" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"Ιαν", |
||||
|
"Φευ", |
||||
|
"Μαρ", |
||||
|
"Απρ", |
||||
|
"Μάι", |
||||
|
"Ιουν", |
||||
|
"Ιουλ", |
||||
|
"Αυγ", |
||||
|
"Σεπ", |
||||
|
"Οκτ", |
||||
|
"Νοε", |
||||
|
"Δεκ" |
||||
|
], |
||||
|
"days": [ |
||||
|
"Κυριακή", |
||||
|
"Δευτέρα", |
||||
|
"Τρίτη", |
||||
|
"Τετάρτη", |
||||
|
"Πέμπτη", |
||||
|
"Παρασκευή", |
||||
|
"Σάββατο" |
||||
|
], |
||||
|
"shortDays": ["Κυρ", "Δευ", "Τρι", "Τετ", "Πεμ", "Παρ", "Σαβ"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "Λήψη SVG", |
||||
|
"exportToPNG": "Λήψη PNG", |
||||
|
"exportToCSV": "Λήψη CSV", |
||||
|
"menu": "Menu", |
||||
|
"selection": "Επιλογή", |
||||
|
"selectionZoom": "Μεγένθυση βάση επιλογής", |
||||
|
"zoomIn": "Μεγένθυνση", |
||||
|
"zoomOut": "Σμίκρυνση", |
||||
|
"pan": "Μετατόπιση", |
||||
|
"reset": "Επαναφορά μεγένθυνσης" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "en", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"January", |
||||
|
"February", |
||||
|
"March", |
||||
|
"April", |
||||
|
"May", |
||||
|
"June", |
||||
|
"July", |
||||
|
"August", |
||||
|
"September", |
||||
|
"October", |
||||
|
"November", |
||||
|
"December" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"Jan", |
||||
|
"Feb", |
||||
|
"Mar", |
||||
|
"Apr", |
||||
|
"May", |
||||
|
"Jun", |
||||
|
"Jul", |
||||
|
"Aug", |
||||
|
"Sep", |
||||
|
"Oct", |
||||
|
"Nov", |
||||
|
"Dec" |
||||
|
], |
||||
|
"days": [ |
||||
|
"Sunday", |
||||
|
"Monday", |
||||
|
"Tuesday", |
||||
|
"Wednesday", |
||||
|
"Thursday", |
||||
|
"Friday", |
||||
|
"Saturday" |
||||
|
], |
||||
|
"shortDays": ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "Download SVG", |
||||
|
"exportToPNG": "Download PNG", |
||||
|
"exportToCSV": "Download CSV", |
||||
|
"menu": "Menu", |
||||
|
"selection": "Selection", |
||||
|
"selectionZoom": "Selection Zoom", |
||||
|
"zoomIn": "Zoom In", |
||||
|
"zoomOut": "Zoom Out", |
||||
|
"pan": "Panning", |
||||
|
"reset": "Reset Zoom" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "es", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"Enero", |
||||
|
"Febrero", |
||||
|
"Marzo", |
||||
|
"Abril", |
||||
|
"Mayo", |
||||
|
"Junio", |
||||
|
"Julio", |
||||
|
"Agosto", |
||||
|
"Septiembre", |
||||
|
"Octubre", |
||||
|
"Noviembre", |
||||
|
"Diciembre" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"Ene", |
||||
|
"Feb", |
||||
|
"Mar", |
||||
|
"Abr", |
||||
|
"May", |
||||
|
"Jun", |
||||
|
"Jul", |
||||
|
"Ago", |
||||
|
"Sep", |
||||
|
"Oct", |
||||
|
"Nov", |
||||
|
"Dic" |
||||
|
], |
||||
|
"days": [ |
||||
|
"Domingo", |
||||
|
"Lunes", |
||||
|
"Martes", |
||||
|
"Miércoles", |
||||
|
"Jueves", |
||||
|
"Viernes", |
||||
|
"Sábado" |
||||
|
], |
||||
|
"shortDays": ["Dom", "Lun", "Mar", "Mie", "Jue", "Vie", "Sab"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "Descargar SVG", |
||||
|
"exportToPNG": "Descargar PNG", |
||||
|
"exportToCSV": "Descargar CSV", |
||||
|
"menu": "Menu", |
||||
|
"selection": "Seleccionar", |
||||
|
"selectionZoom": "Seleccionar Zoom", |
||||
|
"zoomIn": "Aumentar", |
||||
|
"zoomOut": "Disminuir", |
||||
|
"pan": "Navegación", |
||||
|
"reset": "Reiniciar Zoom" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "fi", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"Tammikuu", |
||||
|
"Helmikuu", |
||||
|
"Maaliskuu", |
||||
|
"Huhtikuu", |
||||
|
"Toukokuu", |
||||
|
"Kesäkuu", |
||||
|
"Heinäkuu", |
||||
|
"Elokuu", |
||||
|
"Syyskuu", |
||||
|
"Lokakuu", |
||||
|
"Marraskuu", |
||||
|
"Joulukuu" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"Tammi", |
||||
|
"Helmi", |
||||
|
"Maalis", |
||||
|
"Huhti", |
||||
|
"Touko", |
||||
|
"Kesä", |
||||
|
"Heinä", |
||||
|
"Elo", |
||||
|
"Syys", |
||||
|
"Loka", |
||||
|
"Marras", |
||||
|
"Joulu" |
||||
|
], |
||||
|
"days": [ |
||||
|
"Sunnuntai", |
||||
|
"Maanantai", |
||||
|
"Tiistai", |
||||
|
"Keskiviikko", |
||||
|
"Torstai", |
||||
|
"Perjantai", |
||||
|
"Lauantai" |
||||
|
], |
||||
|
"shortDays": ["Su", "Ma", "Ti", "Ke", "To", "Pe", "La"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "Lataa SVG", |
||||
|
"exportToPNG": "Lataa PNG", |
||||
|
"exportToCSV": "Lataa CSV", |
||||
|
"menu": "Valikko", |
||||
|
"selection": "Valinta", |
||||
|
"selectionZoom": "Valinnan zoomaus", |
||||
|
"zoomIn": "Lähennä", |
||||
|
"zoomOut": "Loitonna", |
||||
|
"pan": "Panoroi", |
||||
|
"reset": "Nollaa zoomaus" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "fr", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"janvier", |
||||
|
"février", |
||||
|
"mars", |
||||
|
"avril", |
||||
|
"mai", |
||||
|
"juin", |
||||
|
"juillet", |
||||
|
"août", |
||||
|
"septembre", |
||||
|
"octobre", |
||||
|
"novembre", |
||||
|
"décembre" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"janv.", |
||||
|
"févr.", |
||||
|
"mars", |
||||
|
"avr.", |
||||
|
"mai", |
||||
|
"juin", |
||||
|
"juill.", |
||||
|
"août", |
||||
|
"sept.", |
||||
|
"oct.", |
||||
|
"nov.", |
||||
|
"déc." |
||||
|
], |
||||
|
"days": [ |
||||
|
"dimanche", |
||||
|
"lundi", |
||||
|
"mardi", |
||||
|
"mercredi", |
||||
|
"jeudi", |
||||
|
"vendredi", |
||||
|
"samedi" |
||||
|
], |
||||
|
"shortDays": ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "Télécharger au format SVG", |
||||
|
"exportToPNG": "Télécharger au format PNG", |
||||
|
"exportToCSV": "Télécharger au format CSV", |
||||
|
"menu": "Menu", |
||||
|
"selection": "Sélection", |
||||
|
"selectionZoom": "Sélection et zoom", |
||||
|
"zoomIn": "Zoomer", |
||||
|
"zoomOut": "Dézoomer", |
||||
|
"pan": "Navigation", |
||||
|
"reset": "Réinitialiser le zoom" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "he", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"ינואר", |
||||
|
"פברואר", |
||||
|
"מרץ", |
||||
|
"אפריל", |
||||
|
"מאי", |
||||
|
"יוני", |
||||
|
"יולי", |
||||
|
"אוגוסט", |
||||
|
"ספטמבר", |
||||
|
"אוקטובר", |
||||
|
"נובמבר", |
||||
|
"דצמבר" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"ינו׳", |
||||
|
"פבר׳", |
||||
|
"מרץ", |
||||
|
"אפר׳", |
||||
|
"מאי", |
||||
|
"יוני", |
||||
|
"יולי", |
||||
|
"אוג׳", |
||||
|
"ספט׳", |
||||
|
"אוק׳", |
||||
|
"נוב׳", |
||||
|
"דצמ׳" |
||||
|
], |
||||
|
"days": [ |
||||
|
"ראשון", |
||||
|
"שני", |
||||
|
"שלישי", |
||||
|
"רביעי", |
||||
|
"חמישי", |
||||
|
"שישי", |
||||
|
"שבת" |
||||
|
], |
||||
|
"shortDays": ["א׳", "ב׳", "ג׳", "ד׳", "ה׳", "ו׳", "ש׳"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "הורד SVG", |
||||
|
"exportToPNG": "הורד PNG", |
||||
|
"exportToCSV": "הורד CSV", |
||||
|
"menu": "תפריט", |
||||
|
"selection": "בחירה", |
||||
|
"selectionZoom": "זום בחירה", |
||||
|
"zoomIn": "הגדלה", |
||||
|
"zoomOut": "הקטנה", |
||||
|
"pan": "הזזה", |
||||
|
"reset": "איפוס תצוגה" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "hi", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"जनवरी", |
||||
|
"फ़रवरी", |
||||
|
"मार्च", |
||||
|
"अप्रैल", |
||||
|
"मई", |
||||
|
"जून", |
||||
|
"जुलाई", |
||||
|
"अगस्त", |
||||
|
"सितंबर", |
||||
|
"अक्टूबर", |
||||
|
"नवंबर", |
||||
|
"दिसंबर" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"जनवरी", |
||||
|
"फ़रवरी", |
||||
|
"मार्च", |
||||
|
"अप्रैल", |
||||
|
"मई", |
||||
|
"जून", |
||||
|
"जुलाई", |
||||
|
"अगस्त", |
||||
|
"सितंबर", |
||||
|
"अक्टूबर", |
||||
|
"नवंबर", |
||||
|
"दिसंबर" |
||||
|
], |
||||
|
"days": [ |
||||
|
"रविवार", |
||||
|
"सोमवार", |
||||
|
"मंगलवार", |
||||
|
"बुधवार", |
||||
|
"गुरुवार", |
||||
|
"शुक्रवार", |
||||
|
"शनिवार" |
||||
|
], |
||||
|
"shortDays": ["रवि", "सोम", "मंगल", "बुध", "गुरु", "शुक्र", "शनि"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "निर्यात SVG", |
||||
|
"exportToPNG": "निर्यात PNG", |
||||
|
"exportToCSV": "निर्यात CSV", |
||||
|
"menu": "सूची", |
||||
|
"selection": "चयन", |
||||
|
"selectionZoom": "ज़ूम करना", |
||||
|
"zoomIn": "ज़ूम इन", |
||||
|
"zoomOut": "ज़ूम आउट", |
||||
|
"pan": "पैनिंग", |
||||
|
"reset": "फिर से कायम करना" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "hr", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"Siječanj", |
||||
|
"Veljača", |
||||
|
"Ožujak", |
||||
|
"Travanj", |
||||
|
"Svibanj", |
||||
|
"Lipanj", |
||||
|
"Srpanj", |
||||
|
"Kolovoz", |
||||
|
"Rujan", |
||||
|
"Listopad", |
||||
|
"Studeni", |
||||
|
"Prosinac" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"Sij", |
||||
|
"Velj", |
||||
|
"Ožu", |
||||
|
"Tra", |
||||
|
"Svi", |
||||
|
"Lip", |
||||
|
"Srp", |
||||
|
"Kol", |
||||
|
"Ruj", |
||||
|
"Lis", |
||||
|
"Stu", |
||||
|
"Pro" |
||||
|
], |
||||
|
"days": [ |
||||
|
"Nedjelja", |
||||
|
"Ponedjeljak", |
||||
|
"Utorak", |
||||
|
"Srijeda", |
||||
|
"Četvrtak", |
||||
|
"Petak", |
||||
|
"Subota" |
||||
|
], |
||||
|
"shortDays": ["Ned", "Pon", "Uto", "Sri", "Čet", "Pet", "Sub"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "Preuzmi SVG", |
||||
|
"exportToPNG": "Preuzmi PNG", |
||||
|
"exportToCSV": "Preuzmi CSV", |
||||
|
"menu": "Izbornik", |
||||
|
"selection": "Odabir", |
||||
|
"selectionZoom": "Odabirno povećanje", |
||||
|
"zoomIn": "Uvećajte prikaz", |
||||
|
"zoomOut": "Umanjite prikaz", |
||||
|
"pan": "Pomicanje", |
||||
|
"reset": "Povratak na zadani prikaz" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "hy", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"Հունվար", |
||||
|
"Փետրվար", |
||||
|
"Մարտ", |
||||
|
"Ապրիլ", |
||||
|
"Մայիս", |
||||
|
"Հունիս", |
||||
|
"Հուլիս", |
||||
|
"Օգոստոս", |
||||
|
"Սեպտեմբեր", |
||||
|
"Հոկտեմբեր", |
||||
|
"Նոյեմբեր", |
||||
|
"Դեկտեմբեր" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"Հնվ", |
||||
|
"Փտվ", |
||||
|
"Մրտ", |
||||
|
"Ապր", |
||||
|
"Մյս", |
||||
|
"Հնս", |
||||
|
"Հլիս", |
||||
|
"Օգս", |
||||
|
"Սեպ", |
||||
|
"Հոկ", |
||||
|
"Նոյ", |
||||
|
"Դեկ" |
||||
|
], |
||||
|
"days": [ |
||||
|
"Կիրակի", |
||||
|
"Երկուշաբթի", |
||||
|
"Երեքշաբթի", |
||||
|
"Չորեքշաբթի", |
||||
|
"Հինգշաբթի", |
||||
|
"Ուրբաթ", |
||||
|
"Շաբաթ" |
||||
|
], |
||||
|
"shortDays": ["Կիր", "Երկ", "Երք", "Չրք", "Հնգ", "Ուրբ", "Շբթ"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "Բեռնել SVG", |
||||
|
"exportToPNG": "Բեռնել PNG", |
||||
|
"exportToCSV": "Բեռնել CSV", |
||||
|
"menu": "Մենյու", |
||||
|
"selection": "Ընտրված", |
||||
|
"selectionZoom": "Ընտրված հատվածի խոշորացում", |
||||
|
"zoomIn": "Խոշորացնել", |
||||
|
"zoomOut": "Մանրացնել", |
||||
|
"pan": "Տեղափոխում", |
||||
|
"reset": "Բերել սկզբնական վիճակի" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,47 @@ |
|||||
|
{ |
||||
|
"name": "id", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"Januari", |
||||
|
"Februari", |
||||
|
"Maret", |
||||
|
"April", |
||||
|
"Mei", |
||||
|
"Juni", |
||||
|
"Juli", |
||||
|
"Agustus", |
||||
|
"September", |
||||
|
"Oktober", |
||||
|
"November", |
||||
|
"Desember" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"Jan", |
||||
|
"Feb", |
||||
|
"Mar", |
||||
|
"Apr", |
||||
|
"Mei", |
||||
|
"Jun", |
||||
|
"Jul", |
||||
|
"Agu", |
||||
|
"Sep", |
||||
|
"Okt", |
||||
|
"Nov", |
||||
|
"Des" |
||||
|
], |
||||
|
"days": ["Minggu", "Senin", "Selasa", "Rabu", "kamis", "Jumat", "Sabtu"], |
||||
|
"shortDays": ["Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "Unduh SVG", |
||||
|
"exportToPNG": "Unduh PNG", |
||||
|
"exportToCSV": "Unduh CSV", |
||||
|
"menu": "Menu", |
||||
|
"selection": "Pilihan", |
||||
|
"selectionZoom": "Perbesar Pilihan", |
||||
|
"zoomIn": "Perbesar", |
||||
|
"zoomOut": "Perkecil", |
||||
|
"pan": "Geser", |
||||
|
"reset": "Atur Ulang Zoom" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "it", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"Gennaio", |
||||
|
"Febbraio", |
||||
|
"Marzo", |
||||
|
"Aprile", |
||||
|
"Maggio", |
||||
|
"Giugno", |
||||
|
"Luglio", |
||||
|
"Agosto", |
||||
|
"Settembre", |
||||
|
"Ottobre", |
||||
|
"Novembre", |
||||
|
"Dicembre" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"Gen", |
||||
|
"Feb", |
||||
|
"Mar", |
||||
|
"Apr", |
||||
|
"Mag", |
||||
|
"Giu", |
||||
|
"Lug", |
||||
|
"Ago", |
||||
|
"Set", |
||||
|
"Ott", |
||||
|
"Nov", |
||||
|
"Dic" |
||||
|
], |
||||
|
"days": [ |
||||
|
"Domenica", |
||||
|
"Lunedì", |
||||
|
"Martedì", |
||||
|
"Mercoledì", |
||||
|
"Giovedì", |
||||
|
"Venerdì", |
||||
|
"Sabato" |
||||
|
], |
||||
|
"shortDays": ["Dom", "Lun", "Mar", "Mer", "Gio", "Ven", "Sab"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "Scarica SVG", |
||||
|
"exportToPNG": "Scarica PNG", |
||||
|
"exportToCSV": "Scarica CSV", |
||||
|
"menu": "Menu", |
||||
|
"selection": "Selezione", |
||||
|
"selectionZoom": "Seleziona Zoom", |
||||
|
"zoomIn": "Zoom In", |
||||
|
"zoomOut": "Zoom Out", |
||||
|
"pan": "Sposta", |
||||
|
"reset": "Reimposta Zoom" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,20 @@ |
|||||
|
{ |
||||
|
"name": "ko", |
||||
|
"options": { |
||||
|
"months": ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"], |
||||
|
"shortMonths": ["1월", "2월", "3월", "4월", "5월", "6월", "7월", "8월", "9월", "10월", "11월", "12월"], |
||||
|
"days": ["일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"], |
||||
|
"shortDays": ["일", "월", "화", "수", "목", "금", "토"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "SVG 다운로드", |
||||
|
"exportToPNG": "PNG 다운로드", |
||||
|
"menu": "메뉴", |
||||
|
"selection": "선택", |
||||
|
"selectionZoom": "선택영역 확대", |
||||
|
"zoomIn": "확대", |
||||
|
"zoomOut": "축소", |
||||
|
"pan": "패닝", |
||||
|
"reset": "원래대로" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "ko", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"1월", |
||||
|
"2월", |
||||
|
"3월", |
||||
|
"4월", |
||||
|
"5월", |
||||
|
"6월", |
||||
|
"7월", |
||||
|
"8월", |
||||
|
"9월", |
||||
|
"10월", |
||||
|
"11월", |
||||
|
"12월" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"1월", |
||||
|
"2월", |
||||
|
"3월", |
||||
|
"4월", |
||||
|
"5월", |
||||
|
"6월", |
||||
|
"7월", |
||||
|
"8월", |
||||
|
"9월", |
||||
|
"10월", |
||||
|
"11월", |
||||
|
"12월" |
||||
|
], |
||||
|
"days": [ |
||||
|
"일요일", |
||||
|
"월요일", |
||||
|
"화요일", |
||||
|
"수요일", |
||||
|
"목요일", |
||||
|
"금요일", |
||||
|
"토요일" |
||||
|
], |
||||
|
"shortDays": ["일", "월", "화", "수", "목", "금", "토"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "SVG 다운로드", |
||||
|
"exportToPNG": "PNG 다운로드", |
||||
|
"exportToCSV": "CSV 다운로드", |
||||
|
"menu": "메뉴", |
||||
|
"selection": "선택", |
||||
|
"selectionZoom": "선택영역 확대", |
||||
|
"zoomIn": "확대", |
||||
|
"zoomOut": "축소", |
||||
|
"pan": "패닝", |
||||
|
"reset": "원래대로" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "lt", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"Sausis", |
||||
|
"Vasaris", |
||||
|
"Kovas", |
||||
|
"Balandis", |
||||
|
"Gegužė", |
||||
|
"Birželis", |
||||
|
"Liepa", |
||||
|
"Rugpjūtis", |
||||
|
"Rugsėjis", |
||||
|
"Spalis", |
||||
|
"Lapkritis", |
||||
|
"Gruodis" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"Sau", |
||||
|
"Vas", |
||||
|
"Kov", |
||||
|
"Bal", |
||||
|
"Geg", |
||||
|
"Bir", |
||||
|
"Lie", |
||||
|
"Rgp", |
||||
|
"Rgs", |
||||
|
"Spl", |
||||
|
"Lap", |
||||
|
"Grd" |
||||
|
], |
||||
|
"days": [ |
||||
|
"Sekmadienis", |
||||
|
"Pirmadienis", |
||||
|
"Antradienis", |
||||
|
"Trečiadienis", |
||||
|
"Ketvirtadienis", |
||||
|
"Penktadienis", |
||||
|
"Šeštadienis" |
||||
|
], |
||||
|
"shortDays": ["Sk", "Per", "An", "Tr", "Kt", "Pn", "Št"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "Atsisiųsti SVG", |
||||
|
"exportToPNG": "Atsisiųsti PNG", |
||||
|
"exportToCSV": "Atsisiųsti CSV", |
||||
|
"menu": "Menu", |
||||
|
"selection": "Pasirinkimas", |
||||
|
"selectionZoom": "Zoom: Pasirinkimas", |
||||
|
"zoomIn": "Zoom: Priartinti", |
||||
|
"zoomOut": "Zoom: Atitolinti", |
||||
|
"pan": "Perkėlimas", |
||||
|
"reset": "Atstatyti" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "nb", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"Januar", |
||||
|
"Februar", |
||||
|
"Mars", |
||||
|
"April", |
||||
|
"Mai", |
||||
|
"Juni", |
||||
|
"Juli", |
||||
|
"August", |
||||
|
"September", |
||||
|
"Oktober", |
||||
|
"November", |
||||
|
"Desember" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"Jan", |
||||
|
"Feb", |
||||
|
"Mar", |
||||
|
"Apr", |
||||
|
"Mai", |
||||
|
"Jun", |
||||
|
"Jul", |
||||
|
"Aug", |
||||
|
"Sep", |
||||
|
"Okt", |
||||
|
"Nov", |
||||
|
"Des" |
||||
|
], |
||||
|
"days": [ |
||||
|
"Søndag", |
||||
|
"Mandag", |
||||
|
"Tirsdag", |
||||
|
"Onsdag", |
||||
|
"Torsdag", |
||||
|
"Fredag", |
||||
|
"Lørdag" |
||||
|
], |
||||
|
"shortDays": ["Sø", "Ma", "Ti", "On", "To", "Fr", "Lø"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "Last ned SVG", |
||||
|
"exportToPNG": "Last ned PNG", |
||||
|
"exportToCSV": "Last ned CSV", |
||||
|
"menu": "Menu", |
||||
|
"selection": "Velg", |
||||
|
"selectionZoom": "Zoom: Velg", |
||||
|
"zoomIn": "Zoome inn", |
||||
|
"zoomOut": "Zoome ut", |
||||
|
"pan": "Skyving", |
||||
|
"reset": "Start på nytt" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "nl", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"Januari", |
||||
|
"Februari", |
||||
|
"Maart", |
||||
|
"April", |
||||
|
"Mei", |
||||
|
"Juni", |
||||
|
"Juli", |
||||
|
"Augustus", |
||||
|
"September", |
||||
|
"Oktober", |
||||
|
"November", |
||||
|
"December" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"Jan", |
||||
|
"Feb", |
||||
|
"Mrt", |
||||
|
"Apr", |
||||
|
"Mei", |
||||
|
"Jun", |
||||
|
"Jul", |
||||
|
"Aug", |
||||
|
"Sep", |
||||
|
"Okt", |
||||
|
"Nov", |
||||
|
"Dec" |
||||
|
], |
||||
|
"days": [ |
||||
|
"Zondag", |
||||
|
"Maandag", |
||||
|
"Dinsdag", |
||||
|
"Woensdag", |
||||
|
"Donderdag", |
||||
|
"Vrijdag", |
||||
|
"Zaterdag" |
||||
|
], |
||||
|
"shortDays": ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "Download SVG", |
||||
|
"exportToPNG": "Download PNG", |
||||
|
"exportToCSV": "Download CSV", |
||||
|
"menu": "Menu", |
||||
|
"selection": "Selectie", |
||||
|
"selectionZoom": "Zoom selectie", |
||||
|
"zoomIn": "Zoom in", |
||||
|
"zoomOut": "Zoom out", |
||||
|
"pan": "Verplaatsen", |
||||
|
"reset": "Standaardwaarden" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "pl", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"Styczeń", |
||||
|
"Luty", |
||||
|
"Marzec", |
||||
|
"Kwiecień", |
||||
|
"Maj", |
||||
|
"Czerwiec", |
||||
|
"Lipiec", |
||||
|
"Sierpień", |
||||
|
"Wrzesień", |
||||
|
"Październik", |
||||
|
"Listopad", |
||||
|
"Grudzień" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"Sty", |
||||
|
"Lut", |
||||
|
"Mar", |
||||
|
"Kwi", |
||||
|
"Maj", |
||||
|
"Cze", |
||||
|
"Lip", |
||||
|
"Sie", |
||||
|
"Wrz", |
||||
|
"Paź", |
||||
|
"Lis", |
||||
|
"Gru" |
||||
|
], |
||||
|
"days": [ |
||||
|
"Niedziela", |
||||
|
"Poniedziałek", |
||||
|
"Wtorek", |
||||
|
"Środa", |
||||
|
"Czwartek", |
||||
|
"Piątek", |
||||
|
"Sobota" |
||||
|
], |
||||
|
"shortDays": ["Nd", "Pn", "Wt", "Śr", "Cz", "Pt", "Sb"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "Pobierz SVG", |
||||
|
"exportToPNG": "Pobierz PNG", |
||||
|
"exportToCSV": "Pobierz CSV", |
||||
|
"menu": "Menu", |
||||
|
"selection": "Wybieranie", |
||||
|
"selectionZoom": "Zoom: Wybieranie", |
||||
|
"zoomIn": "Zoom: Przybliż", |
||||
|
"zoomOut": "Zoom: Oddal", |
||||
|
"pan": "Przesuwanie", |
||||
|
"reset": "Resetuj" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "pt-br", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"Janeiro", |
||||
|
"Fevereiro", |
||||
|
"Março", |
||||
|
"Abril", |
||||
|
"Maio", |
||||
|
"Junho", |
||||
|
"Julho", |
||||
|
"Agosto", |
||||
|
"Setembro", |
||||
|
"Outubro", |
||||
|
"Novembro", |
||||
|
"Dezembro" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"Jan", |
||||
|
"Fev", |
||||
|
"Mar", |
||||
|
"Abr", |
||||
|
"Mai", |
||||
|
"Jun", |
||||
|
"Jul", |
||||
|
"Ago", |
||||
|
"Set", |
||||
|
"Out", |
||||
|
"Nov", |
||||
|
"Dez" |
||||
|
], |
||||
|
"days": [ |
||||
|
"Domingo", |
||||
|
"Segunda", |
||||
|
"Terça", |
||||
|
"Quarta", |
||||
|
"Quinta", |
||||
|
"Sexta", |
||||
|
"Sábado" |
||||
|
], |
||||
|
"shortDays": ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "Baixar SVG", |
||||
|
"exportToPNG": "Baixar PNG", |
||||
|
"exportToCSV": "Baixar CSV", |
||||
|
"menu": "Menu", |
||||
|
"selection": "Selecionar", |
||||
|
"selectionZoom": "Selecionar Zoom", |
||||
|
"zoomIn": "Aumentar", |
||||
|
"zoomOut": "Diminuir", |
||||
|
"pan": "Navegação", |
||||
|
"reset": "Reiniciar Zoom" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "pt", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"Janeiro", |
||||
|
"Fevereiro", |
||||
|
"Março", |
||||
|
"Abril", |
||||
|
"Maio", |
||||
|
"Junho", |
||||
|
"Julho", |
||||
|
"Agosto", |
||||
|
"Setembro", |
||||
|
"Outubro", |
||||
|
"Novembro", |
||||
|
"Dezembro" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"Jan", |
||||
|
"Fev", |
||||
|
"Mar", |
||||
|
"Abr", |
||||
|
"Mai", |
||||
|
"Jun", |
||||
|
"Jul", |
||||
|
"Ag", |
||||
|
"Set", |
||||
|
"Out", |
||||
|
"Nov", |
||||
|
"Dez" |
||||
|
], |
||||
|
"days": [ |
||||
|
"Domingo", |
||||
|
"Segunda-feira", |
||||
|
"Terça-feira", |
||||
|
"Quarta-feira", |
||||
|
"Quinta-feira", |
||||
|
"Sexta-feira", |
||||
|
"Sábado" |
||||
|
], |
||||
|
"shortDays": ["Do", "Se", "Te", "Qa", "Qi", "Sx", "Sa"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "Baixar SVG", |
||||
|
"exportToPNG": "Baixar PNG", |
||||
|
"exportToCSV": "Baixar CSV", |
||||
|
"menu": "Menu", |
||||
|
"selection": "Selecionar", |
||||
|
"selectionZoom": "Zoom: Selecionar", |
||||
|
"zoomIn": "Zoom: Aumentar", |
||||
|
"zoomOut": "Zoom: Diminuir", |
||||
|
"pan": "Deslocamento", |
||||
|
"reset": "Redefinir" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "ru", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"Январь", |
||||
|
"Февраль", |
||||
|
"Март", |
||||
|
"Апрель", |
||||
|
"Май", |
||||
|
"Июнь", |
||||
|
"Июль", |
||||
|
"Август", |
||||
|
"Сентябрь", |
||||
|
"Октябрь", |
||||
|
"Ноябрь", |
||||
|
"Декабрь" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"Янв", |
||||
|
"Фев", |
||||
|
"Мар", |
||||
|
"Апр", |
||||
|
"Май", |
||||
|
"Июн", |
||||
|
"Июл", |
||||
|
"Авг", |
||||
|
"Сен", |
||||
|
"Окт", |
||||
|
"Ноя", |
||||
|
"Дек" |
||||
|
], |
||||
|
"days": [ |
||||
|
"Воскресенье", |
||||
|
"Понедельник", |
||||
|
"Вторник", |
||||
|
"Среда", |
||||
|
"Четверг", |
||||
|
"Пятница", |
||||
|
"Суббота" |
||||
|
], |
||||
|
"shortDays": ["Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "Сохранить SVG", |
||||
|
"exportToPNG": "Сохранить PNG", |
||||
|
"exportToCSV": "Сохранить CSV", |
||||
|
"menu": "Меню", |
||||
|
"selection": "Выбор", |
||||
|
"selectionZoom": "Выбор с увеличением", |
||||
|
"zoomIn": "Увеличить", |
||||
|
"zoomOut": "Уменьшить", |
||||
|
"pan": "Перемещение", |
||||
|
"reset": "Сбросить увеличение" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "se", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"Januari", |
||||
|
"Februari", |
||||
|
"Mars", |
||||
|
"April", |
||||
|
"Maj", |
||||
|
"Juni", |
||||
|
"Juli", |
||||
|
"Augusti", |
||||
|
"September", |
||||
|
"Oktober", |
||||
|
"November", |
||||
|
"December" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"Jan", |
||||
|
"Feb", |
||||
|
"Mar", |
||||
|
"Apr", |
||||
|
"Maj", |
||||
|
"Juni", |
||||
|
"Juli", |
||||
|
"Aug", |
||||
|
"Sep", |
||||
|
"Okt", |
||||
|
"Nov", |
||||
|
"Dec" |
||||
|
], |
||||
|
"days": [ |
||||
|
"Söndag", |
||||
|
"Måndag", |
||||
|
"Tisdag", |
||||
|
"Onsdag", |
||||
|
"Torsdag", |
||||
|
"Fredag", |
||||
|
"Lördag" |
||||
|
], |
||||
|
"shortDays": ["Sön", "Mån", "Tis", "Ons", "Tor", "Fre", "Lör"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "Ladda SVG", |
||||
|
"exportToPNG": "Ladda PNG", |
||||
|
"exportToCSV": "Ladda CSV", |
||||
|
"menu": "Meny", |
||||
|
"selection": "Selektion", |
||||
|
"selectionZoom": "Val av zoom", |
||||
|
"zoomIn": "Zooma in", |
||||
|
"zoomOut": "Zooma ut", |
||||
|
"pan": "Panorering", |
||||
|
"reset": "Återställ zoomning" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "sk", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"Január", |
||||
|
"Február", |
||||
|
"Marec", |
||||
|
"Apríl", |
||||
|
"Máj", |
||||
|
"Jún", |
||||
|
"Júl", |
||||
|
"August", |
||||
|
"September", |
||||
|
"Október", |
||||
|
"November", |
||||
|
"December" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"Jan", |
||||
|
"Feb", |
||||
|
"Mar", |
||||
|
"Apr", |
||||
|
"Máj", |
||||
|
"Jún", |
||||
|
"Júl", |
||||
|
"Aug", |
||||
|
"Sep", |
||||
|
"Okt", |
||||
|
"Nov", |
||||
|
"Dec" |
||||
|
], |
||||
|
"days": [ |
||||
|
"Nedeľa", |
||||
|
"Pondelok", |
||||
|
"Utorok", |
||||
|
"Streda", |
||||
|
"Štvrtok", |
||||
|
"Piatok", |
||||
|
"Sobota" |
||||
|
], |
||||
|
"shortDays": ["Ne", "Po", "Ut", "St", "Št", "Pi", "So"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "Stiahnuť SVG", |
||||
|
"exportToPNG": "Stiahnuť PNG", |
||||
|
"exportToCSV": "Stiahnuť CSV", |
||||
|
"menu": "Menu", |
||||
|
"selection": "Vyberanie", |
||||
|
"selectionZoom": "Zoom: Vyberanie", |
||||
|
"zoomIn": "Zoom: Priblížiť", |
||||
|
"zoomOut": "Zoom: Vzdialiť", |
||||
|
"pan": "Presúvanie", |
||||
|
"reset": "Resetovať" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "sl", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"Januar", |
||||
|
"Februar", |
||||
|
"Marec", |
||||
|
"April", |
||||
|
"Maj", |
||||
|
"Junij", |
||||
|
"Julij", |
||||
|
"Avgust", |
||||
|
"Septemer", |
||||
|
"Oktober", |
||||
|
"November", |
||||
|
"December" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"Jan", |
||||
|
"Feb", |
||||
|
"Mar", |
||||
|
"Apr", |
||||
|
"Maj", |
||||
|
"Jun", |
||||
|
"Jul", |
||||
|
"Avg", |
||||
|
"Sep", |
||||
|
"Okt", |
||||
|
"Nov", |
||||
|
"Dec" |
||||
|
], |
||||
|
"days": [ |
||||
|
"Nedelja", |
||||
|
"Ponedeljek", |
||||
|
"Torek", |
||||
|
"Sreda", |
||||
|
"Četrtek", |
||||
|
"Petek", |
||||
|
"Sobota" |
||||
|
], |
||||
|
"shortDays": ["Ne", "Po", "To", "Sr", "Če", "Pe", "So"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "Prenesi SVG", |
||||
|
"exportToPNG": "Prenesi PNG", |
||||
|
"exportToCSV": "Prenesi CSV", |
||||
|
"menu": "Menu", |
||||
|
"selection": "Izbiranje", |
||||
|
"selectionZoom": "Zoom: Izbira", |
||||
|
"zoomIn": "Zoom: Približaj", |
||||
|
"zoomOut": "Zoom: Oddalji", |
||||
|
"pan": "Pomikanje", |
||||
|
"reset": "Resetiraj" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "th", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"มกราคม", |
||||
|
"กุมภาพันธ์", |
||||
|
"มีนาคม", |
||||
|
"เมษายน", |
||||
|
"พฤษภาคม", |
||||
|
"มิถุนายน", |
||||
|
"กรกฎาคม", |
||||
|
"สิงหาคม", |
||||
|
"กันยายน", |
||||
|
"ตุลาคม", |
||||
|
"พฤศจิกายน", |
||||
|
"ธันวาคม" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"ม.ค.", |
||||
|
"ก.พ.", |
||||
|
"มี.ค.", |
||||
|
"เม.ย.", |
||||
|
"พ.ค.", |
||||
|
"มิ.ย.", |
||||
|
"ก.ค.", |
||||
|
"ส.ค.", |
||||
|
"ก.ย.", |
||||
|
"ต.ค.", |
||||
|
"พ.ย.", |
||||
|
"ธ.ค." |
||||
|
], |
||||
|
"days": [ |
||||
|
"อาทิตย์", |
||||
|
"จันทร์", |
||||
|
"อังคาร", |
||||
|
"พุธ", |
||||
|
"พฤหัสบดี", |
||||
|
"ศุกร์", |
||||
|
"เสาร์" |
||||
|
], |
||||
|
"shortDays": ["อา", "จ", "อ", "พ", "พฤ", "ศ", "ส"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "ดาวน์โหลด SVG", |
||||
|
"exportToPNG": "ดาวน์โหลด PNG", |
||||
|
"exportToCSV": "ดาวน์โหลด CSV", |
||||
|
"menu": "เมนู", |
||||
|
"selection": "เลือก", |
||||
|
"selectionZoom": "เลือกจุดที่จะซูม", |
||||
|
"zoomIn": "ซูมเข้า", |
||||
|
"zoomOut": "ซูมออก", |
||||
|
"pan": "ปรากฎว่า", |
||||
|
"reset": "รีเซ็ตการซูม" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "tr", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"Ocak", |
||||
|
"Şubat", |
||||
|
"Mart", |
||||
|
"Nisan", |
||||
|
"Mayıs", |
||||
|
"Haziran", |
||||
|
"Temmuz", |
||||
|
"Ağustos", |
||||
|
"Eylül", |
||||
|
"Ekim", |
||||
|
"Kasım", |
||||
|
"Aralık" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"Oca", |
||||
|
"Şub", |
||||
|
"Mar", |
||||
|
"Nis", |
||||
|
"May", |
||||
|
"Haz", |
||||
|
"Tem", |
||||
|
"Ağu", |
||||
|
"Eyl", |
||||
|
"Eki", |
||||
|
"Kas", |
||||
|
"Ara" |
||||
|
], |
||||
|
"days": [ |
||||
|
"Pazar", |
||||
|
"Pazartesi", |
||||
|
"Salı", |
||||
|
"Çarşamba", |
||||
|
"Perşembe", |
||||
|
"Cuma", |
||||
|
"Cumartesi" |
||||
|
], |
||||
|
"shortDays": ["Paz", "Pzt", "Sal", "Çar", "Per", "Cum", "Cmt"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "SVG İndir", |
||||
|
"exportToPNG": "PNG İndir", |
||||
|
"exportToCSV": "CSV İndir", |
||||
|
"menu": "Menü", |
||||
|
"selection": "Seçim", |
||||
|
"selectionZoom": "Seçim Yakınlaştır", |
||||
|
"zoomIn": "Yakınlaştır", |
||||
|
"zoomOut": "Uzaklaştır", |
||||
|
"pan": "Kaydır", |
||||
|
"reset": "Yakınlaştırmayı Sıfırla" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,55 @@ |
|||||
|
{ |
||||
|
"name": "ua", |
||||
|
"options": { |
||||
|
"months": [ |
||||
|
"Січень", |
||||
|
"Лютий", |
||||
|
"Березень", |
||||
|
"Квітень", |
||||
|
"Травень", |
||||
|
"Червень", |
||||
|
"Липень", |
||||
|
"Серпень", |
||||
|
"Вересень", |
||||
|
"Жовтень", |
||||
|
"Листопад", |
||||
|
"Грудень" |
||||
|
], |
||||
|
"shortMonths": [ |
||||
|
"Січ", |
||||
|
"Лют", |
||||
|
"Бер", |
||||
|
"Кві", |
||||
|
"Тра", |
||||
|
"Чер", |
||||
|
"Лип", |
||||
|
"Сер", |
||||
|
"Вер", |
||||
|
"Жов", |
||||
|
"Лис", |
||||
|
"Гру" |
||||
|
], |
||||
|
"days": [ |
||||
|
"Неділя", |
||||
|
"Понеділок", |
||||
|
"Вівторок", |
||||
|
"Середа", |
||||
|
"Четвер", |
||||
|
"П'ятниця", |
||||
|
"Субота" |
||||
|
], |
||||
|
"shortDays": ["Нд", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб"], |
||||
|
"toolbar": { |
||||
|
"exportToSVG": "Зберегти SVG", |
||||
|
"exportToPNG": "Зберегти PNG", |
||||
|
"exportToCSV": "Зберегти CSV", |
||||
|
"menu": "Меню", |
||||
|
"selection": "Вибір", |
||||
|
"selectionZoom": "Вибір із збільшенням", |
||||
|
"zoomIn": "Збільшити", |
||||
|
"zoomOut": "Зменшити", |
||||
|
"pan": "Переміщення", |
||||
|
"reset": "Скинути збільшення" |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,58 @@ |
|||||
|
/*@import url('https://fonts.googleapis.com/css?family=Lato:300,400,600,700');*/ |
||||
|
|
||||
|
* { |
||||
|
font-family: Arial; |
||||
|
} |
||||
|
|
||||
|
body { |
||||
|
height: 100vh; |
||||
|
background: #f9f9f9; |
||||
|
} |
||||
|
|
||||
|
#chart, .chart-box { |
||||
|
padding-top: 20px; |
||||
|
padding-left: 10px; |
||||
|
background: #fff; |
||||
|
border: 1px solid #ddd; |
||||
|
box-shadow: 0 22px 35px -16px rgba(0,0,0, 0.1); |
||||
|
} |
||||
|
|
||||
|
select.flat-select { |
||||
|
-moz-appearance: none; |
||||
|
-webkit-appearance: none; |
||||
|
appearance: none; |
||||
|
background: #008FFB url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\' width=\'60px\' height=\'60px\'><polyline fill=\'white\' points=\'46.139,15.518 25.166,36.49 4.193,15.519\'/></svg>") no-repeat scroll right 2px top 9px / 16px 16px; |
||||
|
border: 0 none; |
||||
|
border-radius: 3px; |
||||
|
color: #fff; |
||||
|
font-family: arial,tahoma; |
||||
|
font-size: 16px; |
||||
|
font-weight: bold; |
||||
|
outline: 0 none; |
||||
|
height: 33px; |
||||
|
padding: 5px 20px 5px 10px; |
||||
|
text-align: center; |
||||
|
text-indent: 0.01px; |
||||
|
text-overflow: ""; |
||||
|
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); |
||||
|
transition: all 0.3s ease 0s; |
||||
|
width: auto; |
||||
|
-webkit-transition: 0.3s ease all; |
||||
|
-moz-transition: 0.3s ease all; |
||||
|
-ms-transition: 0.3s ease all; |
||||
|
-o-transition: 0.3s ease all; |
||||
|
transition: 0.3s ease all; |
||||
|
} |
||||
|
select.flat-select:focus, select.flat-select:hover { |
||||
|
border: 0; |
||||
|
outline: 0; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.apexcharts-canvas { |
||||
|
margin: 0 auto; |
||||
|
} |
||||
|
|
||||
|
#html { |
||||
|
display: none; |
||||
|
} |
File diff suppressed because it is too large
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,331 @@ |
|||||
|
/*! |
||||
|
* Bootstrap Reboot v4.3.1 (https://getbootstrap.com/) |
||||
|
* Copyright 2011-2019 The Bootstrap Authors |
||||
|
* Copyright 2011-2019 Twitter, Inc. |
||||
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
||||
|
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) |
||||
|
*/ |
||||
|
*, |
||||
|
*::before, |
||||
|
*::after { |
||||
|
box-sizing: border-box; |
||||
|
} |
||||
|
|
||||
|
html { |
||||
|
font-family: sans-serif; |
||||
|
line-height: 1.15; |
||||
|
-webkit-text-size-adjust: 100%; |
||||
|
-webkit-tap-highlight-color: rgba(0, 0, 0, 0); |
||||
|
} |
||||
|
|
||||
|
article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { |
||||
|
display: block; |
||||
|
} |
||||
|
|
||||
|
body { |
||||
|
margin: 0; |
||||
|
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; |
||||
|
font-size: 1rem; |
||||
|
font-weight: 400; |
||||
|
line-height: 1.5; |
||||
|
color: #212529; |
||||
|
text-align: left; |
||||
|
background-color: #fff; |
||||
|
} |
||||
|
|
||||
|
[tabindex="-1"]:focus { |
||||
|
outline: 0 !important; |
||||
|
} |
||||
|
|
||||
|
hr { |
||||
|
box-sizing: content-box; |
||||
|
height: 0; |
||||
|
overflow: visible; |
||||
|
} |
||||
|
|
||||
|
h1, h2, h3, h4, h5, h6 { |
||||
|
margin-top: 0; |
||||
|
margin-bottom: 0.5rem; |
||||
|
} |
||||
|
|
||||
|
p { |
||||
|
margin-top: 0; |
||||
|
margin-bottom: 1rem; |
||||
|
} |
||||
|
|
||||
|
abbr[title], |
||||
|
abbr[data-original-title] { |
||||
|
text-decoration: underline; |
||||
|
-webkit-text-decoration: underline dotted; |
||||
|
text-decoration: underline dotted; |
||||
|
cursor: help; |
||||
|
border-bottom: 0; |
||||
|
-webkit-text-decoration-skip-ink: none; |
||||
|
text-decoration-skip-ink: none; |
||||
|
} |
||||
|
|
||||
|
address { |
||||
|
margin-bottom: 1rem; |
||||
|
font-style: normal; |
||||
|
line-height: inherit; |
||||
|
} |
||||
|
|
||||
|
ol, |
||||
|
ul, |
||||
|
dl { |
||||
|
margin-top: 0; |
||||
|
margin-bottom: 1rem; |
||||
|
} |
||||
|
|
||||
|
ol ol, |
||||
|
ul ul, |
||||
|
ol ul, |
||||
|
ul ol { |
||||
|
margin-bottom: 0; |
||||
|
} |
||||
|
|
||||
|
dt { |
||||
|
font-weight: 700; |
||||
|
} |
||||
|
|
||||
|
dd { |
||||
|
margin-bottom: .5rem; |
||||
|
margin-left: 0; |
||||
|
} |
||||
|
|
||||
|
blockquote { |
||||
|
margin: 0 0 1rem; |
||||
|
} |
||||
|
|
||||
|
b, |
||||
|
strong { |
||||
|
font-weight: bolder; |
||||
|
} |
||||
|
|
||||
|
small { |
||||
|
font-size: 80%; |
||||
|
} |
||||
|
|
||||
|
sub, |
||||
|
sup { |
||||
|
position: relative; |
||||
|
font-size: 75%; |
||||
|
line-height: 0; |
||||
|
vertical-align: baseline; |
||||
|
} |
||||
|
|
||||
|
sub { |
||||
|
bottom: -.25em; |
||||
|
} |
||||
|
|
||||
|
sup { |
||||
|
top: -.5em; |
||||
|
} |
||||
|
|
||||
|
a { |
||||
|
color: #007bff; |
||||
|
text-decoration: none; |
||||
|
background-color: transparent; |
||||
|
} |
||||
|
|
||||
|
a:hover { |
||||
|
color: #0056b3; |
||||
|
text-decoration: underline; |
||||
|
} |
||||
|
|
||||
|
a:not([href]):not([tabindex]) { |
||||
|
color: inherit; |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
|
||||
|
a:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus { |
||||
|
color: inherit; |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
|
||||
|
a:not([href]):not([tabindex]):focus { |
||||
|
outline: 0; |
||||
|
} |
||||
|
|
||||
|
pre, |
||||
|
code, |
||||
|
kbd, |
||||
|
samp { |
||||
|
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; |
||||
|
font-size: 1em; |
||||
|
} |
||||
|
|
||||
|
pre { |
||||
|
margin-top: 0; |
||||
|
margin-bottom: 1rem; |
||||
|
overflow: auto; |
||||
|
} |
||||
|
|
||||
|
figure { |
||||
|
margin: 0 0 1rem; |
||||
|
} |
||||
|
|
||||
|
img { |
||||
|
vertical-align: middle; |
||||
|
border-style: none; |
||||
|
} |
||||
|
|
||||
|
svg { |
||||
|
overflow: hidden; |
||||
|
vertical-align: middle; |
||||
|
} |
||||
|
|
||||
|
table { |
||||
|
border-collapse: collapse; |
||||
|
} |
||||
|
|
||||
|
caption { |
||||
|
padding-top: 0.75rem; |
||||
|
padding-bottom: 0.75rem; |
||||
|
color: #6c757d; |
||||
|
text-align: left; |
||||
|
caption-side: bottom; |
||||
|
} |
||||
|
|
||||
|
th { |
||||
|
text-align: inherit; |
||||
|
} |
||||
|
|
||||
|
label { |
||||
|
display: inline-block; |
||||
|
margin-bottom: 0.5rem; |
||||
|
} |
||||
|
|
||||
|
button { |
||||
|
border-radius: 0; |
||||
|
} |
||||
|
|
||||
|
button:focus { |
||||
|
outline: 1px dotted; |
||||
|
outline: 5px auto -webkit-focus-ring-color; |
||||
|
} |
||||
|
|
||||
|
input, |
||||
|
button, |
||||
|
select, |
||||
|
optgroup, |
||||
|
textarea { |
||||
|
margin: 0; |
||||
|
font-family: inherit; |
||||
|
font-size: inherit; |
||||
|
line-height: inherit; |
||||
|
} |
||||
|
|
||||
|
button, |
||||
|
input { |
||||
|
overflow: visible; |
||||
|
} |
||||
|
|
||||
|
button, |
||||
|
select { |
||||
|
text-transform: none; |
||||
|
} |
||||
|
|
||||
|
select { |
||||
|
word-wrap: normal; |
||||
|
} |
||||
|
|
||||
|
button, |
||||
|
[type="button"], |
||||
|
[type="reset"], |
||||
|
[type="submit"] { |
||||
|
-webkit-appearance: button; |
||||
|
} |
||||
|
|
||||
|
button:not(:disabled), |
||||
|
[type="button"]:not(:disabled), |
||||
|
[type="reset"]:not(:disabled), |
||||
|
[type="submit"]:not(:disabled) { |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
button::-moz-focus-inner, |
||||
|
[type="button"]::-moz-focus-inner, |
||||
|
[type="reset"]::-moz-focus-inner, |
||||
|
[type="submit"]::-moz-focus-inner { |
||||
|
padding: 0; |
||||
|
border-style: none; |
||||
|
} |
||||
|
|
||||
|
input[type="radio"], |
||||
|
input[type="checkbox"] { |
||||
|
box-sizing: border-box; |
||||
|
padding: 0; |
||||
|
} |
||||
|
|
||||
|
input[type="date"], |
||||
|
input[type="time"], |
||||
|
input[type="datetime-local"], |
||||
|
input[type="month"] { |
||||
|
-webkit-appearance: listbox; |
||||
|
} |
||||
|
|
||||
|
textarea { |
||||
|
overflow: auto; |
||||
|
resize: vertical; |
||||
|
} |
||||
|
|
||||
|
fieldset { |
||||
|
min-width: 0; |
||||
|
padding: 0; |
||||
|
margin: 0; |
||||
|
border: 0; |
||||
|
} |
||||
|
|
||||
|
legend { |
||||
|
display: block; |
||||
|
width: 100%; |
||||
|
max-width: 100%; |
||||
|
padding: 0; |
||||
|
margin-bottom: .5rem; |
||||
|
font-size: 1.5rem; |
||||
|
line-height: inherit; |
||||
|
color: inherit; |
||||
|
white-space: normal; |
||||
|
} |
||||
|
|
||||
|
progress { |
||||
|
vertical-align: baseline; |
||||
|
} |
||||
|
|
||||
|
[type="number"]::-webkit-inner-spin-button, |
||||
|
[type="number"]::-webkit-outer-spin-button { |
||||
|
height: auto; |
||||
|
} |
||||
|
|
||||
|
[type="search"] { |
||||
|
outline-offset: -2px; |
||||
|
-webkit-appearance: none; |
||||
|
} |
||||
|
|
||||
|
[type="search"]::-webkit-search-decoration { |
||||
|
-webkit-appearance: none; |
||||
|
} |
||||
|
|
||||
|
::-webkit-file-upload-button { |
||||
|
font: inherit; |
||||
|
-webkit-appearance: button; |
||||
|
} |
||||
|
|
||||
|
output { |
||||
|
display: inline-block; |
||||
|
} |
||||
|
|
||||
|
summary { |
||||
|
display: list-item; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
|
||||
|
template { |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
[hidden] { |
||||
|
display: none !important; |
||||
|
} |
||||
|
/*# sourceMappingURL=bootstrap-reboot.css.map */ |
File diff suppressed because one or more lines are too long
@ -0,0 +1,8 @@ |
|||||
|
/*! |
||||
|
* Bootstrap Reboot v4.3.1 (https://getbootstrap.com/) |
||||
|
* Copyright 2011-2019 The Bootstrap Authors |
||||
|
* Copyright 2011-2019 Twitter, Inc. |
||||
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
||||
|
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) |
||||
|
*/*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important} |
||||
|
/*# sourceMappingURL=bootstrap-reboot.min.css.map */ |
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,114 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="en"> |
||||
|
|
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> |
||||
|
<title>Covid 19</title> |
||||
|
|
||||
|
<link rel="stylesheet" href="bootstrap-4.3.1/css/bootstrap.min.css"> |
||||
|
<link rel="stylesheet" href="css/appstyle.css"> |
||||
|
<link href="select2-4.0.13/dist/css/select2.min.css" rel="stylesheet" /> |
||||
|
<link href="lightpick/css/lightpick.css" rel="stylesheet" /> |
||||
|
|
||||
|
<script src="apexcharts/dist/apexcharts.min.js"></script> |
||||
|
<script src="js/classes.js"></script> |
||||
|
<script src="js/functions.js"></script> |
||||
|
<script src="js/webcall.js"></script> |
||||
|
|
||||
|
</head> |
||||
|
|
||||
|
<body> |
||||
|
<?php //include "./menu.html"
|
||||
|
?> |
||||
|
<div class="top-bar"> |
||||
|
<!--MENU START--> |
||||
|
<nav class="navbar navbar-expand-lg navbar-dark bg-dark"> |
||||
|
<a class="navbar-brand" href="index.php">Covid-19</a> |
||||
|
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> |
||||
|
<span class="navbar-toggler-icon"></span> |
||||
|
</button> |
||||
|
|
||||
|
<div class="collapse navbar-collapse" id="navbarSupportedContent"> |
||||
|
<ul class="navbar-nav mr-auto"> |
||||
|
<li class="nav-item"> |
||||
|
<a class="nav-link" href="index.php">All Continent<span class="sr-only">(current)</span></a> |
||||
|
</li> |
||||
|
<li class="nav-item"> |
||||
|
<a class="nav-link" href="country.php">By Continent</a> |
||||
|
</li> |
||||
|
<li class="nav-item"> |
||||
|
<a class="nav-link" href="countryInDates.php">Country in dates</a> |
||||
|
</li> |
||||
|
<li class="nav-item active"> |
||||
|
<a class="nav-link" href="continentsInDates.php">Continent in dates</a> |
||||
|
</li> |
||||
|
</ul> |
||||
|
</div> |
||||
|
</nav> |
||||
|
</div> |
||||
|
<!--MENU END--> |
||||
|
|
||||
|
|
||||
|
<div class="container header"> |
||||
|
<div class="row"> |
||||
|
<div class="col-12 text-center"> |
||||
|
<span class="title header-title">Covid-19 Cases by Continent</span> |
||||
|
</div> |
||||
|
<div class="col-12 text-right"> |
||||
|
<span class="meta"> |
||||
|
<span class="meta-label">Last updated:</span> |
||||
|
<span id="lastDate" class="meta-value"></span> |
||||
|
</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="row pt-4 pb-4"> |
||||
|
<div class="col-md-4 offset-md-2 col-xs-12"> |
||||
|
<div class="continent-selection-wr"><select id="continentSelector" class="form-control" data-shadow="true" data-mini="true" onchange=" WebCall.renderCasesByContinentAndDate('#chart', this.value, Window.picker.toString('DD/MM/YYYY'));"></select></div> |
||||
|
</div> |
||||
|
<div class=" col-md-4 col-xs-2"> |
||||
|
<input type="text" id="datesField" placeholder="Select Dates"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
<div class="container-fluid center-content"> |
||||
|
<div class="row"> |
||||
|
<div class="col-md-12 col-xs-12"> |
||||
|
<div class="chart-title">Cases</div> |
||||
|
<div id="chart"></div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<script src="jquery/jquery-3.5.1.min.js"></script> |
||||
|
<!-- <script src="propper/propper.min.js"></script> --> |
||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script> |
||||
|
<script src="bootstrap-4.3.1/js/bootstrap.min.js"></script> |
||||
|
<script src="select2-4.0.13/dist/js/select2.min.js"></script> |
||||
|
<script src="lightpick/moment.js"></script> |
||||
|
<script src="lightpick/lightpick.js"></script> |
||||
|
|
||||
|
<script> |
||||
|
$(function() { |
||||
|
WebCall.renderLastDate('#lastDate'); |
||||
|
WebCall.initalizeContinentsSelector('#continentSelector'); |
||||
|
Window.picker = initDatePicker('datesField', function(dateString) { |
||||
|
WebCall.renderCasesByContinentAndDate('#chart', $('#continentSelector').val(), Window.picker.toString('DD/MM/YYYY')) |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
<footer class="fixed-bottom bg-dark"> |
||||
|
<div class="footer-content"> |
||||
|
<div class="content"> |
||||
|
<div class="text"> |
||||
|
POWERED BY Tsamantiotis Iraklis - Binas Georgios |
||||
|
© 2020 |
||||
|
All Rights Reserved. |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</footer> |
||||
|
</body> |
||||
|
|
||||
|
</html> |
@ -0,0 +1,115 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="en"> |
||||
|
|
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> |
||||
|
<title>Covid 19</title> |
||||
|
|
||||
|
<!-- <link href="apexcharts/style/styles.css" rel="stylesheet" /> --> |
||||
|
|
||||
|
<style> |
||||
|
#chart { |
||||
|
max-width: 650px; |
||||
|
/* margin: 35px auto; */ |
||||
|
} |
||||
|
</style> |
||||
|
|
||||
|
<link rel="stylesheet" href="bootstrap-4.3.1/css/bootstrap.min.css"> |
||||
|
<link rel="stylesheet" href="css/appstyle.css"> |
||||
|
|
||||
|
<script src="apexcharts/dist/apexcharts.min.js"></script> |
||||
|
<script src="js/classes.js"></script> |
||||
|
<script src="js/functions.js"></script> |
||||
|
<script src="js/webcall.js"></script> |
||||
|
</head> |
||||
|
|
||||
|
<body> |
||||
|
<?php //include "./menu.html"
|
||||
|
?> |
||||
|
<div class="top-bar"> |
||||
|
<!--MENU START--> |
||||
|
<nav class="navbar navbar-expand-lg navbar-dark bg-dark"> |
||||
|
<a class="navbar-brand" href="index.php">Covid-19</a> |
||||
|
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> |
||||
|
<span class="navbar-toggler-icon"></span> |
||||
|
</button> |
||||
|
|
||||
|
<div class="collapse navbar-collapse" id="navbarSupportedContent"> |
||||
|
<ul class="navbar-nav mr-auto"> |
||||
|
<li class="nav-item"> |
||||
|
<a class="nav-link" href="index.php">All Continent<span class="sr-only">(current)</span></a> |
||||
|
</li> |
||||
|
<li class="nav-item active"> |
||||
|
<a class="nav-link" href="country.php">By Continent</a> |
||||
|
</li> |
||||
|
<li class="nav-item"> |
||||
|
<a class="nav-link" href="countryInDates.php">Country in dates</a> |
||||
|
</li> |
||||
|
<li class="nav-item"> |
||||
|
<a class="nav-link" href="continentsInDates.php">Continent in dates</a> |
||||
|
</li> |
||||
|
</ul> |
||||
|
</div> |
||||
|
</nav> |
||||
|
</div> |
||||
|
<!--MENU END--> |
||||
|
|
||||
|
|
||||
|
<div class="container header"> |
||||
|
<div class="row"> |
||||
|
<div class="col-12 text-center"> |
||||
|
<span class="title header-title">Covid-19 Cases by Continent</span> |
||||
|
</div> |
||||
|
<div class="col-12 text-right"> |
||||
|
<span class="meta"> |
||||
|
<span class="meta-label">Last updated:</span> |
||||
|
<span id="lastDate" class="meta-value"></span> |
||||
|
</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="row pt-4 pb-4"> |
||||
|
<div class="col-md-4 offset-md-4 col-xs-12"> |
||||
|
<select id="continentSelector" class="form-control" data-shadow="true" data-mini="true" onchange="WebCall.renderAllCountryCasesDeathsByContinent('#chartCases', '#chartDeaths', this.value, event);showIfNotEqualsHideElse(this.value, 'none','.chart-title')"></select> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
<div class="container-fluid center-content"> |
||||
|
<div class="row"> |
||||
|
<div class="col-md-6 col-xs-12"> |
||||
|
<div class="chart-title">Cases</div> |
||||
|
<div id="chartCases"></div> |
||||
|
</div> |
||||
|
<div class="col-md-6 col-xs-12"> |
||||
|
<div class="chart-title">Deaths</div> |
||||
|
<div id="chartDeaths"></div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<script src="jquery/jquery-3.5.1.min.js"></script> |
||||
|
<!-- <script src="propper/propper.min.js"></script> --> |
||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script> |
||||
|
<script src="bootstrap-4.3.1/js/bootstrap.min.js"></script> |
||||
|
|
||||
|
<script> |
||||
|
$(function() { |
||||
|
WebCall.initalizeContinentsSelector('#continentSelector'); |
||||
|
WebCall.renderLastDate('#lastDate'); |
||||
|
}); |
||||
|
</script> |
||||
|
<footer class="fixed-bottom bg-dark"> |
||||
|
<div class="footer-content"> |
||||
|
<div class="content"> |
||||
|
<div class="text"> |
||||
|
POWERED BY Tsamantiotis Iraklis - Binas Georgios |
||||
|
© 2020 |
||||
|
All Rights Reserved. |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</footer> |
||||
|
</body> |
||||
|
|
||||
|
</html> |
@ -0,0 +1,120 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="en"> |
||||
|
|
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> |
||||
|
<title>Covid 19</title> |
||||
|
|
||||
|
<!-- <link href="apexcharts/style/styles.css" rel="stylesheet" /> --> |
||||
|
<link rel="stylesheet" href="bootstrap-4.3.1/css/bootstrap.min.css"> |
||||
|
<link rel="stylesheet" href="css/appstyle.css"> |
||||
|
<link href="select2-4.0.13/dist/css/select2.min.css" rel="stylesheet" /> |
||||
|
<link href="lightpick/css/lightpick.css" rel="stylesheet" /> |
||||
|
|
||||
|
<script src="apexcharts/dist/apexcharts.min.js"></script> |
||||
|
<script src="js/classes.js"></script> |
||||
|
<script src="js/functions.js"></script> |
||||
|
<script src="js/webcall.js"></script> |
||||
|
|
||||
|
</head> |
||||
|
|
||||
|
<body> |
||||
|
<?php //include "./menu.html"
|
||||
|
?> |
||||
|
<div class="top-bar"> |
||||
|
<!--MENU START--> |
||||
|
<nav class="navbar navbar-expand-lg navbar-dark bg-dark"> |
||||
|
<a class="navbar-brand" href="index.php">Covid-19</a> |
||||
|
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> |
||||
|
<span class="navbar-toggler-icon"></span> |
||||
|
</button> |
||||
|
|
||||
|
<div class="collapse navbar-collapse" id="navbarSupportedContent"> |
||||
|
<ul class="navbar-nav mr-auto"> |
||||
|
<li class="nav-item"> |
||||
|
<a class="nav-link" href="index.php">All Continent<span class="sr-only">(current)</span></a> |
||||
|
</li> |
||||
|
<li class="nav-item"> |
||||
|
<a class="nav-link" href="country.php">By Continent</a> |
||||
|
</li> |
||||
|
<li class="nav-item active"> |
||||
|
<a class="nav-link" href="countryInDates.php">Country in dates</a> |
||||
|
</li> |
||||
|
<li class="nav-item"> |
||||
|
<a class="nav-link" href="continentsInDates.php">Continent in dates</a> |
||||
|
</li> |
||||
|
</ul> |
||||
|
</div> |
||||
|
</nav> |
||||
|
</div> |
||||
|
<!--MENU END--> |
||||
|
|
||||
|
|
||||
|
<div class="container header"> |
||||
|
<div class="row"> |
||||
|
<div class="col-12 text-center header-title"> |
||||
|
<span class="title">Covid-19 Cases by Country</span> |
||||
|
</div> |
||||
|
<div class="col-12 text-right"> |
||||
|
<span class="meta"> |
||||
|
<span class="meta-label">Last updated:</span> |
||||
|
<span id="lastDate" class="meta-value"></span> |
||||
|
</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="row pt-4 pb-4"> |
||||
|
<div class="col-md-4 offset-md-2 col-xs-12"> |
||||
|
<!-- <select id="countrySelector" class="form-control" data-shadow="true" data-mini="true" onchange="WebCall.renderAllCountryCasesDeathsByContinent('#chartCases', '#chartDeaths', this.value, event);showIfNotEqualsHideElse(this.value, 'none','.chart-title')"></select> --> |
||||
|
<div class="country-selection-wr"><select id="countrySelector" class="form-control" data-shadow="true" data-mini="true"></select></div> |
||||
|
</div> |
||||
|
<div class="col-md-4 col-xs-2"> |
||||
|
<input type="text" id="datesField" placeholder="Select Dates"> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
<div class="container-fluid center-content"> |
||||
|
<div class="row"> |
||||
|
<div class="col-md-12 col-xs-12"> |
||||
|
<div class="chart-title">Cases</div> |
||||
|
<div id="chart"></div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<script src="jquery/jquery-3.5.1.min.js"></script> |
||||
|
<!-- <script src="propper/propper.min.js"></script> --> |
||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script> |
||||
|
<script src="bootstrap-4.3.1/js/bootstrap.min.js"></script> |
||||
|
<script src="select2-4.0.13/dist/js/select2.min.js"></script> |
||||
|
<script src="lightpick/moment.js"></script> |
||||
|
<script src="lightpick/lightpick.js"></script> |
||||
|
|
||||
|
<script> |
||||
|
$(function() { |
||||
|
Window.selector = WebCall.initalizeCountriesSelector('#countrySelector'); |
||||
|
Window.selector.on('select2:select', function(e) { |
||||
|
var data = e.params.data; |
||||
|
WebCall.renderCasesByCountryAndDate('#chart', data.id, Window.picker.toString('DD/MM/YYYY')) |
||||
|
}); |
||||
|
Window.picker = initDatePicker('datesField', function(dateString) { |
||||
|
WebCall.renderCasesByCountryAndDate('#chart', Window.selector.select2('data')[0].id, Window.picker.toString('DD/MM/YYYY')) |
||||
|
}); |
||||
|
WebCall.renderLastDate('#lastDate'); |
||||
|
}); |
||||
|
</script> |
||||
|
<footer class="fixed-bottom bg-dark"> |
||||
|
<div class="footer-content"> |
||||
|
<div class="content"> |
||||
|
<div class="text"> |
||||
|
POWERED BY Tsamantiotis Iraklis - Binas Georgios |
||||
|
© 2020 |
||||
|
All Rights Reserved. |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</footer> |
||||
|
</body> |
||||
|
|
||||
|
</html> |
@ -0,0 +1,73 @@ |
|||||
|
:root{ |
||||
|
--title-color: #585858; |
||||
|
--meta-label-color: #585858; |
||||
|
--meta-value-color: #656565; |
||||
|
} |
||||
|
/* .top-bar{ |
||||
|
} */ |
||||
|
.header .title{ |
||||
|
font-size: 3rem; |
||||
|
font-weight: bold; |
||||
|
color: var(--title-color); |
||||
|
} |
||||
|
.header .meta{ |
||||
|
|
||||
|
} |
||||
|
.header .meta-label{ |
||||
|
font-size: 0.9rem; |
||||
|
color: var(--meta-label-color); |
||||
|
} |
||||
|
.header .meta-value{ |
||||
|
font-size: 1rem; |
||||
|
color: var(--meta-value-color); |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
.chart-title{ |
||||
|
text-align: center; |
||||
|
font-size: 1.5rem; |
||||
|
letter-spacing: 3px; |
||||
|
color: #383737; |
||||
|
display: none; |
||||
|
} |
||||
|
#datesField{ |
||||
|
width: 204px; |
||||
|
align-items: center; |
||||
|
text-align: center; |
||||
|
padding-top: 5px; |
||||
|
padding-bottom: 5px; |
||||
|
} |
||||
|
.country-selection-wr{ |
||||
|
padding-top: 6px; |
||||
|
} |
||||
|
.footer-content{ |
||||
|
color: #ffffff; |
||||
|
height: 45px; |
||||
|
} |
||||
|
.footer-content .content{ |
||||
|
height: 100%; |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
justify-items: center; |
||||
|
align-items: center; |
||||
|
} |
||||
|
.center-content{ |
||||
|
padding-bottom: 45px; |
||||
|
} |
||||
|
|
||||
|
@media screen and (max-width: 800px){ |
||||
|
footer .text{ |
||||
|
font-size: 10px; |
||||
|
} |
||||
|
.header .title { |
||||
|
font-size: 2rem; |
||||
|
} |
||||
|
} |
||||
|
.item-1 .meta-label, .item-2 .meta-label{ |
||||
|
min-width: 155px; |
||||
|
} |
||||
|
.meta-label, .meta-value{ |
||||
|
display: inline-block; |
||||
|
} |
||||
|
.header-title{ |
||||
|
padding-bottom: 25px; |
||||
|
} |
@ -0,0 +1,112 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html lang="en"> |
||||
|
|
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> |
||||
|
<title>Covid 19</title> |
||||
|
|
||||
|
<!-- <link href="apexcharts/style/styles.css" rel="stylesheet" /> --> |
||||
|
|
||||
|
<style> |
||||
|
#chart { |
||||
|
max-width: 650px; |
||||
|
margin: 35px auto; |
||||
|
} |
||||
|
</style> |
||||
|
|
||||
|
<link rel="stylesheet" href="bootstrap-4.3.1/css/bootstrap.min.css"> |
||||
|
<link rel="stylesheet" href="css/appstyle.css"> |
||||
|
|
||||
|
<script src="apexcharts/dist/apexcharts.min.js"></script> |
||||
|
<script src="js/classes.js"></script> |
||||
|
<script src="js/functions.js"></script> |
||||
|
<script src="js/webcall.js"></script> |
||||
|
</head> |
||||
|
|
||||
|
<body> |
||||
|
<div class="top-bar"> |
||||
|
<!--MENU START--> |
||||
|
<nav class="navbar navbar-expand-lg navbar-dark bg-dark"> |
||||
|
<a class="navbar-brand" href="index.php">Covid-19</a> |
||||
|
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> |
||||
|
<span class="navbar-toggler-icon"></span> |
||||
|
</button> |
||||
|
|
||||
|
<div class="collapse navbar-collapse" id="navbarSupportedContent"> |
||||
|
<ul class="navbar-nav mr-auto"> |
||||
|
<li class="nav-item active"> |
||||
|
<a class="nav-link" href="index.php">All Continent <span class="sr-only">(current)</span></a> |
||||
|
</li> |
||||
|
<li class="nav-item"> |
||||
|
<a class="nav-link" href="country.php">By Continent</a> |
||||
|
</li> |
||||
|
<li class="nav-item"> |
||||
|
<a class="nav-link" href="countryInDates.php">Country in dates</a> |
||||
|
</li> |
||||
|
<li class="nav-item"> |
||||
|
<a class="nav-link" href="continentsInDates.php">Continent in dates</a> |
||||
|
</li> |
||||
|
</ul> |
||||
|
</div> |
||||
|
</nav> |
||||
|
</div> |
||||
|
<!--MENU END--> |
||||
|
<div class="container header"> |
||||
|
<div class="row"> |
||||
|
<div class="col-12 text-center header-title"> |
||||
|
<span class="title">Covid-19 Cases in all Continents</span> |
||||
|
</div> |
||||
|
<div class="col-6 text-left"> |
||||
|
<div class="item-1"> |
||||
|
<span class="meta-label">Total cases worldwide</span> |
||||
|
<span id="totalCases" class="meta-value"></span> |
||||
|
</div> |
||||
|
<div class="item-2"> |
||||
|
<span class="meta-label">Total deaths worldwide</span> |
||||
|
<span id="totalDeaths" class="meta-value"></span> |
||||
|
</div> |
||||
|
<div class="item-1"></div> |
||||
|
</div> |
||||
|
<div class="col-6 text-right"> |
||||
|
<span class="meta"> |
||||
|
<span class="meta-label">Last updated:</span> |
||||
|
<span id="lastDate" class="meta-value"></span> |
||||
|
</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
<div class="container-fluid center-content"> |
||||
|
<div id="chart"></div> |
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
<script src="jquery/jquery-3.5.1.min.js"></script> |
||||
|
<!-- <script src="propper/propper.min.js"></script> --> |
||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script> |
||||
|
<script src="bootstrap-4.3.1/js/bootstrap.min.js"></script> |
||||
|
|
||||
|
<script> |
||||
|
$(function() { |
||||
|
WebCall.renderCasesGroupByContinent('#chart'); |
||||
|
WebCall.renderLastDate('#lastDate'); |
||||
|
WebCall.renderTotalCasesAndDeaths('#totalCases', '#totalDeaths'); |
||||
|
}); |
||||
|
</script> |
||||
|
<footer class="fixed-bottom bg-dark"> |
||||
|
<div class="footer-content"> |
||||
|
<div class="content"> |
||||
|
<div class="text"> |
||||
|
POWERED BY Tsamantiotis Iraklis - Binas Georgios |
||||
|
© 2020 |
||||
|
All Rights Reserved. |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</footer> |
||||
|
|
||||
|
</body> |
||||
|
|
||||
|
</html> |
File diff suppressed because one or more lines are too long
@ -0,0 +1,6 @@ |
|||||
|
class Chart{ |
||||
|
constructor(obj, id) { |
||||
|
this.chartObj = obj; |
||||
|
this.chartID = id; |
||||
|
} |
||||
|
} |
@ -0,0 +1,56 @@ |
|||||
|
function showElements(elementsClass){ |
||||
|
$(elementsClass).css("display", "block"); |
||||
|
} |
||||
|
function hideElements(elementsClass){ |
||||
|
$(elementsClass).css("display", "none"); |
||||
|
} |
||||
|
|
||||
|
function showIfNotEqualsHideElse(code1, code2, elementsClass){ |
||||
|
if(code1 === code2){ |
||||
|
hideElements(elementsClass); |
||||
|
} |
||||
|
else{ |
||||
|
showElements(elementsClass) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
function initDatePicker(pickerID, onCloseFunction){ |
||||
|
var variable = new Lightpick({ |
||||
|
field: document.getElementById(pickerID), |
||||
|
numberOfMonths: 2, |
||||
|
singleDate: false, |
||||
|
onSelect: function (start, end) { |
||||
|
|
||||
|
}, |
||||
|
onClose: function (start, end) { |
||||
|
onCloseFunction(variable.toString('DD-MM-YYYY')); |
||||
|
} |
||||
|
}); |
||||
|
return variable; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
function getTrimedStringArray(arrayObj) { |
||||
|
let trimedArray = []; |
||||
|
arrayObj.forEach(value => { |
||||
|
trimedArray.push(value.trim()); |
||||
|
}); |
||||
|
return trimedArray; |
||||
|
} |
||||
|
|
||||
|
function generateDayWiseTimeSeries(s, count) { |
||||
|
var values = [ |
||||
|
4, 3, 10, 9, 29, 19, 25, 9, 12, 7, 19, 5, 13, 9, 17, 2, 7, 5 |
||||
|
]; |
||||
|
var i = 0; |
||||
|
var series = []; |
||||
|
var x = new Date("11 Nov 2012").getTime(); |
||||
|
while (i < count) { |
||||
|
series.push([x, values[i]]); |
||||
|
x += 86400000; |
||||
|
i++; |
||||
|
} |
||||
|
|
||||
|
// series.push([Date.getTime,value]);
|
||||
|
return series; |
||||
|
} |
@ -0,0 +1,437 @@ |
|||||
|
var servicesURL = { |
||||
|
getAllCasesGroupByContinent : 'https://83.212.77.22:9443/services/get_all_cases_group_by_continent.php', |
||||
|
getContinents: 'https://83.212.77.22:9443/services/get_continents.php', |
||||
|
getGroupByChooseContinent: 'https://83.212.77.22:9443/services/get_group_by_choose_continent_data.php', |
||||
|
getCountries: 'https://83.212.77.22:9443/services/get_countries.php', |
||||
|
getCountryDataInSpecificDates: 'https://83.212.77.22:9443/services/get_country_data_specific_dates.php', |
||||
|
getLastDate: 'https://83.212.77.22:9443/services/get_last_date.php', |
||||
|
getContinentsDataInSpecificDates: 'https://83.212.77.22:9443/services/get_continent_data_specific_dates.php', |
||||
|
getTotalCasesAndDeaths: 'https://83.212.77.22:9443/services/get_total_cases_deaths.php' |
||||
|
} |
||||
|
|
||||
|
var WebCall = { |
||||
|
charts: [], |
||||
|
renderCasesGroupByContinent: function(elementID){ |
||||
|
$.get(servicesURL.getAllCasesGroupByContinent).done(function(data){ |
||||
|
let options={ |
||||
|
series: [], |
||||
|
chart: { |
||||
|
width: 600, |
||||
|
type: 'pie' |
||||
|
}, |
||||
|
labels: [], |
||||
|
responsive: [{ |
||||
|
breakpoint: 800, |
||||
|
options: { |
||||
|
chart: { |
||||
|
width: 300 |
||||
|
}, |
||||
|
legend: { |
||||
|
position: 'bottom' |
||||
|
} |
||||
|
} |
||||
|
}] |
||||
|
}; |
||||
|
|
||||
|
data.forEach(function(element){ |
||||
|
options.series.push(parseInt(element.Cases,10)); |
||||
|
options.labels.push(element.continentExp); |
||||
|
}); |
||||
|
|
||||
|
WebCall.renderChart(elementID, options); |
||||
|
}); |
||||
|
}, |
||||
|
initalizeContinentsSelector: function(selectorID){ |
||||
|
$.get(servicesURL.getContinents).done(function (data) { |
||||
|
let selector = $(selectorID); |
||||
|
selector.append($("<option>").attr("value", "none").attr("selected", "selected").text("Choose One")); |
||||
|
data.forEach(function (element) { |
||||
|
selector.append($("<option>").attr("value", element.continentExp).text(element.continentExp)); |
||||
|
}); |
||||
|
}); |
||||
|
}, |
||||
|
renderAllCountryCasesDeathsByContinent: function (elementCasesID, elementDeathsID, continentValue, event) { |
||||
|
$.post(servicesURL.getGroupByChooseContinent, { continent: continentValue, order: 1}).done(function (data) { |
||||
|
let casesOptions = { |
||||
|
series: [{ |
||||
|
data: [] |
||||
|
}], |
||||
|
chart: { |
||||
|
type: 'bar', |
||||
|
// height: height,
|
||||
|
width: "100%" |
||||
|
}, |
||||
|
plotOptions: { |
||||
|
bar: { |
||||
|
horizontal: true, |
||||
|
} |
||||
|
}, |
||||
|
dataLabels: { |
||||
|
// enabled: false
|
||||
|
enabled: true |
||||
|
}, |
||||
|
xaxis: { |
||||
|
categories: [], |
||||
|
}, |
||||
|
tooltip: { |
||||
|
theme: 'dark', |
||||
|
x: { |
||||
|
show: true |
||||
|
}, |
||||
|
y: { |
||||
|
title: { |
||||
|
formatter: function () { |
||||
|
return 'Cases' |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
casesOptions.chart.height = data.length * 40; |
||||
|
data.forEach(function (element) { |
||||
|
casesOptions.series[0].data.push(parseInt(element.Cases, 10)); |
||||
|
casesOptions.xaxis.categories.push(element.countriesAndTerritories); |
||||
|
}); |
||||
|
WebCall.renderChart(elementCasesID, casesOptions); |
||||
|
}); |
||||
|
|
||||
|
$.post(servicesURL.getGroupByChooseContinent, { continent: continentValue, order: 2 }).done(function (data) { |
||||
|
let deathsOptions = { |
||||
|
series: [{ |
||||
|
data: [] |
||||
|
}], |
||||
|
chart: { |
||||
|
type: 'bar', |
||||
|
width: "100%" |
||||
|
}, |
||||
|
plotOptions: { |
||||
|
bar: { |
||||
|
horizontal: true, |
||||
|
} |
||||
|
}, |
||||
|
dataLabels: { |
||||
|
enabled: true |
||||
|
}, |
||||
|
xaxis: { |
||||
|
categories: [], |
||||
|
}, |
||||
|
tooltip: { |
||||
|
theme: 'dark', |
||||
|
x: { |
||||
|
show: true |
||||
|
}, |
||||
|
y: { |
||||
|
title: { |
||||
|
formatter: function () { |
||||
|
return 'Deaths' |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
deathsOptions.chart.height = data.length * 40; |
||||
|
data.forEach(function (element) { |
||||
|
deathsOptions.series[0].data.push(parseInt(element.Deaths, 10)); |
||||
|
deathsOptions.xaxis.categories.push(element.countriesAndTerritories); |
||||
|
}); |
||||
|
WebCall.renderChart(elementDeathsID, deathsOptions); |
||||
|
|
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
renderChart: function(elementID, options){ |
||||
|
let chart = WebCall.findChart(elementID); |
||||
|
if (chart){ |
||||
|
const index = WebCall.charts.indexOf(chart); |
||||
|
chart.chartObj.destroy(); |
||||
|
if (index > -1) { |
||||
|
WebCall.charts.splice(index, 1); |
||||
|
console.log('Remove Chart'); |
||||
|
console.log('Length = ' + WebCall.charts.length); |
||||
|
} |
||||
|
else{ |
||||
|
console.log('Not found Chart'); |
||||
|
console.log('Length = ' + WebCall.charts.length); |
||||
|
} |
||||
|
try{ |
||||
|
chart = new ApexCharts(document.querySelector(elementID), options); |
||||
|
chart.render(); |
||||
|
WebCall.charts.push(new Chart(chart, elementID)); |
||||
|
} |
||||
|
catch(error){ |
||||
|
console.log(error); |
||||
|
} |
||||
|
} |
||||
|
else{ |
||||
|
try{ |
||||
|
chart = new ApexCharts(document.querySelector(elementID), options); |
||||
|
chart.render(); |
||||
|
WebCall.charts.push(new Chart(chart, elementID)); |
||||
|
} |
||||
|
catch (error) { |
||||
|
console.log(error); |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
updateChart:function(elementID, options){ |
||||
|
|
||||
|
}, |
||||
|
findChart(chartID){ |
||||
|
return WebCall.charts.find(function(chart, index){ |
||||
|
return chart.chartID === chartID; |
||||
|
}); |
||||
|
}, |
||||
|
initalizeCountriesSelector: function (selectorID) { |
||||
|
$.get(servicesURL.getCountries).done(function (data) { |
||||
|
let selector = $(selectorID); |
||||
|
selector.append($("<option>").attr("value", "none").attr("selected", "selected").text("Choose One")); |
||||
|
data.forEach(function (element) { |
||||
|
selector.append($("<option>").attr("value", element.countriesAndTerritories).text(element.countriesAndTerritories)); |
||||
|
}); |
||||
|
|
||||
|
$(selectorID).select2(); |
||||
|
|
||||
|
}); |
||||
|
|
||||
|
return $(selectorID); |
||||
|
}, |
||||
|
renderCasesByCountryAndDate: function (elementID, countryVar, dates) { |
||||
|
if (countryVar === "" || countryVar === 'undefined' || countryVar === null || countryVar === 'none' |
||||
|
|| dates === "" || dates === 'undefined' || dates === null) |
||||
|
{ |
||||
|
console.log('No data provided...'); |
||||
|
return; |
||||
|
} |
||||
|
let dateArray = dates.split('-'); |
||||
|
if(dateArray.length < 2){ |
||||
|
console.log('No data provided...'); |
||||
|
return; |
||||
|
} |
||||
|
let trimedArray = getTrimedStringArray(dateArray); |
||||
|
|
||||
|
// console.log(countryVar);
|
||||
|
// console.log(trimedArray[0]);
|
||||
|
// console.log(trimedArray[1]);
|
||||
|
$.post(servicesURL.getCountryDataInSpecificDates, { from_date: trimedArray[0], until_date: trimedArray[1], country: countryVar}).done(function (data) { |
||||
|
// console.log(data);
|
||||
|
// let dates=[];
|
||||
|
// for(i=0; i<10; i++){
|
||||
|
// dates.push('2018-02-12');
|
||||
|
// }
|
||||
|
var options = { |
||||
|
chart: { |
||||
|
type: "area", |
||||
|
height: 600, |
||||
|
width: "100%", |
||||
|
foreColor: "#999", |
||||
|
stacked: true, |
||||
|
dropShadow: { |
||||
|
enabled: true, |
||||
|
enabledSeries: [0], |
||||
|
top: -2, |
||||
|
left: 2, |
||||
|
blur: 5, |
||||
|
opacity: 0.06 |
||||
|
} |
||||
|
}, |
||||
|
colors: ['#00E396', '#0090FF'], |
||||
|
stroke: { |
||||
|
curve: "smooth", |
||||
|
width: 3 |
||||
|
}, |
||||
|
dataLabels: { |
||||
|
enabled: false |
||||
|
}, |
||||
|
series: [{ |
||||
|
name: 'Total Deaths', |
||||
|
data: [] |
||||
|
// data: generateDayWiseTimeSeries(0, 18)
|
||||
|
}, |
||||
|
{ |
||||
|
name: 'Total Cases', |
||||
|
data: [] |
||||
|
// data: generateDayWiseTimeSeries(0, 18)
|
||||
|
}], |
||||
|
markers: { |
||||
|
size: 0, |
||||
|
strokeColor: "#fff", |
||||
|
strokeWidth: 3, |
||||
|
strokeOpacity: 1, |
||||
|
fillOpacity: 1, |
||||
|
hover: { |
||||
|
size: 6 |
||||
|
} |
||||
|
}, |
||||
|
xaxis: { |
||||
|
type: "datetime", |
||||
|
axisBorder: { |
||||
|
show: false |
||||
|
}, |
||||
|
axisTicks: { |
||||
|
show: false |
||||
|
} |
||||
|
}, |
||||
|
yaxis: { |
||||
|
labels: { |
||||
|
offsetX: 14, |
||||
|
offsetY: -5 |
||||
|
}, |
||||
|
tooltip: { |
||||
|
enabled: true |
||||
|
} |
||||
|
}, |
||||
|
grid: { |
||||
|
padding: { |
||||
|
left: -5, |
||||
|
right: 5 |
||||
|
} |
||||
|
}, |
||||
|
tooltip: { |
||||
|
x: { |
||||
|
format: "dd MMM yyyy" |
||||
|
}, |
||||
|
}, |
||||
|
legend: { |
||||
|
position: 'top', |
||||
|
horizontalAlign: 'left' |
||||
|
}, |
||||
|
fill: { |
||||
|
type: "solid", |
||||
|
fillOpacity: 0.7 |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
data.forEach(function (element) { |
||||
|
options.series[0].data.push([new Date(element.dateRep).getTime(), element.deaths]); |
||||
|
options.series[1].data.push([new Date(element.dateRep).getTime(), element.cases]); |
||||
|
}); |
||||
|
|
||||
|
WebCall.renderChart(elementID, options); |
||||
|
}); |
||||
|
}, |
||||
|
renderLastDate(elementID){ |
||||
|
$.get(servicesURL.getLastDate).done(function (data) { |
||||
|
let element = $(elementID); |
||||
|
element.html(data); |
||||
|
}); |
||||
|
}, |
||||
|
renderCasesByContinentAndDate: function (elementID, continentVar, dates) { |
||||
|
if (continentVar === "" || continentVar === 'undefined' || continentVar === null || continentVar === 'none' |
||||
|
|| dates === "" || dates === 'undefined' || dates === null) { |
||||
|
console.log('No data provided...'); |
||||
|
return; |
||||
|
} |
||||
|
let dateArray = dates.split('-'); |
||||
|
if (dateArray.length < 2) { |
||||
|
console.log('No data provided...'); |
||||
|
return; |
||||
|
} |
||||
|
let trimedArray = getTrimedStringArray(dateArray); |
||||
|
|
||||
|
|
||||
|
$.post(servicesURL.getContinentsDataInSpecificDates, { from_date: trimedArray[0], until_date: trimedArray[1], continent: continentVar }).done(function (data) { |
||||
|
console.log(data); |
||||
|
|
||||
|
var options = { |
||||
|
chart: { |
||||
|
type: "area", |
||||
|
height: 600, |
||||
|
width: "100%", |
||||
|
foreColor: "#999", |
||||
|
stacked: true, |
||||
|
dropShadow: { |
||||
|
enabled: true, |
||||
|
enabledSeries: [0], |
||||
|
top: -2, |
||||
|
left: 2, |
||||
|
blur: 5, |
||||
|
opacity: 0.06 |
||||
|
} |
||||
|
}, |
||||
|
colors: ['#00E396', '#0090FF'], |
||||
|
stroke: { |
||||
|
curve: "smooth", |
||||
|
width: 3 |
||||
|
}, |
||||
|
dataLabels: { |
||||
|
enabled: false |
||||
|
}, |
||||
|
series: [{ |
||||
|
name: 'Total Deaths', |
||||
|
data: [] |
||||
|
// data: generateDayWiseTimeSeries(0, 18)
|
||||
|
}, |
||||
|
{ |
||||
|
name: 'Total Cases', |
||||
|
data: [] |
||||
|
// data: generateDayWiseTimeSeries(0, 18)
|
||||
|
}], |
||||
|
markers: { |
||||
|
size: 0, |
||||
|
strokeColor: "#fff", |
||||
|
strokeWidth: 3, |
||||
|
strokeOpacity: 1, |
||||
|
fillOpacity: 1, |
||||
|
hover: { |
||||
|
size: 6 |
||||
|
} |
||||
|
}, |
||||
|
xaxis: { |
||||
|
type: "datetime", |
||||
|
axisBorder: { |
||||
|
show: false |
||||
|
}, |
||||
|
axisTicks: { |
||||
|
show: false |
||||
|
} |
||||
|
}, |
||||
|
yaxis: { |
||||
|
labels: { |
||||
|
offsetX: 14, |
||||
|
offsetY: -5 |
||||
|
}, |
||||
|
tooltip: { |
||||
|
enabled: true |
||||
|
} |
||||
|
}, |
||||
|
grid: { |
||||
|
padding: { |
||||
|
left: -5, |
||||
|
right: 5 |
||||
|
} |
||||
|
}, |
||||
|
tooltip: { |
||||
|
x: { |
||||
|
format: "dd MMM yyyy" |
||||
|
}, |
||||
|
}, |
||||
|
legend: { |
||||
|
position: 'top', |
||||
|
horizontalAlign: 'left' |
||||
|
}, |
||||
|
fill: { |
||||
|
type: "solid", |
||||
|
fillOpacity: 0.7 |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
data.forEach(function (element) { |
||||
|
options.series[0].data.push([new Date(element.dateRep).getTime(), element.Deaths]); |
||||
|
options.series[1].data.push([new Date(element.dateRep).getTime(), element.Cases]); |
||||
|
}); |
||||
|
|
||||
|
WebCall.renderChart(elementID, options); |
||||
|
}); |
||||
|
}, |
||||
|
renderTotalCasesAndDeaths(casesID, deathsID) { |
||||
|
$.get(servicesURL.getTotalCasesAndDeaths).done(function (data) { |
||||
|
let totalCases = $(casesID); |
||||
|
totalCases.html(data[0].Cases); |
||||
|
|
||||
|
let totalDeaths = $(deathsID); |
||||
|
totalDeaths.html(data[0].Deaths); |
||||
|
}); |
||||
|
} |
||||
|
} |
@ -0,0 +1,293 @@ |
|||||
|
.lightpick { |
||||
|
position: absolute; |
||||
|
z-index: 99999; |
||||
|
padding: 4px; |
||||
|
border-radius: 4px; |
||||
|
background-color: #FFF; |
||||
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); |
||||
|
color: #000; |
||||
|
font-family: system-ui, Roboto, Helvetica, Arial, sans-serif; |
||||
|
line-height: 1.125em; |
||||
|
} |
||||
|
|
||||
|
.lightpick--inlined { |
||||
|
position: relative; |
||||
|
display: inline-block; |
||||
|
} |
||||
|
|
||||
|
.lightpick, |
||||
|
.lightpick *, |
||||
|
.lightpick::after, |
||||
|
.lightpick::before { |
||||
|
box-sizing: border-box; |
||||
|
} |
||||
|
|
||||
|
.lightpick.is-hidden { |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
.lightpick__months { |
||||
|
display: grid; |
||||
|
background-color: #EEE; |
||||
|
grid-template-columns: auto; |
||||
|
grid-gap: 1px; |
||||
|
} |
||||
|
|
||||
|
.lightpick--2-columns .lightpick__months { |
||||
|
grid-template-columns: auto auto; |
||||
|
} |
||||
|
|
||||
|
.lightpick--3-columns .lightpick__months { |
||||
|
grid-template-columns: auto auto auto; |
||||
|
} |
||||
|
|
||||
|
.lightpick--4-columns .lightpick__months { |
||||
|
grid-template-columns: auto auto auto auto; |
||||
|
} |
||||
|
|
||||
|
.lightpick--5-columns .lightpick__months { |
||||
|
grid-template-columns: auto auto auto auto auto; |
||||
|
} |
||||
|
|
||||
|
.lightpick__month { |
||||
|
padding: 4px; |
||||
|
width: 288px; |
||||
|
background-color: #FFF; |
||||
|
} |
||||
|
|
||||
|
.lightpick__month-title-bar { |
||||
|
display: flex; |
||||
|
margin-bottom: 4px; |
||||
|
justify-content: space-between; |
||||
|
align-items: center; |
||||
|
} |
||||
|
|
||||
|
.lightpick__month-title { |
||||
|
margin-top: 4px; |
||||
|
margin-bottom: 4px; |
||||
|
margin-left: 4px; |
||||
|
font-size: 16px; |
||||
|
font-weight: normal; |
||||
|
line-height: 24px; |
||||
|
cursor: default; |
||||
|
padding: 0 4px; |
||||
|
border-radius: 4px; |
||||
|
} |
||||
|
|
||||
|
.lightpick__month-title > .lightpick__select { |
||||
|
border: none; |
||||
|
background-color: transparent; |
||||
|
outline: none; |
||||
|
-moz-appearance: none; |
||||
|
-webkit-appearance: none; |
||||
|
appearance: none; |
||||
|
} |
||||
|
.lightpick__month-title > .lightpick__select:disabled { |
||||
|
color: #333; |
||||
|
} |
||||
|
|
||||
|
.lightpick__month-title > .lightpick__select-months { |
||||
|
font-weight: bold; |
||||
|
font-size: 1em; |
||||
|
margin-right: .5em; |
||||
|
} |
||||
|
|
||||
|
.lightpick__toolbar { |
||||
|
display: flex; |
||||
|
text-align: right; |
||||
|
justify-content: flex-end; |
||||
|
} |
||||
|
|
||||
|
.lightpick__previous-action, |
||||
|
.lightpick__next-action, |
||||
|
.lightpick__close-action { |
||||
|
display: flex; |
||||
|
margin-left: 6px; |
||||
|
width: 32px; |
||||
|
height: 32px; |
||||
|
outline: none; |
||||
|
border: none; |
||||
|
border-radius: 50%; |
||||
|
background-color: #DDD; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
} |
||||
|
|
||||
|
.lightpick__previous-action, |
||||
|
.lightpick__next-action { |
||||
|
font-size: 12px; |
||||
|
} |
||||
|
|
||||
|
.lightpick__close-action { |
||||
|
font-size: 18px; |
||||
|
} |
||||
|
|
||||
|
.lightpick__previous-action:active, |
||||
|
.lightpick__next-action:active, |
||||
|
.lightpick__close-action:active { |
||||
|
color: inherit; |
||||
|
} |
||||
|
|
||||
|
.lightpick__days-of-the-week { |
||||
|
display: grid; |
||||
|
grid-template-columns: repeat(7, 1fr); |
||||
|
} |
||||
|
|
||||
|
.lightpick__day-of-the-week { |
||||
|
display: flex; |
||||
|
font-size: 11px; |
||||
|
font-weight: bold; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
} |
||||
|
|
||||
|
.lightpick__days { |
||||
|
display: grid; |
||||
|
grid-template-columns: repeat(7, 1fr); |
||||
|
} |
||||
|
|
||||
|
.lightpick__day { |
||||
|
display: flex; |
||||
|
height: 40px; |
||||
|
background-position: center center; |
||||
|
background-size: contain; |
||||
|
background-repeat: no-repeat; |
||||
|
font-size: 13px; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
cursor: default; |
||||
|
} |
||||
|
|
||||
|
.lightpick__day.is-today { |
||||
|
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ccircle fill='rgba(220, 50, 47, .5)' cx='16' cy='16' r='16'/%3E%3C/svg%3E"); |
||||
|
background-size: 18.8% auto; |
||||
|
background-position: center bottom; |
||||
|
color: #DC322F; |
||||
|
} |
||||
|
|
||||
|
.lightpick__day:not(.is-disabled):hover { |
||||
|
background-size: contain; |
||||
|
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ccircle fill='%23E0E0E0' cx='16' cy='16' r='16'/%3E%3C/svg%3E"); |
||||
|
} |
||||
|
|
||||
|
.lightpick__day.is-disabled { |
||||
|
opacity: 0.38; |
||||
|
pointer-events: none; |
||||
|
} |
||||
|
|
||||
|
.lightpick__day.disabled-tooltip { |
||||
|
pointer-events: auto; |
||||
|
} |
||||
|
|
||||
|
.lightpick__day.is-disabled.is-forward-selected { |
||||
|
opacity: 1; |
||||
|
} |
||||
|
.lightpick__day.is-disabled.is-forward-selected:not(.is-start-date) { |
||||
|
background-color: rgba(38, 139, 210, 0.1); |
||||
|
background-image: none; |
||||
|
} |
||||
|
|
||||
|
.lightpick__day.is-previous-month, |
||||
|
.lightpick__day.is-next-month { |
||||
|
opacity: 0.38; |
||||
|
} |
||||
|
|
||||
|
.lightpick__day.lightpick__day.is-in-range:not(.is-disabled) { |
||||
|
opacity: 1; |
||||
|
} |
||||
|
|
||||
|
.lightpick__day.is-in-range { |
||||
|
border-radius: 0; |
||||
|
background-color: rgba(38, 139, 210, 0.1); |
||||
|
background-image: none; |
||||
|
} |
||||
|
|
||||
|
.lightpick__day.is-in-range:hover { |
||||
|
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ccircle fill='rgba(38, 139, 210, 0.5)' cx='16' cy='16' r='16'/%3E%3C/svg%3E"); |
||||
|
} |
||||
|
|
||||
|
.lightpick__day.is-start-date.is-in-range, |
||||
|
.lightpick__day.is-end-date.is-in-range.is-flipped { |
||||
|
border-top-left-radius: 50%; |
||||
|
border-top-right-radius: 0; |
||||
|
border-bottom-right-radius: 0; |
||||
|
border-bottom-left-radius: 50%; |
||||
|
background-color: #268BD2; |
||||
|
background-image: none; |
||||
|
} |
||||
|
|
||||
|
.lightpick__day.is-end-date.is-in-range, |
||||
|
.lightpick__day.is-start-date.is-in-range.is-flipped { |
||||
|
border-top-left-radius: 0; |
||||
|
border-top-right-radius: 50%; |
||||
|
border-bottom-right-radius: 50%; |
||||
|
border-bottom-left-radius: 0; |
||||
|
background-color: #268BD2; |
||||
|
background-image: none; |
||||
|
} |
||||
|
|
||||
|
.lightpick__day.is-start-date.is-end-date { |
||||
|
background-color: transparent; |
||||
|
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ccircle fill='%23268BD2' cx='16' cy='16' r='16'/%3E%3C/svg%3E"); |
||||
|
} |
||||
|
|
||||
|
.lightpick__day.is-start-date, |
||||
|
.lightpick__day.is-end-date, |
||||
|
.lightpick__day.is-start-date:hover, |
||||
|
.lightpick__day.is-end-date:hover { |
||||
|
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ccircle fill='%23268BD2' cx='16' cy='16' r='16'/%3E%3C/svg%3E"); |
||||
|
background-size: auto; |
||||
|
background-position: center; |
||||
|
color: #FFF; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
.lightpick__tooltip { |
||||
|
position: absolute; |
||||
|
margin-top: -4px; |
||||
|
padding: 4px 8px; |
||||
|
border-radius: 4px; |
||||
|
background-color: #FFF; |
||||
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); |
||||
|
white-space: nowrap; |
||||
|
font-size: 11px; |
||||
|
pointer-events: none; |
||||
|
} |
||||
|
|
||||
|
.lightpick__tooltip::before { |
||||
|
position: absolute; |
||||
|
bottom: -5px; |
||||
|
left: calc(50% - 5px); |
||||
|
border-top: 5px solid rgba(0, 0, 0, 0.12); |
||||
|
border-right: 5px solid transparent; |
||||
|
border-left: 5px solid transparent; |
||||
|
content: ""; |
||||
|
} |
||||
|
|
||||
|
.lightpick__tooltip::after { |
||||
|
position: absolute; |
||||
|
bottom: -4px; |
||||
|
left: calc(50% - 4px); |
||||
|
border-top: 4px solid #FFF; |
||||
|
border-right: 4px solid transparent; |
||||
|
border-left: 4px solid transparent; |
||||
|
content: ""; |
||||
|
} |
||||
|
.lightpick__footer { |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
} |
||||
|
.lightpick__reset-action, |
||||
|
.lightpick__apply-action { |
||||
|
border-radius: 5px; |
||||
|
font-size: 12px; |
||||
|
border: none; |
||||
|
} |
||||
|
.lightpick__reset-action { |
||||
|
color: #fff; |
||||
|
background-color: #aeacad; |
||||
|
} |
||||
|
.lightpick__apply-action { |
||||
|
color: #fff; |
||||
|
background-color: #2495f3; |
||||
|
} |
File diff suppressed because it is too large
File diff suppressed because one or more lines are too long
@ -0,0 +1,391 @@ |
|||||
|
// Helper Functions |
||||
|
|
||||
|
/// Replace `$search` with `$replace` in `$string` |
||||
|
/// @author Hugo Giraudel |
||||
|
/// @param {String} $string - Initial string |
||||
|
/// @param {String} $search - Substring to replace |
||||
|
/// @param {String} $replace ('') - New value |
||||
|
/// @return {String} - Updated string |
||||
|
@function lightpick-str-replace($string, $search, $replace: '') { |
||||
|
$index: str-index($string, $search); |
||||
|
|
||||
|
@if $index { |
||||
|
@return str-slice($string, 1, $index - 1) + $replace + lightpick-str-replace(str-slice($string, $index + str-length($search)), $search, $replace); |
||||
|
} |
||||
|
|
||||
|
@return $string; |
||||
|
} |
||||
|
|
||||
|
/// Split `$string` between the `$separator` characters |
||||
|
/// @author https://stackoverflow.com/a/42295154/108816 |
||||
|
/// @param {String} $string - Initial string |
||||
|
/// @param {String} $separator - Substring to split on |
||||
|
/// @return {List} - Split string |
||||
|
@function lightpick-str-split($string, $separator) { |
||||
|
$split-arr: (); |
||||
|
$index: str-index($string, $separator); |
||||
|
|
||||
|
@while $index != null { |
||||
|
$item: str-slice($string, 1, $index - 1); |
||||
|
|
||||
|
$split-arr: append($split-arr, $item); |
||||
|
|
||||
|
$string: str-slice($string, $index + 1); |
||||
|
|
||||
|
$index: str-index($string, $separator); |
||||
|
} |
||||
|
|
||||
|
$split-arr: append($split-arr, $string); |
||||
|
|
||||
|
@return $split-arr; |
||||
|
} |
||||
|
|
||||
|
// SCSS Variables |
||||
|
|
||||
|
$lightpick-font: system-ui, Roboto, Helvetica, Arial, sans-serif !default; |
||||
|
$lightpick-line-height: 1.125em !default; |
||||
|
$lightpick-border-radius: 4px !default; |
||||
|
$lightpick-padding: 4px !default; |
||||
|
$lightpick-color: #000 !default; |
||||
|
$lightpick-background-color: #fff !default; |
||||
|
$lightpick-months-background-color: #eee !default; |
||||
|
$lightpick-title-font-size: 16px !default; |
||||
|
$lightpick-title-font-weight: normal !default; |
||||
|
$lightpick-day-of-week-font-size: 11px !default; |
||||
|
$lightpick-day-of-week-font-weight: bold !default; |
||||
|
$lightpick-day-hover-color: #e0e0e0 !default; |
||||
|
$lightpick-day-hover-background-image-color: lightpick-str-replace(quote(#{$lightpick-day-hover-color}), '#', '%23'); |
||||
|
$lightpick-day-hover-background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ccircle fill='#{$lightpick-day-hover-background-image-color}' cx='16' cy='16' r='16'/%3E%3C/svg%3E") !default; |
||||
|
$lightpick-day-disabled-opacity: 0.38 !default; |
||||
|
$lightpick-day-previous-next-opacity: $lightpick-day-disabled-opacity !default; |
||||
|
$lightpick-day-size: 40px !default; |
||||
|
$lightpick-day-font-size: 13px !default; |
||||
|
$lightpick-selected-date-color: #fff !default; |
||||
|
$lightpick-selected-date-background-color: #268bd2 !default; |
||||
|
$lightpick-selected-date-background-image-color: lightpick-str-replace(quote(#{$lightpick-selected-date-background-color}), '#', '%23'); |
||||
|
$lightpick-selected-date-background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ccircle fill='#{$lightpick-selected-date-background-image-color}' cx='16' cy='16' r='16'/%3E%3C/svg%3E") !default; |
||||
|
$lightpick-selected-date-font-weight: bold !default; |
||||
|
$lightpick-selected-range-background-color: rgba($lightpick-selected-date-background-color, 0.1) !default; |
||||
|
$lightpick-selected-range-hover-background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ccircle fill='#{rgba($lightpick-selected-date-background-color, 0.5)}' cx='16' cy='16' r='16'/%3E%3C/svg%3E") !default; |
||||
|
$lightpick-today-color: #dc322f !default; |
||||
|
$lightpick-today-background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ccircle fill='#{rgba($lightpick-today-color, .5)}' cx='16' cy='16' r='16'/%3E%3C/svg%3E") !default; |
||||
|
$lightpick-tooltip-background-color: #fff !default; |
||||
|
$lightpick-tooltip-padding: 4px 8px !default; |
||||
|
$lightpick-tooltip-margin: -(unquote(nth(lightpick-str-split(quote(#{$lightpick-tooltip-padding}), ' '), 1))) !default; |
||||
|
$lightpick-tooltip-triangle-size: 4px !default; |
||||
|
$lightpick-tooltip-border-color: rgba(0, 0, 0, 0.12) !default; |
||||
|
$lightpick-tooltip-font-size: 11px !default; |
||||
|
$lightpick-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25) !default; |
||||
|
$lightpick-dropdown-font-size: 1em !default; |
||||
|
$lightpick-dropdown-font-weight: bold !default; |
||||
|
$lightpick-dropdown-disabled-color: #333 !default; |
||||
|
$lightpick-action-width: 32px !default; |
||||
|
$lightpick-action-height: $lightpick-action-width !default; |
||||
|
$lightpick-action-background-color: #ddd !default; |
||||
|
$lightpick-action-reset-background-color: #aeacad !default; |
||||
|
$lightpick-action-reset-color: #fff !default; |
||||
|
$lightpick-action-apply-background-color: #2495f3 !default; |
||||
|
$lightpick-action-apply-color: #fff !default; |
||||
|
$lightpick-action-border-radius: 5px !default; |
||||
|
$lightpick-action-font-size: 12px !default; |
||||
|
$lightpick-action-close-font-size: 18px !default; |
||||
|
|
||||
|
// Styles |
||||
|
|
||||
|
.lightpick { |
||||
|
position: absolute; |
||||
|
z-index: 99999; |
||||
|
padding: $lightpick-padding; |
||||
|
border-radius: $lightpick-border-radius; |
||||
|
background-color: $lightpick-background-color; |
||||
|
box-shadow: $lightpick-box-shadow; |
||||
|
color: $lightpick-color; |
||||
|
font-family: $lightpick-font; |
||||
|
line-height: $lightpick-line-height; |
||||
|
|
||||
|
&--inlined { |
||||
|
position: relative; |
||||
|
display: inline-block; |
||||
|
} |
||||
|
|
||||
|
&, |
||||
|
& *, |
||||
|
&::after, |
||||
|
&::before { |
||||
|
box-sizing: border-box; |
||||
|
} |
||||
|
|
||||
|
&.is-hidden { |
||||
|
display: none; |
||||
|
} |
||||
|
|
||||
|
&__months { |
||||
|
display: grid; |
||||
|
background-color: $lightpick-months-background-color; |
||||
|
grid-template-columns: auto; |
||||
|
grid-gap: 1px; |
||||
|
|
||||
|
@at-root .lightpick--2-columns #{&} { |
||||
|
grid-template-columns: auto auto; |
||||
|
} |
||||
|
|
||||
|
@at-root .lightpick--3-columns #{&} { |
||||
|
grid-template-columns: auto auto auto; |
||||
|
} |
||||
|
|
||||
|
@at-root .lightpick--4-columns #{&} { |
||||
|
grid-template-columns: auto auto auto auto; |
||||
|
} |
||||
|
|
||||
|
@at-root .lightpick--5-columns #{&} { |
||||
|
grid-template-columns: auto auto auto auto auto; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&__month { |
||||
|
padding: $lightpick-padding; |
||||
|
width: ($lightpick-day-size * 7) + ($lightpick-padding * 2); |
||||
|
background-color: $lightpick-background-color; |
||||
|
|
||||
|
&-title-bar { |
||||
|
display: flex; |
||||
|
margin-bottom: $lightpick-padding; |
||||
|
justify-content: space-between; |
||||
|
align-items: center; |
||||
|
} |
||||
|
|
||||
|
&-title { |
||||
|
margin-top: $lightpick-padding; |
||||
|
margin-bottom: $lightpick-padding; |
||||
|
margin-left: $lightpick-padding; |
||||
|
font-size: $lightpick-title-font-size; |
||||
|
font-weight: $lightpick-title-font-weight; |
||||
|
line-height: $lightpick-title-font-size * 1.5; |
||||
|
cursor: default; |
||||
|
padding: 0 $lightpick-padding; |
||||
|
border-radius: $lightpick-border-radius; |
||||
|
|
||||
|
& > .lightpick__select { |
||||
|
border: none; |
||||
|
background-color: transparent; |
||||
|
outline: none; |
||||
|
-moz-appearance: none; |
||||
|
-webkit-appearance: none; |
||||
|
appearance: none; |
||||
|
|
||||
|
&:disabled { |
||||
|
color: $lightpick-dropdown-disabled-color; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
& > .lightpick__select-months { |
||||
|
font-weight: $lightpick-dropdown-font-weight; |
||||
|
font-size: $lightpick-dropdown-font-size; |
||||
|
margin-right: 0.5em; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&__toolbar { |
||||
|
display: flex; |
||||
|
text-align: right; |
||||
|
justify-content: flex-end; |
||||
|
} |
||||
|
|
||||
|
&__previous-action, |
||||
|
&__next-action, |
||||
|
&__close-action { |
||||
|
display: flex; |
||||
|
margin-left: 6px; |
||||
|
width: $lightpick-action-width; |
||||
|
height: $lightpick-action-height; |
||||
|
outline: none; |
||||
|
border: none; |
||||
|
border-radius: 50%; |
||||
|
background-color: $lightpick-action-background-color; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
|
||||
|
&:active { |
||||
|
color: inherit; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&__previous-action, |
||||
|
&__next-action { |
||||
|
font-size: $lightpick-action-font-size; |
||||
|
} |
||||
|
|
||||
|
&__close-action { |
||||
|
font-size: $lightpick-action-close-font-size; |
||||
|
} |
||||
|
|
||||
|
&__days-of-the-week { |
||||
|
display: grid; |
||||
|
grid-template-columns: repeat(7, 1fr); |
||||
|
} |
||||
|
|
||||
|
&__day-of-the-week { |
||||
|
display: flex; |
||||
|
font-size: $lightpick-day-of-week-font-size; |
||||
|
font-weight: $lightpick-day-of-week-font-weight; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
} |
||||
|
|
||||
|
&__days { |
||||
|
display: grid; |
||||
|
grid-template-columns: repeat(7, 1fr); |
||||
|
} |
||||
|
|
||||
|
&__day { |
||||
|
display: flex; |
||||
|
height: $lightpick-day-size; |
||||
|
background-position: center center; |
||||
|
background-size: contain; |
||||
|
background-repeat: no-repeat; |
||||
|
font-size: $lightpick-day-font-size; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
cursor: default; |
||||
|
|
||||
|
&.is-today { |
||||
|
background-image: $lightpick-today-background-image; |
||||
|
background-size: 18.8% auto; |
||||
|
background-position: center bottom; |
||||
|
color: $lightpick-today-color; |
||||
|
} |
||||
|
|
||||
|
&:not(.is-disabled):hover { |
||||
|
background-size: contain; |
||||
|
background-image: $lightpick-day-hover-background-image; |
||||
|
} |
||||
|
|
||||
|
&.is-disabled { |
||||
|
opacity: $lightpick-day-disabled-opacity; |
||||
|
pointer-events: none; |
||||
|
|
||||
|
&.is-forward-selected { |
||||
|
opacity: 1; |
||||
|
|
||||
|
&:not(.is-start-date) { |
||||
|
background-color: $lightpick-selected-range-background-color; |
||||
|
background-image: none; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&.disabled-tooltip { |
||||
|
pointer-events: auto; |
||||
|
} |
||||
|
|
||||
|
&.is-previous-month, |
||||
|
&.is-next-month { |
||||
|
opacity: $lightpick-day-previous-next-opacity; |
||||
|
} |
||||
|
|
||||
|
&#{&}.is-in-range:not(.is-disabled) { |
||||
|
opacity: 1; |
||||
|
} |
||||
|
|
||||
|
&.is-in-range { |
||||
|
border-radius: 0; |
||||
|
background-color: $lightpick-selected-range-background-color; |
||||
|
background-image: none; |
||||
|
|
||||
|
&:hover { |
||||
|
background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Ccircle fill='rgba(38, 139, 210, 0.5)' cx='16' cy='16' r='16'/%3E%3C/svg%3E"); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&.is-start-date.is-in-range, |
||||
|
&.is-end-date.is-in-range.is-flipped { |
||||
|
border-top-left-radius: 50%; |
||||
|
border-top-right-radius: 0; |
||||
|
border-bottom-right-radius: 0; |
||||
|
border-bottom-left-radius: 50%; |
||||
|
background-color: $lightpick-selected-date-background-color; |
||||
|
background-image: none; |
||||
|
} |
||||
|
|
||||
|
&.is-end-date.is-in-range, |
||||
|
&.is-start-date.is-in-range.is-flipped { |
||||
|
border-top-left-radius: 0; |
||||
|
border-top-right-radius: 50%; |
||||
|
border-bottom-right-radius: 50%; |
||||
|
border-bottom-left-radius: 0; |
||||
|
background-color: $lightpick-selected-date-background-color; |
||||
|
background-image: none; |
||||
|
} |
||||
|
|
||||
|
&.is-start-date.is-end-date { |
||||
|
background-color: transparent; |
||||
|
background-image: $lightpick-selected-date-background-image; |
||||
|
} |
||||
|
|
||||
|
&.is-start-date, |
||||
|
&.is-end-date, |
||||
|
&.is-start-date:hover, |
||||
|
&.is-end-date:hover { |
||||
|
background-image: $lightpick-selected-date-background-image; |
||||
|
background-size: auto; |
||||
|
background-position: center; |
||||
|
color: $lightpick-selected-date-color; |
||||
|
font-weight: $lightpick-selected-date-font-weight; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&__tooltip { |
||||
|
position: absolute; |
||||
|
margin-top: $lightpick-tooltip-margin; |
||||
|
padding: $lightpick-tooltip-padding; |
||||
|
border-radius: $lightpick-border-radius; |
||||
|
background-color: $lightpick-tooltip-background-color; |
||||
|
box-shadow: $lightpick-box-shadow; |
||||
|
white-space: nowrap; |
||||
|
font-size: $lightpick-tooltip-font-size; |
||||
|
pointer-events: none; |
||||
|
|
||||
|
&::before { |
||||
|
position: absolute; |
||||
|
bottom: -($lightpick-tooltip-triangle-size + 1); |
||||
|
left: calc(50% - #{$lightpick-tooltip-triangle-size + 1}); |
||||
|
border-top: ($lightpick-tooltip-triangle-size + 1) solid $lightpick-tooltip-border-color; |
||||
|
border-right: ($lightpick-tooltip-triangle-size + 1) solid transparent; |
||||
|
border-left: ($lightpick-tooltip-triangle-size + 1) solid transparent; |
||||
|
content: ''; |
||||
|
} |
||||
|
|
||||
|
&::after { |
||||
|
position: absolute; |
||||
|
bottom: -$lightpick-tooltip-triangle-size; |
||||
|
left: calc(50% - #{$lightpick-tooltip-triangle-size}); |
||||
|
border-top: $lightpick-tooltip-triangle-size solid $lightpick-tooltip-background-color; |
||||
|
border-right: $lightpick-tooltip-triangle-size solid transparent; |
||||
|
border-left: $lightpick-tooltip-triangle-size solid transparent; |
||||
|
content: ''; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
&__footer { |
||||
|
display: flex; |
||||
|
justify-content: space-between; |
||||
|
} |
||||
|
|
||||
|
&__reset-action, |
||||
|
&__apply-action { |
||||
|
border-radius: $lightpick-action-border-radius; |
||||
|
font-size: $lightpick-action-font-size; |
||||
|
border: none; |
||||
|
} |
||||
|
|
||||
|
&__reset-action { |
||||
|
color: $lightpick-action-reset-color; |
||||
|
background-color: $lightpick-action-reset-background-color; |
||||
|
} |
||||
|
|
||||
|
&__apply-action { |
||||
|
color: $lightpick-action-apply-color; |
||||
|
background-color: $lightpick-action-apply-background-color; |
||||
|
} |
||||
|
} |
@ -0,0 +1,22 @@ |
|||||
|
<div class="top-bar"> |
||||
|
<!--MENU START--> |
||||
|
<nav class="navbar navbar-expand-lg navbar-dark bg-dark"> |
||||
|
<a class="navbar-brand" href="#">Covid-19</a> |
||||
|
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" |
||||
|
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> |
||||
|
<span class="navbar-toggler-icon"></span> |
||||
|
</button> |
||||
|
|
||||
|
<div class="collapse navbar-collapse" id="navbarSupportedContent"> |
||||
|
<ul class="navbar-nav mr-auto"> |
||||
|
<li class="nav-item"> |
||||
|
<a class="nav-link" href="index">All Continent<span class="sr-only">(current)</span></a> |
||||
|
</li> |
||||
|
<li class="nav-item active"> |
||||
|
<a class="nav-link" href="country">By Continent</a> |
||||
|
</li> |
||||
|
</ul> |
||||
|
</div> |
||||
|
</nav> |
||||
|
</div> |
||||
|
<!--MENU END--> |
File diff suppressed because one or more lines are too long
@ -0,0 +1,481 @@ |
|||||
|
.select2-container { |
||||
|
box-sizing: border-box; |
||||
|
display: inline-block; |
||||
|
margin: 0; |
||||
|
position: relative; |
||||
|
vertical-align: middle; } |
||||
|
.select2-container .select2-selection--single { |
||||
|
box-sizing: border-box; |
||||
|
cursor: pointer; |
||||
|
display: block; |
||||
|
height: 28px; |
||||
|
user-select: none; |
||||
|
-webkit-user-select: none; } |
||||
|
.select2-container .select2-selection--single .select2-selection__rendered { |
||||
|
display: block; |
||||
|
padding-left: 8px; |
||||
|
padding-right: 20px; |
||||
|
overflow: hidden; |
||||
|
text-overflow: ellipsis; |
||||
|
white-space: nowrap; } |
||||
|
.select2-container .select2-selection--single .select2-selection__clear { |
||||
|
position: relative; } |
||||
|
.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered { |
||||
|
padding-right: 8px; |
||||
|
padding-left: 20px; } |
||||
|
.select2-container .select2-selection--multiple { |
||||
|
box-sizing: border-box; |
||||
|
cursor: pointer; |
||||
|
display: block; |
||||
|
min-height: 32px; |
||||
|
user-select: none; |
||||
|
-webkit-user-select: none; } |
||||
|
.select2-container .select2-selection--multiple .select2-selection__rendered { |
||||
|
display: inline-block; |
||||
|
overflow: hidden; |
||||
|
padding-left: 8px; |
||||
|
text-overflow: ellipsis; |
||||
|
white-space: nowrap; } |
||||
|
.select2-container .select2-search--inline { |
||||
|
float: left; } |
||||
|
.select2-container .select2-search--inline .select2-search__field { |
||||
|
box-sizing: border-box; |
||||
|
border: none; |
||||
|
font-size: 100%; |
||||
|
margin-top: 5px; |
||||
|
padding: 0; } |
||||
|
.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button { |
||||
|
-webkit-appearance: none; } |
||||
|
|
||||
|
.select2-dropdown { |
||||
|
background-color: white; |
||||
|
border: 1px solid #aaa; |
||||
|
border-radius: 4px; |
||||
|
box-sizing: border-box; |
||||
|
display: block; |
||||
|
position: absolute; |
||||
|
left: -100000px; |
||||
|
width: 100%; |
||||
|
z-index: 1051; } |
||||
|
|
||||
|
.select2-results { |
||||
|
display: block; } |
||||
|
|
||||
|
.select2-results__options { |
||||
|
list-style: none; |
||||
|
margin: 0; |
||||
|
padding: 0; } |
||||
|
|
||||
|
.select2-results__option { |
||||
|
padding: 6px; |
||||
|
user-select: none; |
||||
|
-webkit-user-select: none; } |
||||
|
.select2-results__option[aria-selected] { |
||||
|
cursor: pointer; } |
||||
|
|
||||
|
.select2-container--open .select2-dropdown { |
||||
|
left: 0; } |
||||
|
|
||||
|
.select2-container--open .select2-dropdown--above { |
||||
|
border-bottom: none; |
||||
|
border-bottom-left-radius: 0; |
||||
|
border-bottom-right-radius: 0; } |
||||
|
|
||||
|
.select2-container--open .select2-dropdown--below { |
||||
|
border-top: none; |
||||
|
border-top-left-radius: 0; |
||||
|
border-top-right-radius: 0; } |
||||
|
|
||||
|
.select2-search--dropdown { |
||||
|
display: block; |
||||
|
padding: 4px; } |
||||
|
.select2-search--dropdown .select2-search__field { |
||||
|
padding: 4px; |
||||
|
width: 100%; |
||||
|
box-sizing: border-box; } |
||||
|
.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button { |
||||
|
-webkit-appearance: none; } |
||||
|
.select2-search--dropdown.select2-search--hide { |
||||
|
display: none; } |
||||
|
|
||||
|
.select2-close-mask { |
||||
|
border: 0; |
||||
|
margin: 0; |
||||
|
padding: 0; |
||||
|
display: block; |
||||
|
position: fixed; |
||||
|
left: 0; |
||||
|
top: 0; |
||||
|
min-height: 100%; |
||||
|
min-width: 100%; |
||||
|
height: auto; |
||||
|
width: auto; |
||||
|
opacity: 0; |
||||
|
z-index: 99; |
||||
|
background-color: #fff; |
||||
|
filter: alpha(opacity=0); } |
||||
|
|
||||
|
.select2-hidden-accessible { |
||||
|
border: 0 !important; |
||||
|
clip: rect(0 0 0 0) !important; |
||||
|
-webkit-clip-path: inset(50%) !important; |
||||
|
clip-path: inset(50%) !important; |
||||
|
height: 1px !important; |
||||
|
overflow: hidden !important; |
||||
|
padding: 0 !important; |
||||
|
position: absolute !important; |
||||
|
width: 1px !important; |
||||
|
white-space: nowrap !important; } |
||||
|
|
||||
|
.select2-container--default .select2-selection--single { |
||||
|
background-color: #fff; |
||||
|
border: 1px solid #aaa; |
||||
|
border-radius: 4px; } |
||||
|
.select2-container--default .select2-selection--single .select2-selection__rendered { |
||||
|
color: #444; |
||||
|
line-height: 28px; } |
||||
|
.select2-container--default .select2-selection--single .select2-selection__clear { |
||||
|
cursor: pointer; |
||||
|
float: right; |
||||
|
font-weight: bold; } |
||||
|
.select2-container--default .select2-selection--single .select2-selection__placeholder { |
||||
|
color: #999; } |
||||
|
.select2-container--default .select2-selection--single .select2-selection__arrow { |
||||
|
height: 26px; |
||||
|
position: absolute; |
||||
|
top: 1px; |
||||
|
right: 1px; |
||||
|
width: 20px; } |
||||
|
.select2-container--default .select2-selection--single .select2-selection__arrow b { |
||||
|
border-color: #888 transparent transparent transparent; |
||||
|
border-style: solid; |
||||
|
border-width: 5px 4px 0 4px; |
||||
|
height: 0; |
||||
|
left: 50%; |
||||
|
margin-left: -4px; |
||||
|
margin-top: -2px; |
||||
|
position: absolute; |
||||
|
top: 50%; |
||||
|
width: 0; } |
||||
|
|
||||
|
.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear { |
||||
|
float: left; } |
||||
|
|
||||
|
.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow { |
||||
|
left: 1px; |
||||
|
right: auto; } |
||||
|
|
||||
|
.select2-container--default.select2-container--disabled .select2-selection--single { |
||||
|
background-color: #eee; |
||||
|
cursor: default; } |
||||
|
.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear { |
||||
|
display: none; } |
||||
|
|
||||
|
.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b { |
||||
|
border-color: transparent transparent #888 transparent; |
||||
|
border-width: 0 4px 5px 4px; } |
||||
|
|
||||
|
.select2-container--default .select2-selection--multiple { |
||||
|
background-color: white; |
||||
|
border: 1px solid #aaa; |
||||
|
border-radius: 4px; |
||||
|
cursor: text; } |
||||
|
.select2-container--default .select2-selection--multiple .select2-selection__rendered { |
||||
|
box-sizing: border-box; |
||||
|
list-style: none; |
||||
|
margin: 0; |
||||
|
padding: 0 5px; |
||||
|
width: 100%; } |
||||
|
.select2-container--default .select2-selection--multiple .select2-selection__rendered li { |
||||
|
list-style: none; } |
||||
|
.select2-container--default .select2-selection--multiple .select2-selection__clear { |
||||
|
cursor: pointer; |
||||
|
float: right; |
||||
|
font-weight: bold; |
||||
|
margin-top: 5px; |
||||
|
margin-right: 10px; |
||||
|
padding: 1px; } |
||||
|
.select2-container--default .select2-selection--multiple .select2-selection__choice { |
||||
|
background-color: #e4e4e4; |
||||
|
border: 1px solid #aaa; |
||||
|
border-radius: 4px; |
||||
|
cursor: default; |
||||
|
float: left; |
||||
|
margin-right: 5px; |
||||
|
margin-top: 5px; |
||||
|
padding: 0 5px; } |
||||
|
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove { |
||||
|
color: #999; |
||||
|
cursor: pointer; |
||||
|
display: inline-block; |
||||
|
font-weight: bold; |
||||
|
margin-right: 2px; } |
||||
|
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover { |
||||
|
color: #333; } |
||||
|
|
||||
|
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline { |
||||
|
float: right; } |
||||
|
|
||||
|
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice { |
||||
|
margin-left: 5px; |
||||
|
margin-right: auto; } |
||||
|
|
||||
|
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { |
||||
|
margin-left: 2px; |
||||
|
margin-right: auto; } |
||||
|
|
||||
|
.select2-container--default.select2-container--focus .select2-selection--multiple { |
||||
|
border: solid black 1px; |
||||
|
outline: 0; } |
||||
|
|
||||
|
.select2-container--default.select2-container--disabled .select2-selection--multiple { |
||||
|
background-color: #eee; |
||||
|
cursor: default; } |
||||
|
|
||||
|
.select2-container--default.select2-container--disabled .select2-selection__choice__remove { |
||||
|
display: none; } |
||||
|
|
||||
|
.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple { |
||||
|
border-top-left-radius: 0; |
||||
|
border-top-right-radius: 0; } |
||||
|
|
||||
|
.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple { |
||||
|
border-bottom-left-radius: 0; |
||||
|
border-bottom-right-radius: 0; } |
||||
|
|
||||
|
.select2-container--default .select2-search--dropdown .select2-search__field { |
||||
|
border: 1px solid #aaa; } |
||||
|
|
||||
|
.select2-container--default .select2-search--inline .select2-search__field { |
||||
|
background: transparent; |
||||
|
border: none; |
||||
|
outline: 0; |
||||
|
box-shadow: none; |
||||
|
-webkit-appearance: textfield; } |
||||
|
|
||||
|
.select2-container--default .select2-results > .select2-results__options { |
||||
|
max-height: 200px; |
||||
|
overflow-y: auto; } |
||||
|
|
||||
|
.select2-container--default .select2-results__option[role=group] { |
||||
|
padding: 0; } |
||||
|
|
||||
|
.select2-container--default .select2-results__option[aria-disabled=true] { |
||||
|
color: #999; } |
||||
|
|
||||
|
.select2-container--default .select2-results__option[aria-selected=true] { |
||||
|
background-color: #ddd; } |
||||
|
|
||||
|
.select2-container--default .select2-results__option .select2-results__option { |
||||
|
padding-left: 1em; } |
||||
|
.select2-container--default .select2-results__option .select2-results__option .select2-results__group { |
||||
|
padding-left: 0; } |
||||
|
.select2-container--default .select2-results__option .select2-results__option .select2-results__option { |
||||
|
margin-left: -1em; |
||||
|
padding-left: 2em; } |
||||
|
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option { |
||||
|
margin-left: -2em; |
||||
|
padding-left: 3em; } |
||||
|
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { |
||||
|
margin-left: -3em; |
||||
|
padding-left: 4em; } |
||||
|
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { |
||||
|
margin-left: -4em; |
||||
|
padding-left: 5em; } |
||||
|
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option { |
||||
|
margin-left: -5em; |
||||
|
padding-left: 6em; } |
||||
|
|
||||
|
.select2-container--default .select2-results__option--highlighted[aria-selected] { |
||||
|
background-color: #5897fb; |
||||
|
color: white; } |
||||
|
|
||||
|
.select2-container--default .select2-results__group { |
||||
|
cursor: default; |
||||
|
display: block; |
||||
|
padding: 6px; } |
||||
|
|
||||
|
.select2-container--classic .select2-selection--single { |
||||
|
background-color: #f7f7f7; |
||||
|
border: 1px solid #aaa; |
||||
|
border-radius: 4px; |
||||
|
outline: 0; |
||||
|
background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%); |
||||
|
background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%); |
||||
|
background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%); |
||||
|
background-repeat: repeat-x; |
||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } |
||||
|
.select2-container--classic .select2-selection--single:focus { |
||||
|
border: 1px solid #5897fb; } |
||||
|
.select2-container--classic .select2-selection--single .select2-selection__rendered { |
||||
|
color: #444; |
||||
|
line-height: 28px; } |
||||
|
.select2-container--classic .select2-selection--single .select2-selection__clear { |
||||
|
cursor: pointer; |
||||
|
float: right; |
||||
|
font-weight: bold; |
||||
|
margin-right: 10px; } |
||||
|
.select2-container--classic .select2-selection--single .select2-selection__placeholder { |
||||
|
color: #999; } |
||||
|
.select2-container--classic .select2-selection--single .select2-selection__arrow { |
||||
|
background-color: #ddd; |
||||
|
border: none; |
||||
|
border-left: 1px solid #aaa; |
||||
|
border-top-right-radius: 4px; |
||||
|
border-bottom-right-radius: 4px; |
||||
|
height: 26px; |
||||
|
position: absolute; |
||||
|
top: 1px; |
||||
|
right: 1px; |
||||
|
width: 20px; |
||||
|
background-image: -webkit-linear-gradient(top, #eeeeee 50%, #cccccc 100%); |
||||
|
background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%); |
||||
|
background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%); |
||||
|
background-repeat: repeat-x; |
||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); } |
||||
|
.select2-container--classic .select2-selection--single .select2-selection__arrow b { |
||||
|
border-color: #888 transparent transparent transparent; |
||||
|
border-style: solid; |
||||
|
border-width: 5px 4px 0 4px; |
||||
|
height: 0; |
||||
|
left: 50%; |
||||
|
margin-left: -4px; |
||||
|
margin-top: -2px; |
||||
|
position: absolute; |
||||
|
top: 50%; |
||||
|
width: 0; } |
||||
|
|
||||
|
.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear { |
||||
|
float: left; } |
||||
|
|
||||
|
.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow { |
||||
|
border: none; |
||||
|
border-right: 1px solid #aaa; |
||||
|
border-radius: 0; |
||||
|
border-top-left-radius: 4px; |
||||
|
border-bottom-left-radius: 4px; |
||||
|
left: 1px; |
||||
|
right: auto; } |
||||
|
|
||||
|
.select2-container--classic.select2-container--open .select2-selection--single { |
||||
|
border: 1px solid #5897fb; } |
||||
|
.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow { |
||||
|
background: transparent; |
||||
|
border: none; } |
||||
|
.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b { |
||||
|
border-color: transparent transparent #888 transparent; |
||||
|
border-width: 0 4px 5px 4px; } |
||||
|
|
||||
|
.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single { |
||||
|
border-top: none; |
||||
|
border-top-left-radius: 0; |
||||
|
border-top-right-radius: 0; |
||||
|
background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%); |
||||
|
background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%); |
||||
|
background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%); |
||||
|
background-repeat: repeat-x; |
||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); } |
||||
|
|
||||
|
.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single { |
||||
|
border-bottom: none; |
||||
|
border-bottom-left-radius: 0; |
||||
|
border-bottom-right-radius: 0; |
||||
|
background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%); |
||||
|
background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%); |
||||
|
background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%); |
||||
|
background-repeat: repeat-x; |
||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); } |
||||
|
|
||||
|
.select2-container--classic .select2-selection--multiple { |
||||
|
background-color: white; |
||||
|
border: 1px solid #aaa; |
||||
|
border-radius: 4px; |
||||
|
cursor: text; |
||||
|
outline: 0; } |
||||
|
.select2-container--classic .select2-selection--multiple:focus { |
||||
|
border: 1px solid #5897fb; } |
||||
|
.select2-container--classic .select2-selection--multiple .select2-selection__rendered { |
||||
|
list-style: none; |
||||
|
margin: 0; |
||||
|
padding: 0 5px; } |
||||
|
.select2-container--classic .select2-selection--multiple .select2-selection__clear { |
||||
|
display: none; } |
||||
|
.select2-container--classic .select2-selection--multiple .select2-selection__choice { |
||||
|
background-color: #e4e4e4; |
||||
|
border: 1px solid #aaa; |
||||
|
border-radius: 4px; |
||||
|
cursor: default; |
||||
|
float: left; |
||||
|
margin-right: 5px; |
||||
|
margin-top: 5px; |
||||
|
padding: 0 5px; } |
||||
|
.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove { |
||||
|
color: #888; |
||||
|
cursor: pointer; |
||||
|
display: inline-block; |
||||
|
font-weight: bold; |
||||
|
margin-right: 2px; } |
||||
|
.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover { |
||||
|
color: #555; } |
||||
|
|
||||
|
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice { |
||||
|
float: right; |
||||
|
margin-left: 5px; |
||||
|
margin-right: auto; } |
||||
|
|
||||
|
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove { |
||||
|
margin-left: 2px; |
||||
|
margin-right: auto; } |
||||
|
|
||||
|
.select2-container--classic.select2-container--open .select2-selection--multiple { |
||||
|
border: 1px solid #5897fb; } |
||||
|
|
||||
|
.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple { |
||||
|
border-top: none; |
||||
|
border-top-left-radius: 0; |
||||
|
border-top-right-radius: 0; } |
||||
|
|
||||
|
.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple { |
||||
|
border-bottom: none; |
||||
|
border-bottom-left-radius: 0; |
||||
|
border-bottom-right-radius: 0; } |
||||
|
|
||||
|
.select2-container--classic .select2-search--dropdown .select2-search__field { |
||||
|
border: 1px solid #aaa; |
||||
|
outline: 0; } |
||||
|
|
||||
|
.select2-container--classic .select2-search--inline .select2-search__field { |
||||
|
outline: 0; |
||||
|
box-shadow: none; } |
||||
|
|
||||
|
.select2-container--classic .select2-dropdown { |
||||
|
background-color: white; |
||||
|
border: 1px solid transparent; } |
||||
|
|
||||
|
.select2-container--classic .select2-dropdown--above { |
||||
|
border-bottom: none; } |
||||
|
|
||||
|
.select2-container--classic .select2-dropdown--below { |
||||
|
border-top: none; } |
||||
|
|
||||
|
.select2-container--classic .select2-results > .select2-results__options { |
||||
|
max-height: 200px; |
||||
|
overflow-y: auto; } |
||||
|
|
||||
|
.select2-container--classic .select2-results__option[role=group] { |
||||
|
padding: 0; } |
||||
|
|
||||
|
.select2-container--classic .select2-results__option[aria-disabled=true] { |
||||
|
color: grey; } |
||||
|
|
||||
|
.select2-container--classic .select2-results__option--highlighted[aria-selected] { |
||||
|
background-color: #3875d7; |
||||
|
color: white; } |
||||
|
|
||||
|
.select2-container--classic .select2-results__group { |
||||
|
cursor: default; |
||||
|
display: block; |
||||
|
padding: 6px; } |
||||
|
|
||||
|
.select2-container--classic.select2-container--open .select2-dropdown { |
||||
|
border-color: #5897fb; } |
File diff suppressed because one or more lines are too long
@ -0,0 +1,3 @@ |
|||||
|
/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ |
||||
|
|
||||
|
!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/af",[],function(){return{errorLoading:function(){return"Die resultate kon nie gelaai word nie."},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Verwyders asseblief "+n+" character";return 1!=n&&(r+="s"),r},inputTooShort:function(e){return"Voer asseblief "+(e.minimum-e.input.length)+" of meer karakters"},loadingMore:function(){return"Meer resultate word gelaai…"},maximumSelected:function(e){var n="Kies asseblief net "+e.maximum+" item";return 1!=e.maximum&&(n+="s"),n},noResults:function(){return"Geen resultate gevind"},searching:function(){return"Besig…"},removeAllItems:function(){return"Verwyder alle items"}}}),e.define,e.require}(); |
@ -0,0 +1,3 @@ |
|||||
|
/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ |
||||
|
|
||||
|
!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/ar",[],function(){return{errorLoading:function(){return"لا يمكن تحميل النتائج"},inputTooLong:function(n){return"الرجاء حذف "+(n.input.length-n.maximum)+" عناصر"},inputTooShort:function(n){return"الرجاء إضافة "+(n.minimum-n.input.length)+" عناصر"},loadingMore:function(){return"جاري تحميل نتائج إضافية..."},maximumSelected:function(n){return"تستطيع إختيار "+n.maximum+" بنود فقط"},noResults:function(){return"لم يتم العثور على أي نتائج"},searching:function(){return"جاري البحث…"},removeAllItems:function(){return"قم بإزالة كل العناصر"}}}),n.define,n.require}(); |
@ -0,0 +1,3 @@ |
|||||
|
/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ |
||||
|
|
||||
|
!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/az",[],function(){return{inputTooLong:function(n){return n.input.length-n.maximum+" simvol silin"},inputTooShort:function(n){return n.minimum-n.input.length+" simvol daxil edin"},loadingMore:function(){return"Daha çox nəticə yüklənir…"},maximumSelected:function(n){return"Sadəcə "+n.maximum+" element seçə bilərsiniz"},noResults:function(){return"Nəticə tapılmadı"},searching:function(){return"Axtarılır…"},removeAllItems:function(){return"Bütün elementləri sil"}}}),n.define,n.require}(); |
@ -0,0 +1,3 @@ |
|||||
|
/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ |
||||
|
|
||||
|
!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/bg",[],function(){return{inputTooLong:function(n){var e=n.input.length-n.maximum,u="Моля въведете с "+e+" по-малко символ";return e>1&&(u+="a"),u},inputTooShort:function(n){var e=n.minimum-n.input.length,u="Моля въведете още "+e+" символ";return e>1&&(u+="a"),u},loadingMore:function(){return"Зареждат се още…"},maximumSelected:function(n){var e="Можете да направите до "+n.maximum+" ";return n.maximum>1?e+="избора":e+="избор",e},noResults:function(){return"Няма намерени съвпадения"},searching:function(){return"Търсене…"},removeAllItems:function(){return"Премахнете всички елементи"}}}),n.define,n.require}(); |
@ -0,0 +1,3 @@ |
|||||
|
/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ |
||||
|
|
||||
|
!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var n=jQuery.fn.select2.amd;n.define("select2/i18n/bn",[],function(){return{errorLoading:function(){return"ফলাফলগুলি লোড করা যায়নি।"},inputTooLong:function(n){var e=n.input.length-n.maximum,u="অনুগ্রহ করে "+e+" টি অক্ষর মুছে দিন।";return 1!=e&&(u="অনুগ্রহ করে "+e+" টি অক্ষর মুছে দিন।"),u},inputTooShort:function(n){return n.minimum-n.input.length+" টি অক্ষর অথবা অধিক অক্ষর লিখুন।"},loadingMore:function(){return"আরো ফলাফল লোড হচ্ছে ..."},maximumSelected:function(n){var e=n.maximum+" টি আইটেম নির্বাচন করতে পারবেন।";return 1!=n.maximum&&(e=n.maximum+" টি আইটেম নির্বাচন করতে পারবেন।"),e},noResults:function(){return"কোন ফলাফল পাওয়া যায়নি।"},searching:function(){return"অনুসন্ধান করা হচ্ছে ..."}}}),n.define,n.require}(); |
@ -0,0 +1,3 @@ |
|||||
|
/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ |
||||
|
|
||||
|
!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/bs",[],function(){function e(e,n,r,t){return e%10==1&&e%100!=11?n:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?r:t}return{errorLoading:function(){return"Preuzimanje nije uspijelo."},inputTooLong:function(n){var r=n.input.length-n.maximum,t="Obrišite "+r+" simbol";return t+=e(r,"","a","a")},inputTooShort:function(n){var r=n.minimum-n.input.length,t="Ukucajte bar još "+r+" simbol";return t+=e(r,"","a","a")},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(n){var r="Možete izabrati samo "+n.maximum+" stavk";return r+=e(n.maximum,"u","e","i")},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"},removeAllItems:function(){return"Uklonite sve stavke"}}}),e.define,e.require}(); |
@ -0,0 +1,3 @@ |
|||||
|
/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ |
||||
|
|
||||
|
!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(e){var n=e.input.length-e.maximum,r="Si us plau, elimina "+n+" car";return r+=1==n?"àcter":"àcters"},inputTooShort:function(e){var n=e.minimum-e.input.length,r="Si us plau, introdueix "+n+" car";return r+=1==n?"àcter":"àcters"},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(e){var n="Només es pot seleccionar "+e.maximum+" element";return 1!=e.maximum&&(n+="s"),n},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"},removeAllItems:function(){return"Treu tots els elements"}}}),e.define,e.require}(); |
@ -0,0 +1,3 @@ |
|||||
|
/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */ |
||||
|
|
||||
|
!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/cs",[],function(){function e(e,n){switch(e){case 2:return n?"dva":"dvě";case 3:return"tři";case 4:return"čtyři"}return""}return{errorLoading:function(){return"Výsledky nemohly být načteny."},inputTooLong:function(n){var t=n.input.length-n.maximum;return 1==t?"Prosím, zadejte o jeden znak méně.":t<=4?"Prosím, zadejte o "+e(t,!0)+" znaky méně.":"Prosím, zadejte o "+t+" znaků méně."},inputTooShort:function(n){var t=n.minimum-n.input.length;return 1==t?"Prosím, zadejte ještě jeden znak.":t<=4?"Prosím, zadejte ještě další "+e(t,!0)+" znaky.":"Prosím, zadejte ještě dalších "+t+" znaků."},loadingMore:function(){return"Načítají se další výsledky…"},maximumSelected:function(n){var t=n.maximum;return 1==t?"Můžete zvolit jen jednu položku.":t<=4?"Můžete zvolit maximálně "+e(t,!1)+" položky.":"Můžete zvolit maximálně "+t+" položek."},noResults:function(){return"Nenalezeny žádné položky."},searching:function(){return"Vyhledávání…"},removeAllItems:function(){return"Odstraňte všechny položky"}}}),e.define,e.require}(); |
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue