Advertisement
infiniteblock

Untitled

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