Modulo:Discendenza: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
mNessun oggetto della modifica
Riga 50:
dt[pers[pid].y] = pers[pid].x + delta
end
for i_, v in pairs(pers[pid].figli) do
dt = limSx(v, delta+pers[pid].sp, dt)
end
Riga 62:
dt[pers[pid].y] = pers[pid].x + delta
end
for i_, v in pairs(pers[pid].figli) do
dt = limDx(v, delta+pers[pid].sp, dt)
end
Riga 71:
local distanza = n2 - n1
local vrf = 0
local pos, inizio, passo
if (distanza > 1) then
local dstinizio = (pers[pers[pid2].figli[n2n1]].x
passo -= (pers[pers[pid2].figli[n1n2]].x - inizio)/distanza
localfor cc = 1,(distanza-1) do
pos = inizio + math.floor(cc*passo)
while (n1+cc < n2) do
localif sposta(pos =- pers[pers[pid2].figli[n1+cc]].x +> math.floor(cc*dst0) then
if (sposta - pers[pers[pid2].figli[n1+cc]].x > 0)= thenpos
pers[pers[pid2].figli[n1+cc]].xsp = spostapos
pers[pers[pid2].figli[n1+cc]].sp = sposta
end
cc = cc + 1
end
vrf = 1
Riga 93:
 
local fine = pers[pid].id
local frt = 1
local frt2, n
whilefor frt=1,(frt < fine-1) do -- controlla tutti i rami fratelli da 1 fino al ramo corrente
frt2 = pers[pers[pid].padre].figli[frt]
tDx = limDx(frt2, 0, {}) -- elementi più a destra del ramo fratello per ogni y
Line 113 ⟶ 112:
sposta = 0
end
frt = frt + 1
end
end
 
local function calcolaX1(pid) -- prima verifica di posizionamento
for i_, v in pairs(pers[pid].figli) do
local tt = 0
for i, v in pairs(pers[pid].figli) do
calcolaX1(v)
tt = i
end
local tt = #pers[pid].figli
if (tt == 0) then -- non ha figli
if (pers[pid].padre == -1) then -- è capostipite
Line 157 ⟶ 153:
 
local function calcolaX2(pid)
local tt = {}
local sposta = 0
local tt = limSx(pid, 0, {})
 
ttfor = limSx(pid_, 0,v in pairs(tt) do
for i, v in pairs(tt) do
if (v+sposta<0) then
sposta = -v
Line 174 ⟶ 168:
local function calcolaX3(pid, sposta)
pers[pid].x = pers[pid].x + sposta
localfor sposta2_, =v sposta +in pairs(pers[pid].spfigli) do
for i calcolaX3(v, vsposta in+ pairs(pers[pid].figlisp) do
calcolaX3(v, sposta2)
end
end
 
local function massimoXY(pid, t) -- calcola numero colonne e righe totali
if (pers[pid].x > t[1]) =then math.max(t[1], = pers[pid].x) end
if (pers[pid].y > t[2]) =then math.max(t[2], = pers[pid].y) end
for i_, v in pairs(pers[pid].figli) do
t = massimoXY(v,t)
end
Line 203 ⟶ 196:
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 ⟶ 202:
s2 = '<tr>'
if (n<xy[2]) then s3 = '<tr style="line-height:8px">' else s3 = '' end
for i_, v in pairs(tabella[n]) do
px = pers[v].x
nx = pers[v].padre
 
if (n>1) then -- 1. parte superiore con unione dei rami se padre uguale al precedente
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 ⟶ 218:
end
 
if (px-p2>0) then -- 2. parte con testo
if (px-p2>0) then
s2 = s2 .. '<td'
if (px - p2>1) then s2 = s2 .. ' colspan="'.. (px-p2) ..'"' end
Line 234 ⟶ 229:
p2 = px + 2
 
if (n<xy[2]) then -- 3. parte inferiore in caso di figli (non creata per l'ultima riga)
if (n<xy[2]) then
if (#pers[v].figli > 0) then
s3 = s3 .. '<td style="border-right: 1px solid #000'
Line 244 ⟶ 240:
end
 
if (n>1) then s1 = s1 .. '</tr>' end -- chiusura delle righe
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
n = n + 1
end