22
33const color = require ( 'ansi-styles' ) ,
44 fs = require ( 'fs' ) ,
5- table3 = require ( 'cli-table3' ) ;
5+ table3 = require ( 'cli-table3' ) ,
6+ chart = require ( './chart' ) ;
67
78// ansi colors
89const
@@ -250,5 +251,41 @@ exports.plaincountrytracker = (n, c, tC, d, tD, r, a, cl, cPOM, u) => {
250251 return n == 'Philippines' ? visual + specialfooter : visual + defaultfooter ;
251252} ;
252253
254+ exports . historyCountryTracker = ( n , c , tC , d , tD , r , a , cl , cPOM , u , h , chartType ) => {
255+ const name = n , cases = c , todayCases = tC ,
256+ deaths = d , todayDeaths = tD , recovered = r ,
257+ active = a , critical = cl , casesPerOneMillion = cPOM ,
258+ mortalityPercentage = ( d / c ) * 100 , recoveryPercentage = ( r / c ) * 100 ,
259+ asof = new Date ( u ) ,
260+ dates = Object . keys ( h . timeline [ chartType ] ) ,
261+ from = dates [ 0 ] ,
262+ to = dates [ dates . length - 1 ] ,
263+ table = new table3 ( {
264+ head : [ { colSpan : 5 , content : white ( `COVID-19 Tracker CLI v ${ pkg . version } - ${ name } Historical Chart` ) } ] ,
265+ chars : borders ,
266+ } ) ,
267+ chartData = chart . generate ( h , chartType ) ;
268+
269+ table . push (
270+ [ { colSpan : 5 , content : yellow ( `As of ${ asof . toLocaleString ( ) } Date: [${ currentdate } ]` ) } ] ,
271+ [ magenta ( 'Cases' ) , red ( 'Deaths' ) , green ( 'Recovered' ) , cyan ( 'Active' ) , cyanBright ( 'Cases/Million' ) ] ,
272+ [ formatNumber ( cases ) , formatNumber ( deaths ) , formatNumber ( recovered ) , formatNumber ( active ) , formatNumber ( casesPerOneMillion ) ] ,
273+ [ magentaBright ( 'Today Cases' ) , redBright ( 'Today Deaths' ) , redBright ( 'Critical' ) , red ( 'Mortality %' ) , greenBright ( 'Recovery %' ) ] ,
274+ [ formatNumber ( todayCases ) , formatNumber ( todayDeaths ) , formatNumber ( critical ) , mortalityPercentage . toFixed ( 2 ) , recoveryPercentage . toFixed ( 2 ) ] ,
275+ [ { colSpan : 5 , content : magenta ( `${ ucfirst ( chartType ) } from ${ from } to ${ to } ` ) } ] ,
276+ [ { colSpan : 5 , content : chartData } ] ,
277+ [ sourceInfo ] , [ repoInfo ]
278+ ) ;
279+
280+ const tableFooter = table . toString ( ) + br + br + space + '"' + green ( randomSay ( ) ) + '"' ,
281+ defaultfooter = footerOne + ansiBMC + footerTwo + ansiTwitter + br + br ,
282+ specialfooter = footerOne + ansiGCash + br + ' ' + ansiBMC + footerTwo + ansiTwitter + br + br ;
283+
284+ return n == 'Philippines' ? tableFooter + specialfooter : tableFooter + defaultfooter ;
285+ }
286+
253287const footerOne = br + br + ' ' + line + br + ' ' + bmcline + br + ' ' ,
254288 footerTwo = br + ' ' + line + br + ' ' + twitterline + br + ' ' ;
289+
290+ // capitalize first letter
291+ const ucfirst = ( string ) => string . charAt ( 0 ) . toUpperCase ( ) + string . slice ( 1 ) ;
0 commit comments