Vai al contenuto

Modulo:ArrotondoPercentuale

Wikibooks, manuali e libri di testo liberi.

Questo modulo serve per correggere per eccesso o per difetto la percentuale di completamento dei moduli, qual ora venga scritto il {{Avanzamento}} con un parametro che altrimenti non sarebbe valido.

Sintassi

Uso diretto

{{#Invoke:ArrotondoPercentuale|main}}

Uso tramite template

{{#Invoke:ArrotondoPercentuale|main|{{{1}}}}}

Esempio

Vedremo come esempio l'uso diretto: {{#Invoke:ArrotondoPercentuale|main|14}} e {{#Invoke:ArrotondoPercentuale|main|87%}}

daranno come risultato: 25 e 75%, questo perché 14 è più vicino a 25 che alla categoria inferiore ( 00 ), mentre 87% è più vicino alla categoria inferiore, cioè 75% che a quella superiore, cioè 100%.

funzione per le immagini

Se il vostro scopo è quello di usarlo per inserire le iconcine di avanzamento, la funzione da richiamare è {{#Invoke:ArrotondoPercentuale|immagine|''n''}} dove "n" è il numero da arrotondare.

Esempio
{{#Invoke:ArrotondoPercentuale|immagine|74%}}
restituirà
che è l'arrotondamento per eccesso a 75%

Nota: a differenza della funzione principale, le immagini necessitano del segno di percentuale.

suddivisioni

Tutti i valori si intendono implicitamente compresi

da 0 a 12 00
da 13 a 37 25
da 38 a 62 50
da 63 a 99 75
100 100

Parametri facoltativi

Il modulo accetta anche 2 parametri facoltativi:

  1. px per modificare la dimensione dell'immagine (se non specificato, l'immagine verrà ridimensionata a 20px);
  2. txt per inserire la discascalia che appare quando si posiziona la freccia del mose sull'immagine. Usando {{!}} al posto del pipe( "|" ) è possibile passare parametri aggiunvi come ad asempio "destra" per allineare a destra l'immagine o "bordo" per rachiudere l'immagine in un riquado.
esempio
{{#Invoke:ArrotondoPercentuale|immagine|45%|px=25px|txt=bordo{{!}}Didascalia}}
risultato
Didascalia

Funzione pratica

Questo modulo è stato pensato per essere usato con il {{Avanzamento}} in modo che restituisca sempre un valore corretto, anche se un utente aggiungesse un parametro non contemplato negli avanzamenti, in modo da evitare il più possibile gli errori dello script JS.

Richiamare la funzione all'interno di un altro modulo

Se intendi usare la funzione main in un altro modulo Lua, devi prima caricarlo e trasformarlo in una variabile

local mArrotondo = require('Modulo:ArrotondoPercentuale')

Quindi supponendo di voler chiamare arrotondo la variabile, basta inserire la sintassi seguente all'interno della funzione che dovrà utilizzarlo:

arrotondo = mArrotondo.main(frame)

A questo punto basterà utilizzare soltanto la variabile arrotondo e il primo parametro del template verrà processato e arrotondato.

Per un esepio pratico vedere il Modulo:Avanzamento


--[=[ Modulo per arrotondare per eccesso o per difetto una percentuale
da [[it:b:Modulo:ArrotondoPercentuale]] di [[user:Wim b]] ]=]

local p = {}

function p.main(frame)
local arg1 = frame.args[1]

-- mantiene solo i numeri, per la compatibilità con "100%" che altrimenti verrebbe 
-- interpretato "= 1" e quandi < 12 (= 00%)
Digit = mw.ustring.gsub(arg1, '%D', '') 
local NoDigit = mw.ustring.gsub(arg1, '%d', '') -- cancella tutti i numeri e tiene solo l'eventuale segno di percentuale
local result

	
	if Digit == '' or Digit == 'nil' then -- vuoto. "nil" è resente come parametro di default nel template, altrimenti dava "1" quando vuoto
		return  'percentuale lasciata vuota'
	elseif Digit == '100' then -- 100% si usa solo se è specificato il 100%
		result = '100'
	elseif Digit <= '99' and Digit >= '63' then -- 75%
		result = '75'
	elseif Digit <= '62' and Digit >= '38' then -- 50%
		result = '50'
	elseif Digit <= '37' and Digit >= '13' then -- 25%
		result = '25'
	else -- 00%
		result = '00'
	end
	return result ..''.. NoDigit
end

function p.immagine(frame)
	imagePixel = frame.args['px'] or '20px'
	imageTxt = frame.args['txt']  or ''
	txtImm = (p.main(frame))
	
	if Digit == '' or Digit == 'nil' then -- vuoto
		return  ''
	else
		return '[[File:'..txtImm..'.svg|'..imagePixel..'|'..imageTxt..']]'
	end
end

return p