Moduli:CS1 charts
Pamja
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 page_title = mw.title.getCurrentTitle().prefixedText; -- namespace and name
local bar_chart_category_title = 'Mirëmbajtja CS1'; -- name without namespace
local bar_chart_x_legends = (page_title == ('Kategoria:' .. bar_chart_category_title)) and bar_chart_category_title or table.concat ({'[[:Kategoria:', bar_chart_category_title, '|', bar_chart_category_title, ']]'});
--local bar_chart_x_legends = '<includeonly>Mirëmbajtja CS1</includeonly><noinclude>[[:Kategoria:Mirëmbajtja CS1|Mirëmbajtja CS1]]</noinclude>'; -- 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], ' nënkategoritë'})
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], ' nënkategoritë'})
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,
}