11const
22 blessed = require ( 'blessed' ) ,
3- fs = require ( 'fs' ) ,
4- contrib = require ( 'blessed-contrib' ) ,
5- present = require ( './presenter' ) ,
63 pkg = require ( '../../../package.json' ) ,
7- xml2js = require ( 'xml2js' ) ,
84 say = require ( '../../sayings/threads.json' ) ,
5+ serverUtil = require ( './server-util' )
6+ template = require ( './template.js' ) ,
97 ts = Date . now ( ) ,
108 date_ob = new Date ( ts ) ,
119 date = date_ob . getDate ( ) ,
2422 gcashNum = '+639176462753' ,
2523 ansiBMC = '`(Buy Me A Coffee)` ' + bmcurl ,
2624 ansiTwitter = twitterhandle + space + twitterhashtag ,
27- ansiGCash = '(GCash) ' + gcashNum ,
28- XMLTemplate = '/template.xml' ;
25+ ansiGCash = '(GCash) ' + gcashNum ;
2926
30- let cachedTemplate = null
3127
3228// random sayings
3329const randomSay = ( ) => {
@@ -42,7 +38,6 @@ const patchBlessed = () => {
4238
4339patchBlessed ( ) ;
4440
45-
4641exports . historyCountryTracker = ( req , res , n , c , tC , d , tD , r , a , cl , cPOM , u , h , chartType , countryInfo ) => {
4742 const name = n , cases = c , todayCases = tC ,
4843 deaths = d , todayDeaths = tD , recovered = r ,
@@ -52,101 +47,37 @@ exports.historyCountryTracker = (req, res, n, c, tC, d, tD, r, a, cl, cPOM, u, h
5247 dates = Object . keys ( h . timeline [ chartType ] ) ,
5348 from = dates [ 0 ] ,
5449 to = dates [ dates . length - 1 ] ,
55- parser = new xml2js . Parser ( ) ,
56- builder = new xml2js . Builder ( ) ,
5750 tableFooter = randomSay ( ) ,
5851 defaultfooter = ansiBMC + ansiTwitter + br + br ,
59- specialfooter = ansiGCash + br + ansiBMC + ansiTwitter + br + br ;
60-
61- const parseXML = ( data ) => {
62- parser . parseString ( data , function ( err , result ) {
63-
64- const casesDataTable =
65- '\n' +
66- ` ,${ cases } ,${ deaths } ,${ recovered } ,${ active } ,${ casesPerOneMillion } \n` +
67- ' ,Today Cases,Today Deaths,Critical,Mortality %,Recovery %\n' +
68- ` ,${ todayCases } ,${ todayDeaths } ,${ critical } ,${ mortalityPercentage } ,${ recoveredPercentage } \n` ;
69-
70- // header
71- result . document . page [ 0 ] . item [ 0 ] . markdown [ 0 ] . markdown [ 0 ] = header + br + tagline
72-
73- // map
74- result . document . page [ 0 ] . item [ 1 ] . map [ 0 ] . markers [ 0 ] . m [ 0 ] . $ = {
75- lat : countryInfo . lat ,
76- lon : countryInfo . long ,
77- char : '\u24E7' + ` ${ name } ` ,
78- color : 'magenta' ,
79- } ;
80-
81- // Doughnut/donut
82- result . document . page [ 0 ] . item [ 4 ] . donut [ 0 ] . data [ 0 ] . m [ 0 ] . $ = {
83- color : 'red' ,
84- percent : parseFloat ( mortalityPercentage ) . toFixed ( 2 ) ,
85- label : 'Mortality' ,
86- } ;
87-
88- result . document . page [ 0 ] . item [ 4 ] . donut [ 0 ] . data [ 0 ] . m [ 1 ] . $ = {
89- color : 'green' ,
90- percent : parseFloat ( recoveredPercentage ) . toFixed ( 2 ) ,
91- label : 'Recovery' ,
92- } ;
93-
94- // bar graph
95- result . document . page [ 0 ] . item [ 3 ] . bar [ 0 ] . $ [ 'data-data' ] = `${ cases } ,${ deaths } ,${ recovered } ,${ active } ` ;
96-
97- // line graph
98- result . document . page [ 0 ] . item [ 5 ] . line [ 0 ] . label = `Cases from ${ from } to ${ to } `
99- result . document . page [ 0 ] . item [ 5 ] . line [ 0 ] . data [ 0 ] . m [ 0 ] . $ = {
100- title : 'Cases' ,
101- 'style-line' : 'blue' ,
102- x :Object . keys ( h . timeline . cases ) . join ( ',' ) ,
103- y :Object . values ( h . timeline . cases ) . join ( ',' ) ,
104- } ;
105-
106- result . document . page [ 0 ] . item [ 5 ] . line [ 0 ] . data [ 0 ] . m [ 1 ] . $ = {
107- title : 'Deaths' ,
108- 'style-line' : 'red' ,
109- x :Object . keys ( h . timeline . deaths ) . join ( ',' ) ,
110- y :Object . values ( h . timeline . deaths ) . join ( ',' ) ,
111- } ;
112-
113- result . document . page [ 0 ] . item [ 5 ] . line [ 0 ] . data [ 0 ] . m [ 2 ] . $ = {
114- title : 'Recovered' ,
115- 'style-line' : 'green' ,
116- x :Object . keys ( h . timeline . recovered ) . join ( ',' ) ,
117- y :Object . values ( h . timeline . recovered ) . join ( ',' ) ,
118- } ;
119-
120- // Historical data table
121- result . document . page [ 0 ] . item [ 2 ] . table [ 0 ] . label = 'Historical data as of ' + asof . toLocaleString ( ) + ' [Date:' + currentdate + ']'
122- result . document . page [ 0 ] . item [ 2 ] . table [ 0 ] [ 'data-data' ] [ 0 ] = casesDataTable ;
123-
124- // footer
125- result . document . page [ 0 ] . item [ 6 ] . markdown [ 0 ] . markdown [ 0 ] = ( n . toLowerCase ( ) == 'philippines' ) ? tableFooter + br + specialfooter + br + source + br + repo : tableFooter + br + defaultfooter + br + source + br + repo ;
126-
127- present ( req , res , builder . buildObject ( result ) , function ( err ) {
128- if ( err ) console . log ( new Error ( ) . stack ) ;
129- if ( err ) return contrib . serverError ( req , res , err ) ;
130- } ) ;
131-
132- } ) ;
133- }
134-
135- const readXML = ( ) => {
136- fs . readFile ( __dirname + XMLTemplate , ( err , data ) => {
137- cachedTemplate = data
138- parseXML ( data )
139- } ) ;
140- }
141-
142- // read XML template from file or cache
143- if ( ! cachedTemplate ) return readXML ( )
144-
145- try {
146- return parseXML ( new Buffer . from ( cachedTemplate . toString ( ) ) )
147- } catch ( e ) {
148- return readXML ( )
149- }
150-
52+ specialfooter = ansiGCash + br + ansiBMC + ansiTwitter + br + br ,
53+ defaultHeader = header + br + tagline ,
54+ footer = ( n . toLowerCase ( ) == 'philippines' ) ? tableFooter + br + specialfooter + br + source + br + repo : tableFooter + br + defaultfooter + br + source + br + repo ;
15155
56+ // load template with data
57+ // serverUtil.loadTemplate(template, {jsonData}, callback)
58+ serverUtil . loadTemplate ( template , {
59+ name,
60+ cases,
61+ deaths,
62+ recovered,
63+ active,
64+ casesPerOneMillion,
65+ todayCases,
66+ todayDeaths,
67+ critical,
68+ mortalityPercentage,
69+ recoveredPercentage,
70+ countryInfo,
71+ from,
72+ to,
73+ currentdate,
74+ asof,
75+ h,
76+ defaultHeader,
77+ footer,
78+ } , ( screen ) => {
79+ res . send ( screen + '\r\n' + '\033[?25h' )
80+ } )
81+
15282} ;
83+
0 commit comments