{"version":3,"sources":["./$_lazy_route_resource lazy namespace object","./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/data-model.ts","./src/app/data/cache-interceptor.service.ts","./src/app/data/data.service.ts","./src/app/graphics/graphics.component.ts","./src/app/graphics/graphics.component.html","./src/app/info-dialog.ts","./src/app/info-dialog.html","./src/app/settings/settings.service.ts","./src/app/sharing/sharing.service.ts","./src/app/toolbar/toolbar.component.ts","./src/app/toolbar/toolbar.component.html","./src/environments/environment.ts","./src/main.ts"],"names":[],"mappings":"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","file":"main-es2015.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./$$_lazy_route_resource lazy recursive\";","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\n\nconst routes: Routes = [];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AppRoutingModule { }\n","import { Component, OnInit, ViewChild, AfterViewInit, Input } from '@angular/core';\nimport { DataService as DataService } from 'src/app/data/data.service';\nimport { SummaryViewData, YesterdayData, CaseData, DataSeries, DataPoint, MobilityData} from './data-model';\nimport { MatTableDataSource} from '@angular/material/table';\nimport { MatSort, SortDirection} from '@angular/material/sort';\nimport { ViewEncapsulation } from '@angular/core';\nimport { SettingsService } from './settings/settings.service';\nimport { SharingService } from './sharing/sharing.service';\n\n@Component({\n selector: 'app-root',\n encapsulation: ViewEncapsulation.None,\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\n\nexport class AppComponent implements OnInit {\n \n currentCountry: SummaryViewData = new SummaryViewData();\n currentHistory: CaseData[] = new Array();\n currentMobilityData: MobilityData[] = new Array();\n\n title = 'COVID-19 cases - figures and plots';\n today: Date = new Date();\n\n displayedColumns: string[];\n table: MatTableDataSource = new MatTableDataSource();\n\n @ViewChild(MatSort, {static: true}) matSort: MatSort;\n\n constructor(private settingsService: SettingsService, \n private sharingService: SharingService,\n private dataService: DataService)\n {\n }\n\n async ngOnInit(): Promise {\n await this.sharingService.load();\n this.sharingService.countries.subscribe(countries => {\n this.table = new MatTableDataSource(countries);\n this.table.sort = this.matSort;\n this.table.sort.active = \"cases\";\n });\n this.settingsService.tabIndex.subscribe(index => this.changeTabToIndex(index));\n this.sharingService.mobilityData.subscribe(newData => this.currentMobilityData = newData);\n this.sharingService.selectedCountry.subscribe(c => this.currentCountry = c);\n this.sharingService.currentHistory.subscribe(h => this.currentHistory = h);\n }\n\n selectCountry(country: SummaryViewData) {\n this.sharingService.selectCountry(country);\n this.settingsService.setCountry(country?.country);\n }\n\n changeTabToIndex(index: number) {\n switch(index) {\n case 0:\n this.displayedColumns = ['country', 'cases', 'delta', 'deaths', 'reproductionNumber'];\n break;\n case 1:\n this.displayedColumns = ['country', 'cases', 'delta', 'deaths', 'deathsDelta'];\n break;\n case 2:\n this.displayedColumns = ['country', 'cases', 'delta', 'deathsDelta', 'reproductionNumber'];\n break;\n case 3:\n this.displayedColumns = ['country', 'delta', 'activeDelta', 'mobilityChange', 'reproductionNumber'];\n break;\n case 4:\n this.displayedColumns = ['country', 'delta', 'mobilityChange', 'reproductionNumber'];\n break;\n }\n this.table._updateChangeSubscription();\n }\n}\n","
\n \n \n \n \n
\n \n \n Country \n \n {{element.country}} \n \n\n \n T >\n {{element.cases}}>\n \n\n \n ΔT >\n {{element.delta}}>\n \n\n \n A >\n {{element.active}}>\n \n\n \n R >\n {{element.recovered}} >\n \n\n \n D >\n {{element.deaths}}>\n \n\n \n ΔA >\n {{element.activeDelta}}>\n \n\n \n ΔR >\n {{element.recoveredDelta}} >\n \n\n \n ΔD >\n {{element.deathsDelta}}>\n \n\n \n C >\n {{element.critical}}>\n \n\n \n
r0
>\n {{element.infectionRate | number:'1.1-1'}}%>\n
\n\n \n
R0
>\n {{element.reproductionNumber | number:'1.1-1'}}>\n
\n\n \n M >\n \n {{element.mobilityChange | number:'1.0-0'}}%\n - - - - \n >\n \n\n \n >\n >\n\n
\n\n
\n

Disclaimer & Credits

\n

Implemented by Artur Pusztai

\n

The application is work in progress, not sufficiently tested, and not suitable for decision making.

\n

\n Covid-19 case data are provided by \n Johns Hopkins University \n and retrieved with the APIs provided by \n NovelCOVID\n

\n

Mobility profiles are provided by google: \n \n See how your community is moving around differently due to COVID-19 \n

\n

\n Mortality rates are taken from \n Wolfram Alpha.\n

\n
\n
\n \n
","import { BrowserModule } from '@angular/platform-browser';\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'\nimport { CacheInterceptor } from './data/cache-interceptor.service';\n\nimport {NgModule} from '@angular/core';\nimport {A11yModule} from '@angular/cdk/a11y';\nimport {ClipboardModule} from '@angular/cdk/clipboard';\nimport {DragDropModule} from '@angular/cdk/drag-drop';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {ScrollingModule} from '@angular/cdk/scrolling';\nimport {CdkStepperModule} from '@angular/cdk/stepper';\nimport {CdkTableModule} from '@angular/cdk/table';\nimport {CdkTreeModule} from '@angular/cdk/tree';\nimport {MatAutocompleteModule} from '@angular/material/autocomplete';\nimport {MatBadgeModule} from '@angular/material/badge';\nimport {MatBottomSheetModule} from '@angular/material/bottom-sheet';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatButtonToggleModule} from '@angular/material/button-toggle';\nimport {MatCardModule} from '@angular/material/card';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport {MatChipsModule} from '@angular/material/chips';\nimport {MatStepperModule} from '@angular/material/stepper';\nimport {MatDatepickerModule} from '@angular/material/datepicker';\nimport {MatDialogModule} from '@angular/material/dialog';\nimport {MatDividerModule} from '@angular/material/divider';\nimport {MatExpansionModule} from '@angular/material/expansion';\nimport {MatGridListModule} from '@angular/material/grid-list';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatInputModule} from '@angular/material/input';\nimport {MatListModule} from '@angular/material/list';\nimport {MatMenuModule} from '@angular/material/menu';\nimport {MatNativeDateModule, MatRippleModule} from '@angular/material/core';\nimport {MatPaginatorModule} from '@angular/material/paginator';\nimport {MatProgressBarModule} from '@angular/material/progress-bar';\nimport {MatProgressSpinnerModule} from '@angular/material/progress-spinner';\nimport {MatRadioModule} from '@angular/material/radio';\nimport {MatSelectModule} from '@angular/material/select';\nimport {MatSidenavModule} from '@angular/material/sidenav';\nimport {MatSliderModule} from '@angular/material/slider';\nimport {MatSlideToggleModule} from '@angular/material/slide-toggle';\nimport {MatSnackBarModule} from '@angular/material/snack-bar';\nimport {MatSortModule} from '@angular/material/sort';\nimport {MatTooltipModule} from '@angular/material/tooltip';\nimport {MatTableModule} from '@angular/material/table';\nimport {MatTabsModule} from '@angular/material/tabs';\nimport {MatToolbarModule} from '@angular/material/toolbar';\nimport {MatTreeModule} from '@angular/material/tree';\n\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { FormsModule } from '@angular/forms';\nimport { NgxChartsModule } from '@swimlane/ngx-charts';\n\nimport { InfoDialog } from './info-dialog';\nimport { ToolbarComponent } from './toolbar/toolbar.component';\nimport { GraphicsComponent } from './graphics/graphics.component';\n\n@NgModule({\n declarations: [\n AppComponent,\n InfoDialog,\n ToolbarComponent,\n GraphicsComponent\n ],\n imports: [\n BrowserModule,\n AppRoutingModule,\n HttpClientModule,\n BrowserAnimationsModule,\n A11yModule,\n ClipboardModule,\n CdkStepperModule,\n CdkTableModule,\n CdkTreeModule,\n DragDropModule,\n MatAutocompleteModule,\n MatBadgeModule,\n MatBottomSheetModule,\n MatButtonModule,\n MatButtonToggleModule,\n MatCardModule,\n MatCheckboxModule,\n MatChipsModule,\n MatStepperModule,\n MatDatepickerModule,\n MatDialogModule,\n MatDividerModule,\n MatExpansionModule,\n MatGridListModule,\n MatIconModule,\n MatInputModule,\n MatListModule,\n MatMenuModule,\n MatNativeDateModule,\n MatPaginatorModule,\n MatProgressBarModule,\n MatProgressSpinnerModule,\n MatRadioModule,\n MatRippleModule,\n MatSelectModule,\n MatSidenavModule,\n MatSliderModule,\n MatSlideToggleModule,\n MatSnackBarModule,\n MatSortModule,\n MatTableModule,\n MatTabsModule,\n MatToolbarModule,\n MatTooltipModule,\n MatTreeModule,\n PortalModule,\n ScrollingModule,\n FormsModule,\n NgxChartsModule,\n ],\n providers: [{ provide: HTTP_INTERCEPTORS, useClass: CacheInterceptor, multi: true }], \n entryComponents: [InfoDialog],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","export class CaseData {\n updated: Date;\n\n country: string; \n cases: number;\n deaths: number;\n recovered: number;\n assumedInfectious: number = 0;\n assumedQuarantine: number = 0;\n assumedHospitalized: number = 0;\n assumedICU: number = 0;\n\n get active(): number {\n return this.cases - this.recovered - this.deaths;\n }\n\n delta: number;\n correctedDelta: number;\n reproductionNumber: number;\n infectionRate: number = 0;\n \n mobilityChange: number = 0;\n stayHomeChange: number = 0;\n\n public copyFrom(c: CaseData) {\n this.updated = new Date(c.updated);\n this.country = c.country;\n this.cases = c.cases;\n this.deaths = c.deaths;\n this.recovered = c.recovered;\n this.assumedQuarantine = c.assumedQuarantine;\n this.assumedInfectious = c.assumedInfectious;\n this.delta = c.delta;\n this.correctedDelta = c.correctedDelta;\n this.reproductionNumber = c.reproductionNumber;\n this.infectionRate = c.infectionRate;\n this.mobilityChange = c.mobilityChange;\n }\n}\n \nexport class CountryInfo {\n iso2: string;\n iso3: string;\n lat: number;\n long: number;\n flag: string;\n}\n\nexport class YesterdayData {\n updated: number;\n country: string;\n countryInfo: CountryInfo;\n cases: number;\n todayCases: number;\n deaths: number;\n todayDeaths: number;\n recovered: number;\n active: number;\n critical: number;\n casesPerOneMillion: number;\n deathsPerOneMillion: number;\n tests: number;\n testsPerOneMillion: number; \n}\n\nexport class SummaryViewData extends CaseData {\n todayCases: number;\n todayDeaths: number;\n critical: number;\n \n tests: number;\n casesPerMille: number;\n deathsPerMille: number;\n testsPerMille: number; \n\n get population(): number {\n return this.cases * 1000 / this.casesPerMille;\n }\n\n get populationScaleFactor(): number {\n return 1000 / this.testsPerMille;\n }\n\n get populationScaledCasesPerMille(): number {\n return this.casesPerMille * this.populationScaleFactor;\n }\n\n get populationScaledActivePerMille(): number {\n return this.activePerMille * this.populationScaleFactor;\n }\n\n get populationScaledRecoveredPerMille(): number {\n return this.recoveredPerMille * this.populationScaleFactor;\n }\n\n get populationScaledDeathsPerMille(): number {\n return this.deathsPerMille * this.populationScaleFactor;\n }\n\n get populationScaledCases(): number {\n return this.cases * this.populationScaleFactor;\n }\n\n get populationScaledActive(): number {\n return this.active * this.populationScaleFactor;\n }\n\n get populationScaledRecovered(): number {\n return this.recovered * this.populationScaleFactor;\n }\n\n get populationScaledDeaths(): number {\n return this.deaths * this.populationScaleFactor;\n }\n\n get recoveredPerMille(): number {\n return 1000 * this.recovered / this.population;\n }\n\n get activePerMille(): number {\n return 1000 * this.active / this.population;\n }\n\n get criticalPerMille(): number {\n return 1000 * this.critical / this.population;\n }\n\n flag: string;\n iso2: string;\n\n recoveredDelta: number;\n deathsDelta: number;\n activeDelta: number;\n deltaDelta: number;\n infectionRateDelta: number;\n reproductionNumberDelta: number;\n\n mortalityRate: number;\n\n get casesPercentOfTested(): number {\n return 100 * this.cases / this.tests;\n }\n\n get mortalityRatePerDay(): number {\n return Math.round(this.mortalityRate / 365); \n }\n}\n\nexport class DataSeries {\n name: any;\n series: Array;\n}\n\nexport class DataPoint {\n name: any;\n value: number;\n}\n\nexport class MobilityData {\n iso2: string;\n region: string;\n subRegion1: string;\n subRegion2: string;\n metroArea: string;\n iso_3166_2_code: string;\n census_fips_code: string;\n date: Date;\n retailAndRecreation: number = 0;\n groceryAndPharmacy: number = 0;\n parks: number = 0;\n transitStations: number = 0;\n workplace: number = 0;\n residential: number = 0;\n get average(): number {\n return (this.retailAndRecreation + this.groceryAndPharmacy +\n this.transitStations + this.workplace) / 4;\n }\n}","import { Injectable } from '@angular/core';\nimport {\n HttpInterceptor,\n HttpRequest,\n HttpHandler,\n} from '@angular/common/http';\n\n@Injectable()\nexport class CacheInterceptor implements HttpInterceptor {\n\n intercept(req: HttpRequest, next: HttpHandler) {\n const httpRequest = req.clone({\n headers: req.headers\n .set('Cache-Control', 'no-cache')\n .set('Pragma', 'no-cache')\n .set('Expires', 'Sat, 01 Jan 2000 00:00:00 GMT')\n })\n\n return next.handle(httpRequest)\n }\n}","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { YesterdayData, CountryInfo, CaseData, MobilityData} from '../data-model';\nimport { fadeInItems } from '@angular/material/menu';\n@Injectable({\n providedIn: 'root'\n})\n\nexport class DataService {\n\n constructor(private http: HttpClient) { \n }\n\n async getYesterdaysWorldData(): Promise\n {\n let caseData = await this.http.get(\"https://disease.sh/v2/all\").toPromise();\n caseData.country = \"World\";\n caseData.countryInfo = new CountryInfo();\n caseData.countryInfo.flag = \"assets/globe_PNG62.png\"\n return caseData;\n }\n\n async getLatestCountryData(): Promise>\n {\n var jhuCountries = await this.http.get>(\"https://disease.sh/v2/jhucsse\").toPromise();\n let result = new Array();\n for(let jhuCountry of jhuCountries)\n {\n let caseData = new CaseData();\n caseData.country = jhuCountry.country;\n caseData.cases = jhuCountry.stats.confirmed;\n caseData.deaths = jhuCountry.stats.deaths;\n caseData.recovered = jhuCountry.stats.recovered;\n result.push(caseData);\n }\n return result;\n }\n\n async getHistoricalCountryData(countryName: string): Promise>\n {\n let history = await this.http.get(`https://disease.sh/v2/historical/${encodeURIComponent(countryName)}`).toPromise();\n let result = new Array();\n let keys = Object.keys(history.timeline.cases);\n\n for(let key of keys)\n {\n let caseData = new CaseData();\n caseData.country = history.country;\n caseData.updated = new Date(key);\n\n caseData.cases = history.timeline.cases[key];\n caseData.recovered = history.timeline.recovered[key];\n caseData.deaths = history.timeline.deaths[key];\n\n result.push(caseData);\n } \n\n return result;\n }\n\n async getYesterdaysData(): Promise {\n return await this.http.get(\"https://disease.sh/v2/countries\").toPromise();\n }\n\n async getAllHistoricalData(): Promise>\n {\n let allHistory = await this.http.get(`https://disease.sh/v2/historical?lastdays=all`).toPromise();\n let result = new Map();\n for(let provinceHistory of allHistory)\n {\n if(!result.has(provinceHistory.country))\n {\n result.set(provinceHistory.country, new Array());\n }\n let history = result.get(provinceHistory.country);\n let keys = Object.keys(provinceHistory.timeline.cases);\n\n for(let key of keys)\n {\n let date = new Date(key);\n let caseData = history.find (\n cd => cd.updated.getDate() == date.getDate() && \n cd.updated.getMonth() == date.getMonth() && \n cd.updated.getFullYear() == date.getFullYear()\n );\n\n if(caseData == null)\n {\n caseData = new CaseData();\n caseData.country = provinceHistory.country;\n caseData.updated = date;\n caseData.cases = caseData.recovered = caseData.deaths = 0;\n history.push(caseData);\n }\n caseData.cases += provinceHistory.timeline.cases[key];\n caseData.recovered += provinceHistory.timeline.recovered[key];\n caseData.deaths += provinceHistory.timeline.deaths[key];\n }\n }\n result.set(\"World\", await this.getHistoricalWorldData());\n return result;\n }\n\n private async getHistoricalWorldData(): Promise\n {\n let timeline = await this.http.get(`https://disease.sh/v2/historical/All?lastdays=all`).toPromise();\n let result = new Array();\n let keys = Object.keys(timeline.cases);\n\n for(let key of keys)\n {\n let caseData = new CaseData();\n caseData.country = \"World\";\n caseData.updated = new Date(key);\n\n caseData.cases = timeline.cases[key];\n caseData.recovered = timeline.recovered[key];\n caseData.deaths = timeline.deaths[key];\n\n result.push(caseData);\n } \n\n return result;\n }\n\n public async getMortalityRates(): Promise> \n {\n let content = await this.http.get('assets/mortalityRate.csv', {responseType: 'text'}).toPromise();\n let splits = content.toString().split('\\n');\n let result = new Map();\n for(let i = 0; i < splits.length; i++) {\n let kv = splits[i].split('|');\n if(kv.length != 2) continue;\n let c = kv[0].trim();\n let n = Number.parseInt(kv[1].trim());\n result.set(c,n);\n }\n return result;\n }\n\n public async getMobilityData(): Promise {\n let result = new Array();\n let content = await this.http.get('https://coronaservice.blob.core.windows.net/mobilitydata/Global_Mobility_Report.csv', {responseType: 'text'}).toPromise();\n let lines = content.toString().split('\\n');\n for (let i = 1; i < lines.length; i++) {\n let columns = lines[i].split(';');\n if (columns.length != 15) continue;\n let item = new MobilityData();\n item.iso2 = columns[0];\n item.region = columns[1];\n item.subRegion1 = columns[2];\n item.subRegion2 = columns[3];\n item.metroArea = columns[4];\n item.iso_3166_2_code = columns[5];\n item.census_fips_code = columns[6];\n item.date = new Date(columns[8]);\n item.retailAndRecreation = Number.parseInt(columns[9]);\n item.groceryAndPharmacy = Number.parseInt(columns[10]);\n item.parks = Number.parseInt(columns[11]);\n item.transitStations = Number.parseInt(columns[12]);\n item.workplace = Number.parseInt(columns[13]);\n item.residential = Number.parseInt(columns[14]);\n result.push(item);\n }\n return result;\n }\n}\n\nclass JhuCountry {\n country: string;\n province: string;\n updatedAt: string;\n stats: JhuCaseData;\n}\n\nclass JhuCaseData {\n confirmed: number | null;\n deaths: number | null;\n recovered: number;\n}\n\nclass HistCountry {\n country: string;\n provinces: Array;\n timeline: HistTimeline;\n}\n\nclass HistTimeline {\n cases: any;\n deaths: any;\n recovered: any;\n}\n\n","import { Component, OnInit, Input, Output, EventEmitter, ɵisDefaultChangeDetectionStrategy } from '@angular/core';\nimport { DataSeries, SummaryViewData, CaseData, DataPoint, MobilityData } from '../data-model';\nimport { SettingsService } from '../settings/settings.service';\nimport { SharingService } from '../sharing/sharing.service';\n\n@Component({\n selector: 'app-graphics',\n templateUrl: './graphics.component.html',\n styleUrls: ['./graphics.component.scss']\n})\nexport class GraphicsComponent implements OnInit {\n \n currentCountry: SummaryViewData;\n\n currentHistory: CaseData[] = new Array();\n\n xTimeScaleMin: Date = new Date(\"2020-01-22\");\n // xTimeScaleMin: Date = new Date(Date.now() - 45 * 1000 * 60 * 60 * 24);\n xTimeScaleMax: Date = new Date(Date.now() - 1 * 1000 * 60 * 60 * 24);\n currentCasesSeries: Array;\n currentReproductionSeries: Array;\n currentLogSeries: Array;\n currentDeltaSeries: Array;\n currentMobilitySeries: Array;\n\n // options\n legend: boolean = false;\n legendPosition: string = \"below\";\n showLabels: boolean = true;\n animations: boolean = true;\n xAxis: boolean = true;\n yAxis: boolean = true;\n showYAxisLabel: boolean = false;\n showXAxisLabel: boolean = true;\n xAxisLabel: string = 'Date';\n xLogLabel: string = \"log(cases)\"\n yAxisLabel: string = 'Cases [thousands]';\n dAxisLabel: string = \"Reproduction number\";\n gAxisLabel: string = \"New cases\";\n yLogLabel: string = \"log(new cases)\";\n yLogTicks: number[] = [Math.log(1000), Math.log(10000), Math.log(100000), Math.log(1000000)];\n linTicks: number[] = [10, 100, 1000, 10000, 100000];\n reproductionTicks: number[] = [0, 1, 2, 3, 4];\n timeline: boolean = false;\n yLogScaleMin: number = Math.log(1000);\n yLogScaleMax: number = Math.log(10000000);\n\n totalCaption: string = \"Cases over time\";\n deltaCaption: string = \"New cases per day\";\n logCaption: string = \"Cases (logarithmic) over time\";\n reproductionCaption: string = \"Reproduction Number over time\";\n\n public yAxisTickFormattingFn = this.yAxisTickFormatting.bind(this);\n yAxisTickFormatting(value: number) {\n let suffix = \"\";\n let v = value;\n if (Math.abs(v) >= 1000000) {\n suffix = \"M\";\n v = value / 1000000;\n }\n else if (Math.abs(v) >= 1000) {\n suffix = \"k\";\n v = value / 1000;\n };\n return `${Math.round(v)}${suffix}`;\n }\n\n public logAxisTickFormattingFn = this.logAxisTickFormatting.bind(this);\n logAxisTickFormatting(value) {\n let l = Math.round(Math.exp(value));\n return this.exponentialNotationOf(l);\n }\n\n private exponentialNotationOf(l: number) {\n switch (l) {\n case 1: return \"1\";\n case 10: return \"10\";\n case 100: return \"10^2\";\n case 1000: return \"10^3\";\n case 10000: return \"10^4\";\n case 100000: return \"10^5\";\n case 1000000: return \"10^6\";\n case 10000000: return \"10^7\";\n case 100000000: return \"10^8\";\n case 1000000000: return \"10^9\";\n }\n return l;\n }\n\n private pad(num: number, size: number): string {\n let s = num + \"\";\n while (s.length < size) s = \"0\" + s;\n return s;\n }\n private months = [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n ];\n\n public dateAxisTickFormattingFn = this.dateAxisTickFormatting.bind(this);\n dateAxisTickFormatting(value) {\n let date = new Date(value);\n let month = date.getMonth();\n let dayOfMonth = date.getDate();\n if (dayOfMonth < 8) return `${this.months[month]}`;\n else return \"\";//`${this.pad(date.getDate(), 2)}`;\n }\n\n deltaTimeTicks: Array = [new Date(2020, 0, 22), new Date()];\n private setDeltaTimeTicks() {\n this.deltaTimeTicks = new Array();\n let series = this.currentDeltaSeries[0].series;\n for (let i = 0; i < series.length; i++) {\n let date = new Date(series[i].name);\n if (date.getDate() == 1) {\n this.deltaTimeTicks.push(new Date(date));\n }\n }\n }\n\n get yScaleMaxCases() {\n return this.currentHistory\n .filter(h => h.updated >= this.xTimeScaleMin)\n .reduce((m, h) => h.cases > m ? h.cases : m, this.maxCases);\n }\n\n get yScaleMaxDelta() {\n return this.currentHistory\n .filter(h => h.updated >= this.xTimeScaleMin)\n .reduce((m, h) => h.delta > m ? h.delta : m, this.maxDelta);\n }\n\n colorScheme = {\n domain: ['#ff6666', '#ff7777', '#ff8888', '#66aa66', '#6666ff', '#a8385d', '#aae3f5']\n };\n\n deltaColorScheme = {\n domain: ['#ff6666', '#6666ff', '#66aa66', '#a8385d', '#aae3f5']\n };\n\n mobilityColorScheme = {\n domain: ['#ddffff', '#ddddff', '#ffccdd', '#ffddcc', '#000000']\n };\n\n maxCases: number = 1;\n maxDelta: number = 10000;\n\n mobilityData: MobilityData[] = new Array(); \n\n constructor(private settingsService: SettingsService, private sharingService: SharingService) { \n settingsService.tabIndex.subscribe(i => this._selectedTabIndex = i);\n }\n\n ngOnInit(): void {\n this.maxCases = 1;\n this.maxDelta = 10000;\n this.sharingService.mobilityData.subscribe(m => {\n this.mobilityData = m;\n this.renderMobilityData();\n });\n this.sharingService.selectedCountry.subscribe(c => {\n this.currentCountry = c;\n });\n this.sharingService.currentHistory.subscribe(h => {\n this.currentHistory = h;\n this.renderCountryHistory();\n })\n }\n\n private async renderCountryHistory() {\n let activeCases = this.createSeries(\"Active but assumed recovered\");\n let infectiousCases = this.createSeries(\"Active infectious (estimated)\");\n let quarantineCases = this.createSeries(\"Active in quarantine (estimated)\");\n let deathCases = this.createSeries(\"Deaths\");\n let recoveredCases = this.createSeries(\"Recovered\");\n let reproductionNumbers = this.createSeries(\"Reproduction number\");\n let logarithmicValues = this.createSeries(\"Cases\");\n let deltaCases = this.createSeries(\"New Cases\");\n let deltaDeaths = this.createSeries(\"New Deaths\");\n\n for (let i = 0; this.currentHistory != null && i < this.currentHistory.length; i++) {\n let entry = this.currentHistory[i];\n recoveredCases.series.push(GraphicsComponent.CreateDataPoint(entry.updated, entry.recovered));\n deathCases.series.push(GraphicsComponent.CreateDataPoint(entry.updated, entry.deaths));\n activeCases.series.push(GraphicsComponent.CreateDataPoint(entry.updated, \n entry.active - entry.assumedInfectious - entry.assumedQuarantine));\n infectiousCases.series.push(GraphicsComponent.CreateDataPoint(entry.updated, entry.assumedInfectious));\n quarantineCases.series.push(GraphicsComponent.CreateDataPoint(entry.updated, entry.assumedQuarantine));\n\n reproductionNumbers.series.push(GraphicsComponent.CreateDataPoint(entry.updated, entry.reproductionNumber));\n\n if (i > 0 && entry.cases > 0 && entry.delta > 0) {\n let logarithmicPoint = new DataPoint();\n logarithmicPoint.name = entry.updated;\n logarithmicPoint.value = Math.log(entry.cases);\n logarithmicValues.series.push(logarithmicPoint);\n }\n\n if (i > 0 && entry.updated >= this.xTimeScaleMin) {\n let prev = this.currentHistory[i - 1];\n let averageDelta = SharingService.calculateAverageDelta(i, 7, this.currentHistory);\n if(averageDelta < 0) averageDelta = 0;\n let deltaCasesPoint = GraphicsComponent.CreateDataPoint(entry.updated, averageDelta);\n let deltaDeathsPoint = GraphicsComponent.CreateDataPoint(entry.updated, entry.deaths - prev.deaths);\n if(deltaDeathsPoint.value < 0) deltaDeathsPoint.value = 0;\n deltaCases.series.push(deltaCasesPoint);\n deltaDeaths.series.push(deltaDeathsPoint);\n }\n }\n this.currentCasesSeries = new Array();\n this.currentCasesSeries.push(infectiousCases);\n this.currentCasesSeries.push(quarantineCases);\n this.currentCasesSeries.push(activeCases);\n this.currentCasesSeries.push(recoveredCases);\n this.currentCasesSeries.push(deathCases);\n\n this.currentReproductionSeries = new Array();\n this.currentReproductionSeries.push(reproductionNumbers);\n\n this.currentLogSeries = new Array();\n this.currentLogSeries.push(logarithmicValues)\n\n this.currentDeltaSeries = new Array();\n this.currentDeltaSeries.push(deltaCases);\n this.currentDeltaSeries.push(deltaDeaths);\n\n this.setDeltaTimeTicks();\n }\n\n private renderMobilityData() {\n this.currentMobilitySeries = new Array();\n let averageSeries = this.createSeries(\"7 days average\");\n let retailSeries = this.createSeries(\"retail & recreation\");\n let grocerySeries = this.createSeries(\"grocery & pharmacies\");\n // let parksSeries = this.createSeries(\"parks\");\n let transitSeries = this.createSeries(\"transit stations\");\n let workplaceSeries = this.createSeries(\"workplace\");\n //let residentialSeries = this.createSeries(\"residential\");\n this.currentMobilitySeries.push(retailSeries);\n this.currentMobilitySeries.push(grocerySeries);\n // this.currentMobilitySeries.push(parksSeries);\n this.currentMobilitySeries.push(transitSeries);\n this.currentMobilitySeries.push(workplaceSeries);\n this.currentMobilitySeries.push(averageSeries);\n //this.currentMobilitySeries.push(residentialSeries);\n for (let i = 0; i < this.mobilityData.length; i++) {\n let item = this.mobilityData[i];\n let avg = SharingService.calculateAverageMobility(i, 7, this.mobilityData);\n averageSeries.series.push(GraphicsComponent.CreateDataPoint(item.date, avg));\n retailSeries.series.push(GraphicsComponent.CreateDataPoint(item.date, item.retailAndRecreation));\n grocerySeries.series.push(GraphicsComponent.CreateDataPoint(item.date, item.groceryAndPharmacy));\n // parksSeries.series.push(GraphicsComponent.CreateDataPoint(item.date, item.parks));\n transitSeries.series.push(GraphicsComponent.CreateDataPoint(item.date, item.transitStations));\n workplaceSeries.series.push(GraphicsComponent.CreateDataPoint(item.date, item.workplace));\n //residentialSeries.series.push(GraphicsComponent.CreateDataPoint(item.date, item.residential));\n }\n }\n\n private createSeries(name: string): DataSeries {\n let series = new DataSeries();\n series.name = name;\n series.series = new Array();\n return series;\n }\n\n private static CreateDataPoint(date: Date, value: number): DataPoint {\n let recovered = new DataPoint();\n recovered.name = new Date(+date); //new DatePipe(\"en\").transform(date, \"dd.MM\");\n recovered.value = value;\n return recovered;\n }\n\n onSelect(event) {\n console.log(event);\n }\n\n private _selectedTabIndex: number = 0;\n get selectedTabIndex(): number {\n return this._selectedTabIndex;\n }\n\n set selectedTabIndex(index: number) {\n this.settingsService.setTabIndex(index);\n }\n\n}\n","\n \n #\n \n
\n \n \n
\n
Total cases:
\n
\n {{currentCountry.cases | number}}\n
\n
\n
\n \n
\n
Recovered:
\n
\n {{currentCountry.recovered | number}}\n
\n
\n
\n \n
\n
Deaths:
\n
\n {{currentCountry.deaths | number}}\n
\n
\n
\n \n
\n
New cases:
\n
\n {{currentCountry.delta | number}}\n 0\" class=\"warn\">arrow_drop_up\n arrow_drop_down\n arrow_right\n
\n
\n
\n \n
\n
New recovered:
\n
\n {{currentCountry.recoveredDelta | number}}\n
\n
\n
\n \n
\n
New deaths:
\n
\n {{currentCountry.deathsDelta | number}}\n
\n
\n
\n \n
\n
Active cases:
\n
\n {{currentCountry.active | number}}\n 0\" class=\"warn\">arrow_drop_up\n arrow_drop_down\n arrow_right\n
\n
\n
\n \n
\n
R0 estimation:
\n
\n 1.01\" \n class=\"warn\">{{currentCountry.reproductionNumber | number:'1.1-1' }}\n \n {{currentCountry.reproductionNumber | number:'1.1-1' }}\n \n 0\" class=\"warn\">arrow_drop_up\n arrow_drop_down\n arrow_right\n
\n
\n
\n \n
\n
Mobility change:
\n
\n \n {{currentCountry.mobilityChange | number:'1.0-0' }}%\n \n \n - - - -\n \n
\n
\n
\n
\n
\n
\n Latest updated on {{currentCountry.updated | date}}\n
\n
\n
\n \n Σ\n \n
\n \n \n
\n
\n active, \n recovered, \n deaths: \n T = A + R + D\n
\n
\n
\n \n Δ\n \n
\n \n \n
\n
\n daily cases (7 days avg.), \n daily deaths\n
\n
\n
\n \n
R0
\n \n
\n \n \n
\n
\n reproduction number (7 days avg.)\n
\n
\n
\n \n M\n \n
\n \n \n
\n
\n population mobility [% of Jan. 2020] \n
\n
\n
\n \n
\n","import {Component, Inject, OnInit} from '@angular/core';\nimport {MatDialog, MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';\nimport {SummaryViewData, DataSeries, DataPoint, CaseData} from \"./data-model\";\nimport { SettingsService } from './settings/settings.service';\nimport { MatSliderChange } from '@angular/material/slider';\n\nexport interface DialogData {\n country: SummaryViewData;\n history: CaseData[];\n}\n\n@Component({\n selector: 'info-dialog',\n templateUrl: 'info-dialog.html',\n})\nexport class InfoDialog implements OnInit {\n currentCountry: SummaryViewData;\n currentHistory: CaseData[];\n simulationHistory: CaseData[];\n mathModelSeries: DataSeries[];\n simulationSeries: DataSeries[];\n infectionRateSeries: DataSeries[];\n reproductionTicks: number[] = [0,1,2,3,4,5,6,7,8,9];\n\n public yAxisTickFormattingFn = this.yAxisTickFormatting.bind(this);\n yAxisTickFormatting(value: number) {\n let suffix = \"\";\n let v = value;\n if(v >= 1000000) {\n suffix = \"M\";\n v = value / 1000000;\n }\n else if(v >= 1000)\n {\n suffix = \"k\";\n v = value / 1000;\n };\n return `${Math.round(v)}${suffix}`;\n }\n \n reproductionNumberMin = 0.5;\n reproductionNumberMax = 3;\n reproductionNumberStep = 0.01;\n reproductionNumber: number = 2.0;\n\n infectionPeriodMin = 2;\n infectionPeriodMax = 30;\n infectionPeriodStep = 1;\n infectionPeriod: number = 5;\n\n simulationDaysMin = 7;\n simulationDaysMax = 700;\n simulationDaysStep = 7;\n simulationDays = 350;\n\n activePeriod: number = 14;\n\n private maxActive: number = 1000000;\n get desiredMaxActive() {\n return this.maxActive.toString();\n }\n set desiredMaxActive(value: string) {\n this.maxActive = Number.parseInt(value);\n }\n\n private _perMillSummary: boolean = true;\n get perMillSummary(): boolean {\n return this._perMillSummary;\n }\n set perMillSummary(value: boolean)\n {\n this.settingsService.setPerMilSummary(value);\n }\n \n constructor(\n private settingsService: SettingsService,\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: DialogData) \n {\n this.currentCountry = data.country;\n this.currentHistory = data.history;\n this.settingsService.perMilSummary.subscribe(on => this._perMillSummary = on);\n this.reproductionNumber = this.currentCountry.reproductionNumber;\n this.createMathModelSeries();\n this.resetSimulationHistory();\n }\n\n public resetSimulationHistory() {\n this.simulationSeries = this.resetSimulationSeries();\n }\n\n async ngOnInit(): Promise {\n }\n\n createMathModelSeries() {\n this.mathModelSeries = this.resetSimulationSeries();\n\n let aSeries = new DataSeries();\n aSeries.name = \"simulated active\";\n aSeries.series = new Array();\n\n let rSeries = new DataSeries();\n rSeries.name = \"simulated recovered\";\n rSeries.series = new Array();\n\n this.mathModelSeries.push(aSeries);\n this.mathModelSeries.push(rSeries);\n // let sSeries = this.mathModelSeries.find(s => s.name==\"susceptible\");\n\n let growthRate = this.reproductionNumber / this.infectionPeriod; \n //Math.pow(this.reproductionNumber + 1, 1 / this.healingTime) - 1;\n let population = this.currentCountry.population;\n\n let startIndex = this.simulationHistory.length;\n let startDate = this.simulationHistory[0].updated;\n for(let i = startIndex; i < this.simulationDays; i++) {\n let h = new CaseData();\n let r = growthRate;\n h.deaths = 0;\n if (i < startIndex) {\n h.infectionRate = this.simulationHistory[i].infectionRate;\n //r = h.infectionRate / 100;\n h.deaths = this.simulationHistory[i].deaths;\n }\n h.updated = new Date(Number(startDate) + i * 1000 * 60 * 60 * 24)\n h.correctedDelta = r * this.simulationHistory[i - 1].assumedInfectious * (population - this.simulationHistory[i - 1].active - this.simulationHistory[i - 1].recovered) / population;\n if (h.correctedDelta < 0) h.correctedDelta = 0;\n h.assumedInfectious = this.simulationHistory[i - 1].assumedInfectious + h.correctedDelta;\n h.assumedQuarantine = this.simulationHistory[i - 1].assumedQuarantine;\n h.recovered = this.simulationHistory[i - 1].recovered;\n if (i >= this.infectionPeriod) {\n h.assumedInfectious -= this.simulationHistory[i - this.infectionPeriod].correctedDelta;\n h.assumedQuarantine += this.simulationHistory[i - this.infectionPeriod].correctedDelta;\n }\n if (i >= this.activePeriod) {\n h.assumedQuarantine -= this.simulationHistory[i - this.activePeriod].correctedDelta;\n h.recovered += this.simulationHistory[i - this.activePeriod].correctedDelta;;\n }\n h.cases = h.assumedInfectious + h.assumedQuarantine + h.recovered + h.deaths;\n if (i >= startIndex)\n this.simulationHistory.push(h);\n else\n this.simulationHistory[i] = h;\n this.addPointToSeries(h.updated, h.active, aSeries);\n this.addPointToSeries(h.updated, h.recovered, rSeries);\n // this.addPointToSeries(i, population - h.recovered - h.active, sSeries);\n }\n }\n\n resetSimulationSeries(): DataSeries[]{\n let series = new Array();\n\n let aSeries = new DataSeries();\n aSeries.name = \"active (reported)\";\n aSeries.series = new Array();\n series.push(aSeries);\n\n let aaSeries = new DataSeries();\n aaSeries.name = \"assumed active (estimated)\";\n aaSeries.series = new Array();\n series.push(aaSeries);\n\n let rSeries = new DataSeries();\n rSeries.name = \"recovered (reported)\";\n rSeries.series = new Array();\n series.push(rSeries);\n // let sSeries = new DataSeries();\n // sSeries.name = \"susceptible\";\n // sSeries.series = new Array();\n // series.push(sSeries);\n\n this.infectionRateSeries = new Array();\n let rateSeries = new DataSeries();\n rateSeries.name = \"Measured Reproduction number\";\n rateSeries.series = new Array();\n this.infectionRateSeries.push(rateSeries);\n\n this.simulationHistory = new Array();\n for(let i = 0; i < this.currentHistory.length; i++)\n {\n let h = new CaseData();\n h.copyFrom(this.currentHistory[i]);\n this.simulationHistory.push(h);\n this.addPointToSeries(h.updated, h.active, aSeries);\n this.addPointToSeries(h.updated,\n h.assumedInfectious + h.assumedQuarantine + h.assumedHospitalized + h.assumedICU,\n aaSeries);\n this.addPointToSeries(h.updated, h.recovered, rSeries);\n //this.addPointToSeries(i, this.currentCountry.population - h.active - h.recovered, sSeries);\n this.addPointToSeries(h.updated, h.reproductionNumber, rateSeries);\n }\n return series;\n }\n\n createSimulationSeries() {\n this.simulationSeries = this.resetSimulationSeries()\n\n let aSeries = new DataSeries();\n aSeries.name = \"simulated active\";\n aSeries.series = new Array();\n\n let rSeries = new DataSeries();\n rSeries.name = \"simulated recovered\";\n rSeries.series = new Array();\n\n // let sSeries = this.simulationSeries.find(s => s.name==\"susceptible\");\n\n this.simulationSeries.push(aSeries);\n this.simulationSeries.push(rSeries);\n let rateSeries = new DataSeries();\n rateSeries.name = \"Simulated reproduction number\";\n rateSeries.series = new Array();\n this.infectionRateSeries.push(rateSeries);\n\n let population = this.currentCountry.population;\n let t = this.infectionPeriod;\n let rMin = 1 / this.infectionPeriod;\n let rMax = 5 / this.infectionPeriod;\n let startIndex = this.simulationHistory.length;\n let startDate = this.simulationHistory[0].updated;\n let r = this.simulationHistory[startIndex-1].infectionRate / 100;\n for(let i = startIndex; i < 700; i++) {\n let h = new CaseData();\n h.updated = new Date(Number(startDate) + i * 1000 * 60 * 60 * 24)\n h.deaths = 0;\n h.correctedDelta = r * this.simulationHistory[i-1].active * \n (population - this.simulationHistory[i-1].active - \n this.simulationHistory[i-1].recovered) / population;\n if (h.correctedDelta < 0) h.correctedDelta = 0;\n h.cases = this.simulationHistory[i - 1].cases + h.correctedDelta;\n h.recovered = this.simulationHistory[i-1].recovered;\n if(i >= t) {\n h.recovered += this.simulationHistory[i - t].correctedDelta;\n }\n this.simulationHistory.push(h);\n\n h.infectionRate = 0;\n let j = Math.min(5,i);\n for(let k = i-j; k < i; k++)\n {\n if(this.simulationHistory[k].active > 0) {\n // average of the last 'j' daily growth factors;\n // daily growth factor is defined as \n // the number of new infections today (delta) caused by one hundred yesterdays infected (active)\n let gDelta = this.simulationHistory[k+1].cases - this.simulationHistory[k].cases;\n let s = (population - this.simulationHistory[k].active - this.simulationHistory[k].recovered)/population;\n h.infectionRate += 100 * gDelta / (this.simulationHistory[k].assumedInfectious * s) / j;\n }\n }\n h.reproductionNumber = h.infectionRate / 100 * this.infectionPeriod; // Math.pow(1 + h.infectionRate/100, this.healingTime) - 1;\n this.addPointToSeries(h.updated, h.active, aSeries);\n this.addPointToSeries(h.updated, h.recovered, rSeries);\n // this.addPointToSeries(i, population - h.active - h.recovered, sSeries);\n this.addPointToSeries(h.updated, h.reproductionNumber, rateSeries);\n if(i % 14 != 0) continue;\n let forecast = this.calculateForecast(r, this.simulationHistory, t, population);\n if(forecast < this.maxActive * 0.9 && r < rMax) {\n r = Math.min(rMax, r + 0.5 / this.infectionPeriod);\n forecast = this.calculateForecast(r, this.simulationHistory, t, population);\n }\n while(forecast > this.maxActive && r > rMin) {\n r = Math.max(rMin, r - 0.5 / this.infectionPeriod);\n forecast = this.calculateForecast(r, this.simulationHistory, t, population);\n }\n }\n }\n\n private addPointToSeries(i: Date, v: number, aSeries: DataSeries) {\n let p = new DataPoint();\n p.name = i;\n p.value = v;\n aSeries.series = [...aSeries.series, p];\n }\n\n calculateForecast(r: number, hist: CaseData[], t: number, population: number): number {\n let forecasts = new Array();\n let c = new CaseData();\n let hi = hist.length - 1;\n c.copyFrom(hist[hi]);\n forecasts.push(c);\n let max = c.active;\n for(let i = 1; i <= t; i++) {\n let h = new CaseData();\n h.deaths = 0;\n h.correctedDelta = r * forecasts[i-1].active * (population - forecasts[i-1].active - forecasts[i-1].recovered) / population;\n if (h.correctedDelta < 0) h.correctedDelta = 0;\n h.cases = forecasts[i - 1].cases + h.correctedDelta;\n h.recovered = forecasts[i-1].recovered;\n if(hi + i - t >= 0) {\n h.recovered += hist[hi + i - t].correctedDelta;\n }\n forecasts.push(h);\n if(h.active > max) max = h.active;\n }\n return max;\n }\n\n sleep(ms: number): Promise {\n return new Promise(resolve => setTimeout(resolve, ms));\n }\n\n onNoClick(): void {\n this.dialogRef.close();\n }\n\n infectionPeriodPreview(event: MatSliderChange)\n {\n this.infectionPeriod = event.value;\n this.createMathModelSeries();\n }\n\n reproductionNumberPreview(event: MatSliderChange)\n {\n this.reproductionNumber = event.value;\n this.createMathModelSeries();\n }\n\n simulationDaysPreview(event: MatSliderChange) {\n this.simulationDays = event.value;\n this.createMathModelSeries();\n }\n}","\n
\n

{{currentCountry.country}}

\n \n \n \n \n
\n

Facts

\n \n

\n Yesterday, {{currentCountry.delta | number}} new cases where reported, {{currentCountry.recoveredDelta}} patients recovered \n and unfortunately {{currentCountry.deathsDelta}} patients died.\n

\n
\n Up to now, a total number of {{currentCountry.tests | number}} persons where tested.\n {{currentCountry.cases | number}} results where positive\n ({{100*currentCountry.cases/currentCountry.tests | number:\"1.1-1\"}}% of the tests). Their current state is:\n
    \n
  • {{currentCountry.recovered | number}} recovered and are now immune and not infectious anymore.
  • \n
  • {{currentCountry.active | number}} are still active (meaning they are still infected, some of them infectious),\n {{currentCountry.critical | number}} of them in a critical situation1
  • \n
  • {{currentCountry.deaths | number}} died2
  • \n
\n \n
\n

1 should stay below the number of ICU and CCB available in your country. \n See \n Wikipedia article List of countries by hospital beds

\n

2 the estimated mortality rate of your country from the last years \n (before the Corona virus) is \n {{currentCountry.mortalityRate | number}} per year \n ({{currentCountry.mortalityRatePerDay | number}} per day).\n See Wolfram Alpha.\n

\n
\n
\n
\n Up to now, {{currentCountry.testsPerMille | number:\"1.2-2\"}}‰ of {{currentCountry.country}}'s population\n was tested, {{currentCountry.casesPerMille| number:\"1.2-2\"}}‰ positive \n ({{100*currentCountry.cases/currentCountry.tests | number:\"1.1-1\"}}% of the tests). Their current state is:\n
    \n
  • {{currentCountry.recoveredPerMille | number:\"1.2-2\"}}‰ recovered and are not infectious anymore.
  • \n
  • {{currentCountry.activePerMille | number:\"1.2-2\"}}‰ are still active (meaning they are still \n infected, some of them also infectious),\n {{currentCountry.criticalPerMille | number:\"1.2-2\"}}‰ are in a critical situation1
  • \n
  • {{currentCountry.deathsPerMille | number:\"1.2-2\"}}‰ died2
  • \n
\n \n
\n

1 should stay below the number of ICU and CCB available in your country. \n See \n Wikipedia article List of countries by hospital beds

\n

2 the estimated mortality rate for your country from the last years \n (before the Corona virus), is \n {{1000 * currentCountry.mortalityRate / currentCountry.population | number:\"1.2-2\"}}‰ \n of population per year. \n See Wolfram Alpha.\n

\n
\n
\n

Data and Symbols

\n Covid-19 case data are provided by Johns Hopkins University and retrieved with the APIs provided by \n NovelCOVID.
\n It is important to keep in mind that the reported new cases reflect positive tests performed \n several days before being reported. Further more, the infection took place even some additional days before\n the test.
\n For every day since the beginning of case reporting, we define the following indicators:\n
\n
ΔT - new cases; ΔR - new recovered; ΔD - new deaths.
\n
T - cumulated reported cases
\n
R - cumulated recovered cases
\n
A - currently active cases
\n
C - currently critical cases (subset of A)
\n
D - cumulated deaths
\n
R0 (Experimental!) - the expected average number of persons which will be infected by one infected person.\n The estimation of the reproduction number for each day is assuming that on average an infected person is isolated after \n 5 days of being infectious. This is actually different from county to country so the results here are very inaccurate.
\n
\n
M - mobility data change is indicating in % how much the mobility of the population has changed \n since january 2020. The data provided by google: \n \n See how your community is moving around differently due to COVID-19 \n
\n
\n

Math

\n

\n We are using a very simple but illustrative model to simulate what could happen in the future, \n based on the logistic equation. In our model, we assume that patients tested positive will be isolated \n and cannot infect other peoples anymore. We assume that patients tested positive, before being tested,\n where infectious about 5 days before being isolated. \n

\n

Basic reproduction rate and number: r0 and R0

\n

\n Let us assume that an infected person, on average, \n is encountering every day a number ρ of other persons.\n For each person he encounters, there is a \n probability φ of infecting him (for instance if they shake hands, \n or the infected person is sneezing while they meet etc.).\n

\n

\n Definition:The basic reproduction rate r0 is the number of new infections\n caused directly by an infected person during one day, if all other persons around him are susceptible: \n r0= ρ × φ\n

\n

\n If on day n there are In infectious persons, and assuming all of them meet only susceptible persons (meaning: \n persons which can be infected - i.e. they are not yet infected, nor immune) - then during one day, the \n new number of infected persons is: \n

\n

\n ΔIn+1 = r0 × In\n

\n

\n Notes:
\n 1. If r0 ≤ 1, the disease cannot spread and disappears.
\n 2. The reproduction rate is influenced by the social habits and behavior of the people \n (by ρ: how many \n other people are met; by φ: do they shake hands? Do they embrace each other?\n Do they wash their hands on a regular base?).
\n 3. It is also influenced by the disease itself (by ρ: how it is transmitted?).
\n 4. It is NOT influenced by the status of the other persons - i.e. if they are already immune or not. \n

\n

\n Definition: The Infectious period τ is the average duration an infected person remains\n infectious and can infect others (before being isolated). We use the value of 5 days in our calculation.\n

\n

\n Definition: The Active period ε is the average total duration an infected person remains\n infected. We use the value of 14 days in our calculations.\n

\n

\n Definition: The basic reproduction number R0 is the number of persons directly infected\n by an infected person during his infection period.\n

\n

\n R0 = r0 × τ\n

\n

Effective reproduction rate and number: rt and Rt

\n

\n Both r0 and R0 are defined under ideal conditions: it is assumed that \n all other persons are susceptible. This is the case in the beginning of an epidemy, when the number of\n infectious and immune persons is negligible. \n But after some time, our imaginary infected person will not only encounter susceptible persons, but also \n active or immune persons.\n If the population of the country is P, the number of current infected persons is A (active), \n R the recovered persons, then number of susceptible \n persons is S = P - A - R, and the probability for our imaginary infected person to encounter a \n susceptible person is s = S / P. The probability s will decrease from 1 towards 0 during an epidemy (we will see later that \n often it will not reach 0).
\n

\n

Definition:The effective reproduction rate rt and the effective reproduction number \n Rt are defined as:\n

\n

\n rt = r0 × s
\n Rt = R0 × s
\n

\n

\n If we consider the number of persons who die, D, the population will decrease over time, \n and on day n+1 we can write:\n The newly infected persons on day n can be written as:\n

\n

\n ΔIn = r0 × In-1 × sn-1
\n sn = (Pn - An - Rn) / Pn
\n Pn = Pn-1 - Dn\n

\n

\n The number of recovered persons on day n can be written as \n

\n
\n Rn = Rn-1 + ΔIn-τ\n
\n And the number of infectious and infected persons on day n is:\n

\n In = In-1 + ΔIn- ΔIn-τ
\n
\n An = An-1 + ΔIn - ΔIn-ε
\n

\n For now we assume there are no deaths:\n

\n Dn = 0    for all n\n

\n

\n Our result is a slightly more complex form of the \n logistic map. \n Below we plot the series for the 2 indicators: An and Rn. \n We quickly observe that the values of R and S have an asymptotic behavior so that not the whole population\n will be infected. A - the number of simultaneously ill persons - is growing exponential in the beginning, \n reaches a maximum and the falls down exponentially back to 0. The amplitude of this maximum, the point \n in time when is reached and the final values of R and S depends on the two unknown parameters of our\n series: τ and r0.\n

\n

Take your time and try out a few combinations for the values for of τ and r0. \n The population P is chosen to be that \n of {{currentCountry.country}}: {{currentCountry.population | number:\"1.0-0\"}}.\n

\n
\n
\n \n \n

\n
\n
\n R0: {{reproductionNumber | number:\"1.2-2\"}}\n \n \n
\n
\n τ: {{infectionPeriod | number:\"1.0-0\"}} days\n \n \n
\n
\n simulation period: {{simulationDays | number:\"1.0-0\"}} days\n \n \n
\n
\n
\n \n

Covid-19's basic reproduction number R0 is estimated between 1.4 and 5.7, under \"natural\" \n social behavior of the population, as we used to live before or during the start of this pandemic (see \n \n Wikipedia article on basic reproduction number).
\n Social distancing and other (also hygienic) measures are reducing the basic reproduction number, attempting to\n bring it and keep it at a value lower than or around 1.
\n Probably you can see in the simulation that any number larger than 1.4 is leading to a fast\n increase of simultaneously ill people, which would cause an overloaded health system.\n Probably it is going to take a long time until we will have the freedom to live as before...\n

\n

Disclaimer & Credits

\n

Implemented by Artur Pusztai
\n The application is work in progress, not sufficiently tested, and not suitable for decision making.\n

\n

\n Covid-19 case data are provided by\n Johns Hopkins University\n and retrieved with the APIs provided by\n NovelCOVID\n

\n

Mobility profiles are provided by google:\n \n See how your community is moving around differently due to COVID-19\n

\n

\n Mortality rates are taken from\n Wolfram Alpha.\n

\n
\n\n \n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SettingsService {\n\n private countryBS = new BehaviorSubject(null);\n country = this.countryBS.asObservable(); \n setCountry(country: string) {\n localStorage.setItem(\"selectedCountry\", country);\n this.countryBS.next(country);\n }\n\n private tabIndexBS = new BehaviorSubject(0);\n tabIndex = this.tabIndexBS.asObservable();\n setTabIndex(index: number) {\n localStorage.setItem(\"selectedTab\", index.toString())\n this.tabIndexBS.next(index);\n }\n\n private perMilSummaryBS = new BehaviorSubject(false);\n perMilSummary = this.perMilSummaryBS.asObservable();\n setPerMilSummary(on: boolean) {\n this.perMilSummaryBS.next(on);\n localStorage.setItem(\"perMillSummary\", on.toString());\n }\n\n constructor() {\n let perMillSummaryString = localStorage.getItem(\"perMillSummary\");\n if (!perMillSummaryString) this.perMilSummaryBS.next(false);\n else this.perMilSummaryBS.next(JSON.parse(perMillSummaryString));\n\n let tabIndexString = localStorage.getItem(\"selectedTab\");\n if (!tabIndexString) this.tabIndexBS.next(0);\n else this.tabIndexBS.next(Number.parseInt(tabIndexString));\n\n this.countryBS.next(localStorage.getItem(\"selectedCountry\"))\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { SummaryViewData, YesterdayData, CaseData, DataSeries, DataPoint, MobilityData} from '../data-model';\nimport { SettingsService } from '../settings/settings.service';\nimport { DataService } from '../data/data.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SharingService {\n infectiousPeriod: number = 5;\n quarantinePeriod: number = 14;\n maximumInfectionPeriod: number = 28;\n daysForAverage: number = 7;\n\n private selectedCountriesBS = new BehaviorSubject(new SummaryViewData());\n selectedCountry = this.selectedCountriesBS.asObservable();\n selectCountry(country: SummaryViewData) {\n this.selectedCountriesBS.next(country);\n if (country != null) {\n let data = this.allMobilityData.filter(m => m.iso2 == this.selectedCountriesBS.value.iso2 && !m.subRegion2 && !m.subRegion1);\n this.mobilityDataBS.next(data);\n this.currentHistoryBS.next(this.allHistoricalData.get(country.country))\n }\n else\n {\n this.mobilityDataBS.next(new Array());\n this.currentHistoryBS.next(new Array());\n }\n }\n\n private mobilityDataBS = new BehaviorSubject(new Array());\n mobilityData = this.mobilityDataBS.asObservable();\n\n private countriesBS = new BehaviorSubject(new Array());\n countries = this.countriesBS.asObservable();\n\n private currentHistoryBS = new BehaviorSubject(new Array());\n currentHistory = this.currentHistoryBS.asObservable();\n\n constructor(private settings: SettingsService, private dataService: DataService) {\n }\n\n private allHistoricalData: Map = new Map();\n private allMobilityData: MobilityData[] = new Array();\n\n private getMobilityData(iso2: string = null): MobilityData[] {\n return this.allMobilityData.filter(m => m.iso2 == iso2 && !m.subRegion2 && !m.subRegion1);\n }\n\n async load() {\n this.allMobilityData = await this.dataService.getMobilityData();\n\n // get ALL historical data, of all provinces:\n this.allHistoricalData = await this.dataService.getAllHistoricalData();\n let yesterdayData = await this.dataService.getYesterdaysData();\n let mortalityRates = await this.dataService.getMortalityRates();\n\n // this will hold the latest data for each country:\n let results = new Array();\n for (let country of this.allHistoricalData) {\n let cn = country[0];\n switch (country[0].toLowerCase()) {\n case \"west bank and gaza\":\n cn = \"Palestine\";\n case \"lao people\\\"s democratic republic\":\n cn = \"Lao People's Democratic Republic\";\n case \"holy see\":\n cn = \"Holy See (Vatican City State)\";\n case \"cote d'ivoire\":\n cn = \"Côte d'Ivoire\";\n case \"burma\":\n cn = \"Myanmar\";\n }\n var countryHistory = country[1];\n var countryDetails = yesterdayData.find(e => e.country == cn);\n if (countryDetails == null && cn == \"World\") {\n countryDetails = await this.dataService.getYesterdaysWorldData();\n }\n this.calculateDeltaAndCo(countryDetails, countryHistory);\n let s = this.CreateSummaryViewData(countryDetails, countryHistory);\n if (mortalityRates.has(cn)) {\n s.mortalityRate = mortalityRates.get(cn);\n }\n results.push(s);\n }\n\n this.countriesBS.next(results.sort((x, y) => x.cases > y.cases ? -1 : 1));\n this.settings.country.subscribe(c => {\n let cc = this.countriesBS.value.find(d => d.country == c);\n if (cc == null && this.countriesBS.value.length > 0) cc = this.countriesBS.value[0];\n this.selectCountry(cc);\n });\n }\n\n private CreateSummaryViewData(countryDetails: YesterdayData, countryHistory: CaseData[]) {\n let s = new SummaryViewData();\n s.copyFrom(countryHistory[countryHistory.length - 1]);\n s.deltaDelta = s.delta - countryHistory[countryHistory.length - 2].delta;\n s.activeDelta = s.active - countryHistory[countryHistory.length - 2].active;\n s.recoveredDelta = s.recovered - countryHistory[countryHistory.length - 2].recovered;\n s.deathsDelta = s.deaths - countryHistory[countryHistory.length - 2].deaths;\n s.reproductionNumberDelta = s.reproductionNumber - countryHistory[countryHistory.length - 2].reproductionNumber;\n s.infectionRateDelta = s.infectionRate - countryHistory[countryHistory.length - 2].infectionRate;\n let mData = this.getMobilityData(countryDetails?.countryInfo?.iso2);\n if (mData != null && mData.length > 0)\n s.mobilityChange = SharingService.calculateAverageMobility(mData.length - 1, this.daysForAverage, mData);\n else s.mobilityChange = null;\n\n if (countryDetails != null) {\n s.todayCases = countryDetails.todayCases;\n s.todayDeaths = countryDetails.todayDeaths;\n s.critical = countryDetails.critical;\n s.tests = countryDetails.tests;\n s.testsPerMille = countryDetails.testsPerOneMillion / 1000.0;\n s.casesPerMille = countryDetails.casesPerOneMillion / 1000.0;\n s.deathsPerMille = countryDetails.deathsPerOneMillion / 1000.0;\n s.flag = countryDetails.countryInfo.flag;\n s.iso2 = countryDetails.countryInfo.iso2;\n }\n return s;\n }\n\n calculateDeltaAndCo(countryDetails: YesterdayData, countryHistory: CaseData[]) {\n for (let i = 0; i < countryHistory.length; i++) {\n let entry = countryHistory[i];\n entry.correctedDelta = entry.delta = 0;\n entry.infectionRate = 0;\n entry.assumedInfectious = 0;\n entry.assumedQuarantine = 0;\n if (i > 0) {\n entry.delta = entry.cases - countryHistory[i - 1].cases;\n this.calculateDeltaCorrectionFactor(i, countryHistory);\n }\n }\n\n for (let i = 0; i < countryHistory.length; i++) {\n let entry = countryHistory[i];\n if (i > 0) {\n entry.assumedInfectious = countryHistory[i - 1].assumedInfectious;\n entry.assumedQuarantine = countryHistory[i - 1].assumedQuarantine\n entry.assumedInfectious += entry.correctedDelta;\n if (i > this.infectiousPeriod) {\n entry.assumedInfectious -= countryHistory[i - this.infectiousPeriod].correctedDelta;\n entry.assumedQuarantine += countryHistory[i - this.infectiousPeriod].correctedDelta;\n }\n if (i > this.quarantinePeriod) {\n entry.assumedQuarantine -= countryHistory[i - this.quarantinePeriod].correctedDelta;\n }\n let j = Math.min(this.daysForAverage, i);\n entry.infectionRate = 100 * this.calculateAverageReproductionRate(i, j, countryHistory);\n }\n entry.reproductionNumber = entry.infectionRate / 100 * this.infectiousPeriod;\n }\n }\n\n // if delta for n is negative, the correction of cases is distributed across the previous\n // 'quarantinePeriod', with a quantity proportional to the delta of that day, so that\n // the negative delta of this day is corrected to 0.\n calculateDeltaCorrectionFactor(n: number, h: CaseData[]): number {\n if (h[n].delta >= 0) {\n h[n].correctedDelta = h[n].delta;\n return;\n }\n h[n].correctedDelta = 0;\n let positives = 0;\n let start = Math.max(0, n - this.quarantinePeriod);\n for (let i = start; i < n; i++) {\n positives += h[i].correctedDelta;\n }\n if (positives <= 0) return;\n let factor = (positives + h[n].delta) / positives;\n for (let i = start; i < n; i++) {\n h[i].correctedDelta *= factor;\n }\n }\n\n calculateAverageReproductionRate(n: number, m: number, hist: CaseData[]): number {\n let a = 0;\n let b = 0;\n for (let i = n - m; i < n; i++) {\n b += (- 2 * hist[i + 1].correctedDelta * hist[i].assumedInfectious);\n a += hist[i].assumedInfectious * hist[i].assumedInfectious;\n }\n if (a == 0) return 0;\n return -b / (2 * a);\n }\n\n static calculateAverageMobility(i: number, averagePeriod: number, hist: MobilityData[]): number {\n let avg = 0;\n let count = Math.min(averagePeriod - 1, i);\n for (let k = i - count; k <= i; k++) {\n avg += hist[k].average / (count + 1);\n }\n return avg;\n }\n\n static calculateAverageDelta(i: number, averagePeriod: number, hist: CaseData[]): number {\n let avg = 0;\n let count = Math.min(averagePeriod - 1, i);\n for (let k = i - count; k <= i; k++) {\n avg += hist[k].delta / (count + 1);\n }\n return avg;\n }\n}\n","import { Component, OnInit, Input } from '@angular/core';\nimport { SummaryViewData, CaseData } from '../data-model';\nimport { MatDialog } from '@angular/material/dialog';\nimport { InfoDialog } from '../info-dialog';\nimport { SharingService } from '../sharing/sharing.service';\n\n@Component({\n selector: 'app-toolbar',\n templateUrl: './toolbar.component.html',\n styleUrls: ['./toolbar.component.css']\n})\nexport class ToolbarComponent implements OnInit {\n\n currentCountry: SummaryViewData;\n currentHistory: CaseData[];\n\n constructor(public dialog: MatDialog, private sharingService: SharingService) { }\n\n ngOnInit(): void {\n this.sharingService.selectedCountry.subscribe(c => this.currentCountry = c);\n this.sharingService.currentHistory.subscribe(h => this.currentHistory = h);\n }\n\n openGitHub()\n {\n// window.open(\"https://github.com/CodingOrca/covid19stats/blob/master/README.md\");\n const dialogRef = this.dialog.open(InfoDialog, {\n minWidth: '100vw',\n data: {country: this.currentCountry, history: this.currentHistory}\n });\n\n dialogRef.afterClosed().subscribe(result => {\n console.log('The dialog was closed');\n });\n }\n\n}\n","\n \n
\n
{{currentCountry.country}}
\n
\n \n
\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nimport 'hammerjs';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n"],"sourceRoot":"webpack:///"}