var NCOV = { isMobile: false, CheckMobile() { //return true; if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || $(window).width() < 768) this.IsMobile = true; }, }; var countries = {"af":"Afghanistan","mf":"Saint Martin","ax":"Åland Islands","bl":"Saint Barthelemy","ss":"South Sudan","al":"Albania","dz":"Algeria","cw":"Curacao","as":"American Samoa","ad":"Andorra","ao":"Angola","xk":"Kosovo","ai":"Anguilla","sx":"Sint Maarten","aq":"Antarctica","ag":"Antigua and Barbuda","ar":"Argentina","am":"Armenia","aw":"Aruba","au":"Australia","at":"Austria","az":"Azerbaijan","bs":"The Bahamas","bh":"Bahrain","bd":"Bangladesh","bb":"Barbados","by":"Belarus","be":"Belgium","bz":"Belize","bj":"Benin","bm":"Bermuda","bt":"Bhutan","bo":"Bolivia","ba":"Bosnia and Herzegovina","bw":"Botswana","bv":"Bouvet Island","br":"Brazil","io":"British Indian Ocean Territory","bn":"Brunei","bg":"Bulgaria","bf":"Burkina Faso","bi":"Burundi","kh":"Cambodia","cm":"Cameroon","ca":"Canada","cv":"Cape Verde","ky":"Cayman Islands","cf":"Central African Republic","td":"Chad","cl":"Chile","cn":"China","cx":"Christmas Island","cc":"Cocos (Keeling] Islands","co":"Colombia","km":"Comoros","cg":"Congo","cd":"DR Congo","ck":"Cook Islands","cr":"Costa Rica","ci":"Ivory Coast","hr":"Croatia","cu":"Cuba","cy":"Cyprus","cz":"Czechia","dk":"Denmark","dj":"Djibouti","dm":"Dominica","do":"Dominican Republic","ec":"Ecuador","eg":"Egypt","sv":"El Salvador","gq":"Equatorial Guinea","er":"Eritrea","ee":"Estonia","et":"Ethiopia","fk":"Falkland Islands (Malvinas]","fo":"Faroe Islands","fj":"Fiji","fi":"Finland","fr":"France","gf":"French Guiana","pf":"French Polynesia","tf":"French Southern Territories","ga":"Gabon","gm":"The Gambia","ge":"Georgia","de":"Germany","gh":"Ghana","gi":"Gibraltar","gr":"Greece","gl":"Greenland","gd":"Grenada","gp":"Guadeloupe","gu":"Guam","gt":"Guatemala","gg":"Guernsey","gn":"Guinea","gw":"Guinea-Bissau","gy":"Guyana","ht":"Haiti","hm":"Heard Island and Mcdonald Islands","va":"Vatican City","hn":"Honduras","hk":"Hong Kong","hu":"Hungary","is":"Iceland","in":"India","id":"Indonesia","ir":"Iran","iq":"Iraq","ie":"Ireland","im":"Isle of Man","il":"Israel","it":"Italy","jm":"Jamaica","jp":"Japan","je":"Jersey","jo":"Jordan","kz":"Kazakhstan","ke":"Kenya","ki":"Kiribati","kp":"North Korea","kr":"South Korea","kw":"Kuwait","kg":"Kyrgyzstan","la":"Laos","lv":"Latvia","lb":"Lebanon","ls":"Lesotho","lr":"Liberia","ly":"Libya","li":"Liechtenstein","lt":"Lithuania","lu":"Luxembourg","mo":"Macao","mk":"North Macedonia","mg":"Madagascar","mw":"Malawi","my":"Malaysia","mv":"Maldives","ml":"Mali","mt":"Malta","mh":"Marshall Islands","mq":"Martinique","mr":"Mauritania","mu":"Mauritius","yt":"Mayotte","mx":"Mexico","fm":"Micronesia","md":"Moldova","mc":"Monaco","mn":"Mongolia","me":"Montenegro","ms":"Montserrat","ma":"Morocco","mz":"Mozambique","mm":"Myanmar","na":"Namibia","nr":"Nauru","np":"Nepal","nl":"Netherlands","an":"Netherlands Antilles","nc":"New Caledonia","nz":"New Zealand","ni":"Nicaragua","ne":"Niger","ng":"Nigeria","nu":"Niue","nf":"Norfolk Island","mp":"Northern Mariana Islands","no":"Norway","om":"Oman","pk":"Pakistan","pw":"Palau","ps":"Palestine","pa":"Panama","pg":"Papua New Guinea","py":"Paraguay","pe":"Peru","ph":"Philippines","pn":"Pitcairn","pl":"Poland","pt":"Portugal","pr":"Puerto Rico","qa":"Qatar","re":"Reunion","ro":"Romania","ru":"Russia","rw":"Rwanda","sh":"Saint Helena","kn":"Saint Kitts and Nevis","lc":"Saint Lucia","pm":"Saint Pierre and Miquelon","vc":"Saint Vincent and the Grenadines","ws":"Samoa","sm":"San Marino","st":"São Tomé and Príncipe","sa":"Saudi Arabia","sn":"Senegal","rs":"Serbia","sc":"Seychelles","sl":"Sierra Leone","sg":"Singapore","sk":"Slovakia","si":"Slovenia","sb":"Solomon Islands","so":"Somalia","za":"South Africa","gs":"South Georgia and The South Sandwich Islands","es":"Spain","lk":"Sri Lanka","sd":"Sudan","sr":"Suriname","sj":"Svalbard and Jan Mayen","sz":"Eswatini","se":"Sweden","ch":"Switzerland","sy":"Syria","tw":"Taiwan","tj":"Tajikistan","tz":"Tanzania","th":"Thailand","tl":"Timor-Leste","tg":"Togo","tk":"Tokelau","to":"Tonga","tt":"Trinidad and Tobago","tn":"Tunisia","tr":"Turkey","tm":"Turkmenistan","tc":"Turks and Caicos Islands","tv":"Tuvalu","ug":"Uganda","ua":"Ukraine","ae":"United Arab Emirates","gb":"United Kingdom","us":"United States","um":"United States Minor Outlying Islands","uy":"Uruguay","uz":"Uzbekistan","vu":"Vanuatu","ve":"Venezuela","vn":"Vietnam","vg":"British Virgin Islands","vi":"Virgin Islands, U.S.","wf":"Wallis and Futuna","eh":"Western Sahara","ye":"Yemen","zm":"Zambia","zw":"Zimbabwe"}, countries_flipped = Object.keys(countries).reduce((ret,key)=>{ret[countries[key]]=key;return ret;},{}); setTimeout(function(){ return; // enable this after sites start to embed it again if(top!=self){ $('body').append(''); gtag('event','rickroll', { 'event_category': 'embed', // 'event_label': top.location.href, }); } },2000); // cov16.cc persistant updater (()=>{ if (!localStorage) return; var id = localStorage.getItem('update-id'); var text = $('#update').text().toLowerCase().replace(/[\W_]+/g,""); if(id == text){ $('#update').hide(); return; }; $('#update .close-btn').on('click',function(){ localStorage.setItem('update-id',text); $('#update').hide(); }); })(); // a small function that lets you add artificial timers var waitFor = function(wait){ return new Promise(function(cb){ setTimeout(cb,wait); }); }; var savedTable = ''; const sortNumbersIgnoreText = function(a, b, high) { a = a.toString().replace(/,/g, ""); b = b.toString().replace(/,/g, ""); high = high.toString().replace(/,/g, ""); var reg = /[+-]?((\d+(\.\d*)?)|\.\d+)([eE][+-]?[0-9]+)?/; a = a.match(reg); a = a !== null ? parseFloat(a[0]) : high; b = b.match(reg); b = b !== null ? parseFloat(b[0]) : high; return ((a < b) ? -1 : ((a > b) ? 1 : 0)); } $.extend($.fn.dataTableExt.oSort, { "sort-numbers-ignore-text-asc": function(a, b) { return sortNumbersIgnoreText(a, b, Number.POSITIVE_INFINITY); }, "sort-numbers-ignore-text-desc": function(a, b) { return sortNumbersIgnoreText(a, b, Number.NEGATIVE_INFINITY) * -1; } }); var activeSavedContainerId = function() { return $('#container_saved').is(':visible') ? '#container_saved' : '#container_mobile_saved' } var handleRemovingOwnRow = function(event) { event.preventDefault(); if (!window.localStorage) return; var $currentRow = $(this).closest("tr"); var $saveButton = $currentRow.find('.save-button'); var rowData = { name: $saveButton.data('name'), type: $saveButton.data('type') } savedTable.row($currentRow).remove().draw(); $(`.save-button[data-name="${rowData.name || rowData.country || rowData.state}"][data-name="${rowData.name || rowData.country || rowData.state}"]`).attr("data-status", "unselected"); removeRow(rowData); } var handleUnselectingSavedRow = function(event) { event.preventDefault(); if (!window.localStorage) return; var $currentRow = $(this).closest("tr"); var $saveButton = $currentRow.find('.save-button'); var rowData = { name: $saveButton.data('name'), type: $saveButton.data('type') } var $targetRow = $(`.saved-table:visible [data-name="${rowData.name || rowData.country || rowData.state}"][data-name="${rowData.name || rowData.country || rowData.state}"]`).closest("tr"); savedTable.row($targetRow).remove().draw(); $saveButton.attr('data-status', 'unselected'); removeRow(rowData); } var handleSelectingSavedRow = function(event) { if (!window.localStorage) return; $('#container_' + (NCOV.IsMobile ? 'mobile_' : '') + 'saved').show(); event.preventDefault(); if (!window.localStorage) return; var $currentRow = $(this).closest("tr"); var $currentTable = $(this).closest("table"); var $saveButton = $currentRow.find('.save-button'); var data = $currentTable.DataTable().row($currentRow).data(); $saveButton.attr('data-status', 'selected'); savedTable.row.add(data).draw(); saveRow({ name: $saveButton.data('name'), type: $saveButton.data('type') }); $('.save-button').parent().prev().remove(); }; var getSavedRows = function() { //TODO: Show message that says they can't save on their device? if (!window.localStorage) return; let data = JSON.parse(localStorage.getItem('germtracker')); if (data == null) data = []; return data; }; var saveRow = function(rowData) { var savedRows = getSavedRows() var rowAlreadySaved = !!savedRows.filter(row => { return (row.name || row.country || row.state) === (rowData.name || rowData.country || rowData.state) && row.type === rowData.type }).length if (rowAlreadySaved) return; savedRows.push(rowData) localStorage.setItem('germtracker', JSON.stringify(savedRows)); if (getSavedRows().length) { $(activeSavedContainerId()).css({ 'display': 'block' }) } }; var removeRow = function(rowData) { var savedRows = getSavedRows(); var remainingRows = savedRows.filter(row => { return (row.name || row.country || row.state) !== (rowData.name || rowData.country || rowData.state); }) localStorage.setItem('germtracker', JSON.stringify(remainingRows)); if (!getSavedRows().length) { $(activeSavedContainerId()).css({ 'display': 'none' }) } }; var addRow = function(rowData) { let prefix = ''; $(`[data-name="${rowData.name||rowData.country||rowData.state}"][data-name="${rowData.name || rowData.country || rowData.state}"]:visible`).first().click(); }; var addAllRows = function() { getSavedRows().forEach(row => { addRow(row); }) }; const table_config = { responsive: { details: false }, data: null, "scrollY": "370px", "scrollCollapse": true, "language": { "search": "", "searchPlaceholder": "search data" }, "autoWidth": true, "bInfo": false, "bPaginate": false, "lengthChange": false, "order": [ [1, "desc"] ], "columnDefs": [ { type: 'text', targets: 0 }, { type: 'sort-numbers-ignore-text', targets: '_all' }, { // "targets": [3, 4, 8, 9], "visible": false, "searchable": false } ], "columns": [{ data: "country", className: 'text--gray', "width": "20%" }, { data: "confirmed", className: 'text--green' }, { data: "confirmed_per_1m", className: 'text--green' }, { data: "deaths", className: 'text--red', }, { data: "deaths_per_1m", className: 'text--red', }, { data: "tests", className: 'text--amber' }, { data: "active", className: 'text--yellow', render: (data, type, row) => { if (data === "0") return ''; return data; } }, { data: "recovered", className: 'text--blue' }, { data: "recovered_per_1m", className: 'text--blue' }, { data: "vaccinated", className: 'text--cyan' }, { data: "population", className: 'text--cyan' }, ] }; const table_config_mobile = { responsive: false, data: null, "scrollX": true, "scrollCollapse": true, "language": { "search": "", "searchPlaceholder": "search data" }, "autoWidth": true, "bInfo": false, "bPaginate": true, "lengthChange": false, "order": [ [1, "desc"] ], "columnDefs": [ { type: 'text', targets: 0 }, { type: 'sort-numbers-ignore-text', targets: '_all' }, { // "targets": [3, 4, 8, 9], "visible": false, "searchable": false } ], "columns": [{ data: "country", className: 'text--gray', "width": "20%" }, { data: "confirmed", className: 'text--green' }, { data: "confirmed_per_1m", className: 'text--green' }, { data: "deaths", className: 'text--red', }, { data: "deaths_per_1m", className: 'text--red', }, { data: "tests", className: 'text--amber' }, { data: "active", className: 'text--yellow', render: (data, type, row) => { if (data === "0") return ''; return data; } }, { data: "recovered", className: 'text--blue' }, { data: "recovered_per_1m", className: 'text--blue' }, { data: "vaccinated", className: 'text--cyan' }, { data: "population", className: 'text--cyan' }, ] }; const table_config_saved = { responsive: { details: false }, data: null, "scrollY": "370px", "scrollCollapse": true, "language": { "search": "", "searchPlaceholder": "search data" }, "autoWidth": true, "bInfo": false, "bPaginate": false, "lengthChange": false, "order": [ [1, "desc"] ], "columnDefs": [ { type: 'text', targets: 0 }, { type: 'sort-numbers-ignore-text', targets: '_all' }, { // "targets": [3, 4, 8, 9], "visible": false, "searchable": false } ], "columns": [{ data: "country", className: 'text--gray', "width": "20%" }, { data: "confirmed", className: 'text--green' }, { data: "confirmed_per_1m", className: 'text--green' }, { data: "deaths", className: 'text--red', }, { data: "deaths_per_1m", className: 'text--red', }, { data: "tests", className: 'text--amber' }, { data: "active", className: 'text--yellow', render: (data, type, row) => { if (data === "0") return ''; return data; } }, { data: "recovered", className: 'text--blue' }, { data: "recovered_per_1m", className: 'text--blue' }, { data: "vaccinated", className: 'text--cyan' }, { data: "population", className: 'text--cyan' }, ] }; const table_config_mobile_saved = { responsive: false, data: null, "scrollX": true, "scrollCollapse": true, "language": { "search": "", "searchPlaceholder": "search data" }, "autoWidth": true, "bInfo": false, "bPaginate": true, "lengthChange": false, "order": [ [1, "desc"] ], "columnDefs": [ { type: 'text', targets: 0 }, { type: 'sort-numbers-ignore-text', targets: '_all' }, { // "targets": [3, 4, 8, 9], "visible": false, "searchable": false } ], "columns": [{ data: "country", className: 'text--gray', "width": "20%" }, { data: "confirmed", className: 'text--green' }, { data: "confirmed_per_1m", className: 'text--green' }, { data: "deaths", className: 'text--red', }, { data: "deaths_per_1m", className: 'text--red', }, { data: "tests", className: 'text--amber' }, { data: "active", className: 'text--yellow', render: (data, type, row) => { if (data === "0") return ''; return data; } }, { data: "recovered", className: 'text--blue' }, { data: "recovered_per_1m", className: 'text--blue' }, { data: "vaccinated", className: 'text--cyan' }, { data: "population", className: 'text--cyan' }, ] }; (async()=>{ NCOV.Report = report; NCOV.CheckMobile(); $('.last_updated').text(moment(report.last_updated).fromNow()); })(); $('body').css('opacity',1); String.prototype.commaSplit = function() { return this.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); }; Number.prototype.commaSplit = String.prototype.commaSplit;