68 lines
1.9 KiB
Lua
68 lines
1.9 KiB
Lua
sqlite3 = require "lsqlite3"
|
|
db = sqlite3.open('covid_deaths.db')
|
|
|
|
Write([[
|
|
<!doctype html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>Covid Deaths</title>
|
|
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>⚫</text></svg>">
|
|
<style>
|
|
body {
|
|
padding: 48px;
|
|
font-family: sans-serif;
|
|
color: #222;
|
|
}
|
|
span.last-update {
|
|
color: #999;
|
|
}
|
|
span.count {
|
|
padding-right: 0.6em;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
]])
|
|
|
|
local query = [[
|
|
SELECT day, last_update, sum_deaths
|
|
FROM covid_deaths
|
|
ORDER BY day DESC
|
|
LIMIT 2
|
|
]]
|
|
local rows = {}
|
|
for v in db:nrows(query) do
|
|
rows[#rows + 1] = v
|
|
end
|
|
|
|
function format_int(number)
|
|
-- taken from https://stackoverflow.com/questions/10989788/format-integer-in-lua#10992898. thanks!
|
|
local i, j, minus, int, fraction = tostring(number):find('([-]?)(%d+)([.]?%d*)')
|
|
|
|
-- reverse the int-string and append a six-per-em to all blocks of 3 digits
|
|
thinsp = " "
|
|
int = int:reverse():gsub("(%d%d%d)", "%1" .. thinsp:reverse())
|
|
|
|
-- reverse the int-string back remove an optional six-per-em and put the
|
|
-- optional minus and fractional part back
|
|
return minus .. int:reverse():gsub("^ ", "") .. fraction
|
|
end
|
|
|
|
local deaths_yesterday = rows[1]["sum_deaths"] - rows[2]["sum_deaths"]
|
|
local description = format_int(rows[1]["sum_deaths"]) .. ' people died from Covid-19. ' .. format_int(deaths_yesterday) .. ' died within the last day.'
|
|
Write('<p>' .. description .. ' <span class="last-update">Last update: ' .. rows[1]["last_update"] .. ' UTC</span></p>')
|
|
|
|
Write('<span class="count">')
|
|
for i=1,rows[1]["sum_deaths"] do
|
|
Write('🖤')
|
|
if i > 0 and i < rows[1]["sum_deaths"] and i % 100 == 0 then
|
|
Write('</span><span class="count">')
|
|
end
|
|
end
|
|
Write('</span>')
|
|
|
|
Write([[
|
|
</body>
|
|
</html>
|
|
]])
|