Skip to content

Commit

Permalink
Implemented all four by-age-groups pages (#770)
Browse files Browse the repository at this point in the history
  • Loading branch information
breki committed Dec 26, 2020
1 parent c236179 commit 6b77d61
Show file tree
Hide file tree
Showing 7 changed files with 41 additions and 23 deletions.
4 changes: 1 addition & 3 deletions TODO.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
# TODO

- https://github.com/sledilnik/website/issues/770
- remove animations
- add relative page
- add translations for page switches
- tooltips
- try using different colors

- new OWID export
Expand Down
10 changes: 6 additions & 4 deletions src/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -272,10 +272,12 @@
"deceased": {
"title": "Deaths",
"titleMenu": "Deaths",
"deceasedToday": "Deaths per Day",
"deceasedTodayRelative": "Deaths per Day (relative)",
"deceasedToDate": "Deaths to Date",
"deceasedToDateRelative": "Deaths to Date (relative)",
"deceasedToday": "Deaths per day",
"deceasedTodayRelative": "Deaths per day (relative)",
"deceasedToDate": "Deaths to date",
"deceasedToDateRelative": "Deaths to date (relative)",
"deceasedByAgeToday": "Deaths by age (daily)",
"deceasedByAgeTodayRelative": "Deaths by age (daily, relative)",
"deceased-icu": "ICU",
"deceased-acute": "Acute Medical Unit",
"deceased-care": "Care Hospital",
Expand Down
4 changes: 4 additions & 0 deletions src/locales/sl.json
Original file line number Diff line number Diff line change
Expand Up @@ -768,6 +768,10 @@
"deceasedTodayRelative": "Umrli na dan (relativno)",
"deceasedToDate": "Umrli",
"deceasedToDateRelative": "Umrli (relativno)",
"deceasedByAgeToDate": "Po starosti",
"deceasedByAgeToDateRelative": "Po starosti (rel.)",
"deceasedByAgeToday": "Po starosti na dan",
"deceasedByAgeTodayRelative": "Po starosti na dan (rel.)",
"deceased-icu": "Intenzivna terapija",
"deceased-acute": "Akutni oddelek",
"deceased-care": "Negovalni oddelek",
Expand Down
27 changes: 14 additions & 13 deletions src/visualizations/DataAnalysis/AgeGroupsTimeline.fs
Original file line number Diff line number Diff line change
Expand Up @@ -118,10 +118,11 @@ type ValueCalculationFormula = Daily | Active | Total
let extractTimelineForAgeGroup
ageGroupKey
(calculationFormula: ValueCalculationFormula)
(allAgeGroupsTimeline: CasesByAgeGroupsTimeline)
(totalValuesAllAgeGroupsTimeline: CasesByAgeGroupsTimeline)
(dailyValuesAllAgeGroupsTimeline: CasesByAgeGroupsTimeline)
: CasesInAgeGroupTimeline =

let newCasesTimeline =
let extractDataForSingleAgeGroup allAgeGroupsTimeline =
allAgeGroupsTimeline
|> mapDatedArrayItems (fun dayGroupsData ->
let dataForGroup =
Expand All @@ -131,33 +132,33 @@ let extractTimelineForAgeGroup
|> Utils.optionToInt
)
match calculationFormula with
| Daily -> newCasesTimeline
| Daily -> extractDataForSingleAgeGroup dailyValuesAllAgeGroupsTimeline
| Active ->
newCasesTimeline
extractDataForSingleAgeGroup dailyValuesAllAgeGroupsTimeline
|> mapDatedArray (Statistics.calculateWindowedSumInt 14)
| Total -> invalidOp "todo"
| Total -> extractDataForSingleAgeGroup totalValuesAllAgeGroupsTimeline

let getAgeGroupTimelineAllSeriesData
(statsData: StatsData)
(valueCalculationFormula: ValueCalculationFormula)
(pointAgeGroupListSelector: StatsDataPoint -> AgeGroupsList) =
// extract just a list of date + AgeGroupsList tuples
let totalCasesByAgeGroupsList =
let totalValuesByAgeGroupsList =
statsData
|> List.map (fun point -> (point.Date,
point |> pointAgeGroupListSelector))

// convert to DatedArray that has just a start date
// and an array of AgeGroupsList values
let totalCasesByAgeGroups =
mapDateTuplesListToArray totalCasesByAgeGroupsList
let totalValuesByAgeGroupsTimeline: CasesByAgeGroupsTimeline =
mapDateTuplesListToArray totalValuesByAgeGroupsList

// converts total new cases to daily cases
let dailyCasesTimeline =
calculateDailyCasesByAgeTimeline totalCasesByAgeGroups
let dailyValuesByAgeGroupsTimeline =
calculateDailyCasesByAgeTimeline totalValuesByAgeGroupsTimeline

// get keys of all age groups
let allGroupsKeys = listAgeGroups dailyCasesTimeline
let allGroupsKeys = listAgeGroups dailyValuesByAgeGroupsTimeline

let mapPoint
(startDate: DateTime)
Expand All @@ -180,8 +181,8 @@ let getAgeGroupTimelineAllSeriesData

let renderAgeGroupSeriesMaybe index ageGroupKey =
let ageGroupTimeline =
dailyCasesTimeline
|> extractTimelineForAgeGroup ageGroupKey valueCalculationFormula
extractTimelineForAgeGroup ageGroupKey valueCalculationFormula
totalValuesByAgeGroupsTimeline dailyValuesByAgeGroupsTimeline

// if the timeline has just zero values, we will skip it so it doesn't
// show up in the chart
Expand Down
3 changes: 2 additions & 1 deletion src/visualizations/DeceasedViz/Analysis.fs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ type DisplayMetricsType =
| HospitalsToDate
| HospitalsToday
| ByAgeToDate
// | ByAgeToday
| ByAgeToday

type VisualizationPage = {
Id: string
Expand All @@ -22,4 +22,5 @@ let (|HospitalMetricsType|_|) (metricsType: DisplayMetricsType) =
let (|AgeGroupsMetricsType|_|) (metricsType: DisplayMetricsType) =
match metricsType with
| ByAgeToDate -> Some AgeGroupsMetricsType
| ByAgeToday -> Some AgeGroupsMetricsType
| _ -> None
8 changes: 7 additions & 1 deletion src/visualizations/DeceasedViz/Rendering.fs
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,14 @@ let availablePages = [|
MetricsType = HospitalsToday; ChartType = StackedBarNormal }
{ Id = "deceasedTodayRelative"
MetricsType = HospitalsToday; ChartType = StackedBarPercent }
{ Id = "deceasedTodayByAge"
{ Id = "deceasedByAgeToDate"
MetricsType = ByAgeToDate; ChartType = StackedBarNormal }
{ Id = "deceasedByAgeToDateRelative"
MetricsType = ByAgeToDate; ChartType = StackedBarPercent }
{ Id = "deceasedByAgeToday"
MetricsType = ByAgeToday; ChartType = StackedBarNormal }
{ Id = "deceasedByAgeTodayRelative"
MetricsType = ByAgeToday; ChartType = StackedBarPercent }
|]

type Msg =
Expand Down
8 changes: 7 additions & 1 deletion src/visualizations/DeceasedViz/Synthesis.fs
Original file line number Diff line number Diff line change
Expand Up @@ -133,8 +133,14 @@ let renderAllHospitalSeriesData state =
hospitalSeries |> Array.map renderSeriesData

let renderAllAgeGroupsSeriesData state =
let calculationFormula =
match state.Page.MetricsType with
| ByAgeToDate -> Total
| ByAgeToday -> Daily
| _ -> invalidOp "not supported"

getAgeGroupTimelineAllSeriesData
state.StatsData Daily
state.StatsData calculationFormula
(fun dataPoint -> dataPoint.DeceasedPerAgeToDate)

let renderAllSeriesData state =
Expand Down

0 comments on commit 6b77d61

Please sign in to comment.