Modulo:Discendenza: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 2:
local p = {}
local pers = {}
-- pers = dati delle persone:
-- id (identificativo)
-- padre (identificativo)
-- testo
-- nota
-- id2 (numero d'ordine tra i figli del padre)
-- x, y, sp (coordinate per il posizionamento) nella tabella
-- figli (elenco di identificativi)
local tabella = {}
-- identificativi delle persone per singola riga
-- local tdg = ''
-- dati per debug
 
--[[ debug
local function mostra2(pid, idt)
local ss = idt .. pers[pid].id .. ' => x = ' .. pers[pid].x .. ', sp = ' .. pers[pid].sp .. ', y = ' .. pers[pid].y .. '<br/>'
for i, v in pairs(pers[pid].figli) do
ss = ss .. idt .. mostra2(v,idt .. '> ')
end
return ss
end
]]--
 
local function dividi(dati)
Line 37 ⟶ 16:
while (4*m<=n) do
if ((tonumber(v1[4*m-3])) and (tonumber(v1[4*m-2]))) then
if (pers[tonumber(v1[4*m-3])]) then
pers[tonumber(v1[4*m-3])] = { id = tonumber(v1[4*m-3]), padre = tonumber(v1[4*m-2]), testo = v1[4*m-1], nota = v1[4*m], id2 = -1, x = -1, y = -1, sp = 0, figli = {} }
err = 'stesso identificativo utilizzato per elementi diversi'
-- else
pers[tonumber(v1[4*m-3])] = { id = tonumber(v1[4*m-3]), padre = tonumber(v1[4*m-2]), testo = v1[4*m-1], nota = v1[4*m], id2 = -1, x = -1, y = -1, sp = 0, figli = {} }
end
else
err = 'identificativo non numerico nella riga ' .. m
Line 123 ⟶ 106:
if (tSx[n] - tDx[n] + sposta < 2) then -- verifica che ci sia almeno una distanza 2 tra i rami (2 = larghezza casella)
sposta = 2 + tDx[n] - tSx[n]
--[[ debug
tdg = tdg .. '<br/>Sposta: id = ' .. pid .. ' (' .. pers[pid].x .. ',' .. pers[pid].sp .. '), Sx = ' .. tSx[n]
tdg = tdg .. '// id2 = ' .. frt2 .. ' (' .. pers[frt2].x .. ',' .. pers[frt2].sp .. '), Dx = ' .. tDx[n]
tdg = tdg .. '// n = ' .. n .. ', d = ' .. sposta
tdg = tdg .. '<br/>' .. mostra2(pid, '* ') .. '<br/>'
for i, v in pairs(tSx) do
tdg = tdg .. i .. ' = ' .. v .. ' - '
end
]]--
end
n = n + 1
Line 168 ⟶ 142:
pers[pid].x = pers[pers[pers[pid].padre].figli[pers[pid].id2 - 1]].x + 2
pers[pid].sp = pers[pid].x - pers[pers[pid].figli[1]].x
verifica(pid)
end
else -- ha più figli
Line 178 ⟶ 153:
pers[pid].x = pers[pers[pers[pid].padre].figli[pers[pid].id2 - 1]].x + 2
pers[pid].sp = pers[pid].x - media
end
end
if (tt>0 and pers[pid].padre>-1) then
if (pers[pid].id2 > 1) then
verifica(pid)
end
Line 321 ⟶ 292:
calcolaX2(capo)
calcolaX3(capo, 0)
 
-- if (frame.args[4] == '0') then
-- return mostra(capo, frame.args[2], frame.args[3])
-- else
-- return '<pre>'..mostra2(capo, '')..tdg .. '</pre>'
-- end
end
end