├── readme_images ├── logo.png ├── Screenshot from 2023-05-28 17-11-35.png ├── Screenshot from 2023-05-28 17-12-25.png ├── Screenshot from 2023-05-28 17-12-42.png └── Screenshot from 2023-05-28 17-12-50.png ├── images ├── up.svg ├── down.svg ├── cough.svg ├── tired.svg ├── fever.svg └── runny_nose.svg ├── LICENSE ├── README.md ├── css ├── datatables.min.css └── style.css ├── helplines.html ├── js ├── main.js ├── jquery.floatThead.min.js ├── d3-scale-chromatic.v1.min.js └── bootstrap.min.js ├── info.html └── index.html /readme_images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamrohitsuthar/gocoronago/HEAD/readme_images/logo.png -------------------------------------------------------------------------------- /readme_images/Screenshot from 2023-05-28 17-11-35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamrohitsuthar/gocoronago/HEAD/readme_images/Screenshot from 2023-05-28 17-11-35.png -------------------------------------------------------------------------------- /readme_images/Screenshot from 2023-05-28 17-12-25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamrohitsuthar/gocoronago/HEAD/readme_images/Screenshot from 2023-05-28 17-12-25.png -------------------------------------------------------------------------------- /readme_images/Screenshot from 2023-05-28 17-12-42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamrohitsuthar/gocoronago/HEAD/readme_images/Screenshot from 2023-05-28 17-12-42.png -------------------------------------------------------------------------------- /readme_images/Screenshot from 2023-05-28 17-12-50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamrohitsuthar/gocoronago/HEAD/readme_images/Screenshot from 2023-05-28 17-12-50.png -------------------------------------------------------------------------------- /images/up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /images/down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Rohit Suthar 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

4 | 5 | 6 | 7 |

8 | 9 | # gocoronago - COVID-19 Tracker 10 | GocoronaGo website shows the latest COVID-19 stats in india (Check Site) 11 | 12 | ## Screenshots 13 | 14 | 15 | 16 | 19 | 22 | 23 | 24 | 27 | 30 | 31 |
17 | 18 | 20 | 21 |
25 | 26 | 28 | 29 |
32 | 33 | 34 | ### Collaborate with us! 35 | Want to contribute? Great!
36 | 37 | To fix a bug or enhance an existing module, follow these steps: 38 | 39 | - Fork the repo 40 | - Create a new branch (`git checkout -b improve-feature`) 41 | - Make the appropriate changes in the files 42 | - Add changes to reflect the changes made 43 | - Commit your changes (`git commit -am 'Improve feature'`) 44 | - Push to the branch (`git push origin improve-feature`) 45 | - Create a Pull Request 46 | 47 | 48 | ### Bug / Feature Request 49 | 50 | If you find a bug (the application couldn't handle the query and / or gave undesired results), kindly open an issue [here](https://github.com/iamrohitsuthar/gocoronago/issues/new). 51 | 52 | If you'd like to request a new function, feel free to do so by opening an issue [here](https://github.com/iamrohitsuthar/gocoronago/issues/new). 53 | 54 | ### Contributors 55 | 56 | 57 | 58 | 59 | ### Acknowledgements 60 | API - COVID-19 stats API 61 | -------------------------------------------------------------------------------- /css/datatables.min.css: -------------------------------------------------------------------------------- 1 | div.dataTables_wrapper div.dataTables_length select,div.dataTables_wrapper div.dataTables_length input{width:auto}div.dataTables_wrapper div.dataTables_length.d-flex.flex-row label{margin-top:1.2rem;margin-right:1rem}div.dataTables_wrapper div.dataTables_length.d-flex.flex-row .select-wrapper.mdb-select span,div.dataTables_wrapper div.dataTables_length.d-flex.flex-row .select-wrapper.mdb-select .select-dropdown{margin-top:1rem}div.dataTables_wrapper div.dataTables_length label,div.dataTables_wrapper div.dataTables_filter label{padding-top:.5rem;padding-bottom:.5rem;font-weight:400;text-align:left}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter select,div.dataTables_wrapper div.dataTables_filter input{width:auto}div.dataTables_wrapper div.dataTables_filter input{display:inline-block;margin-left:.5rem}div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{padding-top:1rem;padding-bottom:1rem;font-weight:400}div.dataTables_wrapper div.dataTables_paginate{margin:0;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{-ms-flex-pack:end;justify-content:flex-end;-webkit-box-pack:end}div.dataTables_wrapper div.dataTables_paginate ul.pagination .page-item.active .page-link:focus{background-color:#4285f4}div.dataTables_wrapper div.dataTables_paginate ul.pagination .page-item .page-link:focus{-webkit-box-shadow:none;box-shadow:none}@media (max-width: 767px){div.dataTables_wrapper div .dataTables_length,div.dataTables_wrapper div .dataTables_filter,div.dataTables_wrapper div .dataTables_info,div.dataTables_wrapper div .dataTables_paginate ul.pagination{-ms-flex-pack:center;justify-content:center;text-align:center;-webkit-box-pack:center}}.bs-select select{display:inline-block !important}table.dataTable thead{cursor:pointer}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{position:relative;cursor:pointer}table.dataTable thead .sorting:before,table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:.9em;display:block;opacity:.3}table.dataTable thead .sorting:before,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:before{right:1em;font-size:1rem;font-weight:900;position: absolute;top:6px;content:url(../images/up.svg)}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{right:16px;font-size:1rem;font-weight:900;content:url(../images/down.svg)}table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:after{opacity:1}table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{opacity:0} 2 | 3 | 4 | /*# sourceMappingURL=datatables.min.css.map*/ -------------------------------------------------------------------------------- /css/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0px !important; 3 | } 4 | 5 | html { 6 | all: unset; 7 | } 8 | .stats-cards { 9 | display: flex; 10 | align-items: center; 11 | justify-content: center; 12 | /* margin-top: 20px; */ 13 | margin-right: 0px !important; 14 | margin-left: 0px !important; 15 | } 16 | 17 | .stats-cards .col-md-2 { 18 | padding-left: 0px; 19 | padding-right: 0px; 20 | margin-left: 20px; 21 | margin-right: 20px; 22 | } 23 | #header { 24 | margin: 20px; 25 | } 26 | 27 | .card { 28 | margin-bottom: 20px; 29 | margin-top: 20px; 30 | } 31 | 32 | 33 | hr { 34 | width:50%; 35 | margin-left:25% !important; 36 | margin-right:25% !important; 37 | color: #333; 38 | background-color: #333; 39 | } 40 | 41 | .stats-table-main { 42 | display: flex; 43 | margin: auto; 44 | width: 79%; 45 | } 46 | 47 | #stats-table .col-md-12 { 48 | flex: initial; 49 | } 50 | 51 | .table-responsive { 52 | overflow-x: hidden; 53 | min-height: 300px; 54 | } 55 | 56 | #stats-table.row { 57 | margin: 0px; 58 | } 59 | 60 | .charts.row { 61 | margin: 0px; 62 | } 63 | 64 | .charts .col-md-10 { 65 | margin:auto; 66 | } 67 | 68 | .mapContainer { 69 | max-width: 700px; 70 | margin: auto; 71 | padding: 16px; 72 | } 73 | 74 | .switch-choropleth { 75 | margin: auto; 76 | padding: 15px; 77 | width: 79%; 78 | visibility: hidden; 79 | } 80 | 81 | .state:hover { 82 | fill-opacity: 0.5; 83 | } 84 | 85 | .legendLinear { 86 | font-family: monospace; 87 | } 88 | 89 | #tooltip { 90 | position: absolute; 91 | text-align: center; 92 | padding: 20px; 93 | margin: 5px; 94 | font: 12px sans-serif; 95 | background: lightsteelblue; 96 | border: 1px; 97 | border-radius: 2px; 98 | pointer-events: none; 99 | } 100 | 101 | #tooltip h4 { 102 | margin: 5px; 103 | font-size: 14px; 104 | } 105 | 106 | #tooltip { 107 | background:rgba(0,0,0,0.9); 108 | border:1px solid grey; 109 | border-radius:5px; 110 | font-size:12px; 111 | width: auto; 112 | padding:4px; 113 | color:white; 114 | opacity:0; 115 | } 116 | 117 | #tooltip table { 118 | table-layout: auto; 119 | margin: 5px; 120 | } 121 | 122 | #tooltip tr td:nth-child(1) { 123 | text-align: left; 124 | color: white; 125 | } 126 | 127 | #tooltip tr td:nth-child(2) { 128 | padding-left: 8px; 129 | text-align: right; 130 | color: white; 131 | } 132 | 133 | @media only screen and (max-width: 600px) { 134 | .switch-choropleth { 135 | display: flex; 136 | width: 96%; 137 | margin: auto; 138 | } 139 | 140 | .stats-table-main { 141 | display: flex; 142 | margin: auto; 143 | width: 96%; 144 | } 145 | .table-responsive { 146 | overflow-x: auto; 147 | } 148 | 149 | .stats-cards .col-md-2 { 150 | width:50%; 151 | margin-left: 0px; 152 | margin-right: 0px; 153 | padding-left: 15px; 154 | padding-right: 15px; 155 | } 156 | 157 | .stats-cards .card { 158 | margin-bottom: 15px; 159 | margin-top:15px; 160 | } 161 | 162 | .stats-cards .card-body h4 { 163 | font-size: 1.1rem; 164 | } 165 | 166 | .brand.col-md-12 { 167 | width:auto; 168 | } 169 | 170 | .brand.row { 171 | flex-wrap: unset; 172 | } 173 | 174 | .navbar-toggler { 175 | float:right; 176 | padding-top: 9%; 177 | } 178 | 179 | #helplines .cards { 180 | grid-template-columns: repeat(2, 1fr); 181 | } 182 | 183 | #helplines .card { 184 | margin: 0px !important; 185 | } 186 | 187 | #helplines #main-help-p { 188 | display: block !important; 189 | text-align: left !important; 190 | float: left !important; 191 | padding-left: 10px !important; 192 | } 193 | 194 | #helplines #main-card { 195 | height: 8rem; 196 | } 197 | 198 | #nav #nav-bar-github { 199 | float: left; 200 | padding-bottom: 10px; 201 | } 202 | 203 | #helplines { 204 | min-height: 400px !important; 205 | } 206 | } 207 | 208 | @media only screen and (max-width:340px) { 209 | #helplines #main-card { 210 | height: 10rem !important; 211 | } 212 | 213 | } 214 | 215 | @media (max-width: 767px) { 216 | .dataTables_info { 217 | text-align: start !important; 218 | } 219 | } 220 | 221 | @media only screen and (max-width:200px) { 222 | #tooltip { 223 | max-width: 150px; 224 | } 225 | } 226 | 227 | #footer { 228 | width: 100%; 229 | } 230 | 231 | #footer p { 232 | padding: 20px 0; 233 | } 234 | 235 | #footer svg { 236 | padding-left: 10px; 237 | } 238 | 239 | #nav .navbar { 240 | display: block; 241 | } 242 | 243 | #nav a { 244 | margin: 0px; 245 | outline: none; 246 | /* width: 100%; 247 | text-align: center; */ 248 | } 249 | 250 | #nav li { 251 | margin-left: 8px; 252 | margin-right: 8px; 253 | } 254 | 255 | #basicExampleNav .navbar-nav { 256 | padding: 0px; 257 | margin: auto; 258 | } 259 | 260 | 261 | .brand.col-md-12 { 262 | text-align: center; 263 | } 264 | 265 | #nav .navbar-brand { 266 | font-weight: bold; 267 | font-size: 2.3rem; 268 | font-style: italic; 269 | } 270 | 271 | #nav #nav-bar-github { 272 | padding-left: 8px; 273 | vertical-align: super; 274 | } 275 | 276 | #helplines { 277 | margin-top: 40px; 278 | padding-bottom: 40px; 279 | min-height: 300px; 280 | } 281 | 282 | #helplines .card { 283 | box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2); 284 | transition: 0.3s; 285 | height: 6rem; 286 | margin: 6px; 287 | } 288 | 289 | #helplines .card:hover { 290 | box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2); 291 | } 292 | 293 | #helplines .cards { 294 | max-width: 1200px; 295 | margin: 0 auto; 296 | display: grid; 297 | grid-gap: 1rem; 298 | } 299 | 300 | #helplines .card .header { 301 | min-height: 50px; 302 | } 303 | 304 | #helplines .card .header h6{ 305 | padding-top: 10px; 306 | font-weight: 200; 307 | } 308 | 309 | @media (min-width: 900px) { 310 | #helplines .cards { grid-template-columns: repeat(5, 1fr); } 311 | } 312 | 313 | .light-black { 314 | color: #323232; 315 | } 316 | 317 | #info-symptoms { 318 | margin: 20px; 319 | } 320 | 321 | #info-symptoms .card { 322 | padding: 20px; 323 | } 324 | 325 | #info-prevention, #info-others { 326 | margin: 20px; 327 | } 328 | 329 | #info-prevention .card, #info-others .card { 330 | padding: 20px; 331 | } 332 | 333 | .symptoms-image { 334 | width: 100px; 335 | height: 100px; 336 | margin: 10px; 337 | } 338 | 339 | .title { 340 | font-family: 'Raleway', sans-serif; 341 | } -------------------------------------------------------------------------------- /images/cough.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/tired.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /helplines.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GocoronaGo - COVID-19 stats in India 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 55 |
56 |
57 |
58 |
59 |
Ministry of Health & Family Welfare
60 |
61 |
62 |

Helpline Number: +91-11-23978046

63 |

Helpline Email ID: ncov2019@gov.in

64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 | 72 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 107 | 108 | -------------------------------------------------------------------------------- /images/fever.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/runny_nose.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /js/main.js: -------------------------------------------------------------------------------- 1 | var maxConfirmed = 0, maxCured = 0, maxDeaths = 0; 2 | var st = ["Andaman and Nicobar Islands", "Andhra Pradesh", "Arunachal Pradesh", "Assam", "Bihar", "Chandigarh", "Chhattisgarh", "Daman and Diu", "Dadra and Nagar Haveli", "Delhi", "Goa", "Gujarat", "Haryana", "Himachal Pradesh", "Jammu and Kashmir", "Jharkhand", "Karnataka", "Kerala", "Lakshadweep", "Ladakh", "Madhya Pradesh", "Maharashtra", "Manipur", "Meghalaya", "Mizoram", "Nagaland", "Odisha", "Punjab", "Pondicherry", "Rajasthan", "Sikkim", "Tamil Nadu", "Tripura", "Telengana", "Uttar Pradesh", "Uttarakhand", "West Bengal"] 3 | var stateData = {}; 4 | 5 | $("#choropleth_switch_1").click(function () { 6 | choropleth(0, maxConfirmed); 7 | }); 8 | 9 | $("#choropleth_switch_2").click(function () { 10 | choropleth(1, maxCured); 11 | }); 12 | 13 | $("#choropleth_switch_3").click(function () { 14 | choropleth(2, maxDeaths); 15 | }); 16 | 17 | 18 | function load() { 19 | var table = $('#dtBasicExample').DataTable({ 20 | paging: false, 21 | fixedHeader: true 22 | }); 23 | $('.dataTables_length')['addClass']('bs-select'); 24 | 25 | $.getJSON('https://api.rootnet.in/covid19-in/stats/latest', function (result) { 26 | 27 | var totalCases = result['data']['summary']['total']; 28 | var deaths = result['data']['summary']['deaths']; 29 | var cured = result['data']['summary']['discharged']; 30 | 31 | document.getElementById('total_cases').innerHTML = totalCases; 32 | document.getElementById('indians').innerHTML = result['data']['summary']['confirmedCasesIndian']; 33 | document.getElementById('foreigners').innerHTML = result['data']['summary']['confirmedCasesForeign']; 34 | document.getElementById('cured').innerHTML = cured; 35 | document.getElementById('deaths').innerHTML = deaths; 36 | document.getElementById('active_cases').innerHTML = totalCases - (deaths + cured); 37 | 38 | $.each(result['data']['regional'], function (key, value) { 39 | var state = value['loc']; 40 | var index; 41 | for (index = 0; index < st.length; index++) { 42 | var element = st[index]; 43 | if (state.includes(element)) { 44 | break; 45 | } 46 | } 47 | 48 | var confirmedCasesIndian = value['confirmedCasesIndian']; 49 | var confirmedCasesForeign = value['confirmedCasesForeign']; 50 | var confirmed = confirmedCasesIndian + confirmedCasesForeign; 51 | var cured = value['discharged']; 52 | var deaths = value['deaths']; 53 | 54 | table['row']['add']([state, confirmed, confirmedCasesIndian, confirmedCasesForeign, deaths, cured])['draw'](false) 55 | stateData[st[index]] = [confirmed, cured, deaths]; 56 | 57 | if (confirmed > maxConfirmed) { 58 | maxConfirmed = confirmed; 59 | } 60 | if (cured > maxCured) { 61 | maxCured = cured; 62 | } 63 | if (deaths > maxDeaths) { 64 | maxDeaths = deaths; 65 | } 66 | }); 67 | document.getElementsByClassName('switch-choropleth')[0].style.visibility = 'visible'; 68 | choropleth(0, maxConfirmed); 69 | }); 70 | 71 | } 72 | 73 | 74 | function getHelplines() { 75 | $.getJSON('https://api.rootnet.in/covid19-in/contacts', function (result) { 76 | $.each(result['data']['contacts']['regional'], function (key, value) { 77 | var mobile = value['number']; 78 | if (mobile.indexOf(',') > 0) 79 | mobile = mobile.substring(0, mobile.indexOf(',')); 80 | var data = "
" + value['loc'] + "

" + mobile + "

"; 81 | $('#help-cards').append(data); 82 | }); 83 | }); 84 | } 85 | 86 | const isToday = (someDate) => { 87 | const today = new Date() 88 | return someDate.getDate() == today.getDate() && 89 | someDate.getMonth() == today.getMonth() && 90 | someDate.getFullYear() == today.getFullYear() 91 | } 92 | 93 | function getDataForChart(data) { 94 | var result = JSON.parse('{ "size": ' + data.length + ',"dates": [],"total": [],"indians": [],"foreigners": [],"deaths": [],"cured": []}'); 95 | 96 | var today_cases = false; 97 | var prev_cases = 0; 98 | var isDone = false; 99 | 100 | $.each(data, function (i, item) { 101 | if (!today_cases) 102 | today_cases = isToday(new Date(item.day)); 103 | 104 | if (today_cases && !isDone) { 105 | document.getElementById('today_cases').innerHTML = item.summary.total - prev_cases; 106 | isDone = true; 107 | } 108 | if (!today_cases) 109 | prev_cases = item.summary.total; 110 | 111 | result.dates.push(item.day); 112 | result.indians.push(item.summary.confirmedCasesIndian); 113 | result.total.push(item.summary.total); 114 | result.foreigners.push(item.summary.confirmedCasesForeign); 115 | result.cured.push(item.summary.discharged); 116 | result.deaths.push(item.summary.deaths); 117 | }); 118 | if (!today_cases) 119 | document.getElementById('today_cases').innerHTML = 0; 120 | return result; 121 | } 122 | 123 | function getGrowthRate(res) { 124 | let original = 0; 125 | let sum = 0; 126 | $.each(res.total, function (i, item) { 127 | if (i == 0) 128 | original = item; 129 | else { 130 | var rate = ((item - original) / original) * 100; 131 | sum += rate; 132 | original = item; 133 | } 134 | }); 135 | 136 | return (sum / res.total.length).toFixed(1); 137 | } 138 | 139 | function loadChart() { 140 | $.getJSON('https://api.rootnet.in/covid19-in/stats/daily', function (data) { 141 | if (data.success) { 142 | var chartData = getDataForChart(data['data']); 143 | var avgGrowthRate = getGrowthRate(chartData); 144 | document.getElementById('growth_rate').innerHTML = avgGrowthRate + '%'; 145 | chartInit(chartData); 146 | } else { 147 | console.log("API DOWN"); 148 | $('#canvas').css("display", "none"); 149 | } 150 | }); 151 | } 152 | 153 | function chartInit(chartData) { 154 | var config = { 155 | type: 'line', 156 | data: { 157 | labels: chartData.dates, 158 | datasets: [{ 159 | label: 'Total Cases', 160 | backgroundColor: "#e26fcf", 161 | borderColor: "#e26fcf", 162 | data: chartData.total, 163 | fill: false, 164 | }, { 165 | label: 'Indians', 166 | fill: false, 167 | backgroundColor: "#3fa1e0", 168 | borderColor: "#3fa1e0", 169 | data: chartData.indians, 170 | }, { 171 | label: 'Foreigners', 172 | fill: false, 173 | backgroundColor: "#0be7b8", 174 | borderColor: "#0be7b8", 175 | data: chartData.foreigners, 176 | }, { 177 | label: 'Deaths', 178 | fill: false, 179 | backgroundColor: "#fc6f63", 180 | borderColor: "#fc6f63", 181 | data: chartData.deaths, 182 | }, { 183 | label: 'Cured', 184 | fill: false, 185 | backgroundColor: "#68dddd", 186 | borderColor: "#68dddd", 187 | data: chartData.cured, 188 | }] 189 | }, 190 | options: { 191 | legend: { 192 | display: false 193 | }, 194 | responsive: true, 195 | title: { 196 | display: false 197 | }, 198 | tooltips: { 199 | mode: 'index', 200 | intersect: false, 201 | }, 202 | hover: { 203 | mode: 'nearest', 204 | intersect: true 205 | }, 206 | scales: { 207 | xAxes: [{ 208 | display: true, 209 | scaleLabel: { 210 | display: false, 211 | labelString: 'Date' 212 | }, 213 | ticks: { 214 | callback: function (value, index, values) { 215 | if (window.matchMedia("(max-width: 480px)").matches) 216 | return ''; 217 | else 218 | return value; 219 | }, 220 | } 221 | }], 222 | yAxes: [{ 223 | display: true, 224 | scaleLabel: { 225 | display: false, 226 | labelString: 'Data' 227 | }, 228 | ticks: { 229 | callback: function (value, index, values) { 230 | if (window.matchMedia("(max-width: 480px)").matches) 231 | return ''; 232 | else 233 | return value; 234 | }, 235 | } 236 | }] 237 | } 238 | } 239 | }; 240 | var ctx = document.getElementById('canvas').getContext('2d'); 241 | window.myLine = new Chart(ctx, config); 242 | 243 | // float table head 244 | var $table = $('#dtBasicExample'); 245 | $table.floatThead({ 246 | responsiveContainer: function ($table) { 247 | return $table.closest(".table-responsive"); 248 | } 249 | }); 250 | $("#dtBasicExample").floatThead({ 251 | autoReflow: true 252 | }); 253 | } 254 | 255 | 256 | function choropleth(choroplethType, maxCount) { 257 | var title; 258 | switch (choroplethType) { 259 | case 0: 260 | title = 'Confirmed Cases'; 261 | break; 262 | case 1: 263 | title = 'Cured Cases'; 264 | break; 265 | case 2: 266 | title = 'Death Cases'; 267 | break; 268 | default: 269 | break; 270 | } 271 | 272 | function tooltipHtml(state, data) { 273 | return "

" + state + "

" + 274 | "" + 275 | "" + 276 | "" + 277 | "" + 278 | "
Confirmed" + (data[0]) + "
Cured" + (data[1]) + "
Deaths" + (data[2]) + "
"; 279 | } 280 | 281 | states.draw("#mapsvg", choroplethType, stateData, maxCount, tooltipHtml); 282 | 283 | // Draw scale 284 | const svg = d3.select("#mapsvg"); 285 | 286 | const maxInterpolation = 0.8; 287 | var color; 288 | choroplethType === 0 ? 289 | color = d3.scaleSequential(d3.interpolateReds).domain([0, maxCount / maxInterpolation || 10]) 290 | : choroplethType === 1 ? 291 | color = d3.scaleSequential(d3.interpolateGreens).domain([0, maxCount / maxInterpolation || 10]) 292 | : choroplethType === 2 ? 293 | color = d3.scaleSequential(d3.interpolateGreys).domain([0, maxCount / maxInterpolation || 10]) 294 | : ''; 295 | 296 | let cells = null; 297 | let label = null; 298 | 299 | label = ({ i, genLength, generatedLabels, labelDelimiter }) => { 300 | if (i === genLength - 1) { 301 | const n = Math.floor(generatedLabels[i]); 302 | return `${n}+`; 303 | } else { 304 | const n1 = 1 + Math.floor(generatedLabels[i]); 305 | const n2 = Math.floor(generatedLabels[i + 1]); 306 | return `${n1} - ${n2}`; 307 | } 308 | }; 309 | 310 | const numCells = 6; 311 | const delta = Math.floor((maxCount < numCells ? numCells : maxCount) / (numCells - 1)); 312 | 313 | cells = Array.from(Array(numCells).keys()).map((i) => i * delta); 314 | 315 | svg 316 | .append('g') 317 | .attr('class', 'legendLinear') 318 | .attr('transform', 'translate(40, 450)'); 319 | 320 | const legendLinear = d3.legendColor() 321 | .shapeWidth(36) 322 | .shapeHeight(10) 323 | .cells(cells) 324 | .titleWidth(3) 325 | .labels(label) 326 | .title(title) 327 | .orient('vertical') 328 | .scale(color); 329 | 330 | svg 331 | .select('.legendLinear') 332 | .call(legendLinear) 333 | .selectAll('text') 334 | .style('font-size', '10px'); 335 | } -------------------------------------------------------------------------------- /js/jquery.floatThead.min.js: -------------------------------------------------------------------------------- 1 | /** @preserve jQuery.floatThead 2.1.4 - https://mkoryak.github.io/floatThead/ - Copyright (c) 2012 - 2019 Misha Koryak **/ 2 | !function(ht){ht.floatThead=ht.floatThead||{},ht.floatThead.defaults={headerCellSelector:"tr:visible:first>*:visible",zIndex:1001,position:"auto",top:0,bottom:0,scrollContainer:function(t){return ht([])},responsiveContainer:function(t){return ht([])},getSizingRow:function(t,e,o){return t.find("tbody tr:visible:first>*:visible")},ariaLabel:function(t,e,o){return e.text()},floatTableClass:"floatThead-table",floatWrapperClass:"floatThead-wrapper",floatContainerClass:"floatThead-container",copyTableClass:!0,autoReflow:!1,debug:!1,support:{bootstrap:!0,datatables:!0,jqueryUI:!0,perfectScrollbar:!0},floatContainerCss:{"overflow-x":"hidden"}};var vt=function(){var n={},o=Object.prototype.hasOwnProperty;n.has=function(t,e){return o.call(t,e)},n.keys=Object.keys||function(t){if(t!==Object(t))throw new TypeError("Invalid object");var e=[];for(var o in t)n.has(t,o)&&e.push(o);return e};var r=0;return n.uniqueId=function(t){var e=++r+"";return t?t+e:e},ht.each(["Arguments","Function","String","Number","Date","RegExp"],function(){var e=this;n["is"+e]=function(t){return Object.prototype.toString.call(t)==="[object "+e+"]"}}),n.debounce=function(o,n,r){var a,i,l,s,d;return function(){l=this,i=arguments,s=new Date;var e=function(){var t=new Date-s;t").css("width",0).append(ht("").css("max-width","100%").append(ht("").append(ht("
").append(ht("
").css("min-width",100).text("X")))));ht("body").append(t);var e=0===t.find("table").width();return t.remove(),e}return!1},yt=!t&&!wt,Tt=ht(window),Ct=t&&window.matchMedia;if(!window.matchMedia||Ct){var e=window.onbeforeprint,o=window.onafterprint;window.onbeforeprint=function(){e&&e(),Tt.triggerHandler("fth-beforeprint")},window.onafterprint=function(){o&&o(),Tt.triggerHandler("fth-afterprint")}}function xt(t){var e=t[0].parentElement;do{if("visible"!==window.getComputedStyle(e).getPropertyValue("overflow"))break}while(e=e.parentElement);return e===document.body?ht([]):ht(e)}function Lt(t){window&&window.console&&window.console.error&&window.console.error("jQuery.floatThead: "+t)}function St(t){var e=t.getBoundingClientRect();return e.width||e.right-e.left}function jt(){var t=document.createElement("scrolltester");t.style.cssText="width:100px;height:100px;overflow:scroll!important;position:absolute;top:-9999px;display:block",document.body.appendChild(t);var e=t.offsetWidth-t.clientWidth;return document.body.removeChild(t),e}function zt(t,e,o){var n=o?"outerWidth":"width";if(l&&t.css("max-width")){var r=0;o&&(r+=parseInt(t.css("borderLeft"),10),r+=parseInt(t.css("borderRight"),10));for(var a=0;a http://jqueryui.com/resources/download/jquery-ui-1.8.24.zip")}return this.filter(":not(."+pt.floatTableClass+")").each(function(){var e=vt.uniqueId(),m=ht(this);if(m.data("floatThead-attached"))return!0;if(!m.is("table"))throw new Error('jQuery.floatThead must be run on a table element. ex: $("table").floatThead();');bt=pt.autoReflow&&bt;var d=m.children("thead:first"),o=m.children("tbody:first");if(0===d.length||0===o.length)return pt.debug&&(0===d.length?Lt("The thead element is missing."):Lt("The tbody element is missing.")),m.data("floatThead-lazy",pt),void m.unbind("reflow").one("reflow",function(){m.floatThead(pt)});m.data("floatThead-lazy")&&m.unbind("reflow"),m.data("floatThead-lazy",!1);var y,T,n=!0,C={vertical:0,horizontal:0};vt.isFunction(jt)&&(jt=jt());var i=0;!0===pt.scrollContainer&&(pt.scrollContainer=xt);var x=pt.scrollContainer(m)||ht([]),L=0").css({display:"table-footer-group","border-spacing":0,height:0,"border-collapse":"collapse",visibility:"hidden"}),W=!1,l=ht([]),q=wt<=9&&!L&&z,f=ht(""),c=ht(""),u=m.children("colgroup:first"),p=!0;0===u.length&&(u=ht(""),p=!1);var h=ht("").css({display:"table-row","border-spacing":0,height:0,"border-collapse":"collapse"}),R=ht("
").css(pt.floatContainerCss).attr("aria-hidden","true"),E=!1,s=ht("
"),v=ht(''),b=ht([]),w=ht([]),g=ht([]),M=ht([]);s.append(v),m.prepend(u),yt&&(a.append(h),m.append(a)),f.append(c),R.append(f),pt.copyTableClass&&f.attr("class",m.attr("class")),f.attr({cellpadding:m.attr("cellpadding"),cellspacing:m.attr("cellspacing"),border:m.attr("border")});var t=m.css("display");if(f.css({borderCollapse:m.css("borderCollapse"),border:m.css("border"),display:t}),L||f.css("width","auto"),"none"===t&&(E=!0),f.addClass(pt.floatTableClass).css({margin:0,"border-bottom-width":0}),z){var k=function(t,e){var o=t.css("position"),n=t;if(!("relative"===o||"absolute"===o)||e){var r={paddingLeft:t.css("paddingLeft"),paddingRight:t.css("paddingRight")};R.css(r),n=t.data("floatThead-containerWrap")||t.wrap(ht("
").addClass(pt.floatWrapperClass).css({position:"relative",clear:"both"})).parent(),t.data("floatThead-containerWrap",n),W=!0}return n};L?(l=k(x,!0)).prepend(R):(l=k(m),m.before(R))}else m.before(R);R.css({position:z?"absolute":"fixed",marginTop:0,top:z?0:"auto",zIndex:pt.zIndex,willChange:"transform"}),R.addClass(pt.floatContainerClass),U();var D={"table-layout":"fixed"},F={"table-layout":m.css("tableLayout")||"auto"},O=m[0].style.width||"",N=m.css("minWidth")||"";function A(t){return t+".fth-"+e+".floatTHead"}function Q(){var t=0;if(d.children("tr:visible").each(function(){t+=ht(this).outerHeight(!0)}),"collapse"===m.css("border-collapse")){var e=parseInt(m.css("border-top-width"),10);parseInt(m.find("thead tr:first").find(">*:first").css("border-top-width"),10)"),n.push(ht("").css({display:"table-cell",height:0,width:"auto"}))}o=o.join(""),yt&&(h.empty(),h.append(n),M=h.find("fthtd")),b=v.find("th"),p||u.html(o),w=u.find("col"),c.html(o),g=c.find("col")}return t}();return function(){var t=R.scrollLeft();w=u.find("col");var e,o,n,r,a=(e=m,o=w,n=M,r=wt,yt?n:r?pt.getSizingRow(e,o,n):o);if(a.length===s&&0=v+y?(o=0,P(),X(!1)):(o=y+v-u.top+s+(H?d:0),G(),X(!0)),n=g):L&&!z?(lv+y?(o=u.top-v,G(),X(!1)):(o=y,X(!0)),n=u.left+g-b);return{top:Math.round(o),left:Math.round(n)}}}}function Z(){var i=null,l=null,s=null;return function(t,e,o){if(null!=t&&(i!==t.top||l!==t.left)){if(8===wt)R.css({top:t.top,left:t.left});else{var n="translateX("+t.left+"px) translateY("+t.top+"px)",r={"-webkit-transform":n,"-moz-transform":n,"-ms-transform":n,"-o-transform":n,transform:n,top:0,left:0};R.css(r)}i=t.top,l=t.left}e&&function(){var t=zt(m,M,!0),e=j?S:x,o=e.length?St(e[0]):t,n="hidden"!==e.css("overflow-y")?o-C.vertical:o;if(R.width(n),L){var r=100*t/n;f.css("width",r+"%")}else f.css("width",t+"px")}(),o&&Q();var a=(j?S:x).scrollLeft();z&&s===a||(R.scrollLeft(a),s=a)}}function _(){if(x.length)if(pt.support&&pt.support.perfectScrollbar&&x.data().perfectScrollbar)C={horizontal:0,vertical:0};else{if("scroll"===x.css("overflow-x"))C.horizontal=jt;else{var t=x.width(),e=zt(m,M),o=ntable>thead").add(m.children("tbody,tfoot")):m.children("thead,tbody,tfoot")}})}),this}}(function(){var t=window.jQuery;return"undefined"!=typeof module&&module.exports&&!t&&(t=require("jquery")),t}()); 3 | -------------------------------------------------------------------------------- /info.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | GocoronaGo - COVID-19 stats in India 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 55 |
56 |
57 |
58 |
Symptoms of COVID-19
59 |
60 |
61 |

The most common symptoms of COVID-19 are fever, tiredness, and dry cough. Some patients may have aches and pains, nasal congestion, runny nose, sore throat or diarrhea. These symptoms are usually mild and begin gradually. Some people become infected but don’t develop any symptoms and don't feel unwell. Most people (about 80%) recover from the disease without needing special treatment. Around 1 out of every 6 people who gets COVID-19 becomes seriously ill and develops difficulty breathing. Older people, and those with underlying medical problems like high blood pressure, heart problems or diabetes, are more likely to develop serious illness. People with fever, cough and difficulty breathing should seek medical attention.

62 | 63 | 64 | 65 | 66 | 67 |
68 |
69 |
70 |
71 |
72 |
73 |
Protection measures for everyone
74 |
75 |
76 |

Stay aware of the latest information on the COVID-19 outbreak, available on the WHO website and through your national and local public health authority. Many countries around the world have seen cases of COVID-19 and several have seen outbreaks. Authorities in China and some other countries have succeeded in slowing or stopping their outbreaks. However, the situation is unpredictable so check regularly for the latest news.

You can reduce your chances of being infected or spreading COVID-19 by taking some simple precautions:

77 |
    78 |
  • 79 |

    Regularly and thoroughly clean your hands with an alcohol-based hand rub or wash them with soap and water.
    Why? Washing your hands with soap and water or using alcohol-based hand rub kills viruses that may be on your hands.

    80 |
  • 81 |
  • 82 |

    Maintain at least 1 metre (3 feet) distance between yourself and anyone who is coughing or sneezing.
    Why? When someone coughs or sneezes they spray small liquid droplets from their nose or mouth which may contain virus. If you are too close, you can breathe in the droplets, including the COVID-19 virus if the person coughing has the disease.

    83 |
  • 84 |
  • 85 |

    Avoid touching eyes, nose and mouth. Why? Hands touch many surfaces and can pick up viruses. Once contaminated, hands can transfer the virus to your eyes, nose or mouth. From there, the virus can enter your body and can make you sick.

    86 |
  • 87 |
  • 88 |

    Make sure you, and the people around you, follow good respiratory hygiene. This means covering your mouth and nose with your bent elbow or tissue when you cough or sneeze. Then dispose of the used tissue immediately.
    Why? Droplets spread virus. By following good respiratory hygiene you protect the people around you from viruses such as cold, flu and COVID-19.

    89 |
  • 90 |
  • 91 |

    Stay home if you feel unwell. If you have a fever, cough and difficulty breathing, seek medical attention and call in advance. Follow the directions of your local health authority. Why? National and local authorities will have the most up to date information on the situation in your area. Calling in advance will allow your health care provider to quickly direct you to the right health facility. This will also protect you and help prevent spread of viruses and other infections.

    92 |
  • 93 |
  • 94 |

    Keep up to date on the latest COVID-19 hotspots (cities or local areas where COVID-19 is spreading widely). If possible, avoid traveling to places – especially if you are an older person or have diabetes, heart or lung disease.
    Why? You have a higher chance of catching COVID-19 in one of these areas.

    95 |
  • 96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
Other useful resources
104 |
105 | 118 |
119 |
120 | 144 | 145 | 146 | 147 | 148 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | GocoronaGo - COVID-19 stats in India 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 63 | 64 | 67 |
68 |
69 |
70 |
72 |
73 |

Total Cases

74 |

75 |
76 |
77 |
78 |
79 |
81 |
82 |

Indians

83 |

84 |
85 |
86 |
87 |
88 |
90 |
91 |

Foreigners

92 |

93 |
94 |
95 |
96 |
97 |
99 |
100 |

Deaths

101 |

102 |
103 |
104 |
105 |
106 | 107 |
108 |
109 |
111 |
112 |

Active Cases

113 |

114 |
115 |
116 |
117 |
118 |
120 |
121 |

Today's Cases

122 |

123 |
124 |
125 |
126 |
127 |
129 |
130 |

Growth Rate

131 |

132 |
133 |
134 |
135 |
136 |
138 |
139 |

Cured

140 |

141 |
142 |
143 |
144 |

145 | 146 |
147 |
148 | 149 |
150 |

151 | 152 |
153 |
154 |
155 |
157 | 160 | 161 | 163 | 165 | 167 | 169 | 171 | 173 | 174 | 175 | 176 | 177 | 178 |
State 162 | Total Cases 164 | Indians 166 | Foreigners 168 | Deaths 170 | Cured 172 |
179 |
180 | 181 | 182 | 183 |
184 | 198 |
199 |
200 |
201 | 202 |
203 | 204 | 205 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 257 | 258 | 259 | -------------------------------------------------------------------------------- /js/d3-scale-chromatic.v1.min.js: -------------------------------------------------------------------------------- 1 | // https://d3js.org/d3-scale-chromatic/ v1.5.0 Copyright 2019 Mike Bostock 2 | !function(f,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("d3-interpolate"),require("d3-color")):"function"==typeof define&&define.amd?define(["exports","d3-interpolate","d3-color"],e):e((f=f||self).d3=f.d3||{},f.d3,f.d3)}(this,function(f,e,d){"use strict";function a(f){for(var e=f.length/6|0,d=new Array(e),a=0;a1)&&(f-=Math.floor(f));var e=Math.abs(f-.5);return wf.h=360*f-100,wf.s=1.5-1.5*e,wf.l=.8-.9*e,wf+""},f.interpolateRdBu=x,f.interpolateRdGy=g,f.interpolateRdPu=N,f.interpolateRdYlBu=v,f.interpolateRdYlGn=C,f.interpolateReds=hf,f.interpolateSinebow=function(f){var e;return f=(.5-f)*Math.PI,Af.r=255*(e=Math.sin(f))*e,Af.g=255*(e=Math.sin(f+Pf))*e,Af.b=255*(e=Math.sin(f+Bf))*e,Af+""},f.interpolateSpectral=I,f.interpolateTurbo=function(f){return f=Math.max(0,Math.min(1,f)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+f*(1172.33-f*(10793.56-f*(33300.12-f*(38394.49-14825.05*f)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+f*(557.33+f*(1225.33-f*(3574.96-f*(1073.77+707.56*f)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+f*(3211.1-f*(15327.97-f*(27814-f*(22569.18-6838.66*f)))))))+")"},f.interpolateViridis=xf,f.interpolateWarm=yf,f.interpolateYlGn=Z,f.interpolateYlGnBu=U,f.interpolateYlOrBr=ff,f.interpolateYlOrRd=df,f.schemeAccent=b,f.schemeBlues=af,f.schemeBrBG=u,f.schemeBuGn=L,f.schemeBuPu=q,f.schemeCategory10=c,f.schemeDark2=t,f.schemeGnBu=T,f.schemeGreens=bf,f.schemeGreys=nf,f.schemeOrRd=k,f.schemeOranges=pf,f.schemePRGn=y,f.schemePaired=n,f.schemePastel1=r,f.schemePastel2=o,f.schemePiYG=w,f.schemePuBu=E,f.schemePuBuGn=W,f.schemePuOr=P,f.schemePuRd=H,f.schemePurples=of,f.schemeRdBu=G,f.schemeRdGy=R,f.schemeRdPu=K,f.schemeRdYlBu=Y,f.schemeRdYlGn=O,f.schemeReds=mf,f.schemeSet1=i,f.schemeSet2=l,f.schemeSet3=m,f.schemeSpectral=S,f.schemeTableau10=h,f.schemeYlGn=X,f.schemeYlGnBu=Q,f.schemeYlOrBr=$,f.schemeYlOrRd=ef,Object.defineProperty(f,"__esModule",{value:!0})}); -------------------------------------------------------------------------------- /js/bootstrap.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v4.4.1 (https://getbootstrap.com/) 3 | * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e((t=t||self).bootstrap={},t.jQuery,t.Popper)}(this,function(t,g,u){"use strict";function i(t,e){for(var n=0;nthis._items.length-1||t<0))if(this._isSliding)g(this._element).one(Y.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=ndocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:Se,popperConfig:null},Fe="show",Ue="out",We={HIDE:"hide"+Oe,HIDDEN:"hidden"+Oe,SHOW:"show"+Oe,SHOWN:"shown"+Oe,INSERTED:"inserted"+Oe,CLICK:"click"+Oe,FOCUSIN:"focusin"+Oe,FOCUSOUT:"focusout"+Oe,MOUSEENTER:"mouseenter"+Oe,MOUSELEAVE:"mouseleave"+Oe},qe="fade",Me="show",Ke=".tooltip-inner",Qe=".arrow",Be="hover",Ve="focus",Ye="click",ze="manual",Xe=function(){function i(t,e){if("undefined"==typeof u)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=g(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(g(this.getTipElement()).hasClass(Me))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),g.removeData(this.element,this.constructor.DATA_KEY),g(this.element).off(this.constructor.EVENT_KEY),g(this.element).closest(".modal").off("hide.bs.modal",this._hideModalHandler),this.tip&&g(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===g(this.element).css("display"))throw new Error("Please use show on visible elements");var t=g.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){g(this.element).trigger(t);var n=_.findShadowRoot(this.element),i=g.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=_.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&g(o).addClass(qe);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();g(o).data(this.constructor.DATA_KEY,this),g.contains(this.element.ownerDocument.documentElement,this.tip)||g(o).appendTo(l),g(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new u(this.element,o,this._getPopperConfig(a)),g(o).addClass(Me),"ontouchstart"in document.documentElement&&g(document.body).children().on("mouseover",null,g.noop);var c=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,g(e.element).trigger(e.constructor.Event.SHOWN),t===Ue&&e._leave(null,e)};if(g(this.tip).hasClass(qe)){var h=_.getTransitionDurationFromElement(this.tip);g(this.tip).one(_.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},t.hide=function(t){function e(){n._hoverState!==Fe&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),g(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),t&&t()}var n=this,i=this.getTipElement(),o=g.Event(this.constructor.Event.HIDE);if(g(this.element).trigger(o),!o.isDefaultPrevented()){if(g(i).removeClass(Me),"ontouchstart"in document.documentElement&&g(document.body).children().off("mouseover",null,g.noop),this._activeTrigger[Ye]=!1,this._activeTrigger[Ve]=!1,this._activeTrigger[Be]=!1,g(this.tip).hasClass(qe)){var r=_.getTransitionDurationFromElement(i);g(i).one(_.TRANSITION_END,e).emulateTransitionEnd(r)}else e();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){g(this.getTipElement()).addClass(Pe+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(g(t.querySelectorAll(Ke)),this.getTitle()),g(t).removeClass(qe+" "+Me)},t.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=we(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?g(e).parent().is(t)||t.empty().append(e):t.text(g(e).text())},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t=t||("function"==typeof this.config.title?this.config.title.call(this.element):this.config.title)},t._getPopperConfig=function(t){var e=this;return l({},{placement:t,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:Qe},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}},{},this.config.popperConfig)},t._getOffset=function(){var e=this,t={};return"function"==typeof this.config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,{},e.config.offset(t.offsets,e.element)||{}),t}:t.offset=this.config.offset,t},t._getContainer=function(){return!1===this.config.container?document.body:_.isElement(this.config.container)?g(this.config.container):g(document).find(this.config.container)},t._getAttachment=function(t){return Re[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)g(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==ze){var e=t===Be?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===Be?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;g(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}}),this._hideModalHandler=function(){i.element&&i.hide()},g(this.element).closest(".modal").on("hide.bs.modal",this._hideModalHandler),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");!this.element.getAttribute("title")&&"string"==t||(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Ve:Be]=!0),g(e.getTipElement()).hasClass(Me)||e._hoverState===Fe?e._hoverState=Fe:(clearTimeout(e._timeout),e._hoverState=Fe,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===Fe&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Ve:Be]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=Ue,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===Ue&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){var e=g(this.element).data();return Object.keys(e).forEach(function(t){-1!==je.indexOf(t)&&delete e[t]}),"number"==typeof(t=l({},this.constructor.Default,{},e,{},"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),_.typeCheckConfig(Ae,t,this.constructor.DefaultType),t.sanitize&&(t.template=we(t.template,t.whiteList,t.sanitizeFn)),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr("class").match(Le);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(g(t).removeClass(qe),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=g(this).data(Ne),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),g(this).data(Ne,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.4.1"}},{key:"Default",get:function(){return xe}},{key:"NAME",get:function(){return Ae}},{key:"DATA_KEY",get:function(){return Ne}},{key:"Event",get:function(){return We}},{key:"EVENT_KEY",get:function(){return Oe}},{key:"DefaultType",get:function(){return He}}]),i}();g.fn[Ae]=Xe._jQueryInterface,g.fn[Ae].Constructor=Xe,g.fn[Ae].noConflict=function(){return g.fn[Ae]=ke,Xe._jQueryInterface};var $e="popover",Ge="bs.popover",Je="."+Ge,Ze=g.fn[$e],tn="bs-popover",en=new RegExp("(^|\\s)"+tn+"\\S+","g"),nn=l({},Xe.Default,{placement:"right",trigger:"click",content:"",template:''}),on=l({},Xe.DefaultType,{content:"(string|element|function)"}),rn="fade",sn="show",an=".popover-header",ln=".popover-body",cn={HIDE:"hide"+Je,HIDDEN:"hidden"+Je,SHOW:"show"+Je,SHOWN:"shown"+Je,INSERTED:"inserted"+Je,CLICK:"click"+Je,FOCUSIN:"focusin"+Je,FOCUSOUT:"focusout"+Je,MOUSEENTER:"mouseenter"+Je,MOUSELEAVE:"mouseleave"+Je},hn=function(t){function i(){return t.apply(this,arguments)||this}!function(t,e){t.prototype=Object.create(e.prototype),(t.prototype.constructor=t).__proto__=e}(i,t);var e=i.prototype;return e.isWithContent=function(){return this.getTitle()||this._getContent()},e.addAttachmentClass=function(t){g(this.getTipElement()).addClass(tn+"-"+t)},e.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},e.setContent=function(){var t=g(this.getTipElement());this.setElementContent(t.find(an),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(ln),e),t.removeClass(rn+" "+sn)},e._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},e._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr("class").match(en);null!==e&&0=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||t