浏览代码

Import raw data directly on countries definition

Fela Maslen 5 年之前
父节点
当前提交
8205b6acd5
共有 4 个文件被更改,包括 16 次插入23 次删除
  1. 2 2
      src/components/graph-cases.tsx
  2. 6 1
      src/countries.ts
  3. 6 0
      src/types.ts
  4. 2 20
      src/utils/get-cases.ts

+ 2 - 2
src/components/graph-cases.tsx

@@ -27,9 +27,9 @@ const GraphCases: React.FC<Props> = ({ countries }) => {
 
   const countryCases = React.useMemo<CountryCases>(
     () =>
-      countries.map(({ country }) => ({
+      countries.map(({ country, rawData }) => ({
         country,
-        dataSource: getCases(country),
+        dataSource: getCases(rawData),
       })),
     [countries],
   );

+ 6 - 1
src/countries.ts

@@ -1,14 +1,19 @@
 import { rgb } from 'polished';
-import { Country, Countries } from './types';
+import { Country, Countries, RawCases } from './types';
+
+import uk from './cases/uk.json';
+import es from './cases/es.json';
 
 const countries: Countries = [
   {
     country: Country.uk,
     color: rgb(75, 94, 235),
+    rawData: uk as RawCases,
   },
   {
     country: Country.es,
     color: rgb(235, 75, 75),
+    rawData: es as RawCases,
   },
 ];
 

+ 6 - 0
src/types.ts

@@ -15,9 +15,15 @@ export enum Country {
   es = 'Spain',
 }
 
+export type RawCases = {
+  source: string;
+  dailyCases: [string, number][];
+};
+
 export type Countries = {
   country: Country;
   color: string;
+  rawData: RawCases;
 }[];
 
 export type CountryCase = {

+ 2 - 20
src/utils/get-cases.ts

@@ -1,13 +1,6 @@
-import { Country, DataSource } from '../types';
-import uk from '../cases/uk.json';
-import es from '../cases/es.json';
+import { RawCases, DataSource } from '../types';
 
-type RawCases = {
-  source: string;
-  dailyCases: [string, number][];
-};
-
-const processCases = (rawCases: RawCases): DataSource => ({
+export const getCases = (rawCases: RawCases): DataSource => ({
   source: rawCases.source,
   cases: rawCases.dailyCases
     .map(([date, value]) => ({
@@ -16,14 +9,3 @@ const processCases = (rawCases: RawCases): DataSource => ({
     }))
     .sort(({ date: dateA }, { date: dateB }) => dateA.getTime() - dateB.getTime()),
 });
-
-export function getCases(country: Country): DataSource {
-  switch (country) {
-    case Country.uk:
-      return processCases(uk as RawCases);
-    case Country.es:
-      return processCases(es as RawCases);
-    default:
-      throw new Error('Unrecognised country');
-  }
-}