Advertisement
infiniteblock

Untitled

Apr 14th, 2020
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.59 KB | None | 0 0
  1. -- COVID-19 Tracker for CC
  2. -- Country Cases
  3. -- API: corona.lmao.ninja
  4. -- Program by Lemmmy - GPLv3
  5.  
  6. local util = require("covid19.util")
  7. local gfx = require("covid19.gfx")
  8. local Grid = require("covid19.grid")
  9.  
  10. local HEADER = "COVID-19 Country Cases"
  11. local FOOTER = "By Lemmmy - Updates every 15 mins - API: corona.lmao.ninja"
  12.  
  13. local DATA_URL = "https://corona.lmao.ninja/countries"
  14. local CACHE_FILE = ".country-cache.json"
  15.  
  16. local mon, w, h = util.handleMonitorArg(...)
  17. mon.setPaletteColour(colours.cyan, 0xBFFFB8)
  18.  
  19. local function main()
  20. mon.clear()
  21.  
  22. -- prep screen
  23. gfx.drawHeader(mon, HEADER)
  24. gfx.drawFooter(mon, FOOTER)
  25. local centerY = gfx.drawLoading(mon)
  26.  
  27. -- fetch data
  28. local data = util.cachedJSONRequest(DATA_URL, CACHE_FILE)
  29. util.scoreData(data)
  30. gfx.clearLoading(mon, centerY)
  31.  
  32. -- grid
  33. local grid = Grid.new(mon, 3, 5, h - 6)
  34.  
  35. grid:addColumn(18, "Country", false)
  36. grid:addColumn(10, " Cases ", true, colours.orange)
  37. grid:addColumn(9, "(today)", true)
  38. grid:addColumn(12, "Recoveries", true, colours.green)
  39. grid:addColumn(10, " Deaths ", true, colours.red)
  40. grid:addColumn(9, "(today)", true)
  41.  
  42. for i, datum in pairs(data) do
  43. if i > grid.h - 3 then break end
  44.  
  45. grid:addRow({
  46. { text = datum.country },
  47. { text = datum.cases },
  48. { text = datum.todayCases, colour = datum.todayCasesColour },
  49. { text = datum.recovered, colour = datum.recoveredColour },
  50. { text = datum.deaths },
  51. { text = datum.todayDeaths, colour = datum.todayDeathsColour }
  52. })
  53. end
  54.  
  55. grid:draw()
  56. end
  57.  
  58. util.mainLoop(main)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement