Implementează {{Tabel stadiu construcție}}


local getArgs = require('Modul:Arguments').getArgs
local TableTools = require('Modul:TableTools')

local PHASES = {
	['SF'] = { title = 'Studiu', culoareText = '000', culoareBg = '4fc3f7' },
	['PT'] = { title = 'Proiect', culoareText = '000', culoareBg = '9575cd' },
	['EX'] = { title = 'Execuție', culoareText = '000', culoareBg = 'e57373' }
}

local STAGES = {
	['LICITARE'] = { title = 'în licitare', culoareText = '000', culoareBg = 'FFC107' },
	['EVALUARE'] = { title = 'în evaluare', culoareText = '000', culoareBg = 'ff9800' },
	['CONTESTAT'] = { title = 'în contestații', culoareText = '000', culoareBg = 'ff5722' },
	['ATRIBUIT'] = { title = 'atribuit', culoareText = '000', culoareBg = 'ff7961' },
	['SEMNAT'] = { title = 'semnat', culoareText = '000', culoareBg = '673ab7' },
	['LUCRU'] = { title = 'în lucru', culoareText = '000', culoareBg = '00bcd4' },
	['FINALIZAT'] = { title = 'finalizat', culoareText = '000', culoareBg = '4CAF50' },
	['NECUNOSCUT'] = { title = 'necunoscut', culoareText = '000', culoareBg = 'f5f5f5' },
}

local p = {}

local function appendRow(tbl, row)
	local tblrow = tbl:tag('tr')

	local tblCellTronson = tblrow:tag('td')
	tblCellTronson:wikitext(row.tronson)
	
	local tblCellTronson = tblrow:tag('td')
	tblCellTronson:wikitext(row.lungime)

	local tblCellTronson = tblrow:tag('td')
	tblCellTronson:wikitext(row.constructor)

	local tblCellTronson = tblrow:tag('td')
	local phase = PHASES[mw.ustring.upper(row.faza or 'EX')] or PHASES['EX']
	tblCellTronson:css('background-color', '#' .. phase.culoareBg)
	tblCellTronson:css('color', '#' .. phase.culoareText)
	tblCellTronson:wikitext(phase.title)

	local tblCellTronson = tblrow:tag('td')
	local stage = STAGES[mw.ustring.upper(row.stadiu or 'NECUNOSCUT')] or STAGES['NECUNOSCUT']
	tblCellTronson:css('background-color', '#' .. stage.culoareBg)
	tblCellTronson:css('color', '#' .. stage.culoareText)
	tblCellTronson:wikitext(stage.title)

end

local function displayTable(rows, tableconfig)
	local tbl = mw.html.create('table')
		:addClass('wikitable')
	
	tbl:tag('tr')
		:tag('th'):wikitext('Tronson'):done()
		:tag('th'):wikitext('Lungime'):done()
		:tag('th'):wikitext('Antreprenor'):done()
		:tag('th'):wikitext('Fază'):done()
		:tag('th'):wikitext('Statut'):done()
	if tableconfig.float then tbl:css('float', tableconfig.float) end
	
	for _,eachRow in ipairs(rows) do
		appendRow(tbl, eachRow)
	end
	return tostring(tbl)
end

p.fromArgs = function(args)
	local rows = TableTools.compressSparseArray(TableTools.numData(args))
	local tableconfig = { float = args['poziție'] }
	return displayTable(rows, tableconfig)
end

p.fromFrame = function(frame)
	local args = getArgs(frame)
	return p.fromArgs(args)
end

return p