Module:Sandbox/Phoenix7777/COVID-19 data explained

local p =

local data_title = mw.title.new('Template:COVID-19 data/data')local data_content = data_title:getContentlocal data = mw.text.jsonDecode(data_content)

function format_num(number) if not number then return end local _, _, minus, int, _ = tostring(number):find('([-]?)(%d+)([.]?%d*)') int = int:reverse:gsub("(%d%d%d)", "%1,") int = int:reverse:gsub("^,", "") int = minus .. int return intend

function p.main local out = local data_s = -- Build new table local locations = if mw.getCurrentFrame.args['locations'] then for location in string.gmatch(mw.getCurrentFrame.args['locations'], '([^,]+)' ) do locations[location] = true end else locations = nil end for key, value in pairs(data) do local index if value.cases then index = value.cases elseif value.deaths then index = value.deaths elseif value.vaccine_doses then index = value.vaccine_doses elseif value.total_vaccinated then index = value.total_vaccinated elseif value.fully_vaccinated then index = value.fully_vaccinated else index = 0 end if (not locations) or locations[key] then data_s[#data_s+1] = value data_s[#data_s]['index'] = index end end -- Sort the new table table.sort(data_s, function(x, y) return (x.index > y.index) end ) -- Generate wikitext content for _, row in ipairs(data_s) do out = out .. '\n|-\n' -- Add the flag if row.name

'World' then out = out .. '| ' .. '|| World' else flag_params = -- So that it's not too large if row.name

'New Caledonia' then flag_params[2] = 'merged' end out = out .. '|' .. mw.getCurrentFrame:expandTemplate .. '|| ' .. row.name .. '' end -- Add notes if row.note then out = out .. mw.getCurrentFrame:expandTemplate end -- Add columns if not (row.cases or row.deaths or row.recoveries or row.total_vaccinated or row.vaccine_doses or row.fully_vaccinated ) then out = out .. '|| style="background: #ababab;" colspan=6 ' .. '| \'\'No data\'\ else -- Get columns local columns = local columns_index = if mw.getCurrentFrame.args['columns'] then columns_index = for column in string.gmatch(mw.getCurrentFrame.args['columns'], '([^,]+)' ) do columns[column] = true columns_index[#columns_index+1] = column end else columns = end -- Fill out columns for _, column in ipairs(columns_index) do if columns[column] then if row[column] then out = out .. '|| data-sort-value=' .. tostring(row[column]) .. '|' .. format_num(row[column]) else out = out .. '|| style="background: #cccccc;"' .. ' data-sort-value=0 | \'\'Unknown\'\ end end end end end out = out .. '\n|- class="sortbottom"\n| colspan=8 |' .. mw.getCurrentFrame:expandTemplate return outend

function p.pan local out = local data_s = -- Build new table local locations = if mw.getCurrentFrame.args['locations'] then for location in string.gmatch(mw.getCurrentFrame.args['locations'], '([^,]+)' ) do locations[location] = true end else locations = nil end for key, value in pairs(data) do local index if value.cases then index = value.cases elseif value.deaths then index = value.deaths else index = 0 end if (not locations) or locations[key] then data_s[#data_s+1] = value data_s[#data_s]['index'] = index end end -- Sort the new table table.sort(data_s, function(x, y) return (x.index > y.index) end ) -- Generate wikitext content for _, row in ipairs(data_s) do out = out .. '\n|-\n' -- Add the flag if row.name

'World' then out = out .. '| ' .. '||style="text-align:left;"| World' else flag_params = -- So that it's not too large if row.name

'New Caledonia' then flag_params[2] = 'merged' end out = out .. '|' .. mw.getCurrentFrame:expandTemplate .. '|| style="text-align:left;"| ' .. row.name .. '' end -- Add notes if row.note then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Argentina' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Australia' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Azerbaijan' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Bahamas' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Belgium' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Botswana' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Canada' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Chile' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'China' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Congo' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Cuba' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Cyprus' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'DR Congo' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Denmark' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Diamond Princess' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Egypt' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Finland' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'France' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Georgia' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Germany' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Guam' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Isle of Man' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Israel' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Japan' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Moldova' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Morocco' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Netherlands' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Northern Cyprus' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Norway' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Russia' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Sahrawi Arab DR' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Serbia' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Somalia' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Somaliland' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'South Ossetia' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Spain' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Switzerland' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Syria' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Taiwan' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Transnistria' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Turkey' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'Ukraine' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'United Kingdom' then out = out .. mw.getCurrentFrame:expandTemplate end if row.name

'United States' then out = out .. mw.getCurrentFrame:expandTemplate end

-- Add columns if not (row.cases or row.deaths ) then out = out .. '|| style="background: #ababab;" colspan=6 ' .. '| \'\'No data\'\ else -- Get columns local columns = local columns_index = if mw.getCurrentFrame.args['columns'] then columns_index = for column in string.gmatch(mw.getCurrentFrame.args['columns'], '([^,]+)' ) do columns[column] = true columns_index[#columns_index+1] = column end else columns = end -- Fill out columns for _, column in ipairs(columns_index) do if columns[column] then if row[column] then out = out .. '|| data-sort-value=' .. tostring(row[column]) .. '|' .. format_num(row[column]) else out = out .. '|| style="background: #cccccc;"' .. ' data-sort-value=0 | \'\'Unknown\'\ end end end end end out = out .. '\n|- class="sortbottom"\n' return outend

function p.vac local out = local data_s = local has_country_num_doses = false local has_country_num_fully = false -- Build new table for key, value in pairs(data) do if value.total_vaccinated then data_s[#data_s+1] = value data_s[#data_s]['index'] = value.total_vaccinated elseif value.vaccine_doses then data_s[#data_s+1] = value data_s[#data_s]['index'] = value.vaccine_doses elseif value.fully_vaccinated then data_s[#data_s+1] = value data_s[#data_s]['index'] = value.fully_vaccinated end end -- Sort the new table table.sort(data_s, function(x, y) return (x.index > y.index) end ) -- Generate wikitext content for _, row in pairs(data_s) do -- Add the flag if row.name

'World' then out = out .. '|-\n| ' .. '|| style="text-align:left;" | World' else flag_params = -- So that it's not too large if row.name

'New Caledonia' then flag_params[2] = 'merged' end out = out .. '|-\n|' .. mw.getCurrentFrame:expandTemplate .. '|| style="text-align:left;" | ' .. row.name .. '' end -- Add note if row.note_vaccination then out = out .. mw.getCurrentFrame:expandTemplate end -- Add the number if row.total_vaccinated then out = out .. '||' .. format_num(row.total_vaccinated) elseif row.vaccine_doses then has_country_num_doses = true out = out .. '||' .. mw.getCurrentFrame:expandTemplate .. mw.getCurrentFrame:expandTemplate elseif row.fully_vaccinated then has_country_num_fully = true out = out .. '||' .. mw.getCurrentFrame:expandTemplate .. mw.getCurrentFrame:expandTemplate end -- Add the percentage if row.percent_vaccinated then out = out .. '||' .. string.format("%.1f", row.percent_vaccinated) .. '%' else out = out .. '|| style="background: #cccccc;" | ' end if mw.getCurrentFrame.args[1]

'full' or mw.getCurrentFrame.args[1]

'total' then if row.fully_vaccinated then out = out .. '||' .. format_num(row.fully_vaccinated) else out = out .. '|| style="background: #cccccc;" | ' end if row.percent_fully_vaccinated then out = out .. '||' .. string.format("%.1f", row.percent_fully_vaccinated) .. '%' else out = out .. '|| style="background: #cccccc;" | ' end end if mw.getCurrentFrame.args[1]

'total' then if row.vaccine_doses then out = out .. '||' .. format_num(row.vaccine_doses) else out = out .. '|| style="background: #cccccc;" | ' end end out = out .. '\n' end if has_country_num_doses or has_country_num_fully then notelist_refs = if has_country_num_doses then notelist_refs = notelist_refs .. mw.getCurrentFrame:expandTemplate end if has_country_num_fully then notelist_refs = notelist_refs .. mw.getCurrentFrame:expandTemplate end if mw.getCurrentFrame.args[1] ~= 'full' and mw.getCurrentFrame.args[1] ~= 'total' then out = out .. '|- class="sortbottom"\n| colspan=4 |' end if mw.getCurrentFrame.args[1]

'full' then out = out .. '|- class="sortbottom"\n| colspan=6 |' end if mw.getCurrentFrame.args[1]

'total' then out = out .. '|- class="sortbottom"\n| colspan=7 |' end out = out .. mw.getCurrentFrame:expandTemplate end return outend

return p