Kërceni tek përmbajtja

Moduli:CS1 charts

Page semi-protected
Nga Wikipedia, enciklopedia e lirë
local cfg = mw.loadData ('Moduli:Citation/CS1/Configuration');

--[[--------------------------< M A I N T _ C A T S _ T >------------------------------------------------------
]]

local maint_cats_t = {															-- categories and the order in which they are displayed
	'maint_unfit',																-- Mirëmbajtja CS1: Adresë e papërshtatshme
	'maint_archived_copy',														-- Mirëmbajtja CS1: Archived copy si titull
	'maint_bot_unknown',														-- Mirëmbajtja CS1: BOT: gjendja e adresës origjinale është e panjohur
	'maint_untitled',															-- Mirëmbajtja CS1: Botim periodik i patitulluar
	'maint_ref_duplicates_default',												-- Mirëmbajtja CS1: Citimi referon vetveten
	'maint_date_year',															-- Mirëmbajtja CS1: Data dhe viti
	'maint_doi_inactive',														-- Mirëmbajtja CS1: DOI joaktive
	'maint_pmc_embargo',														-- Mirëmbajtja CS1: Embargo PMC ka skaduar
	'Mirëmbajtja CS1: Emra shifrorë',											-- has subcats with assembled named so this cat not in cfg.error_conditions
	'Mirëmbajtja CS1: Emra të shumëfishtë',										-- has subcats with assembled named so this cat not in cfg.error_conditions
	'maint_others',																-- Mirëmbajtja CS1: Është përdorur gabimisht parametri i të tjerëve
	'maint_others_avm',															-- Mirëmbajtja CS1: Është përdorur gabimisht parametri i të tjerëve te citimet audiovizuale
	'maint_authors',															-- Mirëmbajtja CS1: Është përdorur parametri i autorëve
	'maint_ref_harv',															-- Mirëmbajtja CS1: Është përdorur ref=harv
	'maint_date_format',														-- Mirëmbajtja CS1: Formati i datës
	'maint_jfm_format',															-- Mirëmbajtja CS1: Formati JFM
	'maint_mr_format',															-- Mirëmbajtja CS1: Formati MR
	'maint_pmc_format',															-- Mirëmbajtja CS1: Formati PMC
	'maint_doi_ignore',															-- Mirëmbajtja CS1: Gabime DOI të injoruara
	'maint_isbn_ignore',														-- Mirëmbajtja CS1: Gabime ISBN të injoruara
	'maint_issn_ignore',														-- Mirëmbajtja CS1: Gabime ISSN të injoruara
	'maint_unknown_lang',														-- Mirëmbajtja CS1: Gjuhë e panjohur
	'maint_postscript',															-- Mirëmbajtja CS1: Passhkrimi
	'maint_extra_punct',														-- Mirëmbajtja CS1: Pikësim shtesë
	'Mirëmbajtja CS1: Tekst shtesë',											-- has subcats with assembled named so this cat not in cfg.error_conditions
	'maint_location',															-- Mirëmbajtja CS1: Vendodhja
	'maint_zbl',																-- Mirëmbajtja CS1: ZBL
	}


--[[--------------------------< S U B C A T S _ T >------------------------------------------------------------
]]

local subcats_t = {
	['Mirëmbajtja CS1: Emra shifrorë'] = {										-- subcats of Mirëmbajtja CS1: Emra shifrorë
		'Mirëmbajtja CS1: Emra shifrorë: lista e autorëve',
		'Mirëmbajtja CS1: Emra shifrorë: lista e intervistuesve',
		'Mirëmbajtja CS1: Emra shifrorë: lista e kontribuesve',
		'Mirëmbajtja CS1: Emra shifrorë: lista e përkthyesve',
		'Mirëmbajtja CS1: Emra shifrorë: lista e redaktorëve',
		},

	['Mirëmbajtja CS1: Emra të shumëfishtë'] = {								-- subcats of Mirëmbajtja CS1: Emra të shumëfishtë
		'Mirëmbajtja CS1: Emra të shumëfishtë: lista e autorëve',
		'Mirëmbajtja CS1: Emra të shumëfishtë: lista e intervistuesve',
		'Mirëmbajtja CS1: Emra të shumëfishtë: lista e kontribuesve',
		'Mirëmbajtja CS1: Emra të shumëfishtë: lista e përkthyesve',
		'Mirëmbajtja CS1: Emra të shumëfishtë: lista e redaktorëve',
		},
	
	['Mirëmbajtja CS1: Tekst shtesë'] = {										-- subcats of Mirëmbajtja CS1: Tekst shtesë
		'Mirëmbajtja CS1: Tekst shtesë: lista e autorëve',
		'Mirëmbajtja CS1: Tekst shtesë: lista e intervistuesve',
		'Mirëmbajtja CS1: Tekst shtesë: lista e kontribuesve',
		'Mirëmbajtja CS1: Tekst shtesë: lista e përkthyesve',
		'Mirëmbajtja CS1: Tekst shtesë: lista e redaktorëve',
		},
	}


 local bar_chart_delimiter = ';';												-- for |delimiter=
 local bar_chart_units_suffix = '_faqe';										-- for |units suffix=
 local bar_chart_x_legends = '[[:Kategoria:Mirëmbajtja CS1|Mirëmbajtja CS1]]';	-- for |x legends= TODO: better solution for the x legend?


--[[--------------------------< B A R _ C H A R T _ C O L O R S >----------------------------------------------

all of these concatenate with <bar_chart_delimiter> into chart parameter |colors=

]]

local bar_chart_colors = {
	'Silver',
	'Gray',
	'Black',
	'Red',
	'Maroon',
	'Yellow',
	'Olive',
	'Lime',
	'Green',
	'Lightskyblue',
	'Teal',
	'Blue',
	'Navy',
	'Orange',
	'Purple',
	'Tomato',
	'LightSeaGreen',
	'RosyBrown',
	'DarkOliveGreen',
	'MediumVioletRed',
	'Orange',
	'Violet',
	'Brown',
	'Darkslategrey',
	'Forestgreen',
	'Gold',
	'Maroon'
	}


--[[--------------------------< S U B C A T _ D A T A _ F E T C H >--------------------------------------------
]]

local function subcat_data_fetch (cat)
	local page_count = 0;

	if subcats_t[cat] then
		local pages_in_cat = {}; 
		for i, subcat in ipairs (subcats_t[cat]) do
			pages_in_cat = mw.site.stats.pagesInCategory (subcat, '*');
			page_count = page_count + pages_in_cat.files + pages_in_cat.pages + pages_in_cat.subcats;
		end
	end
	
	return page_count;
end


--[[--------------------------< G R A P H _ P A R A M S _ C R E A T E >----------------------------------------
]]

local function graph_params_create (frame)
	local page_counts = {};
	local subcat_counts = {};
	local cat_names = {};

	for i, maint_cat in ipairs (maint_cats_t) do
		local pages_in_cat = {};
		if cfg.error_conditions[maint_cat] then
			maint_cat = cfg.error_conditions[maint_cat].category;				-- fetch the category name from Module:Citation/CS1/Configuration; use plaintext maint_cat else
		end

		cat_names[i] = maint_cat;												-- save a copy of the category name
		
		pages_in_cat = mw.site.stats.pagesInCategory (maint_cat, '*');
		if 0 ~= subcat_data_fetch (maint_cat) then
			page_counts[i] = pages_in_cat.files + pages_in_cat.pages + subcat_data_fetch (maint_cat);	-- don't include pages_in_cat.subcats in tally
			subcat_counts[i] = pages_in_cat.subcats;							-- but remember for later annotation
		else
			page_counts[i] = pages_in_cat.files + pages_in_cat.pages;			-- there are no subcats so don't bother
		end
	end
	
	local out = {'chart', 'bar chart'};											-- init for #invoke parser function call with Module:Chart and function barChar()
	out.delimiter = bar_chart_delimiter;										-- |delimiter=
	out['units suffix'] = bar_chart_units_suffix;								-- |units suffix=
	out['x legends'] = bar_chart_x_legends;										-- |x legends=
	
	for i, v in ipairs (maint_cats_t) do
		out['group ' .. i] = page_counts[i];									-- add |group 1= to |group n= pararameters
	end

	local tail;
	for i, v in ipairs (maint_cats_t) do
		if subcat_counts[i] then
			tail = table.concat ({' faqe from ', subcat_counts[i], ' subcategories'})
		else
			tail = ' faqe';
		end
		out['tooltip ' .. i] = table.concat ({cat_names[i], ' ', page_counts[i], tail});	-- add |tooltip 1= to |tooltip n= pararameters
	end

	local group_names = {};
	for i, v in ipairs (maint_cats_t) do
		if subcat_counts[i] then
			tail = table.concat ({' faqe from ', subcat_counts[i], ' subcategories'})
		else
			tail = ' faqe';
		end
		table.insert (group_names, table.concat ({'[[:Kategoria:', cat_names[i], '|', cat_names[i], ']] ', page_counts[i], tail}));
	end
	out['group names'] = table.concat (group_names, bar_chart_delimiter);		-- add |group names= parameter
	out['colors'] = table.concat (bar_chart_colors, bar_chart_delimiter);		-- add |colors= parameter
	
	return frame:callParserFunction ('#invoke', out);							-- {{#invoke:chart|bar chart|args...}}
end


--[[--------------------------< E X P O R T S >----------------------------------------------------------------
]]

return {
	graph_params_create = graph_params_create,
	}