Este módulo y estas plantillas muestran datos sobre la pandemia de COVID-19 .
{{#invoke:COVID-19 data|main|columns=columns|sort=column to sort by}}
(mesa){{COVID-19 data}}
{{COVID-19 data/text|location code|type}}
{{COVID-19 data/date|format=format}}
{{COVID-19 data/cite}}
El cuerpo de una tabla se puede crear utilizando la main()
función:
{{#invoke:COVID-19 data|main|columns=columns|sort=column to sort by}}
Esto solo genera el contenido de la tabla (el cuerpo). Los encabezados y títulos se pueden personalizar independientemente del módulo para permitir la aplicación de estilos.
Por favor, utilice la siguiente referencia (preferiblemente en el título de la tabla), para evitar referencias duplicadas y tener fecha de acceso y autores actualizados automáticamente:
<ref name="Template:COVID-19 data">{{COVID-19 data/cite}}</ref>
local p = {} local data_title = mw .title .new('Plantilla:COVID-19 data/data' ) local data_content = data_title : getContent ( ) local data = mw .text .jsonDecode ( data_content ) local function format_num ( number ) si no es número entonces devuelve ' ' fin local _ , _ , minus , int , _ = tostring ( number ) : find ( ' ( [ - ] ? ) ( % d + ) ([.]?%d*)' ) int = int : reverse ( ): gsub ( "(%d%d%d)" , "%1," ) int = int : reverse (): gsub ( "^," , "" ) int = minus .. int devuelve int fin función p . main () local out = '' local data_s = {} local has_notelist = false local count_row = 0 local count_col = 0 -- Construir nueva tabla local ubicaciones = {} si mw . getCurrentFrame (). args [ 'ubicaciones' ] entonces para ubicación en string.gmatch ( mw . getCurrentFrame (). args [ 'ubicaciones' ], '([^,]+)' ) hacer ubicaciones [ ubicación ] = verdadero fin de lo contrario ubicaciones = nulo fin para clave , valor en pares ( datos ) hacer local índice si mw . getCurrentFrame (). args [ 'ordenar' ] entonces si valor [ mw . getCurrentFrame (). args [ 'ordenar' ]] entonces índice = valor [ mw . getCurrentFrame (). args [ 'ordenar' ]] de lo contrario índice = 0 fin de lo contrario si valor . casos entonces índice = valor . casos de lo contrario si valor . muertes entonces índice = valor . muertes de lo contrario si valor . dosis_vacunas entonces índice = valor . dosis_vacunas de lo contrario si valor . total_vacunados entonces índice = valor . total_vacunados de lo contrario si valor . completamente_vacunados entonces índice = valor . completamente_vacunados de lo contrario índice = 0 fin fin si ( no ubicaciones ) o ubicaciones [ clave ] entonces datos_s [ # datos_s + 1 ] = valor datos_s [ # datos_s ][ '_índice' ] = índice datos_s [ # datos_s ][ '_código' ] = clave fin fin -- Ordenar la nueva tabla table.sort ( datos_s , función ( x , y ) si x . _código == 'XW' entonces devuelve verdadero de lo contrario si y . _código == 'XW' entonces devuelve falso de lo contrario devuelve ( x . _índice > y . _índice ) fin fin ) - Obtener columnas columnas locales = { casos = falso , muertes = falso , total_vacunados = falso , dosis_vacunas = falso , completamente_vacunados = falso , porcentaje_vacunados = falso , porcentaje_completamente_vacunados = falso , muertes_por_millón = falso , población = falso } índice_columnas locales = {} si mw . getCurrentFrame (). args [ 'columnas' ] entonces para columna en string.gmatch ( mw . getCurrentFrame (). args [ 'columnas' ], '([^,]+)' ) hacer columnas [ columna ] = verdadero índice_columnas [ # índice_columnas + 1 ] = columna fin de lo contrario columnas = { casos = verdadero , muertes = verdadero , total_vacunados = verdadero , dosis_vacunas = verdadero , completamente_vacunados = verdadero , porcentaje_vacunados = falso , porcentaje_completamente_vacunados = falso , muertes_por_millón = falso , población = falso } índice_columnas = { 'casos' , 'muertes' , 'total_vacunados' , 'dosis_vacunas' , 'completamente_vacunados' , 'porcentaje_vacunados' , 'porcentaje_completamente_vacunados' , 'muertes_por_millón' , 'población' } fin -- Comprueba si se debe mostrar note_vaccination local show_note_vaccination = false si columnas [ 'total_vaccinated' ] o columnas [ 'dosis_de_vacuna' ] o columnas [ 'completamente_vacunados' ] o columnas [ 'porcentaje_vacunados' ] o columnas [ 'porcentaje_vacunados' ] entonces show_note_vaccination = true fin -- Generar contenido wikitexto para _ , fila en ipairs ( data_s ) hacer -- Probar filas vacías local has_data = false para _ , columna en pairs ( columnas_index ) hacer si columnas [ columna ] y fila [ columna ] entonces has_data = true fin fin si has_data entonces -- Solo agregar fila si tiene datos count_row = count_row + 1 fuera = fuera .. ' \n |-' si fila . _code == 'XW' entonces fuera = fuera .. 'class="sorttop static-row-header"' fin -- Agregar el indicador si no mw . getCurrentFrame (). args [ 'noflag' ] entonces si count_row == 1 entonces count_col = count_col + 1 fin out = out .. ' \n | style="text-align: center;" data-sort-value="' .. row . name .. '" | ' si row . _code == 'XW' entonces out = out .. '[[Archivo:OOjs UI icon globe.svg|16px|alt=|link=]]' de lo contrario flag_params = { row . name } - Para que no sea demasiado grande si row .nombre == 'Nueva Caledonia' entonces flag_params [ 2 ] = 'fusionado' fin de salida = salida .. mw . getCurrentFrame (): expandTemplate { título = 'Flagicon' , args = flag_params } fin fin -- Agregar el nombre del país si count_row == 1 entonces count_col = count_col + 1 fin si mw . getCurrentFrame (). args [ 'noflag' ] entonces salida = salida .. ' \n ! scope="row" style="background-color: heritage;" data-sort-value="' .. row . name .. '" | ' de lo contrario salida = salida .. ' \n ! scope="row" style="background-color: heritage;" |' fin si row . _code == 'XW' entonces salida = salida .. '[[pandemia de COVID-19|' .. row . name .. ']]' de lo contrario si row . _code == 'GE' then out = out .. '[[pandemia de COVID-19 en Georgia (país)' .. '|' .. fila . nombre .. ']]' elseif fila . _code == 'IM' then out = out .. '[[pandemia de COVID-19 en ' .. fila . nombre .. '|' .. fila . nombre .. ']]' else out = out .. '[[pandemia de COVID-19 en ' .. fila . nombre .. '|' .. fila . nombre .. ']]' end -- Agregar notas if fila . note then has_notelist = true out = out .. mw . getCurrentFrame ():expandirPlantilla { título = 'Efn' , args = { fila . nota } } fin si fila . nota_vacunación y mostrar_nota_vacunación entonces tiene_lista_notas = verdadero salida = salida .. mw . getCurrentFrame (): expandTemplate { título = 'Efn' , args = { 'Nota de vacunación: ' .. fila . nota_vacunación } } fin - Completar columnas para _ , columna en ipairs ( índice_columnas ) hacer si columnas [ columna ] entonces si contar_filas == 1 entonces contar_col = contar_col + 1 fin si fila [ columna ] entonces salida = salida .. ' \n | valor-ordenamiento-datos=' .. tostring ( fila [ columna ]) .. '|' si columna : find ( '^percent' ) entonces out = out .. string.format ( '%.2f' , fila [ columna ]) .. '%' de lo contrario out = out .. format_num ( fila [ columna ]) fin de lo contrario out = out .. ' \n | data-sort-value=0 | —' fin fin fin fin fin si tiene_lista_de_notas entonces out = out .. ' \n |- clase="sortbottom static-row-header" estilo="text-align: left;"' .. ' \n | colspan="' .. count_col .. '" estilo="width: 0;" |' .. mw . getCurrentFrame ():expandTemplate { title = 'Lista de notas' } fin retorno salida fin función p . vac () local salida = '' local datos_s = {} local tiene_país_num_dosis = falso local tiene_país_num_totalmente = falso local conteo_fila = 0 local conteo_col = 0 -- Construir nueva tabla para clave , valor en pares ( datos ) hacer si valor . total_vacunados entonces datos_s [ # datos_s + 1 ] = valor datos_s [ # datos_s ][ 'índice' ] = valor . total_vacunados de lo contrario si valor . dosis_vacunas entonces datos_s [ # datos_s + 1 ] = valor datos_s [ # datos_s ][ 'índice' ] = valor . dosis_vacunas de lo contrario si valor . completamente_vacunados entonces datos_s [ # datos_s + 1 ] = valor datos_s [ # datos_s ][ 'índice' ] = valor . fully_vaccinated end end -- Ordena la nueva tabla table.sort ( data_s , function ( x , y ) return ( x.index > y.index ) end ) -- Genera contenido wikitexto para _ , row en pares ( data_s ) do count_row = count_row + 1 out = out .. ' \n | -' -- Agrega la bandera if count_row == 1 then count_col = count_col + 2 fin si fila . nombre == 'Mundo' entonces salida = salida .. 'class="sorttop static-row-header"' .. ' \n | estilo="text-align: center;" valor-ordenación-datos="' .. fila . nombre .. '" | ' .. '[[Archivo:OOjs UI icon globe.svg|16px|alt=|link=]]' .. ' \n ! ámbito="fila" estilo="color-fondo: heredar;" valor-ordenación-datos="' .. fila . nombre .. '" | ' .. '[[Implementación de vacunas COVID-19|Mundo]]' de lo contrario flag_params = { fila . nombre } - Para que no sea demasiado grande si fila . nombre == 'Nueva Caledonia' entonces flag_params [ 2 ] = 'fusionado' fin salida = salida .. ' \n | estilo="text-align: center;" data-sort-value="' .. fila . nombre .. '" | ' .. mw . getCurrentFrame (): expandTemplate { título = 'Flagicon' , args = flag_params } .. ' \n ! scope="fila" estilo="color-de-fondo: heredar;" data-sort-value="' .. fila . nombre .. '" | ' .. '[[Vacunación contra la COVID-19 en ' .. fila . nombre .. '|' .. fila . nombre .. ']]' fin -- Agregar nota si fila . nota_vacunación entonces out = out .. mw . getCurrentFrame (): expandTemplate { título = 'Efn' , args = { fila .note_vaccination } } fin -- Agrega el número si count_row == 1 entonces count_col = count_col + 1 fin si fila . total_vacunas entonces out = out .. ' \n | valor-ordenamiento-datos=' .. tostring ( fila . total_vacunas ) .. '|' .. formato_num ( fila . total_vacunas ) elseif fila . dosis_vacunas entonces tiene_país_num_dosis = true out = out .. ' \n | valor-ordenamiento-datos=' .. tostring ( fila . dosis_vacunas ) .. '|' .. mw . getCurrentFrame (): expandTemplate { título = 'Color de fuente' , argumentos = { 'rojo oscuro' , formato_num ( fila . dosis_vacunas )} } .. mw . getCurrentFrame (): expandTemplate { título = 'Efn' , argumentos = { nombre = 'país_num_dosis' } } elseif fila . completamente_vacunados entonces tiene_núm_de_país_completamente = verdadero out = out .. ' \n | valor-ordenamiento-datos=' .. tostring ( row . completamente_vacunados ) .. '|' .. mw . getCurrentFrame (): expandTemplate { title = 'Color de fuente' , args = { 'naranja_oscuro' , formato_num ( row . completamente_vacunados )} } .. mw . getCurrentFrame (): expandTemplate { title = 'Efn' , args = { name = 'núm_de_país_completamente' } } fin -- Sumar el porcentaje si count_row == 1 entonces count_col = count_col + 1 fin si fila . porcentaje_vacunados entonces out = out .. ' \n | valor-ordenamiento-datos=' .. tostring ( fila . porcentaje_vacunados ) .. '|' .. string.format ( "%.1f" , fila . porcentaje_vacunados ) .. '%' de lo contrario out = out .. ' \n | valor-ordenamiento-datos=0 | —' fin fin si tiene_país_num_dosis o tiene_país_num_totalmente entonces notelist_refs = '' si tiene_país_num_dosis entonces notelist_refs = notelist_refs .. mw . getCurrentFrame (): expandTemplate { título = 'Efn' , args = { nombre = 'país_num_dosis' , 'Los datos de este país son los ' .. mw . getCurrentFrame (): expandTemplate { title = 'Color de fuente' , args = { 'darkred' , 'número de dosis de vacuna administradas' } } .. ' , no solo la primera dosis' } } end if has_country_num_fully then notelist_refs = notelist_refs .. mw.getCurrentFrame ( ) : expandTemplate { title = 'Efn' , args = { name = 'country_num_fully' , 'Los datos de este país son los' .. mw.getCurrentFrame ( ): expandTemplate { title = 'Color de fuente' , args = { 'darkorange' , ' número de personas completamente vacunadas' } } .. ', no el número de personas' ..'que hayan recibido al menos una dosis.' } } fin salida = salida .. ' \n |- clase="sortbottom static-row-header" estilo="text-align: left;"' .. ' \n | colspan="' .. count_col .. '" estilo="width: 0;" |' .. mw . getCurrentFrame (): expandTemplate { título = 'Lista de notas' , args = { refs = lista_de_notas_refs } } fin de retorno salida fin de función p . texto () ubicación local = mw . getCurrentFrame (). args [ 'ubicación' ] columna local = mw . getCurrentFrame (). args [ 'columna' ] devolver datos [ ubicación ][ columna ] fin de retorno p