1+ const Table = require ( 'cli-table3' ) ;
2+ const chalk = require ( 'chalk' ) ;
3+ const helpers = require ( '../helpers' ) ;
4+ const api = require ( '../api' ) ;
5+ const { cFormatter } = helpers ;
6+
7+
8+ const getUsaStatsHeaders = ( emojis , secondColumnName ) => {
9+ const head = [
10+ 'Rank' ,
11+ secondColumnName ,
12+ `Total Cases ${ emojis ? ' ✅' : '' } ` ,
13+ 'New Cases ▲' ,
14+ `Total Deaths${ emojis ? ' 😞' : '' } ` ,
15+ `New Deaths ▲${ emojis ? ' 😞' : '' } ` ,
16+ `Active${ emojis ? ' 😷' : '' } ` ,
17+
18+ ] ;
19+ return head ;
20+ } ;
21+
22+
23+ exports . getUsaStats = async ( {
24+ isCurl = true ,
25+ minimal = false ,
26+ top = 1000 ,
27+ format,
28+ } ) => {
29+ const secondColumnName = 'US States' ;
30+ const table = new Table ( {
31+ head : getUsaStatsHeaders ( null , secondColumnName ) ,
32+ chars : helpers . getTableBorders ( minimal ) ,
33+ style : helpers . getTableStyles ( minimal ) ,
34+ } ) ;
35+ const { data } = await api . usaStats ( ) ;
36+ if ( format === 'json' ) {
37+ return { data } ;
38+ }
39+
40+ let rank = 1 ;
41+ data . some ( cd => {
42+ const values = [
43+ cFormatter ( cd . state , chalk . cyanBright ) ,
44+ cFormatter ( cd . cases , chalk . green , 'right' , true ) ,
45+ cFormatter ( cd . todayCases , chalk . cyanBright , 'right' , true , ' ▲' ) ,
46+ cFormatter ( cd . deaths , chalk . whiteBright , 'right' , true ) ,
47+ cFormatter ( cd . todayDeaths , chalk . redBright , 'right' , true , ' ▲' ) ,
48+ cFormatter ( cd . active , chalk . blueBright , 'right' , true ) ,
49+ ] ;
50+ table . push ( { [ rank ++ ] : values } ) ;
51+ return rank === top + 1 ;
52+ } ) ;
53+
54+ const lastUpdated = new Date ( ) ;
55+ const ret = table . toString ( ) + helpers . footer ( lastUpdated ) ;
56+ return isCurl ? ret : helpers . htmlTemplate ( ret ) ;
57+ } ;
0 commit comments