Modulo:Discendenza/sandbox: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica |
Nessun oggetto della modifica |
||
Riga 1:
-- Modulo per la creazione di albero di discendenza
require('Module:No globals')
local getArgs = require('Module:Arguments').getArgs
Line 5 ⟶ 7:
local pers = {}
local tabella = {}
--[[
pers.padre = identificativo dell'elemento genitore
pers.testo = testo dell'elemento
pers.nota = informazioni aggiuntive
pers.id = numero d'ordine come figlio
pers.x = posizione orizzontale
pers.y = posizione verticale
pers.sp = spostamento relativo della ramificazione
pers.figli = identificativi dei figli
tabella[y] = { id1, id2, id3, ... }
elenco degli elementi sulla riga y della tabella
]]--
local function dividi(dati)
Line 38 ⟶ 53:
table.insert(tabella[plev], pid) -- inserisce la persona in tabella
for i, v in pairs(pers[pid].figli) do
pers[v].id = i -- assegna numero
nn = nn + organizza(v, plev+1) -- ricorsione per assegnare y ai figli e contarli
end
Line 50 ⟶ 65:
dt[pers[pid].y] = pers[pid].x + delta
end
for
dt = limSx(v, delta+pers[pid].sp, dt)
end
Line 62 ⟶ 77:
dt[pers[pid].y] = pers[pid].x + delta
end
for
dt = limDx(v, delta+pers[pid].sp, dt)
end
Line 71 ⟶ 86:
local distanza = n2 - n1
local vrf = 0
if (distanza > 1) then
local
pos = inizio + math.floor(cc*passo)
pers[pers[pid2].figli[n1+cc]].
▲ pers[pers[pid2].figli[n1+cc]].sp = sposta
end
end
vrf = 1
Line 93 ⟶ 107:
local fine = pers[pid].id
local frt2, n
frt2 = pers[pers[pid].padre].figli[frt]
tDx = limDx(frt2, 0, {}) -- elementi più a destra del ramo fratello per ogni y
Line 113 ⟶ 126:
sposta = 0
end
end
end
Line 161 ⟶ 173:
tt = limSx(pid, 0, tt)
for
if (v+sposta<0) then
sposta = -v
Line 174 ⟶ 186:
local function calcolaX3(pid, sposta)
pers[pid].x = pers[pid].x + sposta
end
end
local function massimoXY(pid, t) -- calcola numero colonne e righe totali
if (pers[pid].x > t[1])
if (pers[pid].y > t[2])
for
t = massimoXY(v,t)
end
Line 203 ⟶ 214:
local lg = math.floor(100/(xy[1]+2)) -- larghezza percentuale di ogni colonna
if (lg == 0) then lg = 1 end
for n=1,xy[2] do -- analisi delle righe della tabella
p1 = 0; p2 = 0; p3 = 0
n1 = 0
Line 209 ⟶ 220:
s2 = '<tr>'
if (n<xy[2]) then s3 = '<tr style="line-height:8px">' else s3 = '' end
for
px = pers[v].x
nx = pers[v].padre
if (n>1) then
s1 = s1 .. '<td style="border-right:1px solid #000'
if (n1 == nx) then s1 = s1 ..';border-top:1px solid #000' end
Line 224 ⟶ 236:
end
if (px-p2>0) then
s2 = s2 .. '<td'
if (px - p2>1) then s2 = s2 .. ' colspan="'.. (px-p2) ..'"' end
Line 234 ⟶ 247:
p2 = px + 2
if (n<xy[2]) then
if (#pers[v].figli > 0) then
s3 = s3 .. '<td style="border-right: 1px solid #000'
Line 244 ⟶ 258:
end
if (n>1) then s1 = s1 .. '</tr>' end
s2 = s2 .. '</tr>'
if (n<xy[2]) then s3 = s3 .. '</tr>' end
ss = ss .. s1 .. s2 .. s3
end
|