Modulo:Status indicator
Dokumentado por ĉi tiu modulo povas esti kreata ĉe Modulo:Status indicator/dokumentado
function pagoj_nro(index_name)
local manko_i = '<span title="mankas informoj">[...]</span>'
if index_name == '' or index_name == nil then
return manko_i
end
local index_data_title = mw.title.makeTitle( 'Template', 'IndexPages/' .. index_name )
if index_data_title == nil then
return manko_i
end
local index_data = index_data_title:getContent()
if index_data == nil then
return manko_i
end
local index_pages = tonumber((string.gsub( index_data, '.*<pc>(.-)</pc>.*','%1')))
if index_pages == nil then
return manko_i
else
return index_pages
end
end
function bar_code(index_name, type, bar_height, bar_width, index_nodata )
if index_name == '' or index_name == nil then
return index_nodata
end
local index_data_title = mw.title.makeTitle( 'Template', 'IndexPages/' .. index_name )
if index_data_title == nil then
return index_nodata
end
local index_data = index_data_title:getContent()
if index_data == nil then
return index_nodata
end
local index_pages = tonumber((string.gsub( index_data, '.*<pc>(.-)</pc>.*','%1')))
local q4_pages = tonumber((string.gsub( index_data, '.*<q4>(.-)</q4>.*','%1')))
local q3_pages = tonumber((string.gsub( index_data, '.*<q3>(.-)</q3>.*','%1')))
local q2_pages = tonumber((string.gsub( index_data, '.*<q2>(.-)</q2>.*','%1')))
local q1_pages = tonumber((string.gsub( index_data, '.*<q1>(.-)</q1>.*','%1')))
local q0_pages = tonumber((string.gsub( index_data, '.*<q0>(.-)</q0>.*','%1')))
if index_pages == nil or q4_pages == nil or q3_pages == nil or q2_pages == nil or q1_pages == nil or q0_pages == nil then
return index_nodata
end
local qn_pages = index_pages - q4_pages - q3_pages - q2_pages - q1_pages - q0_pages
if type == 'd' then
bar_width = math.ceil((index_pages / 800) * 100)
if bar_width > 100 then bar_width = 100 end
bar_width = bar_width .. '%'
end
local status_indicator = mw.html.create( 'table' )
status_indicator
:addClass( 'p_qb' )
:css( {['height'] = bar_height , ['width'] = bar_width .. ' !important'} )
local status_tr = status_indicator:tag('tr')
if q4_pages > 0 then
local status_td_q4 = status_tr:tag('td')
status_td_q4
:addClass( 'pq4' )
:css( {['width']= math.floor((q4_pages/index_pages) * 100 + 0.5) .. '%'} )
end
if q3_pages > 0 then
local status_td_q3 = status_tr:tag('td')
status_td_q3
:addClass( 'pq3' )
:css( {['width']= math.floor((q3_pages/index_pages) * 100 + 0.5) .. '%'} )
end
if q2_pages > 0 then
local status_td_q2 = status_tr:tag('td')
status_td_q2
:addClass( 'pq2' )
:css( {['width']= math.floor((q2_pages/index_pages) * 100 + 0.5) .. '%'} )
end
if q1_pages > 0 then
local status_td_q1 = status_tr:tag('td')
status_td_q1
:addClass( 'pq1' )
:css( {['width']= math.floor((q1_pages/index_pages) * 100 + 0.5) .. '%'} )
end
if q0_pages > 0 then
local status_td_q0 = status_tr:tag('td')
status_td_q0
:addClass( 'pq0' )
:css( {['width']= math.floor((q0_pages/index_pages) * 100 + 0.5) .. '%'} )
end
if qn_pages > 0 then
local status_td_qn = status_tr:tag('td')
status_td_qn
:addClass( 'pqn' )
:css( {['width']= math.floor((qn_pages/index_pages) * 100 + 0.5) .. '%'} )
end
return tostring(status_indicator:allDone())
end
function stato_nro(index_name, problem)
if index_name == '' or index_name == nil then
return -1
end
local index_data_title = mw.title.makeTitle( 'Template', 'IndexPages/' .. index_name )
if index_data_title == nil then
return -1
end
local index_data = index_data_title:getContent()
if index_data == nil then
return -1
end
local index_pages = tonumber((string.gsub( index_data, '.*<pc>(.-)</pc>.*','%1')))
local q4_pages = tonumber((string.gsub( index_data, '.*<q4>(.-)</q4>.*','%1')))
local q3_pages = tonumber((string.gsub( index_data, '.*<q3>(.-)</q3>.*','%1')))
local q2_pages = tonumber((string.gsub( index_data, '.*<q2>(.-)</q2>.*','%1')))
local q1_pages = tonumber((string.gsub( index_data, '.*<q1>(.-)</q1>.*','%1')))
local q0_pages = tonumber((string.gsub( index_data, '.*<q0>(.-)</q0>.*','%1')))
if index_pages == nil or q4_pages == nil or q3_pages == nil or q2_pages == nil or q1_pages == nil or q0_pages == nil then
return -1
end
local qn_pages = index_pages - q4_pages - q3_pages - q2_pages - q1_pages - q0_pages
if q2_pages == 0 or problem == nil then
if qn_pages == 0 then
if q1_pages == 0 then
if q3_pages == 0 then
return 4
end
return 3
end
return 2
end
return 1
end
return 5
end
function row_code(frame)
local args = frame.args
--param
local index_name = ''
if frame.args['indekso'] ~= nil then
index_name = string.gsub(frame.args['indekso'], 'Indekso:', '')
end
local titolo = args['titolo']
local autoro = frame.args['aŭtoro']
local autoro2 = frame.args['aŭtoro2']
local indekso_pagoj = frame.args['paĝoj']
local rimarkoj = frame.args['rimarkoj']
local komenco = frame.args['komenco']
local indekso_stato = frame.args['stato']
local indekso_stato_withp = frame.args['stato']
local bcgrnd = {["2"] = 'style="background-color:#f99"', ["3"] = 'style="background-color:#ff9"', ["4"] = 'style="background-color:#90ff90"', ["5"] = 'style="background-color:#6495ED"' }
local stato_ikono = {["-1"] = '<span title="mankas informoj">[...]</span>', ["0"] = '[[Dosiero:00%.svg|0% Serĉata, nepublikigita]]', ["1"] = '[[Dosiero:25%.svg|25% Komencita]]',
["2"] = '[[Dosiero:50%.svg|50% Transskribita]]', ["3"] = '[[Dosiero:75%.svg|75% Transskribita kaj korektita]]', ["4"] = '[[Dosiero:100%.svg|100% Transskribita kaj reviziita]]',
["5"] = '[[Dosiero:Crystal 128 error.svg|9px|Problemoj]]'}
--/param
if autoro == nil then autoro = '' end
if rimarkoj == nil then rimarkoj = '' end
if komenco == nil then komenco = '' end
local ret_row_code = ''
if indekso_stato == nil or indekso_stato == '' then
indekso_stato = tostring(stato_nro(index_name))
indekso_stato_withp = tostring(stato_nro(index_name, 1))
end
if indekso_stato == nil then indekso_stato = '' end
local bar = bar_code(index_name, 'd', '0.95em', '', '<br>[la statuso ŝanĝiĝas]' )
if indekso_pagoj == nil or indekso_pagoj == '' then
indekso_pagoj = pagoj_nro(index_name)
end
if indekso_pagoj == nil then indekso_pagoj = '' end
if bcgrnd[indekso_stato] == nil then
bcgrnd[indekso_stato] = ''
end
ret_row_code = ret_row_code .. '|- ' .. bcgrnd[indekso_stato] .. '\n'
ret_row_code = ret_row_code .. '|'
local index_link = '[[Indekso:' .. index_name
if titolo == nil or titolo == '' then
index_link = index_link .. '|' .. index_name .. ']]'
else
index_link = index_link .. '|' .. titolo .. ']]'
end
if indekso_stato == "4" then
ret_row_code = ret_row_code .. index_link .. '\n'
else
if indekso_stato == "2" or indekso_stato == "3" or indekso_stato == "5" then
ret_row_code = ret_row_code .. 'style="background-color:#fff"|'
end
ret_row_code = ret_row_code .. index_link .. bar .. '\n'
end
local autoro_priskribo = autoro
if autoro2 ~= nil and autoro2 ~= '' then
autoro_priskribo = autoro2
end
local autoro_kodo = autoro
if string.find( autoro, '%[') == nil and string.find( autoro, '<br') == nil and autoro ~= '' and autoro ~= nil then
autoro_kodo = '[[Aŭtoro:' .. autoro .. '|' .. autoro_priskribo .. ']]'
end
local stato_kodo = stato_ikono[indekso_stato_withp]
if stato_kodo == nil then
stato_kodo = '<span title="erara parametro">!!!</span>'
end
ret_row_code = ret_row_code .. '|' .. autoro_kodo .. '\n'
ret_row_code = ret_row_code .. '|style="text-align:right;"|' .. indekso_pagoj .. '\n'
ret_row_code = ret_row_code .. '|' .. rimarkoj .. '\n'
ret_row_code = ret_row_code .. '|' .. komenco .. '\n'
ret_row_code = ret_row_code .. '|class=center|' .. stato_kodo .. '\n'
return ret_row_code
end
local p = {}
function p.bar(frame)
--param
local index_nodata = '<br>[la statuso ŝanĝiĝas]'
local index_name = string.gsub(frame.args[1], 'Indekso:', '')
local type = 'd'
local bar_width = '100px' --default only for 'static' version
local bar_height = '0.95em'
if frame.args[3] ~= nil and frame.args[3] ~='' then
bar_width = frame.args[3]
end
if frame.args[4] ~= nil and frame.args[4] ~='' then
bar_height = frame.args[4]
end
if frame.args[2] == 's' then
type = 's'
end
--/param
return bar_code(index_name, type, bar_height, bar_width, index_nodata )
end
function p.stato(frame)
--param
local index_name = string.gsub(frame.args[1], 'Indekso:', '')
--/param
return stato_nro(index_name)
end
function p.pagoj(frame)
--param
local index_name = string.gsub(frame.args[1], 'Indekso:', '')
--/param
return pagoj_nro(index_name)
end
function p.row_proofread( frame )
return row_code( frame:getParent() )
end
return p