Mô đun:Dữ liệu đại dịch COVID-19 tại Việt Nam
Thành phần lõi
BảngPhần thân của bảng có thể được tạo ra bằng cách sử dụng hàm
Nó sẽ chỉ tạo nội dung bảng (phần thân). Đầu đề và tiêu đề có thể được tùy chỉnh độc lập với mô-đun để thuận tiện hơn trong việc tạo kiểu. Vui lòng sử dụng chú thích tham khảo sau (tốt nhất là trong tiêu đề bảng) để tránh việc các chú thích bị trùng lặp:
Tham khảo
local viData = mw.title.new('Bản mẫu:Dữ liệu đại dịch COVID-19 tại Việt Nam/dữ liệu')
local jsonRawData = viData:getContent()
local data = mw.text.jsonDecode(jsonRawData)
local p = {}
local vaccineColumns = { vaccine_per_100 = true, dose1Percent = true, dose2Percent = true, dose3Percent = true, dose4Percent = true, dose5Percent = true, dose6Percent = true, dose7Percent = true, dose8Percent = true, dose9Percent = true, dose10Percent = true }
function format_num(number)
if not number then
return ''
end
local _, _, minus, int, dec = tostring(number):find('([-]?)(%d+)([.]?%d*)')
int = int:reverse():gsub("(%d%d%d)", "%1.")
int = int:reverse():gsub("^%.", "")
int = minus .. int .. dec
return int
end
function p.main()
local out = ''
local data_s = {}
-- Khởi tạo bảng mới
local isArchive = mw.getCurrentFrame().args["yearArchive"]
if isArchive and isArchive:match("%d+") then
viData = mw.title.new('Bản mẫu:Dữ liệu đại dịch COVID-19 tại Việt Nam/dữ liệu ' .. isArchive)
jsonRawData = viData:getContent()
if jsonRawData ~= nil then
data = mw.text.jsonDecode(jsonRawData)
end
end
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 mw.getCurrentFrame().args['sort'] then
if value[mw.getCurrentFrame().args['sort']] then
index = value[mw.getCurrentFrame().args['sort']]
else
index = 0
end
else
if value.cases then
index = value.cases
elseif value.deaths then
index = value.deaths
elseif value.newCase then
index = value.newCase
elseif value.totalInjected then
index = value.totalInjected
elseif value.dose1 then
index = value.dose1
elseif value.dose2 then
index = value.dose2
elseif value.dose3 then
index = value.dose3
elseif value.dose4 then
index = value.dose4
elseif value.dose5 then
index = value.dose5
elseif value.dose6 then
index = value.dose6
elseif value.dose7 then
index = value.dose7
elseif value.dose8 then
index = value.dose8
elseif value.dose9 then
index = value.dose9
elseif value.dose10 then
index = value.dose10
elseif value.allocatedReality then
index = value.allocatedReality
elseif value.population then
index = value.population
elseif value.vaccine_per_100 then
index = value.vaccine_per_100
elseif value.dose1Percent then
index = value.dose1Percent
elseif value.dose2Percent then
index = value.dose2Percent
elseif value.dose3Percent then
index = value.dose3Percent
elseif value.dose4Percent then
index = value.dose4Percent
elseif value.dose5Percent then
index = value.dose5Percent
elseif value.dose6Percent then
index = value.dose6Percent
elseif value.dose7Percent then
index = value.dose7Percent
elseif value.dose8Percent then
index = value.dose8Percent
elseif value.dose9Percent then
index = value.dose9Percent
elseif value.dose10Percent then
index = value.dose10Percent
else index = 0
end
end
if (not locations) or locations[key] then
data_s[#data_s+1] = value
data_s[#data_s]['_index'] = index
data_s[#data_s]['_code'] = key
end
end
-- Sắp xếp bảng
table.sort(
data_s,
function(x, y)
if x._code == 'VN' then
return true
elseif y._code == 'VN' then
return false
else
return (x._index > y._index)
end
end
)
-- Khởi tạo cột
local columns = {
cases = false,
deaths = false,
newCase = false,
totalInjected = false,
dose1 = false,
dose2 = false,
dose3 = false,
dose4 = false,
dose5 = false,
dose6 = false,
dose7 = false,
dose8 = false,
dose9 = false,
dose10 = false,
allocatedReality = false,
population = false,
vaccine_per_100 = false,
dose1Percent = false,
dose2Percent = false,
dose3Percent = false,
dose4Percent = false,
dose5Percent = false,
dose6Percent = false,
dose7Percent = false,
dose8Percent = false,
dose9Percent = false,
dose10Percent = false
}
local columns_index = {}
if mw.getCurrentFrame().args['columns'] then
for column in string.gmatch(
mw.getCurrentFrame().args['columns'],
'([^,]+)'
) do
columns[column] = true
columns_index[#columns_index+1] = column
end
else
columns = {
cases = true,
deaths = true,
newCase = true,
totalInjected = false,
dose1 = false,
dose2 = false,
dose3 = false,
dose4 = false,
dose5 = false,
dose6 = false,
dose7 = false,
dose8 = false,
dose9 = false,
dose10 = false,
allocatedReality = false,
population = false,
vaccine_per_100 = false,
dose1Percent = false,
dose2Percent = false,
dose3Percent = false,
dose4Percent = false,
dose5Percent = false,
dose6Percent = false,
dose7Percent = false,
dose8Percent = false,
dose9Percent = false,
dose10Percent = false
}
columns_index = {
'cases',
'deaths',
'newCase',
'totalInjected',
'dose1',
'dose2',
'dose3',
'dose4',
'dose5',
'dose6',
'dose7',
'dose8',
'dose9',
'dose10',
'allocatedReality',
'population',
'vaccine_per_100',
'dose1Percent',
'dose2Percent',
'dose3Percent',
'dose4Percent',
'dose5Percent',
'dose6Percent',
'dose7Percent',
'dose8Percent',
'dose9Percent',
'dose10Percent'
}
end
-- Tạo nội dung wikitext
for _, row in ipairs(data_s) do
-- Kiểm tra các hàng rỗng
local has_data = false
for _, column in pairs(columns_index) do
if columns[column] and row[column] then
has_data = true
end
end
if has_data then -- Chỉ thêm hàng nếu có dữ liệu
out = out .. '\n|-'
if row._code == 'VN' then
out = out .. 'class="sorttop static-row-header"' .. '\n|| Cả nước'
elseif row._code == 'HM' then
-- Thêm tên
out = out .. '\n|| [[Đại dịch COVID-19 tại Thành phố Hồ Chí Minh|' .. row.name .. ']]'
else
-- Thêm tên
out = out .. '\n|| ' .. '[[' .. row.name .. ']]'
end
-- Thêm ghi chú
if row.note then
out = out ..
mw.getCurrentFrame():expandTemplate{
title = 'Efn',
args = {row.note}
}
end
-- Nạp các cột
for _, column in ipairs(columns_index) do
if columns[column] then
if row[column] then
if nil ~= vaccineColumns[column] then
out = out .. '||' .. string.format("%.1f", row[column]):gsub("%.", ",") .. '%'
else
out = out .. '|| data-sort-value=' ..
tostring(row[column]) ..
'|' .. format_num(row[column])
end
else
out = out ..
'|| style="background: #cccccc;"' ..
' data-sort-value=0 | —'
end
end
end
end
end
out = out .. '\n|- class="sortbottom static-row-header" ' ..
'style="text-align: left;"\n' ..
'| colspan=8 style="width: 0;" |' ..
mw.getCurrentFrame():expandTemplate{
title = 'Danh sách ghi chú'
}
return out
end
function p.text()
local location = mw.getCurrentFrame().args['location']
local column = mw.getCurrentFrame().args['column']
return data[location][column] or "Không xác định"
end
return p
|
Index:
pl ar de en es fr it arz nl ja pt ceb sv uk vi war zh ru af ast az bg zh-min-nan bn be ca cs cy da et el eo eu fa gl ko hi hr id he ka la lv lt hu mk ms min no nn ce uz kk ro simple sk sl sr sh fi ta tt th tg azb tr ur zh-yue hy my ace als am an hyw ban bjn map-bms ba be-tarask bcl bpy bar bs br cv nv eml hif fo fy ga gd gu hak ha hsb io ig ilo ia ie os is jv kn ht ku ckb ky mrj lb lij li lmo mai mg ml zh-classical mr xmf mzn cdo mn nap new ne frr oc mhr or as pa pnb ps pms nds crh qu sa sah sco sq scn si sd szl su sw tl shn te bug vec vo wa wuu yi yo diq bat-smg zu lad kbd ang smn ab roa-rup frp arc gn av ay bh bi bo bxr cbk-zam co za dag ary se pdc dv dsb myv ext fur gv gag inh ki glk gan guw xal haw rw kbp pam csb kw km kv koi kg gom ks gcr lo lbe ltg lez nia ln jbo lg mt mi tw mwl mdf mnw nqo fj nah na nds-nl nrm nov om pi pag pap pfl pcd krc kaa ksh rm rue sm sat sc trv stq nso sn cu so srn kab roa-tara tet tpi to chr tum tk tyv udm ug vep fiu-vro vls wo xh zea ty ak bm ch ny ee ff got iu ik kl mad cr pih ami pwn pnt dz rmy rn sg st tn ss ti din chy ts kcg ve
Portal di Ensiklopedia Dunia