יחידה:תלבושת ספורט

מתוך ויקיפדיה, האנציקלופדיה החופשית

המידע מטה מוצג מתוך הדף יחידה:תלבושת ספורט/תיעוד.


יחידה זו מיועדת להצגת תלבושת של נבחרת בענף ספורט. ציון הענף מתבצע באמצעות הפרמטר "1".

פרמטרים[עריכת קוד מקור]

ניתן להשתמש בפרמטרים באנגלית או בעברית לנוחיותכם. אין להשתמש בפרמטרים כפולים - הן באותה שפה, והן בפרמטרים שמהווים alias. שימוש כזה ביחידה יזרוק שגיאה.
ניתן להשתמש ב|גרביים = ללא או < code>|socks = none בכדי שהגרביים לא יוצגו.
להלן טבלת הפרמטרים של התבנית, עם תווית בעברית, אנגלית ותיאור קצר.
לכל חלק גוף, x מהווה בחירת צבע, בעוד ש x_הדפס מהווה בחירת הדפס מתוך קובץ בוויקישיתוף.

עברית אנגלית תיאור
leftarm יד_שמאל צבע השרוול השמאלי
pattern_la הדפס_יד_שמאל הדפס השרוול השמאלי
rightarm יד_ימין צבע השרוול הימני
pattern_ra הדפס_יד_ימין הדפס השרוול הימני
shorts מכנס_קצר צבע מכנס קצר
pattern_sh הדפס_מכנס_קצר הדפס מכנס קצר
filetype סוג קובץ כדי להשתמש בסוג קובץ שונה מ-png עבור התלבושת
title כותרת תוכן הכותרת שתופיע מתחת לתלבושת
alt alt
skirt חצאית צבע החצאית
pattern_sk הדפס_חצאית הדפס החצאית
socks גרב צבע הגרביים
pattern_so הדפס_גרב הדפס הגרביים
shorts מכנס_קצר צבע מכנסיים קצרים
pattern_sh הדפס_מכנס_קצר הדפס מכנסיים קצרים
pants מכנס צבע מכנסיים ארוכים
pattern_pants הדפס_מכנס הדפס מכנסיים ארוכים
helmet קסדה צבע הקסדה
pattern_h הדפס_קסדה הדפס הקסדה

ֿ

קוד להעתקה[עריכת קוד מקור]

כל פרמטר מופיע פעמיים, פעם בצורה שניתן להעביר צבע (rightarm, leftarm וכו') ופעם בצורה שניתן להעביר תמונה (pattern_ra, pattern_la וכו') - ניתן לבחור בצורה הרצויה מביניהן

עבור נבחרת כדורסל[עריכת קוד מקור]

{{#invoke:תלבושת ספורט|main|כדורסל
|body=
|pattern_b=
|filetype=
|shorts=
|pattern_sh=
|title=
|כותרת=
}}
ניתן לסמן את הטקסט הנ"ל על ידי לחיצה על CTRL ולחיצה על לחצן עכבר שמאלי. לאחר הסימון ניתן להעתיק לזיכרון את המידע באמצעות CTRL + C ולהדביק בערך באמצעות CTRL + V.
ֿ

עבור ענפים אחרים[עריכת קוד מקור]

אין חובה למלא את הפרמטר 1.

{{תלבושת
|1=
|leftarm=
|pattern_la=
|filetype=
|alt=
|body=
|pattern_b=
|rightarm=
|pattern_ra=
|shorts=
|pattern_sh=
|socks=
|pattern_so=
|כותרת=
|title=
}}
ניתן לסמן את הטקסט הנ"ל על ידי לחיצה על CTRL ולחיצה על לחצן עכבר שמאלי. לאחר הסימון ניתן להעתיק לזיכרון את המידע באמצעות CTRL + C ולהדביק בערך באמצעות CTRL + V.

דוגמאות שימוש[עריכת קוד מקור]

{{#invoke:תלבושת ספורט|main|כדורסל
| title =מכבי תל אביב
| body = ffee00
| pattern_b =
| shorts = ffee00
| pattern_sh = _blue border
 }}
הצורה
מכבי תל אביב
{{#invoke:תלבושת ספורט|main|כדורגל
| pattern_la = _hbs2021h
| pattern_b = _hbs2021h
| pattern_ra = _hbs2021h
| pattern_sh = _hbs2021h
| pattern_so = 
| leftarm = FF0000
| body = FF0000
| rightarm = FF0000
| shorts = FFFFFF
| socks = FFFFFF
| title = הפועל באר שבע
 }}
הפועל באר שבע

שגיאות אפשריות[עריכת קוד מקור]

  • צבע לא תקין
  • הדפס לא תקין
  • לא הוגדר צבע
  • פרמטרים כפולים
  • פרמטר לא מזוהה

ערכים בהם יש שגיאה ביחידה זו ייכנסו לקטגוריה:שגיאות פרמטריות בתבנית תלבושת

ענפים נתמכים[עריכת קוד מקור]

  • כדורגל
  • קטרגל
  • הוקי קרח
  • הוקי שדה
  • כדורגל
  • כדוריד
  • כדורסל
  • כדורעף
  • קריקט
  • נטבול
  • בייסבול
  • פוטבול אמריקאי
  • פוטבול אוסטרלי

הגדרות התלבושות ביחידה:תלבושת ספורט/תלבושות.
לתמיכה בענפים נוספים - יש להוסיף לטבלת התרגומים בפונקצייה getField את הענף הנבחר בפורמט המתאים, וליצור פונקציה מתאימה לענף שמכילה את השינויים הנדרשים. בהינתן דרישות נוספות לענף, יש להגדירם בשדה preformat.

ראו גם[עריכת קוד מקור]


local p = {} -- p stands for package

function p.get_param(args, names, duplicate_errors)
	local value = nil
	local chosen_names = {}
	for _, name in pairs(names) do
		if args[name] and args[name] ~= '' then
			value = args[name]
			table.insert(chosen_names, name)
		end
	end
	
	if #chosen_names > 1 then
		table.insert(duplicate_errors, chosen_names)
	end
	
	return value
end

function has_value (tab, val)
    for _, value in ipairs(tab) do
        if value == val then
            return true
        end
    end

    return false
end

function p.main(frame)
	local args = frame.args
	local outfits = require('יחידה:תלבושת ספורט/תלבושות')
	local data = outfits.getSportsWearData(args)

	local color_errors = {}
	local pattern_errors = {}
	local empty_errors = {}
	local duplicate_errors = {}
	
	local filetype = p.get_param(args, data.filetype_params or {}, duplicate_errors) or 'png'
	local title = p.get_param(args, data.title_params or {}, duplicate_errors)
	
	local result = ''
	local max_right = 0
	local max_bottom = 0
	local found_elements = false
	
	
	for _, element in pairs(data.elements) do
		local element_result = ''
		
		local pattern = p.get_param(args, element.pattern_params, duplicate_errors)
		local pattern_error = false
		if pattern then
			pattern_filename = element.prefix .. pattern .. '.' .. filetype
			if not mw.title.new('Media:' .. pattern_filename).exists then
				pattern_error = true
				table.insert(pattern_errors, element)
			end
		end
		
		local color = p.get_param(args, element.color_params, duplicate_errors)
		local ignore_element = has_value(data.none_values or {}, color)
		local color_error = false
		if color ~= nil and not ignore_element and not ((#color == 3 or #color == 6) and string.match(color, '^[0-9a-fA-F]+$')) then
			color_error = true
			table.insert(color_errors, element)
		end
		
		if pattern == nil and color == nil then
			table.insert(empty_errors, element)
		else
			found_elements = true -- "none" value?
		end
		
		local alt = nil
		if data.alt_element == element then
			alt = p.get_param(args, data.alt_params or {}, duplicate_errors) or data.default_alt
		end
		
		if not ignore_element then
			max_right = math.max(max_right, element.left + element.width)
			max_bottom = math.max(max_bottom, element.top + element.height)
			
			position = 'position: absolute; left: ' .. element.left .. 'px; top: ' .. element.top ..
				'px; width: ' .. element.width .. 'px; height: ' .. element.height .. 'px;'
			
			element_result = '<div style="' .. position
			if color and not color_error then
				element_result = element_result .. ' background-color: #' .. color .. ';'
			end
			element_result = element_result .. '">'
			if pattern and not pattern_error then
				element_result = element_result .. '[[File:' .. pattern_filename .. '|top|link='
				if alt then
					element_result = element_result .. '|alt=' .. alt
				end
				element_result = element_result .. ']]'
			end
			element_result = element_result .. '</div>'
			element_result = element_result .. '<div style="' .. position .. '">'
			element_result = element_result .. '[[File:' .. (element.main_file or (element.prefix .. '.svg')) .. '|top|link='
			if alt and not (pattern and not pattern_error) then
				element_result = element_result .. '|alt=' .. alt
			end
			element_result = element_result .. ']]</div>'
		end
		
		result = result .. element_result
	end
	
	
	result = '<div style="width: ' .. max_right .. 'px; margin: 0 auto; padding: 0;">' ..
		'<div style="background-color: white; position: relative; left: 0px; top: 0px; width: ' .. max_right ..
			'px; height: ' .. max_bottom ..  'px; margin: 0 auto; padding: 0;">' ..
		result .. '</div>'
	if title then
		result = result .. '<div style="padding-top: 0.6em; text-align: center; font-weight: bold; line-height: 1.4em;">' .. title .. '</div>'
	end
	result = result .. '</div>'
	
	
	error_messages = {}
	if #color_errors > 0 then
		color_errors_messages = {}
		for _, element in pairs(color_errors) do
			table.insert(color_errors_messages, element.genitive)
		end
		table.insert(error_messages, data.errors.in_colors .. ' ' .. mw.text.listToText(color_errors_messages))
	end
	if #pattern_errors > 0 then
		pattern_errors_messages = {}
		for _, element in pairs(pattern_errors) do
			table.insert(pattern_errors_messages, element.genitive)
		end
		table.insert(error_messages, data.errors.in_patterns .. ' ' .. mw.text.listToText(pattern_errors_messages))
	end
	if #empty_errors > 0 then
		empty_errors_messages = {}
		for _, element in pairs(empty_errors) do
			table.insert(empty_errors_messages, element.genitive)
		end
		table.insert(error_messages, data.errors.empty_pairs .. ' ' .. mw.text.listToText(empty_errors_messages))
	end
	if #duplicate_errors > 0 then
		duplicate_errors_messages = {}
		for _, parameter_list in pairs(duplicate_errors) do
			table.insert(duplicate_errors_messages, mw.text.listToText(parameter_list))
		end
		table.insert(error_messages, data.errors.duplicate_args .. ' ' .. table.concat(duplicate_errors_messages, '; '))
	end
	
	
	local params = {1}
	for _, element in pairs(data.elements) do
		if element.color_params then
			for _, param in pairs(element.color_params) do
				table.insert(params, param)
			end
		end
		if element.pattern_params then
			for _, param in pairs(element.pattern_params) do
				table.insert(params, param)
			end
		end
	end
	if data.alt_params then
		for _, param in pairs(data.alt_params) do
			table.insert(params, param)
		end
	end
	if data.filetype_params then
		for _, param in pairs(data.filetype_params) do
			table.insert(params, param)
		end
	end
	if data.title_params then
		for _, param in pairs(data.title_params) do
			table.insert(params, param)
		end
	end
	
	local unknown_arguments = {}
	for param, _ in pairs(args) do
		if not has_value(params, param) then
			table.insert(unknown_arguments, param)
		end
	end
	if #unknown_arguments > 0 then
		table.insert(error_messages, data.errors.unknown_args .. ' ' .. mw.text.listToText(unknown_arguments))
	end
	
	
	if #error_messages > 0 then 
		result = result .. '<div style="padding-top: 1em; text-align: center;"><span class="error">' .. data.error_prefix .. 
			':</span> ' .. table.concat(error_messages, ';<br>') .. '.'
		if data.error_category then
			result = result .. '[[Category:' .. data.error_category .. ']]'
		end
		result = result .. '</div>'
	end
	
	if found_elements then
		return result
	else
		return ''
	end
end
return p