<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="id">
	<id>https://wikisporta.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wikisporta</id>
	<title>Wikisporta - Kontribusi pengguna [id]</title>
	<link rel="self" type="application/atom+xml" href="https://wikisporta.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wikisporta"/>
	<link rel="alternate" type="text/html" href="https://wikisporta.org/wiki/Istimewa:Kontribusi_pengguna/Wikisporta"/>
	<updated>2026-10-18T14:03:52Z</updated>
	<subtitle>Kontribusi pengguna</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Match_row/doc&amp;diff=1470</id>
		<title>Templat:Match row/doc</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Match_row/doc&amp;diff=1470"/>
		<updated>2026-10-18T13:53:16Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
Template &#039;&#039;&#039;{{tl|Match row}}&#039;&#039;&#039; digunakan di dalam {{tl|Match list}} untuk menampilkan baris pertandingan, lengkap dengan skor, jadwal, serta detail pencetak gol dan kartu disiplin.&lt;br /&gt;
&lt;br /&gt;
=== Sintaks Lengkap ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Match row|Tanggal|Kompetisi|Tuan Rumah|Skor/Jam|Tamu|Hasil M/S/K&lt;br /&gt;
| gol_home   = Nama Pencetak Gol (Min&#039;)&lt;br /&gt;
| gol_away   = Nama Pencetak Gol (Min&#039;)&lt;br /&gt;
| kartu_home = Detail Kartu (🟨 / 🟥)&lt;br /&gt;
| kartu_away = Detail Kartu (🟨 / 🟥)&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Contoh Penggunaan ===&lt;br /&gt;
1. &#039;&#039;&#039;Laga Selesai dengan Detail Gol &amp;amp; Kartu:&#039;&#039;&#039;&lt;br /&gt;
   &amp;lt;pre&amp;gt;&lt;br /&gt;
{{Match row|15 Apr|La Liga|Real Madrid|1 - 2|FC Barcelona|M&lt;br /&gt;
| gol_home   = Bellingham 34&#039;&lt;br /&gt;
| gol_away   = Yamal 18&#039;, Raphinha 67&#039;&lt;br /&gt;
| kartu_home = 🟨 Modric 45&#039;, 🟥 Rudiger 88&#039;&lt;br /&gt;
| kartu_away = 🟨 Gavi 60&#039;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Pengguna dengan template match list&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Match list&lt;br /&gt;
| judul = PERTANDINGAN &amp;amp; JADWAL TERBARU&lt;br /&gt;
| isi   = &lt;br /&gt;
{{Match row|15 Apr|La Liga|Real Madrid|1 - 2|FC Barcelona|M&lt;br /&gt;
| gol_home   = Bellingham 34&#039;&lt;br /&gt;
| gol_away   = Yamal 18&#039;, Raphinha 67&#039;&lt;br /&gt;
| kartu_home = 🟨 Modric 45&#039;, 🟥 Rudiger 88&#039;&lt;br /&gt;
| kartu_away = 🟨 Gavi 60&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Match row|22 Apr|La Liga|FC Barcelona|3 - 0|RCD Mallorca|M&lt;br /&gt;
| gol_home   = Lewandowski 12&#039;, 40&#039;, Torres 80&#039;&lt;br /&gt;
| kartu_away = 🟨 Maffeo 25&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Match row|11 Mei|La Liga|Villarreal CF|02:00 WIB|FC Barcelona|VS}}&lt;br /&gt;
}}&lt;br /&gt;
   &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. &#039;&#039;&#039;Jadwal Pertandingan Mendatang (Simpel):&#039;&#039;&#039;&lt;br /&gt;
   &amp;lt;pre&amp;gt;&lt;br /&gt;
{{Match row|11 Mei|La Liga|Villarreal CF|02:00 WIB|FC Barcelona|VS}}&lt;br /&gt;
   &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keterangan Parameter ===&lt;br /&gt;
* &#039;&#039;&#039;Parameter Posisional (1-6):&#039;&#039;&#039;&lt;br /&gt;
** `1` = Tanggal (Contoh: `15 Apr`)&lt;br /&gt;
** `2` = Nama Kompetisi (Contoh: `La Liga`, `UCL`)&lt;br /&gt;
** `3` = Tim Tuan Rumah&lt;br /&gt;
** `4` = Skor (misal `1 - 2`) atau Jam Pertandingan (misal `22:00 WIB`)&lt;br /&gt;
** `5` = Tim Tamu&lt;br /&gt;
** `6` = Status Hasil (`M` = Menang, `S` = Seri, `K` = Kalah, `VS` = Mendatang)&lt;br /&gt;
* &#039;&#039;&#039;Parameter Opsional (Detail Match):&#039;&#039;&#039;&lt;br /&gt;
** `gol_home` = Pencetak gol tim tuan rumah&lt;br /&gt;
** `gol_away` = Pencetak gol tim tamu&lt;br /&gt;
** `kartu_home` = Kartu kuning/merah tim tuan rumah&lt;br /&gt;
** `kartu_away` = Kartu kuning/merah tim tamu&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Match_row/doc&amp;diff=1469</id>
		<title>Templat:Match row/doc</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Match_row/doc&amp;diff=1469"/>
		<updated>2026-10-18T13:49:53Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
Template &#039;&#039;&#039;{{tl|Match row}}&#039;&#039;&#039; digunakan di dalam {{tl|Match list}} untuk menampilkan baris pertandingan, lengkap dengan skor, jadwal, serta detail pencetak gol dan kartu disiplin.&lt;br /&gt;
&lt;br /&gt;
=== Sintaks Lengkap ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Match row|Tanggal|Kompetisi|Tuan Rumah|Skor/Jam|Tamu|Hasil M/S/K&lt;br /&gt;
| gol_home   = Nama Pencetak Gol (Min&#039;)&lt;br /&gt;
| gol_away   = Nama Pencetak Gol (Min&#039;)&lt;br /&gt;
| kartu_home = Detail Kartu (🟨 / 🟥)&lt;br /&gt;
| kartu_away = Detail Kartu (🟨 / 🟥)&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Contoh Penggunaan ===&lt;br /&gt;
1. &#039;&#039;&#039;Laga Selesai dengan Detail Gol &amp;amp; Kartu:&#039;&#039;&#039;&lt;br /&gt;
   &amp;lt;pre&amp;gt;&lt;br /&gt;
{{Match row|15 Apr|La Liga|Real Madrid|1 - 2|FC Barcelona|M&lt;br /&gt;
| gol_home   = Bellingham 34&#039;&lt;br /&gt;
| gol_away   = Yamal 18&#039;, Raphinha 67&#039;&lt;br /&gt;
| kartu_home = 🟨 Modric 45&#039;, 🟥 Rudiger 88&#039;&lt;br /&gt;
| kartu_away = 🟨 Gavi 60&#039;&lt;br /&gt;
}}&lt;br /&gt;
   &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. &#039;&#039;&#039;Jadwal Pertandingan Mendatang (Simpel):&#039;&#039;&#039;&lt;br /&gt;
   &amp;lt;pre&amp;gt;&lt;br /&gt;
{{Match row|11 Mei|La Liga|Villarreal CF|02:00 WIB|FC Barcelona|VS}}&lt;br /&gt;
   &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keterangan Parameter ===&lt;br /&gt;
* &#039;&#039;&#039;Parameter Posisional (1-6):&#039;&#039;&#039;&lt;br /&gt;
** `1` = Tanggal (Contoh: `15 Apr`)&lt;br /&gt;
** `2` = Nama Kompetisi (Contoh: `La Liga`, `UCL`)&lt;br /&gt;
** `3` = Tim Tuan Rumah&lt;br /&gt;
** `4` = Skor (misal `1 - 2`) atau Jam Pertandingan (misal `22:00 WIB`)&lt;br /&gt;
** `5` = Tim Tamu&lt;br /&gt;
** `6` = Status Hasil (`M` = Menang, `S` = Seri, `K` = Kalah, `VS` = Mendatang)&lt;br /&gt;
* &#039;&#039;&#039;Parameter Opsional (Detail Match):&#039;&#039;&#039;&lt;br /&gt;
** `gol_home` = Pencetak gol tim tuan rumah&lt;br /&gt;
** `gol_away` = Pencetak gol tim tamu&lt;br /&gt;
** `kartu_home` = Kartu kuning/merah tim tuan rumah&lt;br /&gt;
** `kartu_away` = Kartu kuning/merah tim tamu&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Modul:MatchSystem&amp;diff=1468</id>
		<title>Modul:MatchSystem</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Modul:MatchSystem&amp;diff=1468"/>
		<updated>2026-10-18T13:48:40Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
-- 1. FUNGSI BARIS PERTANDINGAN (Match row)&lt;br /&gt;
--    Menampilkan baris ringkas rekap laga, jadwal, gol, dan kartu disiplin&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
function p.row(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    local date = args.tanggal or args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
    local comp = args.kompetisi or args[2] or &amp;quot;&amp;quot;&lt;br /&gt;
    local home = args.tuan_rumah or args[3] or &amp;quot;&amp;quot;&lt;br /&gt;
    local scoreOrTime = args.skor_atau_waktu or args[4] or &amp;quot;vs&amp;quot;&lt;br /&gt;
    local away = args.tamu or args[5] or &amp;quot;&amp;quot;&lt;br /&gt;
    local resultType = string.lower(args.hasil or args[6] or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    -- Detail Gol &amp;amp; Kartu Tambahan&lt;br /&gt;
    local homeGoals = args.gol_home or args.home_goals or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayGoals = args.gol_away or args.away_goals or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeCards = args.kartu_home or args.home_cards or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayCards = args.kartu_away or args.away_cards or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- Cek apakah input berupa skor (menggunakan tanda hubung &#039;-&#039;)&lt;br /&gt;
    local isScore = scoreOrTime:find(&amp;quot;%d+%s*[-]%s*%d+&amp;quot;) ~= nil&lt;br /&gt;
    &lt;br /&gt;
    local centerText = &amp;quot;&amp;quot;&lt;br /&gt;
    local timeSubtext = &amp;quot;&amp;quot;&lt;br /&gt;
    local compSubtext = &amp;quot;&amp;quot;&lt;br /&gt;
    local badgeHtml = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- Subtext Nama Kompetisi (jika diisi)&lt;br /&gt;
    if comp ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        compSubtext = string.format(&#039;&amp;lt;div style=&amp;quot;font-size: 75%%; color: #475569; font-weight: 700; text-transform: uppercase; margin-top: 1px;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039;, comp)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Logika Badge Hasil (M, S, K di ujung kanan)&lt;br /&gt;
    if resultType == &amp;quot;w&amp;quot; or resultType == &amp;quot;win&amp;quot; or resultType == &amp;quot;menang&amp;quot; or resultType == &amp;quot;m&amp;quot; then&lt;br /&gt;
        badgeHtml = &#039;&amp;lt;span style=&amp;quot;background: #22c55e; color: #ffffff; padding: 2px 5px; border-radius: 3px; font-weight: 800; font-size: 80%;&amp;quot;&amp;gt;M&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    elseif resultType == &amp;quot;l&amp;quot; or resultType == &amp;quot;loss&amp;quot; or resultType == &amp;quot;kalah&amp;quot; or resultType == &amp;quot;k&amp;quot; then&lt;br /&gt;
        badgeHtml = &#039;&amp;lt;span style=&amp;quot;background: #ef4444; color: #ffffff; padding: 2px 5px; border-radius: 3px; font-weight: 800; font-size: 80%;&amp;quot;&amp;gt;K&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    elseif resultType == &amp;quot;d&amp;quot; or resultType == &amp;quot;draw&amp;quot; or resultType == &amp;quot;seri&amp;quot; or resultType == &amp;quot;s&amp;quot; then&lt;br /&gt;
        badgeHtml = &#039;&amp;lt;span style=&amp;quot;background: #64748b; color: #ffffff; padding: 2px 5px; border-radius: 3px; font-weight: 800; font-size: 80%;&amp;quot;&amp;gt;S&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Logika Pemisahan Skor vs Jam/Waktu Pertandingan&lt;br /&gt;
    if isScore then&lt;br /&gt;
        centerText = scoreOrTime&lt;br /&gt;
    else&lt;br /&gt;
        centerText = &amp;quot;VS&amp;quot;&lt;br /&gt;
        if scoreOrTime ~= &amp;quot;vs&amp;quot; and scoreOrTime ~= &amp;quot;VS&amp;quot; and scoreOrTime ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            timeSubtext = string.format(&#039;&amp;lt;div style=&amp;quot;font-size: 80%%; color: #2563eb; font-weight: 600; margin-top: 1px;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039;, scoreOrTime)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Subrow untuk Detail Pencetak Gol &amp;amp; Kartu (hanya jika diisi)&lt;br /&gt;
    local detailHtml = &amp;quot;&amp;quot;&lt;br /&gt;
    local hasHomeDetail = (homeGoals ~= &amp;quot;&amp;quot; or homeCards ~= &amp;quot;&amp;quot;)&lt;br /&gt;
    local hasAwayDetail = (awayGoals ~= &amp;quot;&amp;quot; or awayCards ~= &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    if hasHomeDetail or hasAwayDetail then&lt;br /&gt;
        local homeContent = &amp;quot;&amp;quot;&lt;br /&gt;
        if homeGoals ~= &amp;quot;&amp;quot; then homeContent = &amp;quot;⚽ &amp;quot; .. homeGoals end&lt;br /&gt;
        if homeCards ~= &amp;quot;&amp;quot; then &lt;br /&gt;
            if homeContent ~= &amp;quot;&amp;quot; then homeContent = homeContent .. &amp;quot; &amp;amp;nbsp; &amp;quot; end&lt;br /&gt;
            homeContent = homeContent .. homeCards &lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        local awayContent = &amp;quot;&amp;quot;&lt;br /&gt;
        if awayGoals ~= &amp;quot;&amp;quot; then awayContent = &amp;quot;⚽ &amp;quot; .. awayGoals end&lt;br /&gt;
        if awayCards ~= &amp;quot;&amp;quot; then &lt;br /&gt;
            if awayContent ~= &amp;quot;&amp;quot; then awayContent = awayContent .. &amp;quot; &amp;amp;nbsp; &amp;quot; end&lt;br /&gt;
            awayContent = awayContent .. awayCards &lt;br /&gt;
        end&lt;br /&gt;
&lt;br /&gt;
        detailHtml = string.format(&lt;br /&gt;
            &#039;&amp;lt;tr style=&amp;quot;border-bottom: 1px solid #f1f5f9; font-size: 72%%; color: #475569; background: #fafafa;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
            &#039;&amp;lt;td style=&amp;quot;padding: 2px;&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
            &#039;&amp;lt;td style=&amp;quot;padding: 2px 4px 5px 4px; text-align: right; vertical-align: top; line-height: 1.3;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
            &#039;&amp;lt;td style=&amp;quot;padding: 2px;&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
            &#039;&amp;lt;td style=&amp;quot;padding: 2px 4px 5px 4px; text-align: left; vertical-align: top; line-height: 1.3;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
            &#039;&amp;lt;td style=&amp;quot;padding: 2px;&amp;quot;&amp;gt;&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
            &#039;&amp;lt;/tr&amp;gt;&#039;, homeContent, awayContent&lt;br /&gt;
        )&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Main Row&lt;br /&gt;
    local mainRowHtml = string.format(&lt;br /&gt;
        &#039;&amp;lt;tr style=&amp;quot;font-size: 78%%; text-align: center; %s&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; color: #64748b; width: 22%%; vertical-align: middle;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-weight:600;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;%s%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; font-weight: 600; color: #1e293b; width: 28%%; text-align: right; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; width: 20%%; vertical-align: middle;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 800; color: #0f172a; display: inline-block; padding: 2px 6px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 4px; text-transform: uppercase;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; font-weight: 600; color: #1e293b; width: 28%%; text-align: left; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; width: 2%%; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;/tr&amp;gt;&#039;, &lt;br /&gt;
        (detailHtml == &amp;quot;&amp;quot; and &amp;quot;border-bottom: 1px solid #f1f5f9;&amp;quot; or &amp;quot;&amp;quot;), &lt;br /&gt;
        date, compSubtext, timeSubtext, home, centerText, away, badgeHtml&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
    return mainRowHtml .. detailHtml&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
-- 2. FUNGSI PEMBUNGKUS DAFTAR LAGA (Match list)&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
function p.container(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local title = args.judul or args.title or &amp;quot;PERTANDINGAN &amp;amp; JADWAL TERBARU&amp;quot;&lt;br /&gt;
    local content = args.isi or args.content or args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    return string.format(&#039;&amp;lt;div style=&amp;quot;border: 1px solid #cbd5e1; border-radius: 8px; background: #ffffff; overflow: hidden; margin: 6px 0; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;background: #0f172a; color: #f8fafc; padding: 6px 8px; font-size: 80%%; font-weight: 700; text-align: center; letter-spacing: 0.5px; text-transform: uppercase;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;table style=&amp;quot;width: 100%%; border-collapse: collapse; background: #ffffff;&amp;quot;&amp;gt;%s&amp;lt;/table&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;, title, content)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
-- 3. FUNGSI LAPORAN DETAIL MATCH (Match result / Match Center)&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
function p.detail(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    local derby = args.laga_spesial or args.derby or &amp;quot;&amp;quot;&lt;br /&gt;
    local comp = args.kompetisi or args.competition or &amp;quot;&amp;quot;&lt;br /&gt;
    local phase = args.fase or args.babak or &amp;quot;&amp;quot;&lt;br /&gt;
    local date = args.tanggal or args.date or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local venue = args.stadion or args.venue or &amp;quot;&amp;quot;&lt;br /&gt;
    local referee = args.wasit or args.referee or &amp;quot;&amp;quot;&lt;br /&gt;
    local attendance = args.penonton or args.attendance or &amp;quot;&amp;quot;&lt;br /&gt;
    local weather = args.cuaca or args.weather or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local homeTeam = args.tuan_rumah or args.home or &amp;quot;Tuan Rumah&amp;quot;&lt;br /&gt;
    local awayTeam = args.tamu or args.away or &amp;quot;Tamu&amp;quot;&lt;br /&gt;
    local homeScore = args.skor_home or args.home_score or &amp;quot;0&amp;quot;&lt;br /&gt;
    local awayScore = args.skor_away or args.away_score or &amp;quot;0&amp;quot;&lt;br /&gt;
    local status = args.status or &amp;quot;FT&amp;quot;&lt;br /&gt;
    local aggregate = args.agregat or args.aggregate or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local homeGoals = args.gol_home or args.home_goals or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayGoals = args.gol_away or args.away_goals or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local homeXG = args.xg_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayXG = args.xg_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePoss = args.possession_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPoss = args.possession_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsTotal = args.shots_total_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsTotal = args.shots_total_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsOn = args.shots_on_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsOn = args.shots_on_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsOff = args.shots_off_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsOff = args.shots_off_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsBlocked = args.shots_blocked_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsBlocked = args.shots_blocked_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePasses = args.passes_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPasses = args.passes_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePassAcc = args.pass_acc_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPassAcc = args.pass_acc_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeCorners = args.corners_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayCorners = args.corners_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeOffsides = args.offsides_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayOffsides = args.offsides_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeSaves = args.saves_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awaySaves = args.saves_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeFouls = args.fouls_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayFouls = args.fouls_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeTackles = args.tackles_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayTackles = args.tackles_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeThrowIns = args.throwins_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayThrowIns = args.throwins_away or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local homeYellow = args.kartu_kuning_home or args.yellow_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayYellow = args.kartu_kuning_away or args.yellow_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeRed = args.kartu_merah_home or args.red_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayRed = args.kartu_merah_away or args.red_away or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local hScoreNum = tonumber(homeScore) or 0&lt;br /&gt;
    local aScoreNum = tonumber(awayScore) or 0&lt;br /&gt;
    local statusBg = &amp;quot;#6c757d&amp;quot;&lt;br /&gt;
    if hScoreNum &amp;gt; aScoreNum then&lt;br /&gt;
        statusBg = &amp;quot;#16a34a&amp;quot;&lt;br /&gt;
    elseif hScoreNum &amp;lt; aScoreNum then&lt;br /&gt;
        statusBg = &amp;quot;#dc2626&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local html = {}&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;div style=&amp;quot;border: 1px solid #cbd5e1; border-radius: 10px; background: #ffffff; overflow: hidden; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif; margin: 8px 0; box-shadow: 0 2px 6px rgba(0,0,0,0.08);&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    &lt;br /&gt;
    if derby ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, string.format(&#039;&amp;lt;div style=&amp;quot;background: linear-gradient(135deg, #0f172a 0%%, #1e1b4b 50%%, #312e81 100%%); color: #fbbf24; padding: 6px 8px; font-size: 85%%; text-align: center; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; border-bottom: 2px solid #fbbf24;&amp;quot;&amp;gt;🏆 %s 🏆&amp;lt;/div&amp;gt;&#039;, derby))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if comp ~= &amp;quot;&amp;quot; or date ~= &amp;quot;&amp;quot; or phase ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        local headerText = comp&lt;br /&gt;
        if phase ~= &amp;quot;&amp;quot; then headerText = (headerText ~= &amp;quot;&amp;quot; and (headerText .. &amp;quot; • &amp;quot;) or &amp;quot;&amp;quot;) .. phase end&lt;br /&gt;
        if date ~= &amp;quot;&amp;quot; then headerText = (headerText ~= &amp;quot;&amp;quot; and (headerText .. &amp;quot; • &amp;quot;) or &amp;quot;&amp;quot;) .. date end&lt;br /&gt;
        table.insert(html, string.format(&#039;&amp;lt;div style=&amp;quot;background: #1e293b; color: #cbd5e1; padding: 4px 8px; font-size: 78%%; text-align: center; font-weight: 600;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039;, headerText))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;table style=&amp;quot;width: 100%%; border-collapse: collapse; text-align: center; margin: 10px 0; background: transparent;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    table.insert(html, string.format([[&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 38%%; font-weight: 800; font-size: 92%%; color: #0f172a; padding: 2px 6px; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 24%%; padding: 2px; vertical-align: middle;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;span style=&amp;quot;background: %s; color: #ffffff; padding: 4px 10px; border-radius: 6px; font-weight: 900; font-size: 125%%; display: inline-block; letter-spacing: 1.5px; box-shadow: 0 2px 4px rgba(0,0,0,0.15);&amp;quot;&amp;gt;%s - %s&amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;font-size: 70%%; color: #64748b; margin-top: 4px; font-weight: 800; text-transform: uppercase;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&lt;br /&gt;
                %s&lt;br /&gt;
            &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 38%%; font-weight: 800; font-size: 92%%; color: #0f172a; padding: 2px 6px; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    ]], homeTeam, statusBg, homeScore, awayScore, status, (aggregate ~= &amp;quot;&amp;quot; and string.format(&#039;&amp;lt;div style=&amp;quot;font-size: 68%%; color: #475569; margin-top: 2px;&amp;quot;&amp;gt;(Agg: %s)&amp;lt;/div&amp;gt;&#039;, aggregate) or &amp;quot;&amp;quot;), awayTeam))&lt;br /&gt;
    &lt;br /&gt;
    if homeGoals ~= &amp;quot;&amp;quot; or awayGoals ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, string.format([[&lt;br /&gt;
            &amp;lt;tr style=&amp;quot;font-size: 75%%; color: #334155; vertical-align: top;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 6px; text-align: right; line-height: 1.4;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 0; font-size: 85%%;&amp;quot;&amp;gt;⚽&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 6px; text-align: left; line-height: 1.4;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        ]], homeGoals, awayGoals))&lt;br /&gt;
    end&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;/table&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    local function makeStatRow(label, hVal, aVal, isBold)&lt;br /&gt;
        if hVal ~= &amp;quot;&amp;quot; or aVal ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            local weight = isBold and &amp;quot;800&amp;quot; or &amp;quot;700&amp;quot;&lt;br /&gt;
            return string.format(&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;display: flex; justify-content: space-between; align-items: center; padding: 3px 0; border-bottom: 1px solid #f1f5f9;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;font-weight: %s; width: 30%%; text-align: right; color: #0f172a;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;color: #64748b; width: 40%%; text-align: center; font-size: 88%%;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;font-weight: %s; width: 30%%; text-align: left; color: #0f172a;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;/div&amp;gt;&#039;, &lt;br /&gt;
                weight, hVal ~= &amp;quot;&amp;quot; and hVal or &amp;quot;0&amp;quot;, label, weight, aVal ~= &amp;quot;&amp;quot; and aVal or &amp;quot;0&amp;quot;&lt;br /&gt;
            )&lt;br /&gt;
        end&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local function formatCards(yellow, red)&lt;br /&gt;
        local parts = {}&lt;br /&gt;
        if yellow ~= &amp;quot;&amp;quot; and yellow ~= &amp;quot;0&amp;quot; then&lt;br /&gt;
            table.insert(parts, string.format(&#039;%s &amp;lt;span style=&amp;quot;background: #eab308; color: #fff; padding: 1px 4px; border-radius: 3px; font-size: 75%%; font-weight: bold;&amp;quot;&amp;gt;K&amp;lt;/span&amp;gt;&#039;, yellow))&lt;br /&gt;
        end&lt;br /&gt;
        if red ~= &amp;quot;&amp;quot; and red ~= &amp;quot;0&amp;quot; then&lt;br /&gt;
            table.insert(parts, string.format(&#039;%s &amp;lt;span style=&amp;quot;background: #ef4444; color: #fff; padding: 1px 4px; border-radius: 3px; font-size: 75%%; font-weight: bold;&amp;quot;&amp;gt;M&amp;lt;/span&amp;gt;&#039;, red))&lt;br /&gt;
        end&lt;br /&gt;
        if #parts == 0 then return &amp;quot;&amp;quot; end&lt;br /&gt;
        return table.concat(parts, &amp;quot; &amp;amp;nbsp;&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local homeCardsFormatted = formatCards(homeYellow, homeRed)&lt;br /&gt;
    local awayCardsFormatted = formatCards(awayYellow, awayRed)&lt;br /&gt;
&lt;br /&gt;
    local hasStats = homePoss ~= &amp;quot;&amp;quot; or homeShotsOn ~= &amp;quot;&amp;quot; or homeXG ~= &amp;quot;&amp;quot; or homeCorners ~= &amp;quot;&amp;quot; or homeFouls ~= &amp;quot;&amp;quot; or homeCardsFormatted ~= &amp;quot;&amp;quot; or homePasses ~= &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    if hasStats then&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;border-top: 1px solid #e2e8f0; padding: 6px 10px; font-size: 75%%; background: #f8fafc;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;text-align: center; font-weight: 800; color: #334155; margin-bottom: 6px; font-size: 82%%; letter-spacing: 0.5px; text-transform: uppercase;&amp;quot;&amp;gt;STATISTIK PERTANDINGAN&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
        &lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Ekspektasi Gol (xG)&amp;quot;, homeXG, awayXG, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Penguasaan Bola&amp;quot;, homePoss, awayPoss, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Total Tembakan&amp;quot;, homeShotsTotal, awayShotsTotal))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Akurat&amp;quot;, homeShotsOn, awayShotsOn, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Meleset&amp;quot;, homeShotsOff, awayShotsOff))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Diblok&amp;quot;, homeShotsBlocked, awayShotsBlocked))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Total Operan&amp;quot;, homePasses, awayPasses))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Akurasi Operan&amp;quot;, homePassAcc, awayPassAcc))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tendangan Sudut&amp;quot;, homeCorners, awayCorners))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Offside&amp;quot;, homeOffsides, awayOffsides))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Penyelamatan Kiper&amp;quot;, homeSaves, awaySaves))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tekel Berhasil&amp;quot;, homeTackles, awayTackles))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Lemparan Dalam&amp;quot;, homeThrowIns, awayThrowIns))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Pelanggaran&amp;quot;, homeFouls, awayFouls))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Kartu Disiplin&amp;quot;, homeCardsFormatted, awayCardsFormatted, true))&lt;br /&gt;
        &lt;br /&gt;
        table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if venue ~= &amp;quot;&amp;quot; or referee ~= &amp;quot;&amp;quot; or attendance ~= &amp;quot;&amp;quot; or weather ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;border-top: 1px solid #e2e8f0; padding: 6px 8px; font-size: 70%%; color: #64748b; background: #ffffff; text-align: center; line-height: 1.5;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        local details = {}&lt;br /&gt;
        if venue ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Stadion:&amp;lt;/b&amp;gt; &amp;quot; .. venue) end&lt;br /&gt;
        if referee ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Wasit:&amp;lt;/b&amp;gt; &amp;quot; .. referee) end&lt;br /&gt;
        if attendance ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Penonton:&amp;lt;/b&amp;gt; &amp;quot; .. attendance) end&lt;br /&gt;
        if weather ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Cuaca:&amp;lt;/b&amp;gt; &amp;quot; .. weather) end&lt;br /&gt;
        table.insert(html, table.concat(details, &amp;quot; | &amp;quot;))&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    return table.concat(html, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Match_result/doc&amp;diff=1467</id>
		<title>Templat:Match result/doc</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Match_result/doc&amp;diff=1467"/>
		<updated>2026-10-18T13:48:21Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: /* Fitur Otomatis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
Template &#039;&#039;&#039;{{tl|Match result}}&#039;&#039;&#039; digunakan untuk menampilkan kartu laporan detail pertandingan beserta statistik lengkap ala Sofascore / Opta.&lt;br /&gt;
&lt;br /&gt;
=== Sintaks Lengkap ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Match result&lt;br /&gt;
| laga_spesial       = EL CLÁSICO (HIGHLIGHT MATCH)&lt;br /&gt;
| kompetisi          = La Liga 2025–2026&lt;br /&gt;
| fase               = Pekan 32&lt;br /&gt;
| tanggal            = 15 April 2026&lt;br /&gt;
| tuan_rumah         = Real Madrid&lt;br /&gt;
| tamu               = FC Barcelona&lt;br /&gt;
| skor_home          = 1&lt;br /&gt;
| skor_away          = 2&lt;br /&gt;
| status             = FT&lt;br /&gt;
| gol_home           = Jude Bellingham 34&#039;&lt;br /&gt;
| gol_away           = Lamine Yamal 18&#039;&amp;lt;br /&amp;gt;Raphinha 67&#039;&lt;br /&gt;
| xg_home            = 1.45&lt;br /&gt;
| xg_away            = 2.10&lt;br /&gt;
| possession_home    = 44%&lt;br /&gt;
| possession_away    = 56%&lt;br /&gt;
| shots_total_home   = 11&lt;br /&gt;
| shots_total_away   = 16&lt;br /&gt;
| shots_on_home      = 4&lt;br /&gt;
| shots_on_away      = 7&lt;br /&gt;
| passes_home        = 420&lt;br /&gt;
| passes_away        = 580&lt;br /&gt;
| pass_acc_home      = 84%&lt;br /&gt;
| pass_acc_away      = 89%&lt;br /&gt;
| corners_home       = 4&lt;br /&gt;
| corners_away       = 6&lt;br /&gt;
| fouls_home         = 14&lt;br /&gt;
| fouls_away         = 11&lt;br /&gt;
| kartu_kuning_home  = 4&lt;br /&gt;
| kartu_kuning_away  = 2&lt;br /&gt;
| kartu_merah_home   = 1&lt;br /&gt;
| kartu_merah_away   = 0&lt;br /&gt;
| stadion            = Santiago Bernabéu, Madrid&lt;br /&gt;
| wasit              = José María Sánchez Martínez&lt;br /&gt;
| penonton           = 81.044&lt;br /&gt;
| cuaca              = Berawan, 18°C&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fitur Otomatis ===&lt;br /&gt;
* &#039;&#039;&#039;Ikon Disiplin Otomatis:&#039;&#039;&#039; Cukup masukkan angka di `kartu_kuning_home` atau `kartu_merah_away`, ikon K dan M akan diformat otomatis.&lt;br /&gt;
* &#039;&#039;&#039;Banner Laga Spesial:&#039;&#039;&#039; Parameter `laga_spesial` memicu header emas &amp;amp; navy khusus.&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Match_result/doc&amp;diff=1466</id>
		<title>Templat:Match result/doc</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Match_result/doc&amp;diff=1466"/>
		<updated>2026-10-18T13:45:43Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: Melindungi &amp;quot;Templat:Match result/doc&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
Template &#039;&#039;&#039;{{tl|Match result}}&#039;&#039;&#039; digunakan untuk menampilkan kartu laporan detail pertandingan beserta statistik lengkap ala Sofascore / Opta.&lt;br /&gt;
&lt;br /&gt;
=== Sintaks Lengkap ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Match result&lt;br /&gt;
| laga_spesial       = EL CLÁSICO (HIGHLIGHT MATCH)&lt;br /&gt;
| kompetisi          = La Liga 2025–2026&lt;br /&gt;
| fase               = Pekan 32&lt;br /&gt;
| tanggal            = 15 April 2026&lt;br /&gt;
| tuan_rumah         = Real Madrid&lt;br /&gt;
| tamu               = FC Barcelona&lt;br /&gt;
| skor_home          = 1&lt;br /&gt;
| skor_away          = 2&lt;br /&gt;
| status             = FT&lt;br /&gt;
| gol_home           = Jude Bellingham 34&#039;&lt;br /&gt;
| gol_away           = Lamine Yamal 18&#039;&amp;lt;br /&amp;gt;Raphinha 67&#039;&lt;br /&gt;
| xg_home            = 1.45&lt;br /&gt;
| xg_away            = 2.10&lt;br /&gt;
| possession_home    = 44%&lt;br /&gt;
| possession_away    = 56%&lt;br /&gt;
| shots_total_home   = 11&lt;br /&gt;
| shots_total_away   = 16&lt;br /&gt;
| shots_on_home      = 4&lt;br /&gt;
| shots_on_away      = 7&lt;br /&gt;
| passes_home        = 420&lt;br /&gt;
| passes_away        = 580&lt;br /&gt;
| pass_acc_home      = 84%&lt;br /&gt;
| pass_acc_away      = 89%&lt;br /&gt;
| corners_home       = 4&lt;br /&gt;
| corners_away       = 6&lt;br /&gt;
| fouls_home         = 14&lt;br /&gt;
| fouls_away         = 11&lt;br /&gt;
| kartu_kuning_home  = 4&lt;br /&gt;
| kartu_kuning_away  = 2&lt;br /&gt;
| kartu_merah_home   = 1&lt;br /&gt;
| kartu_merah_away   = 0&lt;br /&gt;
| stadion            = Santiago Bernabéu, Madrid&lt;br /&gt;
| wasit              = José María Sánchez Martínez&lt;br /&gt;
| penonton           = 81.044&lt;br /&gt;
| cuaca              = Berawan, 18°C&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fitur Otomatis ===&lt;br /&gt;
* &#039;&#039;&#039;Ikon Disiplin Otomatis:&#039;&#039;&#039; Cukup masukkan angka di `kartu_kuning_home` atau `kartu_merah_away`, ikon **K** dan **M** akan diformat otomatis.&lt;br /&gt;
* &#039;&#039;&#039;Banner Laga Spesial:&#039;&#039;&#039; Parameter `laga_spesial` memicu header emas &amp;amp; navy khusus.&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Match_result/doc&amp;diff=1465</id>
		<title>Templat:Match result/doc</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Match_result/doc&amp;diff=1465"/>
		<updated>2026-10-18T13:45:37Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: ←Membuat halaman berisi &amp;#039;{{Documentation subpage}} Template &amp;#039;&amp;#039;&amp;#039;{{tl|Match result}}&amp;#039;&amp;#039;&amp;#039; digunakan untuk menampilkan kartu laporan detail pertandingan beserta statistik lengkap ala Sofascore / Opta.  === Sintaks Lengkap === &amp;lt;pre&amp;gt; {{Match result | laga_spesial       = EL CLÁSICO (HIGHLIGHT MATCH) | kompetisi          = La Liga 2025–2026 | fase               = Pekan 32 | tanggal            = 15 April 2026 | tuan_rumah         = Real Madrid | tamu               = FC Barcelona | skor_home...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
Template &#039;&#039;&#039;{{tl|Match result}}&#039;&#039;&#039; digunakan untuk menampilkan kartu laporan detail pertandingan beserta statistik lengkap ala Sofascore / Opta.&lt;br /&gt;
&lt;br /&gt;
=== Sintaks Lengkap ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Match result&lt;br /&gt;
| laga_spesial       = EL CLÁSICO (HIGHLIGHT MATCH)&lt;br /&gt;
| kompetisi          = La Liga 2025–2026&lt;br /&gt;
| fase               = Pekan 32&lt;br /&gt;
| tanggal            = 15 April 2026&lt;br /&gt;
| tuan_rumah         = Real Madrid&lt;br /&gt;
| tamu               = FC Barcelona&lt;br /&gt;
| skor_home          = 1&lt;br /&gt;
| skor_away          = 2&lt;br /&gt;
| status             = FT&lt;br /&gt;
| gol_home           = Jude Bellingham 34&#039;&lt;br /&gt;
| gol_away           = Lamine Yamal 18&#039;&amp;lt;br /&amp;gt;Raphinha 67&#039;&lt;br /&gt;
| xg_home            = 1.45&lt;br /&gt;
| xg_away            = 2.10&lt;br /&gt;
| possession_home    = 44%&lt;br /&gt;
| possession_away    = 56%&lt;br /&gt;
| shots_total_home   = 11&lt;br /&gt;
| shots_total_away   = 16&lt;br /&gt;
| shots_on_home      = 4&lt;br /&gt;
| shots_on_away      = 7&lt;br /&gt;
| passes_home        = 420&lt;br /&gt;
| passes_away        = 580&lt;br /&gt;
| pass_acc_home      = 84%&lt;br /&gt;
| pass_acc_away      = 89%&lt;br /&gt;
| corners_home       = 4&lt;br /&gt;
| corners_away       = 6&lt;br /&gt;
| fouls_home         = 14&lt;br /&gt;
| fouls_away         = 11&lt;br /&gt;
| kartu_kuning_home  = 4&lt;br /&gt;
| kartu_kuning_away  = 2&lt;br /&gt;
| kartu_merah_home   = 1&lt;br /&gt;
| kartu_merah_away   = 0&lt;br /&gt;
| stadion            = Santiago Bernabéu, Madrid&lt;br /&gt;
| wasit              = José María Sánchez Martínez&lt;br /&gt;
| penonton           = 81.044&lt;br /&gt;
| cuaca              = Berawan, 18°C&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Fitur Otomatis ===&lt;br /&gt;
* &#039;&#039;&#039;Ikon Disiplin Otomatis:&#039;&#039;&#039; Cukup masukkan angka di `kartu_kuning_home` atau `kartu_merah_away`, ikon **K** dan **M** akan diformat otomatis.&lt;br /&gt;
* &#039;&#039;&#039;Banner Laga Spesial:&#039;&#039;&#039; Parameter `laga_spesial` memicu header emas &amp;amp; navy khusus.&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Match_result&amp;diff=1464</id>
		<title>Templat:Match result</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Match_result&amp;diff=1464"/>
		<updated>2026-10-18T13:45:11Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: /* */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:MatchSystem|detail}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Match_row/doc&amp;diff=1463</id>
		<title>Templat:Match row/doc</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Match_row/doc&amp;diff=1463"/>
		<updated>2026-10-18T13:44:38Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: Melindungi &amp;quot;Templat:Match row/doc&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
Template &#039;&#039;&#039;{{tl|Match row}}&#039;&#039;&#039; digunakan di dalam {{tl|Match list}} untuk menampilkan satu baris pertandingan (baik yang sudah selesai maupun mendatang).&lt;br /&gt;
&lt;br /&gt;
=== Sintaks Singkat (Posisional) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Match row|Tanggal|Nama Kompetisi|Tim Tuan Rumah|Skor atau Jam|Tim Tamu|Hasil M/S/K}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Contoh Penggunaan ===&lt;br /&gt;
1. &#039;&#039;&#039;Laga Selesai (Menang):&#039;&#039;&#039;&lt;br /&gt;
   &amp;lt;pre&amp;gt;{{Match row|15 Apr|La Liga|Real Madrid|1 - 2|FC Barcelona|M}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
2. &#039;&#039;&#039;Laga Selesai (Seri):&#039;&#039;&#039;&lt;br /&gt;
   &amp;lt;pre&amp;gt;{{Match row|28 Apr|UCL|Inter Milan|3 - 3|FC Barcelona|S}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
3. &#039;&#039;&#039;Laga Selesai (Kalah):&#039;&#039;&#039;&lt;br /&gt;
   &amp;lt;pre&amp;gt;{{Match row|02 Mei|La Liga|FC Barcelona|0 - 1|Girona|K}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
4. &#039;&#039;&#039;Laga Mendatang:&#039;&#039;&#039;&lt;br /&gt;
   &amp;lt;pre&amp;gt;{{Match row|11 Mei|La Liga|Villarreal CF|02:00 WIB|FC Barcelona|VS}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keterangan Parameter ===&lt;br /&gt;
* &#039;&#039;&#039;Parameter 1&#039;&#039;&#039; (Tanggal): Contoh `15 Apr`&lt;br /&gt;
* &#039;&#039;&#039;Parameter 2&#039;&#039;&#039; (Kompetisi): Contoh `La Liga`, `UCL`, `Copa del Rey`&lt;br /&gt;
* &#039;&#039;&#039;Parameter 3&#039;&#039;&#039; (Tuan Rumah): Nama klub kandang&lt;br /&gt;
* &#039;&#039;&#039;Parameter 4&#039;&#039;&#039; (Skor / Jam): &lt;br /&gt;
** Isi format `1 - 2` untuk laga selesai.&lt;br /&gt;
** Isi format `22:00 WIB` untuk jadwal mendatang. Kotak tengah otomatis menjadi &#039;VS&#039; dan jam tampil di bawah tanggal.&lt;br /&gt;
* &#039;&#039;&#039;Parameter 5&#039;&#039;&#039; (Tamu): Nama klub tandang&lt;br /&gt;
* &#039;&#039;&#039;Parameter 6&#039;&#039;&#039; (Hasil):&lt;br /&gt;
** `M` = Badge Hijau (Menang)&lt;br /&gt;
** `S` = Badge Abu-abu (Seri)&lt;br /&gt;
** `K` = Badge Merah (Kalah)&lt;br /&gt;
** `VS` atau kosong = Tanpa badge (Jadwal mendatang)&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Match_row/doc&amp;diff=1462</id>
		<title>Templat:Match row/doc</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Match_row/doc&amp;diff=1462"/>
		<updated>2026-10-18T13:44:28Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: ←Membuat halaman berisi &amp;#039;{{Documentation subpage}} Template &amp;#039;&amp;#039;&amp;#039;{{tl|Match row}}&amp;#039;&amp;#039;&amp;#039; digunakan di dalam {{tl|Match list}} untuk menampilkan satu baris pertandingan (baik yang sudah selesai maupun mendatang).  === Sintaks Singkat (Posisional) === &amp;lt;pre&amp;gt; {{Match row|Tanggal|Nama Kompetisi|Tim Tuan Rumah|Skor atau Jam|Tim Tamu|Hasil M/S/K}} &amp;lt;/pre&amp;gt;  === Contoh Penggunaan === 1. &amp;#039;&amp;#039;&amp;#039;Laga Selesai (Menang):&amp;#039;&amp;#039;&amp;#039;    &amp;lt;pre&amp;gt;{{Match row|15 Apr|La Liga|Real Madrid|1 - 2|FC Barcelona|M}}&amp;lt;/pre&amp;gt; 2. &amp;#039;&amp;#039;&amp;#039;Laga Se...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
Template &#039;&#039;&#039;{{tl|Match row}}&#039;&#039;&#039; digunakan di dalam {{tl|Match list}} untuk menampilkan satu baris pertandingan (baik yang sudah selesai maupun mendatang).&lt;br /&gt;
&lt;br /&gt;
=== Sintaks Singkat (Posisional) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Match row|Tanggal|Nama Kompetisi|Tim Tuan Rumah|Skor atau Jam|Tim Tamu|Hasil M/S/K}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Contoh Penggunaan ===&lt;br /&gt;
1. &#039;&#039;&#039;Laga Selesai (Menang):&#039;&#039;&#039;&lt;br /&gt;
   &amp;lt;pre&amp;gt;{{Match row|15 Apr|La Liga|Real Madrid|1 - 2|FC Barcelona|M}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
2. &#039;&#039;&#039;Laga Selesai (Seri):&#039;&#039;&#039;&lt;br /&gt;
   &amp;lt;pre&amp;gt;{{Match row|28 Apr|UCL|Inter Milan|3 - 3|FC Barcelona|S}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
3. &#039;&#039;&#039;Laga Selesai (Kalah):&#039;&#039;&#039;&lt;br /&gt;
   &amp;lt;pre&amp;gt;{{Match row|02 Mei|La Liga|FC Barcelona|0 - 1|Girona|K}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
4. &#039;&#039;&#039;Laga Mendatang:&#039;&#039;&#039;&lt;br /&gt;
   &amp;lt;pre&amp;gt;{{Match row|11 Mei|La Liga|Villarreal CF|02:00 WIB|FC Barcelona|VS}}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keterangan Parameter ===&lt;br /&gt;
* &#039;&#039;&#039;Parameter 1&#039;&#039;&#039; (Tanggal): Contoh `15 Apr`&lt;br /&gt;
* &#039;&#039;&#039;Parameter 2&#039;&#039;&#039; (Kompetisi): Contoh `La Liga`, `UCL`, `Copa del Rey`&lt;br /&gt;
* &#039;&#039;&#039;Parameter 3&#039;&#039;&#039; (Tuan Rumah): Nama klub kandang&lt;br /&gt;
* &#039;&#039;&#039;Parameter 4&#039;&#039;&#039; (Skor / Jam): &lt;br /&gt;
** Isi format `1 - 2` untuk laga selesai.&lt;br /&gt;
** Isi format `22:00 WIB` untuk jadwal mendatang. Kotak tengah otomatis menjadi &#039;VS&#039; dan jam tampil di bawah tanggal.&lt;br /&gt;
* &#039;&#039;&#039;Parameter 5&#039;&#039;&#039; (Tamu): Nama klub tandang&lt;br /&gt;
* &#039;&#039;&#039;Parameter 6&#039;&#039;&#039; (Hasil):&lt;br /&gt;
** `M` = Badge Hijau (Menang)&lt;br /&gt;
** `S` = Badge Abu-abu (Seri)&lt;br /&gt;
** `K` = Badge Merah (Kalah)&lt;br /&gt;
** `VS` atau kosong = Tanpa badge (Jadwal mendatang)&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Match_row&amp;diff=1461</id>
		<title>Templat:Match row</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Match_row&amp;diff=1461"/>
		<updated>2026-10-18T13:44:08Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: /* */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:MatchSystem|row}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Match_list/doc&amp;diff=1460</id>
		<title>Templat:Match list/doc</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Match_list/doc&amp;diff=1460"/>
		<updated>2026-10-18T13:42:07Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: Melindungi &amp;quot;Templat:Match list/doc&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
Template &#039;&#039;&#039;{{tl|Match list}}&#039;&#039;&#039; digunakan sebagai wadah/container utama untuk menampilkan daftar rekap hasil pertandingan dan jadwal mendatang klub.&lt;br /&gt;
&lt;br /&gt;
=== Sintaks ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Match list&lt;br /&gt;
| judul = PERTANDINGAN &amp;amp; JADWAL TERBARU&lt;br /&gt;
| isi   = &lt;br /&gt;
{{Match row|15 Apr|La Liga|Real Madrid|1 - 2|FC Barcelona|M}}&lt;br /&gt;
{{Match row|04 Mei|La Liga|FC Barcelona|22:00 WIB|Real Sociedad|VS}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Parameter ===&lt;br /&gt;
* &#039;&#039;&#039;judul&#039;&#039;&#039; (opsional): Judul header box. Default: &#039;&#039;PERTANDINGAN &amp;amp; JADWAL TERBARU&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;isi&#039;&#039;&#039; (wajib): Baris-baris pertandingan menggunakan {{tl|Match row}}.&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Match_list/doc&amp;diff=1459</id>
		<title>Templat:Match list/doc</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Match_list/doc&amp;diff=1459"/>
		<updated>2026-10-18T13:42:00Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: ←Membuat halaman berisi &amp;#039;{{Documentation subpage}} Template &amp;#039;&amp;#039;&amp;#039;{{tl|Match list}}&amp;#039;&amp;#039;&amp;#039; digunakan sebagai wadah/container utama untuk menampilkan daftar rekap hasil pertandingan dan jadwal mendatang klub.  === Sintaks === &amp;lt;pre&amp;gt; {{Match list | judul = PERTANDINGAN &amp;amp; JADWAL TERBARU | isi   =  {{Match row|15 Apr|La Liga|Real Madrid|1 - 2|FC Barcelona|M}} {{Match row|04 Mei|La Liga|FC Barcelona|22:00 WIB|Real Sociedad|VS}} }} &amp;lt;/pre&amp;gt;  === Parameter === * &amp;#039;&amp;#039;&amp;#039;judul&amp;#039;&amp;#039;&amp;#039; (opsional): Judul header box....&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
Template &#039;&#039;&#039;{{tl|Match list}}&#039;&#039;&#039; digunakan sebagai wadah/container utama untuk menampilkan daftar rekap hasil pertandingan dan jadwal mendatang klub.&lt;br /&gt;
&lt;br /&gt;
=== Sintaks ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Match list&lt;br /&gt;
| judul = PERTANDINGAN &amp;amp; JADWAL TERBARU&lt;br /&gt;
| isi   = &lt;br /&gt;
{{Match row|15 Apr|La Liga|Real Madrid|1 - 2|FC Barcelona|M}}&lt;br /&gt;
{{Match row|04 Mei|La Liga|FC Barcelona|22:00 WIB|Real Sociedad|VS}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Parameter ===&lt;br /&gt;
* &#039;&#039;&#039;judul&#039;&#039;&#039; (opsional): Judul header box. Default: &#039;&#039;PERTANDINGAN &amp;amp; JADWAL TERBARU&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;isi&#039;&#039;&#039; (wajib): Baris-baris pertandingan menggunakan {{tl|Match row}}.&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Match_list&amp;diff=1458</id>
		<title>Templat:Match list</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Match_list&amp;diff=1458"/>
		<updated>2026-10-18T13:41:34Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: /* */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:MatchSystem|container|judul={{{judul|PERTANDINGAN &amp;amp; JADWAL TERBARU}}}|isi={{{isi|{{{1|}}}}}}}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Modul:MatchSystem&amp;diff=1457</id>
		<title>Modul:MatchSystem</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Modul:MatchSystem&amp;diff=1457"/>
		<updated>2026-10-18T13:41:00Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
-- 1. FUNGSI BARIS PERTANDINGAN (Match row)&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
function p.row(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    local date = args.tanggal or args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
    local comp = args.kompetisi or args[2] or &amp;quot;&amp;quot;&lt;br /&gt;
    local home = args.tuan_rumah or args[3] or &amp;quot;&amp;quot;&lt;br /&gt;
    local scoreOrTime = args.skor_atau_waktu or args[4] or &amp;quot;vs&amp;quot;&lt;br /&gt;
    local away = args.tamu or args[5] or &amp;quot;&amp;quot;&lt;br /&gt;
    local resultType = string.lower(args.hasil or args[6] or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    -- Cek apakah input berupa skor (menggunakan tanda hubung &#039;-&#039;)&lt;br /&gt;
    local isScore = scoreOrTime:find(&amp;quot;%d+%s*[-]%s*%d+&amp;quot;) ~= nil&lt;br /&gt;
    &lt;br /&gt;
    local centerText = &amp;quot;&amp;quot;&lt;br /&gt;
    local timeSubtext = &amp;quot;&amp;quot;&lt;br /&gt;
    local compSubtext = &amp;quot;&amp;quot;&lt;br /&gt;
    local badgeHtml = &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- Subtext Nama Kompetisi (jika diisi)&lt;br /&gt;
    if comp ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        compSubtext = string.format(&#039;&amp;lt;div style=&amp;quot;font-size: 75%%; color: #475569; font-weight: 700; text-transform: uppercase; margin-top: 1px;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039;, comp)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Logika Badge Hasil (M, S, K di ujung kanan)&lt;br /&gt;
    if resultType == &amp;quot;w&amp;quot; or resultType == &amp;quot;win&amp;quot; or resultType == &amp;quot;menang&amp;quot; or resultType == &amp;quot;m&amp;quot; then&lt;br /&gt;
        badgeHtml = &#039;&amp;lt;span style=&amp;quot;background: #22c55e; color: #ffffff; padding: 2px 5px; border-radius: 3px; font-weight: 800; font-size: 80%;&amp;quot;&amp;gt;M&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    elseif resultType == &amp;quot;l&amp;quot; or resultType == &amp;quot;loss&amp;quot; or resultType == &amp;quot;kalah&amp;quot; or resultType == &amp;quot;k&amp;quot; then&lt;br /&gt;
        badgeHtml = &#039;&amp;lt;span style=&amp;quot;background: #ef4444; color: #ffffff; padding: 2px 5px; border-radius: 3px; font-weight: 800; font-size: 80%;&amp;quot;&amp;gt;K&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    elseif resultType == &amp;quot;d&amp;quot; or resultType == &amp;quot;draw&amp;quot; or resultType == &amp;quot;seri&amp;quot; or resultType == &amp;quot;s&amp;quot; then&lt;br /&gt;
        badgeHtml = &#039;&amp;lt;span style=&amp;quot;background: #64748b; color: #ffffff; padding: 2px 5px; border-radius: 3px; font-weight: 800; font-size: 80%;&amp;quot;&amp;gt;S&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Logika Pemisahan Skor vs Jam/Waktu Pertandingan&lt;br /&gt;
    if isScore then&lt;br /&gt;
        centerText = scoreOrTime&lt;br /&gt;
    else&lt;br /&gt;
        centerText = &amp;quot;VS&amp;quot;&lt;br /&gt;
        if scoreOrTime ~= &amp;quot;vs&amp;quot; and scoreOrTime ~= &amp;quot;VS&amp;quot; and scoreOrTime ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            timeSubtext = string.format(&#039;&amp;lt;div style=&amp;quot;font-size: 80%%; color: #2563eb; font-weight: 600; margin-top: 1px;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039;, scoreOrTime)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return string.format(&#039;&amp;lt;tr style=&amp;quot;border-bottom: 1px solid #f1f5f9; font-size: 78%%; text-align: center;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; color: #64748b; width: 22%%; vertical-align: middle;&amp;quot;&amp;gt;&amp;lt;div style=&amp;quot;font-weight:600;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;%s%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; font-weight: 600; color: #1e293b; width: 28%%; text-align: right; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; width: 20%%; vertical-align: middle;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 800; color: #0f172a; display: inline-block; padding: 2px 6px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 4px; text-transform: uppercase;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; font-weight: 600; color: #1e293b; width: 28%%; text-align: left; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; width: 2%%; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;/tr&amp;gt;&#039;, date, compSubtext, timeSubtext, home, centerText, away, badgeHtml)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
-- 2. FUNGSI PEMBUNGKUS DAFTAR LAGA (Match list)&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
function p.container(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local title = args.judul or args.title or &amp;quot;PERTANDINGAN &amp;amp; JADWAL TERBARU&amp;quot;&lt;br /&gt;
    local content = args.isi or args.content or args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    return string.format(&#039;&amp;lt;div style=&amp;quot;border: 1px solid #cbd5e1; border-radius: 8px; background: #ffffff; overflow: hidden; margin: 6px 0; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;background: #0f172a; color: #f8fafc; padding: 6px 8px; font-size: 80%%; font-weight: 700; text-align: center; letter-spacing: 0.5px; text-transform: uppercase;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;table style=&amp;quot;width: 100%%; border-collapse: collapse; background: #ffffff;&amp;quot;&amp;gt;%s&amp;lt;/table&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;, title, content)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
-- 3. FUNGSI LAPORAN DETAIL MATCH (Match result / Match Center)&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
function p.detail(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    local derby = args.laga_spesial or args.derby or &amp;quot;&amp;quot;&lt;br /&gt;
    local comp = args.kompetisi or args.competition or &amp;quot;&amp;quot;&lt;br /&gt;
    local phase = args.fase or args.babak or &amp;quot;&amp;quot;&lt;br /&gt;
    local date = args.tanggal or args.date or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local venue = args.stadion or args.venue or &amp;quot;&amp;quot;&lt;br /&gt;
    local referee = args.wasit or args.referee or &amp;quot;&amp;quot;&lt;br /&gt;
    local attendance = args.penonton or args.attendance or &amp;quot;&amp;quot;&lt;br /&gt;
    local weather = args.cuaca or args.weather or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local homeTeam = args.tuan_rumah or args.home or &amp;quot;Tuan Rumah&amp;quot;&lt;br /&gt;
    local awayTeam = args.tamu or args.away or &amp;quot;Tamu&amp;quot;&lt;br /&gt;
    local homeScore = args.skor_home or args.home_score or &amp;quot;0&amp;quot;&lt;br /&gt;
    local awayScore = args.skor_away or args.away_score or &amp;quot;0&amp;quot;&lt;br /&gt;
    local status = args.status or &amp;quot;FT&amp;quot;&lt;br /&gt;
    local aggregate = args.agregat or args.aggregate or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local homeGoals = args.gol_home or args.home_goals or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayGoals = args.gol_away or args.away_goals or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local homeXG = args.xg_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayXG = args.xg_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePoss = args.possession_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPoss = args.possession_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsTotal = args.shots_total_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsTotal = args.shots_total_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsOn = args.shots_on_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsOn = args.shots_on_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsOff = args.shots_off_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsOff = args.shots_off_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsBlocked = args.shots_blocked_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsBlocked = args.shots_blocked_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePasses = args.passes_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPasses = args.passes_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePassAcc = args.pass_acc_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPassAcc = args.pass_acc_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeCorners = args.corners_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayCorners = args.corners_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeOffsides = args.offsides_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayOffsides = args.offsides_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeSaves = args.saves_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awaySaves = args.saves_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeFouls = args.fouls_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayFouls = args.fouls_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeTackles = args.tackles_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayTackles = args.tackles_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeThrowIns = args.throwins_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayThrowIns = args.throwins_away or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local homeYellow = args.kartu_kuning_home or args.yellow_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayYellow = args.kartu_kuning_away or args.yellow_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeRed = args.kartu_merah_home or args.red_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayRed = args.kartu_merah_away or args.red_away or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local hScoreNum = tonumber(homeScore) or 0&lt;br /&gt;
    local aScoreNum = tonumber(awayScore) or 0&lt;br /&gt;
    local statusBg = &amp;quot;#6c757d&amp;quot;&lt;br /&gt;
    if hScoreNum &amp;gt; aScoreNum then&lt;br /&gt;
        statusBg = &amp;quot;#16a34a&amp;quot;&lt;br /&gt;
    elseif hScoreNum &amp;lt; aScoreNum then&lt;br /&gt;
        statusBg = &amp;quot;#dc2626&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local html = {}&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;div style=&amp;quot;border: 1px solid #cbd5e1; border-radius: 10px; background: #ffffff; overflow: hidden; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif; margin: 8px 0; box-shadow: 0 2px 6px rgba(0,0,0,0.08);&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    &lt;br /&gt;
    if derby ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, string.format(&#039;&amp;lt;div style=&amp;quot;background: linear-gradient(135deg, #0f172a 0%%, #1e1b4b 50%%, #312e81 100%%); color: #fbbf24; padding: 6px 8px; font-size: 85%%; text-align: center; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; border-bottom: 2px solid #fbbf24;&amp;quot;&amp;gt;🏆 %s 🏆&amp;lt;/div&amp;gt;&#039;, derby))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if comp ~= &amp;quot;&amp;quot; or date ~= &amp;quot;&amp;quot; or phase ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        local headerText = comp&lt;br /&gt;
        if phase ~= &amp;quot;&amp;quot; then headerText = (headerText ~= &amp;quot;&amp;quot; and (headerText .. &amp;quot; • &amp;quot;) or &amp;quot;&amp;quot;) .. phase end&lt;br /&gt;
        if date ~= &amp;quot;&amp;quot; then headerText = (headerText ~= &amp;quot;&amp;quot; and (headerText .. &amp;quot; • &amp;quot;) or &amp;quot;&amp;quot;) .. date end&lt;br /&gt;
        table.insert(html, string.format(&#039;&amp;lt;div style=&amp;quot;background: #1e293b; color: #cbd5e1; padding: 4px 8px; font-size: 78%%; text-align: center; font-weight: 600;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039;, headerText))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;table style=&amp;quot;width: 100%%; border-collapse: collapse; text-align: center; margin: 10px 0; background: transparent;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    table.insert(html, string.format([[&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 38%%; font-weight: 800; font-size: 92%%; color: #0f172a; padding: 2px 6px; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 24%%; padding: 2px; vertical-align: middle;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;span style=&amp;quot;background: %s; color: #ffffff; padding: 4px 10px; border-radius: 6px; font-weight: 900; font-size: 125%%; display: inline-block; letter-spacing: 1.5px; box-shadow: 0 2px 4px rgba(0,0,0,0.15);&amp;quot;&amp;gt;%s - %s&amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;font-size: 70%%; color: #64748b; margin-top: 4px; font-weight: 800; text-transform: uppercase;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&lt;br /&gt;
                %s&lt;br /&gt;
            &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 38%%; font-weight: 800; font-size: 92%%; color: #0f172a; padding: 2px 6px; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    ]], homeTeam, statusBg, homeScore, awayScore, status, (aggregate ~= &amp;quot;&amp;quot; and string.format(&#039;&amp;lt;div style=&amp;quot;font-size: 68%%; color: #475569; margin-top: 2px;&amp;quot;&amp;gt;(Agg: %s)&amp;lt;/div&amp;gt;&#039;, aggregate) or &amp;quot;&amp;quot;), awayTeam))&lt;br /&gt;
    &lt;br /&gt;
    if homeGoals ~= &amp;quot;&amp;quot; or awayGoals ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, string.format([[&lt;br /&gt;
            &amp;lt;tr style=&amp;quot;font-size: 75%%; color: #334155; vertical-align: top;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 6px; text-align: right; line-height: 1.4;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 0; font-size: 85%%;&amp;quot;&amp;gt;⚽&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 6px; text-align: left; line-height: 1.4;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        ]], homeGoals, awayGoals))&lt;br /&gt;
    end&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;/table&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    local function makeStatRow(label, hVal, aVal, isBold)&lt;br /&gt;
        if hVal ~= &amp;quot;&amp;quot; or aVal ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            local weight = isBold and &amp;quot;800&amp;quot; or &amp;quot;700&amp;quot;&lt;br /&gt;
            return string.format(&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;display: flex; justify-content: space-between; align-items: center; padding: 3px 0; border-bottom: 1px solid #f1f5f9;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;font-weight: %s; width: 30%%; text-align: right; color: #0f172a;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;color: #64748b; width: 40%%; text-align: center; font-size: 88%%;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;font-weight: %s; width: 30%%; text-align: left; color: #0f172a;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;/div&amp;gt;&#039;, &lt;br /&gt;
                weight, hVal ~= &amp;quot;&amp;quot; and hVal or &amp;quot;0&amp;quot;, label, weight, aVal ~= &amp;quot;&amp;quot; and aVal or &amp;quot;0&amp;quot;&lt;br /&gt;
            )&lt;br /&gt;
        end&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local function formatCards(yellow, red)&lt;br /&gt;
        local parts = {}&lt;br /&gt;
        if yellow ~= &amp;quot;&amp;quot; and yellow ~= &amp;quot;0&amp;quot; then&lt;br /&gt;
            table.insert(parts, string.format(&#039;%s &amp;lt;span style=&amp;quot;background: #eab308; color: #fff; padding: 1px 4px; border-radius: 3px; font-size: 75%%; font-weight: bold;&amp;quot;&amp;gt;K&amp;lt;/span&amp;gt;&#039;, yellow))&lt;br /&gt;
        end&lt;br /&gt;
        if red ~= &amp;quot;&amp;quot; and red ~= &amp;quot;0&amp;quot; then&lt;br /&gt;
            table.insert(parts, string.format(&#039;%s &amp;lt;span style=&amp;quot;background: #ef4444; color: #fff; padding: 1px 4px; border-radius: 3px; font-size: 75%%; font-weight: bold;&amp;quot;&amp;gt;M&amp;lt;/span&amp;gt;&#039;, red))&lt;br /&gt;
        end&lt;br /&gt;
        if #parts == 0 then return &amp;quot;&amp;quot; end&lt;br /&gt;
        return table.concat(parts, &amp;quot; &amp;amp;nbsp;&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local homeCardsFormatted = formatCards(homeYellow, homeRed)&lt;br /&gt;
    local awayCardsFormatted = formatCards(awayYellow, awayRed)&lt;br /&gt;
&lt;br /&gt;
    local hasStats = homePoss ~= &amp;quot;&amp;quot; or homeShotsOn ~= &amp;quot;&amp;quot; or homeXG ~= &amp;quot;&amp;quot; or homeCorners ~= &amp;quot;&amp;quot; or homeFouls ~= &amp;quot;&amp;quot; or homeCardsFormatted ~= &amp;quot;&amp;quot; or homePasses ~= &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    if hasStats then&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;border-top: 1px solid #e2e8f0; padding: 6px 10px; font-size: 75%%; background: #f8fafc;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;text-align: center; font-weight: 800; color: #334155; margin-bottom: 6px; font-size: 82%%; letter-spacing: 0.5px; text-transform: uppercase;&amp;quot;&amp;gt;STATISTIK PERTANDINGAN&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
        &lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Ekspektasi Gol (xG)&amp;quot;, homeXG, awayXG, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Penguasaan Bola&amp;quot;, homePoss, awayPoss, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Total Tembakan&amp;quot;, homeShotsTotal, awayShotsTotal))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Akurat&amp;quot;, homeShotsOn, awayShotsOn, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Meleset&amp;quot;, homeShotsOff, awayShotsOff))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Diblok&amp;quot;, homeShotsBlocked, awayShotsBlocked))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Total Operan&amp;quot;, homePasses, awayPasses))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Akurasi Operan&amp;quot;, homePassAcc, awayPassAcc))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tendangan Sudut&amp;quot;, homeCorners, awayCorners))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Offside&amp;quot;, homeOffsides, awayOffsides))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Penyelamatan Kiper&amp;quot;, homeSaves, awaySaves))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tekel Berhasil&amp;quot;, homeTackles, awayTackles))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Lemparan Dalam&amp;quot;, homeThrowIns, awayThrowIns))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Pelanggaran&amp;quot;, homeFouls, awayFouls))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Kartu Disiplin&amp;quot;, homeCardsFormatted, awayCardsFormatted, true))&lt;br /&gt;
        &lt;br /&gt;
        table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if venue ~= &amp;quot;&amp;quot; or referee ~= &amp;quot;&amp;quot; or attendance ~= &amp;quot;&amp;quot; or weather ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;border-top: 1px solid #e2e8f0; padding: 6px 8px; font-size: 70%%; color: #64748b; background: #ffffff; text-align: center; line-height: 1.5;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        local details = {}&lt;br /&gt;
        if venue ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Stadion:&amp;lt;/b&amp;gt; &amp;quot; .. venue) end&lt;br /&gt;
        if referee ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Wasit:&amp;lt;/b&amp;gt; &amp;quot; .. referee) end&lt;br /&gt;
        if attendance ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Penonton:&amp;lt;/b&amp;gt; &amp;quot; .. attendance) end&lt;br /&gt;
        if weather ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Cuaca:&amp;lt;/b&amp;gt; &amp;quot; .. weather) end&lt;br /&gt;
        table.insert(html, table.concat(details, &amp;quot; | &amp;quot;))&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    return table.concat(html, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Modul:MatchSystem&amp;diff=1456</id>
		<title>Modul:MatchSystem</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Modul:MatchSystem&amp;diff=1456"/>
		<updated>2026-10-18T13:36:01Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
-- 1. FUNGSI BARIS PERTANDINGAN (Match row)&lt;br /&gt;
--    Menampilkan baris ringkas untuk hasil laga atau jadwal mendatang&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
function p.row(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    local date = args.tanggal or args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
    local comp = args.kompetisi or args[2] or &amp;quot;&amp;quot;&lt;br /&gt;
    local home = args.tuan_rumah or args[3] or &amp;quot;&amp;quot;&lt;br /&gt;
    local scoreOrTime = args.skor_atau_waktu or args[4] or &amp;quot;vs&amp;quot;&lt;br /&gt;
    local away = args.tamu or args[5] or &amp;quot;&amp;quot;&lt;br /&gt;
    local resultType = string.lower(args.hasil or args[6] or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    -- Cek apakah input berupa skor (wajib menggunakan tanda hubung &#039;-&#039;)&lt;br /&gt;
    local isScore = scoreOrTime:find(&amp;quot;%d+%s*[-]%s*%d+&amp;quot;) ~= nil&lt;br /&gt;
    &lt;br /&gt;
    local centerText = &amp;quot;&amp;quot;&lt;br /&gt;
    local timeSubtext = &amp;quot;&amp;quot;&lt;br /&gt;
    local badgeHtml = &amp;quot;&amp;quot; -- Default kosong untuk laga mendatang (VS kanan dihapus)&lt;br /&gt;
&lt;br /&gt;
    -- Logika Badge Hasil (Hanya M, S, K yang muncul badge di ujung kanan)&lt;br /&gt;
    if resultType == &amp;quot;w&amp;quot; or resultType == &amp;quot;win&amp;quot; or resultType == &amp;quot;menang&amp;quot; or resultType == &amp;quot;m&amp;quot; then&lt;br /&gt;
        badgeHtml = &#039;&amp;lt;span style=&amp;quot;background: #22c55e; color: #ffffff; padding: 2px 5px; border-radius: 3px; font-weight: 800; font-size: 80%;&amp;quot;&amp;gt;M&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    elseif resultType == &amp;quot;l&amp;quot; or resultType == &amp;quot;loss&amp;quot; or resultType == &amp;quot;kalah&amp;quot; or resultType == &amp;quot;k&amp;quot; then&lt;br /&gt;
        badgeHtml = &#039;&amp;lt;span style=&amp;quot;background: #ef4444; color: #ffffff; padding: 2px 5px; border-radius: 3px; font-weight: 800; font-size: 80%;&amp;quot;&amp;gt;K&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    elseif resultType == &amp;quot;d&amp;quot; or resultType == &amp;quot;draw&amp;quot; or resultType == &amp;quot;seri&amp;quot; or resultType == &amp;quot;s&amp;quot; then&lt;br /&gt;
        badgeHtml = &#039;&amp;lt;span style=&amp;quot;background: #64748b; color: #ffffff; padding: 2px 5px; border-radius: 3px; font-weight: 800; font-size: 80%;&amp;quot;&amp;gt;S&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Logika Pemisahan Skor vs Jam/Waktu Pertandingan&lt;br /&gt;
    if isScore then&lt;br /&gt;
        centerText = scoreOrTime&lt;br /&gt;
    else&lt;br /&gt;
        -- Jika diisi jam (misal 22:00 WIB), kotak tengah berisi &#039;VS&#039;, jam di bawah tanggal&lt;br /&gt;
        centerText = &amp;quot;VS&amp;quot;&lt;br /&gt;
        if scoreOrTime ~= &amp;quot;vs&amp;quot; and scoreOrTime ~= &amp;quot;VS&amp;quot; and scoreOrTime ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            timeSubtext = string.format(&#039;&amp;lt;div style=&amp;quot;font-size: 80%%; color: #2563eb; font-weight: 600; margin-top: 1px;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039;, scoreOrTime)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return string.format(&#039;&amp;lt;tr style=&amp;quot;border-bottom: 1px solid #f1f5f9; font-size: 78%%; text-align: center;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; color: #64748b; width: 20%%; vertical-align: middle;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;%s&amp;lt;/div&amp;gt;%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; font-weight: 600; color: #1e293b; width: 29%%; text-align: right; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; width: 22%%; vertical-align: middle;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 800; color: #0f172a; display: inline-block; padding: 2px 6px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 4px; text-transform: uppercase;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; font-weight: 600; color: #1e293b; width: 29%%; text-align: left; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; width: 10%%; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;/tr&amp;gt;&#039;, date, timeSubtext, home, centerText, away, badgeHtml)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
-- 2. FUNGSI PEMBUNGKUS DAFTAR LAGA (Match list)&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
function p.container(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local title = args.judul or args.title or &amp;quot;PERTANDINGAN &amp;amp; JADWAL TERBARU&amp;quot;&lt;br /&gt;
    local content = args.isi or args.content or args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    return string.format(&#039;&amp;lt;div style=&amp;quot;border: 1px solid #cbd5e1; border-radius: 8px; background: #ffffff; overflow: hidden; margin: 6px 0; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;background: #0f172a; color: #f8fafc; padding: 6px 8px; font-size: 80%%; font-weight: 700; text-align: center; letter-spacing: 0.5px; text-transform: uppercase;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;table style=&amp;quot;width: 100%%; border-collapse: collapse; background: #ffffff;&amp;quot;&amp;gt;%s&amp;lt;/table&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;, title, content)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
-- 3. FUNGSI LAPORAN DETAIL MATCH (Match result / Match Center)&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
function p.detail(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    local derby = args.laga_spesial or args.derby or &amp;quot;&amp;quot;&lt;br /&gt;
    local comp = args.kompetisi or args.competition or &amp;quot;&amp;quot;&lt;br /&gt;
    local phase = args.fase or args.babak or &amp;quot;&amp;quot;&lt;br /&gt;
    local date = args.tanggal or args.date or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local venue = args.stadion or args.venue or &amp;quot;&amp;quot;&lt;br /&gt;
    local referee = args.wasit or args.referee or &amp;quot;&amp;quot;&lt;br /&gt;
    local attendance = args.penonton or args.attendance or &amp;quot;&amp;quot;&lt;br /&gt;
    local weather = args.cuaca or args.weather or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local homeTeam = args.tuan_rumah or args.home or &amp;quot;Tuan Rumah&amp;quot;&lt;br /&gt;
    local awayTeam = args.tamu or args.away or &amp;quot;Tamu&amp;quot;&lt;br /&gt;
    local homeScore = args.skor_home or args.home_score or &amp;quot;0&amp;quot;&lt;br /&gt;
    local awayScore = args.skor_away or args.away_score or &amp;quot;0&amp;quot;&lt;br /&gt;
    local status = args.status or &amp;quot;FT&amp;quot;&lt;br /&gt;
    local aggregate = args.agregat or args.aggregate or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local homeGoals = args.gol_home or args.home_goals or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayGoals = args.gol_away or args.away_goals or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- Statistik Lanjutan&lt;br /&gt;
    local homeXG = args.xg_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayXG = args.xg_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePoss = args.possession_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPoss = args.possession_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsTotal = args.shots_total_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsTotal = args.shots_total_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsOn = args.shots_on_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsOn = args.shots_on_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsOff = args.shots_off_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsOff = args.shots_off_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsBlocked = args.shots_blocked_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsBlocked = args.shots_blocked_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePasses = args.passes_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPasses = args.passes_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePassAcc = args.pass_acc_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPassAcc = args.pass_acc_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeCorners = args.corners_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayCorners = args.corners_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeOffsides = args.offsides_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayOffsides = args.offsides_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeSaves = args.saves_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awaySaves = args.saves_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeFouls = args.fouls_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayFouls = args.fouls_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeTackles = args.tackles_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayTackles = args.tackles_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeThrowIns = args.throwins_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayThrowIns = args.throwins_away or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local homeYellow = args.kartu_kuning_home or args.yellow_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayYellow = args.kartu_kuning_away or args.yellow_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeRed = args.kartu_merah_home or args.red_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayRed = args.kartu_merah_away or args.red_away or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local hScoreNum = tonumber(homeScore) or 0&lt;br /&gt;
    local aScoreNum = tonumber(awayScore) or 0&lt;br /&gt;
    local statusBg = &amp;quot;#6c757d&amp;quot;&lt;br /&gt;
    if hScoreNum &amp;gt; aScoreNum then&lt;br /&gt;
        statusBg = &amp;quot;#16a34a&amp;quot;&lt;br /&gt;
    elseif hScoreNum &amp;lt; aScoreNum then&lt;br /&gt;
        statusBg = &amp;quot;#dc2626&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local html = {}&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;div style=&amp;quot;border: 1px solid #cbd5e1; border-radius: 10px; background: #ffffff; overflow: hidden; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif; margin: 8px 0; box-shadow: 0 2px 6px rgba(0,0,0,0.08);&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    &lt;br /&gt;
    if derby ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, string.format(&#039;&amp;lt;div style=&amp;quot;background: linear-gradient(135deg, #0f172a 0%%, #1e1b4b 50%%, #312e81 100%%); color: #fbbf24; padding: 6px 8px; font-size: 85%%; text-align: center; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; border-bottom: 2px solid #fbbf24;&amp;quot;&amp;gt;🏆 %s 🏆&amp;lt;/div&amp;gt;&#039;, derby))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if comp ~= &amp;quot;&amp;quot; or date ~= &amp;quot;&amp;quot; or phase ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        local headerText = comp&lt;br /&gt;
        if phase ~= &amp;quot;&amp;quot; then headerText = (headerText ~= &amp;quot;&amp;quot; and (headerText .. &amp;quot; • &amp;quot;) or &amp;quot;&amp;quot;) .. phase end&lt;br /&gt;
        if date ~= &amp;quot;&amp;quot; then headerText = (headerText ~= &amp;quot;&amp;quot; and (headerText .. &amp;quot; • &amp;quot;) or &amp;quot;&amp;quot;) .. date end&lt;br /&gt;
        table.insert(html, string.format(&#039;&amp;lt;div style=&amp;quot;background: #1e293b; color: #cbd5e1; padding: 4px 8px; font-size: 78%%; text-align: center; font-weight: 600;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039;, headerText))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;table style=&amp;quot;width: 100%%; border-collapse: collapse; text-align: center; margin: 10px 0; background: transparent;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    table.insert(html, string.format([[&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 38%%; font-weight: 800; font-size: 92%%; color: #0f172a; padding: 2px 6px; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 24%%; padding: 2px; vertical-align: middle;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;span style=&amp;quot;background: %s; color: #ffffff; padding: 4px 10px; border-radius: 6px; font-weight: 900; font-size: 125%%; display: inline-block; letter-spacing: 1.5px; box-shadow: 0 2px 4px rgba(0,0,0,0.15);&amp;quot;&amp;gt;%s - %s&amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;font-size: 70%%; color: #64748b; margin-top: 4px; font-weight: 800; text-transform: uppercase;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&lt;br /&gt;
                %s&lt;br /&gt;
            &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 38%%; font-weight: 800; font-size: 92%%; color: #0f172a; padding: 2px 6px; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    ]], homeTeam, statusBg, homeScore, awayScore, status, (aggregate ~= &amp;quot;&amp;quot; and string.format(&#039;&amp;lt;div style=&amp;quot;font-size: 68%%; color: #475569; margin-top: 2px;&amp;quot;&amp;gt;(Agg: %s)&amp;lt;/div&amp;gt;&#039;, aggregate) or &amp;quot;&amp;quot;), awayTeam))&lt;br /&gt;
    &lt;br /&gt;
    if homeGoals ~= &amp;quot;&amp;quot; or awayGoals ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, string.format([[&lt;br /&gt;
            &amp;lt;tr style=&amp;quot;font-size: 75%%; color: #334155; vertical-align: top;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 6px; text-align: right; line-height: 1.4;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 0; font-size: 85%%;&amp;quot;&amp;gt;⚽&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 6px; text-align: left; line-height: 1.4;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        ]], homeGoals, awayGoals))&lt;br /&gt;
    end&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;/table&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    local function makeStatRow(label, hVal, aVal, isBold)&lt;br /&gt;
        if hVal ~= &amp;quot;&amp;quot; or aVal ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            local weight = isBold and &amp;quot;800&amp;quot; or &amp;quot;700&amp;quot;&lt;br /&gt;
            return string.format(&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;display: flex; justify-content: space-between; align-items: center; padding: 3px 0; border-bottom: 1px solid #f1f5f9;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;font-weight: %s; width: 30%%; text-align: right; color: #0f172a;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;color: #64748b; width: 40%%; text-align: center; font-size: 88%%;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;font-weight: %s; width: 30%%; text-align: left; color: #0f172a;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;/div&amp;gt;&#039;, &lt;br /&gt;
                weight, hVal ~= &amp;quot;&amp;quot; and hVal or &amp;quot;0&amp;quot;, label, weight, aVal ~= &amp;quot;&amp;quot; and aVal or &amp;quot;0&amp;quot;&lt;br /&gt;
            )&lt;br /&gt;
        end&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local function formatCards(yellow, red)&lt;br /&gt;
        local parts = {}&lt;br /&gt;
        if yellow ~= &amp;quot;&amp;quot; and yellow ~= &amp;quot;0&amp;quot; then&lt;br /&gt;
            table.insert(parts, string.format(&#039;%s &amp;lt;span style=&amp;quot;background: #eab308; color: #fff; padding: 1px 4px; border-radius: 3px; font-size: 75%%; font-weight: bold;&amp;quot;&amp;gt;K&amp;lt;/span&amp;gt;&#039;, yellow))&lt;br /&gt;
        end&lt;br /&gt;
        if red ~= &amp;quot;&amp;quot; and red ~= &amp;quot;0&amp;quot; then&lt;br /&gt;
            table.insert(parts, string.format(&#039;%s &amp;lt;span style=&amp;quot;background: #ef4444; color: #fff; padding: 1px 4px; border-radius: 3px; font-size: 75%%; font-weight: bold;&amp;quot;&amp;gt;M&amp;lt;/span&amp;gt;&#039;, red))&lt;br /&gt;
        end&lt;br /&gt;
        if #parts == 0 then return &amp;quot;&amp;quot; end&lt;br /&gt;
        return table.concat(parts, &amp;quot; &amp;amp;nbsp;&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local homeCardsFormatted = formatCards(homeYellow, homeRed)&lt;br /&gt;
    local awayCardsFormatted = formatCards(awayYellow, awayRed)&lt;br /&gt;
&lt;br /&gt;
    local hasStats = homePoss ~= &amp;quot;&amp;quot; or homeShotsOn ~= &amp;quot;&amp;quot; or homeXG ~= &amp;quot;&amp;quot; or homeCorners ~= &amp;quot;&amp;quot; or homeFouls ~= &amp;quot;&amp;quot; or homeCardsFormatted ~= &amp;quot;&amp;quot; or homePasses ~= &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    if hasStats then&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;border-top: 1px solid #e2e8f0; padding: 6px 10px; font-size: 75%%; background: #f8fafc;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;text-align: center; font-weight: 800; color: #334155; margin-bottom: 6px; font-size: 82%%; letter-spacing: 0.5px; text-transform: uppercase;&amp;quot;&amp;gt;STATISTIK PERTANDINGAN&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
        &lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Ekspektasi Gol (xG)&amp;quot;, homeXG, awayXG, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Penguasaan Bola&amp;quot;, homePoss, awayPoss, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Total Tembakan&amp;quot;, homeShotsTotal, awayShotsTotal))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Akurat&amp;quot;, homeShotsOn, awayShotsOn, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Meleset&amp;quot;, homeShotsOff, awayShotsOff))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Diblok&amp;quot;, homeShotsBlocked, awayShotsBlocked))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Total Operan&amp;quot;, homePasses, awayPasses))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Akurasi Operan&amp;quot;, homePassAcc, awayPassAcc))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tendangan Sudut&amp;quot;, homeCorners, awayCorners))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Offside&amp;quot;, homeOffsides, awayOffsides))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Penyelamatan Kiper&amp;quot;, homeSaves, awaySaves))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tekel Berhasil&amp;quot;, homeTackles, awayTackles))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Lemparan Dalam&amp;quot;, homeThrowIns, awayThrowIns))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Pelanggaran&amp;quot;, homeFouls, awayFouls))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Kartu Disiplin&amp;quot;, homeCardsFormatted, awayCardsFormatted, true))&lt;br /&gt;
        &lt;br /&gt;
        table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if venue ~= &amp;quot;&amp;quot; or referee ~= &amp;quot;&amp;quot; or attendance ~= &amp;quot;&amp;quot; or weather ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;border-top: 1px solid #e2e8f0; padding: 6px 8px; font-size: 70%%; color: #64748b; background: #ffffff; text-align: center; line-height: 1.5;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        local details = {}&lt;br /&gt;
        if venue ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Stadion:&amp;lt;/b&amp;gt; &amp;quot; .. venue) end&lt;br /&gt;
        if referee ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Wasit:&amp;lt;/b&amp;gt; &amp;quot; .. referee) end&lt;br /&gt;
        if attendance ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Penonton:&amp;lt;/b&amp;gt; &amp;quot; .. attendance) end&lt;br /&gt;
        if weather ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Cuaca:&amp;lt;/b&amp;gt; &amp;quot; .. weather) end&lt;br /&gt;
        table.insert(html, table.concat(details, &amp;quot; | &amp;quot;))&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    return table.concat(html, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Modul:MatchSystem&amp;diff=1455</id>
		<title>Modul:MatchSystem</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Modul:MatchSystem&amp;diff=1455"/>
		<updated>2026-10-18T13:33:08Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
-- 1. FUNGSI BARIS PERTANDINGAN (Match row)&lt;br /&gt;
--    Menampilkan baris ringkas untuk hasil laga atau jadwal mendatang&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
function p.row(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    local date = args.tanggal or args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
    local comp = args.kompetisi or args[2] or &amp;quot;&amp;quot;&lt;br /&gt;
    local home = args.tuan_rumah or args[3] or &amp;quot;&amp;quot;&lt;br /&gt;
    local scoreOrTime = args.skor_atau_waktu or args[4] or &amp;quot;vs&amp;quot;&lt;br /&gt;
    local away = args.tamu or args[5] or &amp;quot;&amp;quot;&lt;br /&gt;
    local resultType = string.lower(args.hasil or args[6] or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    -- PERBAIKAN: Skor sekarang wajib menggunakan tanda hubung &#039;-&#039; (misal: &amp;quot;1 - 2&amp;quot;).&lt;br /&gt;
    -- Dengan ini, jam (seperti &amp;quot;22:00 WIB&amp;quot;) tidak akan keliru terbaca sebagai skor.&lt;br /&gt;
    local isScore = scoreOrTime:find(&amp;quot;%d+%s*[-]%s*%d+&amp;quot;) ~= nil&lt;br /&gt;
    &lt;br /&gt;
    local centerText = &amp;quot;&amp;quot;&lt;br /&gt;
    local timeSubtext = &amp;quot;&amp;quot;&lt;br /&gt;
    local badgeStyle = &amp;quot;background: #3b82f6; color: #ffffff;&amp;quot;&lt;br /&gt;
    local badgeText = &amp;quot;VS&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- Indikator Badge Hasil (M / S / K / VS)&lt;br /&gt;
    if resultType == &amp;quot;w&amp;quot; or resultType == &amp;quot;win&amp;quot; or resultType == &amp;quot;menang&amp;quot; or resultType == &amp;quot;m&amp;quot; then&lt;br /&gt;
        badgeStyle = &amp;quot;background: #22c55e; color: #ffffff;&amp;quot;&lt;br /&gt;
        badgeText = &amp;quot;M&amp;quot;&lt;br /&gt;
    elseif resultType == &amp;quot;l&amp;quot; or resultType == &amp;quot;loss&amp;quot; or resultType == &amp;quot;kalah&amp;quot; or resultType == &amp;quot;k&amp;quot; then&lt;br /&gt;
        badgeStyle = &amp;quot;background: #ef4444; color: #ffffff;&amp;quot;&lt;br /&gt;
        badgeText = &amp;quot;K&amp;quot;&lt;br /&gt;
    elseif resultType == &amp;quot;d&amp;quot; or resultType == &amp;quot;draw&amp;quot; or resultType == &amp;quot;seri&amp;quot; or resultType == &amp;quot;s&amp;quot; then&lt;br /&gt;
        badgeStyle = &amp;quot;background: #64748b; color: #ffffff;&amp;quot;&lt;br /&gt;
        badgeText = &amp;quot;S&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Logika Pemisahan Skor vs Jam/Waktu Pertandingan&lt;br /&gt;
    if isScore then&lt;br /&gt;
        centerText = scoreOrTime&lt;br /&gt;
    else&lt;br /&gt;
        -- Jika diisi jam (misal 22:00 WIB), kotak tengah TETAP &#039;vs&#039;, jam ditaruh di bawah tanggal&lt;br /&gt;
        centerText = &amp;quot;vs&amp;quot;&lt;br /&gt;
        if scoreOrTime ~= &amp;quot;vs&amp;quot; and scoreOrTime ~= &amp;quot;VS&amp;quot; and scoreOrTime ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            timeSubtext = string.format(&#039;&amp;lt;div style=&amp;quot;font-size: 80%%; color: #2563eb; font-weight: 600; margin-top: 1px;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039;, scoreOrTime)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return string.format(&#039;&amp;lt;tr style=&amp;quot;border-bottom: 1px solid #f1f5f9; font-size: 78%%; text-align: center;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; color: #64748b; width: 20%%; vertical-align: middle;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;%s&amp;lt;/div&amp;gt;%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; font-weight: 600; color: #1e293b; width: 29%%; text-align: right; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; width: 22%%; vertical-align: middle;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 800; color: #0f172a; display: inline-block; padding: 2px 6px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 4px; text-transform: uppercase;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; font-weight: 600; color: #1e293b; width: 29%%; text-align: left; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; width: 10%%; vertical-align: middle;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;%s padding: 2px 5px; border-radius: 3px; font-weight: 800; font-size: 80%%;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;/tr&amp;gt;&#039;, date, timeSubtext, home, centerText, away, badgeStyle, badgeText)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
-- 2. FUNGSI PEMBUNGKUS DAFTAR LAGA (Match list)&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
function p.container(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local title = args.judul or args.title or &amp;quot;PERTANDINGAN &amp;amp; JADWAL TERBARU&amp;quot;&lt;br /&gt;
    local content = args.isi or args.content or args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    return string.format(&#039;&amp;lt;div style=&amp;quot;border: 1px solid #cbd5e1; border-radius: 8px; background: #ffffff; overflow: hidden; margin: 6px 0; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;background: #0f172a; color: #f8fafc; padding: 6px 8px; font-size: 80%%; font-weight: 700; text-align: center; letter-spacing: 0.5px; text-transform: uppercase;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;table style=&amp;quot;width: 100%%; border-collapse: collapse; background: #ffffff;&amp;quot;&amp;gt;%s&amp;lt;/table&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;, title, content)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
-- 3. FUNGSI LAPORAN DETAIL MATCH (Match result / Match Center)&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
function p.detail(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    local derby = args.laga_spesial or args.derby or &amp;quot;&amp;quot;&lt;br /&gt;
    local comp = args.kompetisi or args.competition or &amp;quot;&amp;quot;&lt;br /&gt;
    local phase = args.fase or args.babak or &amp;quot;&amp;quot;&lt;br /&gt;
    local date = args.tanggal or args.date or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local venue = args.stadion or args.venue or &amp;quot;&amp;quot;&lt;br /&gt;
    local referee = args.wasit or args.referee or &amp;quot;&amp;quot;&lt;br /&gt;
    local attendance = args.penonton or args.attendance or &amp;quot;&amp;quot;&lt;br /&gt;
    local weather = args.cuaca or args.weather or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local homeTeam = args.tuan_rumah or args.home or &amp;quot;Tuan Rumah&amp;quot;&lt;br /&gt;
    local awayTeam = args.tamu or args.away or &amp;quot;Tamu&amp;quot;&lt;br /&gt;
    local homeScore = args.skor_home or args.home_score or &amp;quot;0&amp;quot;&lt;br /&gt;
    local awayScore = args.skor_away or args.away_score or &amp;quot;0&amp;quot;&lt;br /&gt;
    local status = args.status or &amp;quot;FT&amp;quot;&lt;br /&gt;
    local aggregate = args.agregat or args.aggregate or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local homeGoals = args.gol_home or args.home_goals or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayGoals = args.gol_away or args.away_goals or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- Statistik Lanjutan&lt;br /&gt;
    local homeXG = args.xg_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayXG = args.xg_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePoss = args.possession_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPoss = args.possession_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsTotal = args.shots_total_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsTotal = args.shots_total_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsOn = args.shots_on_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsOn = args.shots_on_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsOff = args.shots_off_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsOff = args.shots_off_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsBlocked = args.shots_blocked_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsBlocked = args.shots_blocked_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePasses = args.passes_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPasses = args.passes_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePassAcc = args.pass_acc_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPassAcc = args.pass_acc_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeCorners = args.corners_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayCorners = args.corners_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeOffsides = args.offsides_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayOffsides = args.offsides_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeSaves = args.saves_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awaySaves = args.saves_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeFouls = args.fouls_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayFouls = args.fouls_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeTackles = args.tackles_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayTackles = args.tackles_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeThrowIns = args.throwins_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayThrowIns = args.throwins_away or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local homeYellow = args.kartu_kuning_home or args.yellow_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayYellow = args.kartu_kuning_away or args.yellow_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeRed = args.kartu_merah_home or args.red_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayRed = args.kartu_merah_away or args.red_away or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local hScoreNum = tonumber(homeScore) or 0&lt;br /&gt;
    local aScoreNum = tonumber(awayScore) or 0&lt;br /&gt;
    local statusBg = &amp;quot;#6c757d&amp;quot;&lt;br /&gt;
    if hScoreNum &amp;gt; aScoreNum then&lt;br /&gt;
        statusBg = &amp;quot;#16a34a&amp;quot;&lt;br /&gt;
    elseif hScoreNum &amp;lt; aScoreNum then&lt;br /&gt;
        statusBg = &amp;quot;#dc2626&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local html = {}&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;div style=&amp;quot;border: 1px solid #cbd5e1; border-radius: 10px; background: #ffffff; overflow: hidden; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif; margin: 8px 0; box-shadow: 0 2px 6px rgba(0,0,0,0.08);&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    &lt;br /&gt;
    if derby ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, string.format(&#039;&amp;lt;div style=&amp;quot;background: linear-gradient(135deg, #0f172a 0%%, #1e1b4b 50%%, #312e81 100%%); color: #fbbf24; padding: 6px 8px; font-size: 85%%; text-align: center; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; border-bottom: 2px solid #fbbf24;&amp;quot;&amp;gt;🏆 %s 🏆&amp;lt;/div&amp;gt;&#039;, derby))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if comp ~= &amp;quot;&amp;quot; or date ~= &amp;quot;&amp;quot; or phase ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        local headerText = comp&lt;br /&gt;
        if phase ~= &amp;quot;&amp;quot; then headerText = (headerText ~= &amp;quot;&amp;quot; and (headerText .. &amp;quot; • &amp;quot;) or &amp;quot;&amp;quot;) .. phase end&lt;br /&gt;
        if date ~= &amp;quot;&amp;quot; then headerText = (headerText ~= &amp;quot;&amp;quot; and (headerText .. &amp;quot; • &amp;quot;) or &amp;quot;&amp;quot;) .. date end&lt;br /&gt;
        table.insert(html, string.format(&#039;&amp;lt;div style=&amp;quot;background: #1e293b; color: #cbd5e1; padding: 4px 8px; font-size: 78%%; text-align: center; font-weight: 600;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039;, headerText))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;table style=&amp;quot;width: 100%%; border-collapse: collapse; text-align: center; margin: 10px 0; background: transparent;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    table.insert(html, string.format([[&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 38%%; font-weight: 800; font-size: 92%%; color: #0f172a; padding: 2px 6px; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 24%%; padding: 2px; vertical-align: middle;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;span style=&amp;quot;background: %s; color: #ffffff; padding: 4px 10px; border-radius: 6px; font-weight: 900; font-size: 125%%; display: inline-block; letter-spacing: 1.5px; box-shadow: 0 2px 4px rgba(0,0,0,0.15);&amp;quot;&amp;gt;%s - %s&amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;font-size: 70%%; color: #64748b; margin-top: 4px; font-weight: 800; text-transform: uppercase;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&lt;br /&gt;
                %s&lt;br /&gt;
            &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 38%%; font-weight: 800; font-size: 92%%; color: #0f172a; padding: 2px 6px; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    ]], homeTeam, statusBg, homeScore, awayScore, status, (aggregate ~= &amp;quot;&amp;quot; and string.format(&#039;&amp;lt;div style=&amp;quot;font-size: 68%%; color: #475569; margin-top: 2px;&amp;quot;&amp;gt;(Agg: %s)&amp;lt;/div&amp;gt;&#039;, aggregate) or &amp;quot;&amp;quot;), awayTeam))&lt;br /&gt;
    &lt;br /&gt;
    if homeGoals ~= &amp;quot;&amp;quot; or awayGoals ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, string.format([[&lt;br /&gt;
            &amp;lt;tr style=&amp;quot;font-size: 75%%; color: #334155; vertical-align: top;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 6px; text-align: right; line-height: 1.4;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 0; font-size: 85%%;&amp;quot;&amp;gt;⚽&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 6px; text-align: left; line-height: 1.4;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        ]], homeGoals, awayGoals))&lt;br /&gt;
    end&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;/table&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    local function makeStatRow(label, hVal, aVal, isBold)&lt;br /&gt;
        if hVal ~= &amp;quot;&amp;quot; or aVal ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            local weight = isBold and &amp;quot;800&amp;quot; or &amp;quot;700&amp;quot;&lt;br /&gt;
            return string.format(&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;display: flex; justify-content: space-between; align-items: center; padding: 3px 0; border-bottom: 1px solid #f1f5f9;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;font-weight: %s; width: 30%%; text-align: right; color: #0f172a;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;color: #64748b; width: 40%%; text-align: center; font-size: 88%%;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;font-weight: %s; width: 30%%; text-align: left; color: #0f172a;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;/div&amp;gt;&#039;, &lt;br /&gt;
                weight, hVal ~= &amp;quot;&amp;quot; and hVal or &amp;quot;0&amp;quot;, label, weight, aVal ~= &amp;quot;&amp;quot; and aVal or &amp;quot;0&amp;quot;&lt;br /&gt;
            )&lt;br /&gt;
        end&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local function formatCards(yellow, red)&lt;br /&gt;
        local parts = {}&lt;br /&gt;
        if yellow ~= &amp;quot;&amp;quot; and yellow ~= &amp;quot;0&amp;quot; then&lt;br /&gt;
            table.insert(parts, string.format(&#039;%s &amp;lt;span style=&amp;quot;background: #eab308; color: #fff; padding: 1px 4px; border-radius: 3px; font-size: 75%%; font-weight: bold;&amp;quot;&amp;gt;K&amp;lt;/span&amp;gt;&#039;, yellow))&lt;br /&gt;
        end&lt;br /&gt;
        if red ~= &amp;quot;&amp;quot; and red ~= &amp;quot;0&amp;quot; then&lt;br /&gt;
            table.insert(parts, string.format(&#039;%s &amp;lt;span style=&amp;quot;background: #ef4444; color: #fff; padding: 1px 4px; border-radius: 3px; font-size: 75%%; font-weight: bold;&amp;quot;&amp;gt;M&amp;lt;/span&amp;gt;&#039;, red))&lt;br /&gt;
        end&lt;br /&gt;
        if #parts == 0 then return &amp;quot;&amp;quot; end&lt;br /&gt;
        return table.concat(parts, &amp;quot; &amp;amp;nbsp;&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local homeCardsFormatted = formatCards(homeYellow, homeRed)&lt;br /&gt;
    local awayCardsFormatted = formatCards(awayYellow, awayRed)&lt;br /&gt;
&lt;br /&gt;
    local hasStats = homePoss ~= &amp;quot;&amp;quot; or homeShotsOn ~= &amp;quot;&amp;quot; or homeXG ~= &amp;quot;&amp;quot; or homeCorners ~= &amp;quot;&amp;quot; or homeFouls ~= &amp;quot;&amp;quot; or homeCardsFormatted ~= &amp;quot;&amp;quot; or homePasses ~= &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    if hasStats then&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;border-top: 1px solid #e2e8f0; padding: 6px 10px; font-size: 75%%; background: #f8fafc;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;text-align: center; font-weight: 800; color: #334155; margin-bottom: 6px; font-size: 82%%; letter-spacing: 0.5px; text-transform: uppercase;&amp;quot;&amp;gt;STATISTIK PERTANDINGAN&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
        &lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Ekspektasi Gol (xG)&amp;quot;, homeXG, awayXG, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Penguasaan Bola&amp;quot;, homePoss, awayPoss, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Total Tembakan&amp;quot;, homeShotsTotal, awayShotsTotal))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Akurat&amp;quot;, homeShotsOn, awayShotsOn, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Meleset&amp;quot;, homeShotsOff, awayShotsOff))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Diblok&amp;quot;, homeShotsBlocked, awayShotsBlocked))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Total Operan&amp;quot;, homePasses, awayPasses))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Akurasi Operan&amp;quot;, homePassAcc, awayPassAcc))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tendangan Sudut&amp;quot;, homeCorners, awayCorners))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Offside&amp;quot;, homeOffsides, awayOffsides))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Penyelamatan Kiper&amp;quot;, homeSaves, awaySaves))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tekel Berhasil&amp;quot;, homeTackles, awayTackles))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Lemparan Dalam&amp;quot;, homeThrowIns, awayThrowIns))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Pelanggaran&amp;quot;, homeFouls, awayFouls))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Kartu Disiplin&amp;quot;, homeCardsFormatted, awayCardsFormatted, true))&lt;br /&gt;
        &lt;br /&gt;
        table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if venue ~= &amp;quot;&amp;quot; or referee ~= &amp;quot;&amp;quot; or attendance ~= &amp;quot;&amp;quot; or weather ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;border-top: 1px solid #e2e8f0; padding: 6px 8px; font-size: 70%%; color: #64748b; background: #ffffff; text-align: center; line-height: 1.5;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        local details = {}&lt;br /&gt;
        if venue ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Stadion:&amp;lt;/b&amp;gt; &amp;quot; .. venue) end&lt;br /&gt;
        if referee ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Wasit:&amp;lt;/b&amp;gt; &amp;quot; .. referee) end&lt;br /&gt;
        if attendance ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Penonton:&amp;lt;/b&amp;gt; &amp;quot; .. attendance) end&lt;br /&gt;
        if weather ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Cuaca:&amp;lt;/b&amp;gt; &amp;quot; .. weather) end&lt;br /&gt;
        table.insert(html, table.concat(details, &amp;quot; | &amp;quot;))&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    return table.concat(html, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Modul:MatchSystem&amp;diff=1454</id>
		<title>Modul:MatchSystem</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Modul:MatchSystem&amp;diff=1454"/>
		<updated>2026-10-18T13:29:46Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
-- 1. FUNGSI BARIS PERTANDINGAN (Match row)&lt;br /&gt;
--    Menampilkan baris ringkas untuk hasil laga atau jadwal mendatang&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
function p.row(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    local date = args.tanggal or args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
    local comp = args.kompetisi or args[2] or &amp;quot;&amp;quot;&lt;br /&gt;
    local home = args.tuan_rumah or args[3] or &amp;quot;&amp;quot;&lt;br /&gt;
    local scoreOrTime = args.skor_atau_waktu or args[4] or &amp;quot;vs&amp;quot;&lt;br /&gt;
    local away = args.tamu or args[5] or &amp;quot;&amp;quot;&lt;br /&gt;
    local resultType = string.lower(args.hasil or args[6] or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    -- Cek apakah input berupa skor (ada angka seperti &amp;quot;1 - 2&amp;quot;)&lt;br /&gt;
    local isScore = scoreOrTime:find(&amp;quot;%d+%s*[%-%:]%s*%d+&amp;quot;) ~= nil&lt;br /&gt;
    &lt;br /&gt;
    local centerText = &amp;quot;&amp;quot;&lt;br /&gt;
    local timeSubtext = &amp;quot;&amp;quot;&lt;br /&gt;
    local badgeStyle = &amp;quot;background: #3b82f6; color: #ffffff;&amp;quot;&lt;br /&gt;
    local badgeText = &amp;quot;VS&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- Indikator Badge Hasil (M / S / K / VS)&lt;br /&gt;
    if resultType == &amp;quot;w&amp;quot; or resultType == &amp;quot;win&amp;quot; or resultType == &amp;quot;menang&amp;quot; or resultType == &amp;quot;m&amp;quot; then&lt;br /&gt;
        badgeStyle = &amp;quot;background: #22c55e; color: #ffffff;&amp;quot;&lt;br /&gt;
        badgeText = &amp;quot;M&amp;quot;&lt;br /&gt;
    elseif resultType == &amp;quot;l&amp;quot; or resultType == &amp;quot;loss&amp;quot; or resultType == &amp;quot;kalah&amp;quot; or resultType == &amp;quot;k&amp;quot; then&lt;br /&gt;
        badgeStyle = &amp;quot;background: #ef4444; color: #ffffff;&amp;quot;&lt;br /&gt;
        badgeText = &amp;quot;K&amp;quot;&lt;br /&gt;
    elseif resultType == &amp;quot;d&amp;quot; or resultType == &amp;quot;draw&amp;quot; or resultType == &amp;quot;seri&amp;quot; or resultType == &amp;quot;s&amp;quot; then&lt;br /&gt;
        badgeStyle = &amp;quot;background: #64748b; color: #ffffff;&amp;quot;&lt;br /&gt;
        badgeText = &amp;quot;S&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Logika Pemisahan Skor vs Jam/Waktu Pertandingan&lt;br /&gt;
    if isScore then&lt;br /&gt;
        centerText = scoreOrTime&lt;br /&gt;
    else&lt;br /&gt;
        -- Jika diisi jam (misal 22:00 WIB), kotak tengah TETAP &#039;vs&#039;, jam ditaruh di bawah tanggal&lt;br /&gt;
        centerText = &amp;quot;vs&amp;quot;&lt;br /&gt;
        if scoreOrTime ~= &amp;quot;vs&amp;quot; and scoreOrTime ~= &amp;quot;VS&amp;quot; and scoreOrTime ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            timeSubtext = string.format(&#039;&amp;lt;div style=&amp;quot;font-size: 80%%; color: #2563eb; font-weight: 600; margin-top: 1px;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039;, scoreOrTime)&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return string.format(&#039;&amp;lt;tr style=&amp;quot;border-bottom: 1px solid #f1f5f9; font-size: 78%%; text-align: center;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; color: #64748b; width: 20%%; vertical-align: middle;&amp;quot;&amp;gt;&amp;lt;div&amp;gt;%s&amp;lt;/div&amp;gt;%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; font-weight: 600; color: #1e293b; width: 29%%; text-align: right; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; width: 22%%; vertical-align: middle;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 800; color: #0f172a; display: inline-block; padding: 2px 6px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 4px; text-transform: uppercase;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; font-weight: 600; color: #1e293b; width: 29%%; text-align: left; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; width: 10%%; vertical-align: middle;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;%s padding: 2px 5px; border-radius: 3px; font-weight: 800; font-size: 80%%;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;/tr&amp;gt;&#039;, date, timeSubtext, home, centerText, away, badgeStyle, badgeText)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
-- 2. FUNGSI PEMBUNGKUS DAFTAR LAGA (Match list)&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
function p.container(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local title = args.judul or args.title or &amp;quot;PERTANDINGAN &amp;amp; JADWAL TERBARU&amp;quot;&lt;br /&gt;
    local content = args.isi or args.content or args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    return string.format(&#039;&amp;lt;div style=&amp;quot;border: 1px solid #cbd5e1; border-radius: 8px; background: #ffffff; overflow: hidden; margin: 6px 0; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;background: #0f172a; color: #f8fafc; padding: 6px 8px; font-size: 80%%; font-weight: 700; text-align: center; letter-spacing: 0.5px; text-transform: uppercase;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;table style=&amp;quot;width: 100%%; border-collapse: collapse; background: #ffffff;&amp;quot;&amp;gt;%s&amp;lt;/table&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;, title, content)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
-- 3. FUNGSI LAPORAN DETAIL MATCH (Match result / Match Center)&lt;br /&gt;
-- ============================================================================&lt;br /&gt;
function p.detail(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    local derby = args.laga_spesial or args.derby or &amp;quot;&amp;quot;&lt;br /&gt;
    local comp = args.kompetisi or args.competition or &amp;quot;&amp;quot;&lt;br /&gt;
    local phase = args.fase or args.babak or &amp;quot;&amp;quot;&lt;br /&gt;
    local date = args.tanggal or args.date or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local venue = args.stadion or args.venue or &amp;quot;&amp;quot;&lt;br /&gt;
    local referee = args.wasit or args.referee or &amp;quot;&amp;quot;&lt;br /&gt;
    local attendance = args.penonton or args.attendance or &amp;quot;&amp;quot;&lt;br /&gt;
    local weather = args.cuaca or args.weather or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local homeTeam = args.tuan_rumah or args.home or &amp;quot;Tuan Rumah&amp;quot;&lt;br /&gt;
    local awayTeam = args.tamu or args.away or &amp;quot;Tamu&amp;quot;&lt;br /&gt;
    local homeScore = args.skor_home or args.home_score or &amp;quot;0&amp;quot;&lt;br /&gt;
    local awayScore = args.skor_away or args.away_score or &amp;quot;0&amp;quot;&lt;br /&gt;
    local status = args.status or &amp;quot;FT&amp;quot;&lt;br /&gt;
    local aggregate = args.agregat or args.aggregate or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local homeGoals = args.gol_home or args.home_goals or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayGoals = args.gol_away or args.away_goals or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- Statistik Lanjutan&lt;br /&gt;
    local homeXG = args.xg_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayXG = args.xg_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePoss = args.possession_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPoss = args.possession_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsTotal = args.shots_total_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsTotal = args.shots_total_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsOn = args.shots_on_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsOn = args.shots_on_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsOff = args.shots_off_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsOff = args.shots_off_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsBlocked = args.shots_blocked_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsBlocked = args.shots_blocked_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePasses = args.passes_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPasses = args.passes_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePassAcc = args.pass_acc_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPassAcc = args.pass_acc_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeCorners = args.corners_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayCorners = args.corners_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeOffsides = args.offsides_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayOffsides = args.offsides_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeSaves = args.saves_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awaySaves = args.saves_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeFouls = args.fouls_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayFouls = args.fouls_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeTackles = args.tackles_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayTackles = args.tackles_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeThrowIns = args.throwins_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayThrowIns = args.throwins_away or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local homeYellow = args.kartu_kuning_home or args.yellow_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayYellow = args.kartu_kuning_away or args.yellow_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeRed = args.kartu_merah_home or args.red_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayRed = args.kartu_merah_away or args.red_away or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local hScoreNum = tonumber(homeScore) or 0&lt;br /&gt;
    local aScoreNum = tonumber(awayScore) or 0&lt;br /&gt;
    local statusBg = &amp;quot;#6c757d&amp;quot;&lt;br /&gt;
    if hScoreNum &amp;gt; aScoreNum then&lt;br /&gt;
        statusBg = &amp;quot;#16a34a&amp;quot;&lt;br /&gt;
    elseif hScoreNum &amp;lt; aScoreNum then&lt;br /&gt;
        statusBg = &amp;quot;#dc2626&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local html = {}&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;div style=&amp;quot;border: 1px solid #cbd5e1; border-radius: 10px; background: #ffffff; overflow: hidden; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif; margin: 8px 0; box-shadow: 0 2px 6px rgba(0,0,0,0.08);&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    &lt;br /&gt;
    if derby ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, string.format(&#039;&amp;lt;div style=&amp;quot;background: linear-gradient(135deg, #0f172a 0%%, #1e1b4b 50%%, #312e81 100%%); color: #fbbf24; padding: 6px 8px; font-size: 85%%; text-align: center; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; border-bottom: 2px solid #fbbf24;&amp;quot;&amp;gt;🏆 %s 🏆&amp;lt;/div&amp;gt;&#039;, derby))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if comp ~= &amp;quot;&amp;quot; or date ~= &amp;quot;&amp;quot; or phase ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        local headerText = comp&lt;br /&gt;
        if phase ~= &amp;quot;&amp;quot; then headerText = (headerText ~= &amp;quot;&amp;quot; and (headerText .. &amp;quot; • &amp;quot;) or &amp;quot;&amp;quot;) .. phase end&lt;br /&gt;
        if date ~= &amp;quot;&amp;quot; then headerText = (headerText ~= &amp;quot;&amp;quot; and (headerText .. &amp;quot; • &amp;quot;) or &amp;quot;&amp;quot;) .. date end&lt;br /&gt;
        table.insert(html, string.format(&#039;&amp;lt;div style=&amp;quot;background: #1e293b; color: #cbd5e1; padding: 4px 8px; font-size: 78%%; text-align: center; font-weight: 600;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039;, headerText))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;table style=&amp;quot;width: 100%%; border-collapse: collapse; text-align: center; margin: 10px 0; background: transparent;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    table.insert(html, string.format([[&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 38%%; font-weight: 800; font-size: 92%%; color: #0f172a; padding: 2px 6px; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 24%%; padding: 2px; vertical-align: middle;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;span style=&amp;quot;background: %s; color: #ffffff; padding: 4px 10px; border-radius: 6px; font-weight: 900; font-size: 125%%; display: inline-block; letter-spacing: 1.5px; box-shadow: 0 2px 4px rgba(0,0,0,0.15);&amp;quot;&amp;gt;%s - %s&amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;font-size: 70%%; color: #64748b; margin-top: 4px; font-weight: 800; text-transform: uppercase;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&lt;br /&gt;
                %s&lt;br /&gt;
            &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 38%%; font-weight: 800; font-size: 92%%; color: #0f172a; padding: 2px 6px; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    ]], homeTeam, statusBg, homeScore, awayScore, status, (aggregate ~= &amp;quot;&amp;quot; and string.format(&#039;&amp;lt;div style=&amp;quot;font-size: 68%%; color: #475569; margin-top: 2px;&amp;quot;&amp;gt;(Agg: %s)&amp;lt;/div&amp;gt;&#039;, aggregate) or &amp;quot;&amp;quot;), awayTeam))&lt;br /&gt;
    &lt;br /&gt;
    if homeGoals ~= &amp;quot;&amp;quot; or awayGoals ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, string.format([[&lt;br /&gt;
            &amp;lt;tr style=&amp;quot;font-size: 75%%; color: #334155; vertical-align: top;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 6px; text-align: right; line-height: 1.4;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 0; font-size: 85%%;&amp;quot;&amp;gt;⚽&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 6px; text-align: left; line-height: 1.4;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        ]], homeGoals, awayGoals))&lt;br /&gt;
    end&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;/table&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    local function makeStatRow(label, hVal, aVal, isBold)&lt;br /&gt;
        if hVal ~= &amp;quot;&amp;quot; or aVal ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            local weight = isBold and &amp;quot;800&amp;quot; or &amp;quot;700&amp;quot;&lt;br /&gt;
            return string.format(&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;display: flex; justify-content: space-between; align-items: center; padding: 3px 0; border-bottom: 1px solid #f1f5f9;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;font-weight: %s; width: 30%%; text-align: right; color: #0f172a;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;color: #64748b; width: 40%%; text-align: center; font-size: 88%%;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;font-weight: %s; width: 30%%; text-align: left; color: #0f172a;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;/div&amp;gt;&#039;, &lt;br /&gt;
                weight, hVal ~= &amp;quot;&amp;quot; and hVal or &amp;quot;0&amp;quot;, label, weight, aVal ~= &amp;quot;&amp;quot; and aVal or &amp;quot;0&amp;quot;&lt;br /&gt;
            )&lt;br /&gt;
        end&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local function formatCards(yellow, red)&lt;br /&gt;
        local parts = {}&lt;br /&gt;
        if yellow ~= &amp;quot;&amp;quot; and yellow ~= &amp;quot;0&amp;quot; then&lt;br /&gt;
            table.insert(parts, string.format(&#039;%s &amp;lt;span style=&amp;quot;background: #eab308; color: #fff; padding: 1px 4px; border-radius: 3px; font-size: 75%%; font-weight: bold;&amp;quot;&amp;gt;K&amp;lt;/span&amp;gt;&#039;, yellow))&lt;br /&gt;
        end&lt;br /&gt;
        if red ~= &amp;quot;&amp;quot; and red ~= &amp;quot;0&amp;quot; then&lt;br /&gt;
            table.insert(parts, string.format(&#039;%s &amp;lt;span style=&amp;quot;background: #ef4444; color: #fff; padding: 1px 4px; border-radius: 3px; font-size: 75%%; font-weight: bold;&amp;quot;&amp;gt;M&amp;lt;/span&amp;gt;&#039;, red))&lt;br /&gt;
        end&lt;br /&gt;
        if #parts == 0 then return &amp;quot;&amp;quot; end&lt;br /&gt;
        return table.concat(parts, &amp;quot; &amp;amp;nbsp;&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local homeCardsFormatted = formatCards(homeYellow, homeRed)&lt;br /&gt;
    local awayCardsFormatted = formatCards(awayYellow, awayRed)&lt;br /&gt;
&lt;br /&gt;
    local hasStats = homePoss ~= &amp;quot;&amp;quot; or homeShotsOn ~= &amp;quot;&amp;quot; or homeXG ~= &amp;quot;&amp;quot; or homeCorners ~= &amp;quot;&amp;quot; or homeFouls ~= &amp;quot;&amp;quot; or homeCardsFormatted ~= &amp;quot;&amp;quot; or homePasses ~= &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    if hasStats then&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;border-top: 1px solid #e2e8f0; padding: 6px 10px; font-size: 75%%; background: #f8fafc;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;text-align: center; font-weight: 800; color: #334155; margin-bottom: 6px; font-size: 82%%; letter-spacing: 0.5px; text-transform: uppercase;&amp;quot;&amp;gt;STATISTIK PERTANDINGAN&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
        &lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Ekspektasi Gol (xG)&amp;quot;, homeXG, awayXG, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Penguasaan Bola&amp;quot;, homePoss, awayPoss, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Total Tembakan&amp;quot;, homeShotsTotal, awayShotsTotal))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Akurat&amp;quot;, homeShotsOn, awayShotsOn, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Meleset&amp;quot;, homeShotsOff, awayShotsOff))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Diblok&amp;quot;, homeShotsBlocked, awayShotsBlocked))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Total Operan&amp;quot;, homePasses, awayPasses))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Akurasi Operan&amp;quot;, homePassAcc, awayPassAcc))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tendangan Sudut&amp;quot;, homeCorners, awayCorners))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Offside&amp;quot;, homeOffsides, awayOffsides))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Penyelamatan Kiper&amp;quot;, homeSaves, awaySaves))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tekel Berhasil&amp;quot;, homeTackles, awayTackles))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Lemparan Dalam&amp;quot;, homeThrowIns, awayThrowIns))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Pelanggaran&amp;quot;, homeFouls, awayFouls))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Kartu Disiplin&amp;quot;, homeCardsFormatted, awayCardsFormatted, true))&lt;br /&gt;
        &lt;br /&gt;
        table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if venue ~= &amp;quot;&amp;quot; or referee ~= &amp;quot;&amp;quot; or attendance ~= &amp;quot;&amp;quot; or weather ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;border-top: 1px solid #e2e8f0; padding: 6px 8px; font-size: 70%%; color: #64748b; background: #ffffff; text-align: center; line-height: 1.5;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        local details = {}&lt;br /&gt;
        if venue ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Stadion:&amp;lt;/b&amp;gt; &amp;quot; .. venue) end&lt;br /&gt;
        if referee ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Wasit:&amp;lt;/b&amp;gt; &amp;quot; .. referee) end&lt;br /&gt;
        if attendance ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Penonton:&amp;lt;/b&amp;gt; &amp;quot; .. attendance) end&lt;br /&gt;
        if weather ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Cuaca:&amp;lt;/b&amp;gt; &amp;quot; .. weather) end&lt;br /&gt;
        table.insert(html, table.concat(details, &amp;quot; | &amp;quot;))&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    return table.concat(html, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Modul:MatchSystem&amp;diff=1453</id>
		<title>Modul:MatchSystem</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Modul:MatchSystem&amp;diff=1453"/>
		<updated>2026-10-18T13:25:54Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- 1. FUNGSI UNTUK BARIS PERTANDINGAN (Match row)&lt;br /&gt;
function p.row(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    local date = args.tanggal or args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
    local comp = args.kompetisi or args[2] or &amp;quot;&amp;quot;&lt;br /&gt;
    local home = args.tuan_rumah or args[3] or &amp;quot;&amp;quot;&lt;br /&gt;
    local scoreOrTime = args.skor_atau_waktu or args[4] or &amp;quot;vs&amp;quot;&lt;br /&gt;
    local away = args.tamu or args[5] or &amp;quot;&amp;quot;&lt;br /&gt;
    local resultType = string.lower(args.hasil or args[6] or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    local badgeStyle = &amp;quot;background: #3b82f6; color: #ffffff;&amp;quot;&lt;br /&gt;
    local badgeText = &amp;quot;VS&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    if resultType == &amp;quot;w&amp;quot; or resultType == &amp;quot;win&amp;quot; or resultType == &amp;quot;menang&amp;quot; or resultType == &amp;quot;m&amp;quot; then&lt;br /&gt;
        badgeStyle = &amp;quot;background: #22c55e; color: #ffffff;&amp;quot;&lt;br /&gt;
        badgeText = &amp;quot;M&amp;quot;&lt;br /&gt;
    elseif resultType == &amp;quot;l&amp;quot; or resultType == &amp;quot;loss&amp;quot; or resultType == &amp;quot;kalah&amp;quot; or resultType == &amp;quot;k&amp;quot; then&lt;br /&gt;
        badgeStyle = &amp;quot;background: #ef4444; color: #ffffff;&amp;quot;&lt;br /&gt;
        badgeText = &amp;quot;K&amp;quot;&lt;br /&gt;
    elseif resultType == &amp;quot;d&amp;quot; or resultType == &amp;quot;draw&amp;quot; or resultType == &amp;quot;seri&amp;quot; or resultType == &amp;quot;s&amp;quot; then&lt;br /&gt;
        badgeStyle = &amp;quot;background: #64748b; color: #ffffff;&amp;quot;&lt;br /&gt;
        badgeText = &amp;quot;S&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return string.format(&#039;&amp;lt;tr style=&amp;quot;border-bottom: 1px solid #f1f5f9; font-size: 78%%; text-align: center;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; color: #64748b; font-size: 90%%; width: 18%%;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; font-weight: 600; color: #1e293b; width: 30%%; text-align: right;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; width: 22%%;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 800; color: #0f172a; display: inline-block; padding: 2px 5px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 4px;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; font-weight: 600; color: #1e293b; width: 30%%; text-align: left;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; width: 10%%;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;%s padding: 2px 5px; border-radius: 3px; font-weight: 800; font-size: 80%%;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;/tr&amp;gt;&#039;, date, home, scoreOrTime, away, badgeStyle, badgeText)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- 2. FUNGSI UNTUK PEMBUNGKUS (Match list)&lt;br /&gt;
function p.container(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local title = args.judul or args.title or &amp;quot;Jadwal &amp;amp; Hasil Pertandingan&amp;quot;&lt;br /&gt;
    local content = args.isi or args.content or args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    return string.format(&#039;&amp;lt;div style=&amp;quot;border: 1px solid #cbd5e1; border-radius: 8px; background: #ffffff; overflow: hidden; margin: 6px 0; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;background: #0f172a; color: #f8fafc; padding: 6px 8px; font-size: 80%%; font-weight: 700; text-align: center; letter-spacing: 0.5px; text-transform: uppercase;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;table style=&amp;quot;width: 100%%; border-collapse: collapse; background: #ffffff;&amp;quot;&amp;gt;%s&amp;lt;/table&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;, title, content)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- 3. FUNGSI UNTUK LAPORAN DETAIL MATCH (Match result)&lt;br /&gt;
function p.detail(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    local derby = args.laga_spesial or args.derby or &amp;quot;&amp;quot;&lt;br /&gt;
    local comp = args.kompetisi or args.competition or &amp;quot;&amp;quot;&lt;br /&gt;
    local phase = args.fase or args.babak or &amp;quot;&amp;quot;&lt;br /&gt;
    local date = args.tanggal or args.date or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local venue = args.stadion or args.venue or &amp;quot;&amp;quot;&lt;br /&gt;
    local referee = args.wasit or args.referee or &amp;quot;&amp;quot;&lt;br /&gt;
    local attendance = args.penonton or args.attendance or &amp;quot;&amp;quot;&lt;br /&gt;
    local weather = args.cuaca or args.weather or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local homeTeam = args.tuan_rumah or args.home or &amp;quot;Tuan Rumah&amp;quot;&lt;br /&gt;
    local awayTeam = args.tamu or args.away or &amp;quot;Tamu&amp;quot;&lt;br /&gt;
    local homeScore = args.skor_home or args.home_score or &amp;quot;0&amp;quot;&lt;br /&gt;
    local awayScore = args.skor_away or args.away_score or &amp;quot;0&amp;quot;&lt;br /&gt;
    local status = args.status or &amp;quot;FT&amp;quot;&lt;br /&gt;
    local aggregate = args.agregat or args.aggregate or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local homeGoals = args.gol_home or args.home_goals or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayGoals = args.gol_away or args.away_goals or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local homeXG = args.xg_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayXG = args.xg_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePoss = args.possession_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPoss = args.possession_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsTotal = args.shots_total_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsTotal = args.shots_total_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsOn = args.shots_on_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsOn = args.shots_on_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsOff = args.shots_off_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsOff = args.shots_off_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsBlocked = args.shots_blocked_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsBlocked = args.shots_blocked_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePasses = args.passes_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPasses = args.passes_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePassAcc = args.pass_acc_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPassAcc = args.pass_acc_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeCorners = args.corners_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayCorners = args.corners_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeOffsides = args.offsides_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayOffsides = args.offsides_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeSaves = args.saves_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awaySaves = args.saves_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeFouls = args.fouls_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayFouls = args.fouls_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeTackles = args.tackles_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayTackles = args.tackles_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeThrowIns = args.throwins_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayThrowIns = args.throwins_away or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local homeYellow = args.kartu_kuning_home or args.yellow_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayYellow = args.kartu_kuning_away or args.yellow_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeRed = args.kartu_merah_home or args.red_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayRed = args.kartu_merah_away or args.red_away or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local hScoreNum = tonumber(homeScore) or 0&lt;br /&gt;
    local aScoreNum = tonumber(awayScore) or 0&lt;br /&gt;
    local statusBg = &amp;quot;#6c757d&amp;quot;&lt;br /&gt;
    if hScoreNum &amp;gt; aScoreNum then&lt;br /&gt;
        statusBg = &amp;quot;#16a34a&amp;quot;&lt;br /&gt;
    elseif hScoreNum &amp;lt; aScoreNum then&lt;br /&gt;
        statusBg = &amp;quot;#dc2626&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local html = {}&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;div style=&amp;quot;border: 1px solid #cbd5e1; border-radius: 10px; background: #ffffff; overflow: hidden; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif; margin: 8px 0; box-shadow: 0 2px 6px rgba(0,0,0,0.08);&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    &lt;br /&gt;
    if derby ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, string.format(&#039;&amp;lt;div style=&amp;quot;background: linear-gradient(135deg, #0f172a 0%%, #1e1b4b 50%%, #312e81 100%%); color: #fbbf24; padding: 6px 8px; font-size: 85%%; text-align: center; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; border-bottom: 2px solid #fbbf24;&amp;quot;&amp;gt;🏆 %s 🏆&amp;lt;/div&amp;gt;&#039;, derby))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if comp ~= &amp;quot;&amp;quot; or date ~= &amp;quot;&amp;quot; or phase ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        local headerText = comp&lt;br /&gt;
        if phase ~= &amp;quot;&amp;quot; then headerText = (headerText ~= &amp;quot;&amp;quot; and (headerText .. &amp;quot; • &amp;quot;) or &amp;quot;&amp;quot;) .. phase end&lt;br /&gt;
        if date ~= &amp;quot;&amp;quot; then headerText = (headerText ~= &amp;quot;&amp;quot; and (headerText .. &amp;quot; • &amp;quot;) or &amp;quot;&amp;quot;) .. date end&lt;br /&gt;
        table.insert(html, string.format(&#039;&amp;lt;div style=&amp;quot;background: #1e293b; color: #cbd5e1; padding: 4px 8px; font-size: 78%%; text-align: center; font-weight: 600;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039;, headerText))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;table style=&amp;quot;width: 100%%; border-collapse: collapse; text-align: center; margin: 10px 0; background: transparent;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    table.insert(html, string.format([[&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 38%%; font-weight: 800; font-size: 92%%; color: #0f172a; padding: 2px 6px; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 24%%; padding: 2px; vertical-align: middle;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;span style=&amp;quot;background: %s; color: #ffffff; padding: 4px 10px; border-radius: 6px; font-weight: 900; font-size: 125%%; display: inline-block; letter-spacing: 1.5px; box-shadow: 0 2px 4px rgba(0,0,0,0.15);&amp;quot;&amp;gt;%s - %s&amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;font-size: 70%%; color: #64748b; margin-top: 4px; font-weight: 800; text-transform: uppercase;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&lt;br /&gt;
                %s&lt;br /&gt;
            &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 38%%; font-weight: 800; font-size: 92%%; color: #0f172a; padding: 2px 6px; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    ]], homeTeam, statusBg, homeScore, awayScore, status, (aggregate ~= &amp;quot;&amp;quot; and string.format(&#039;&amp;lt;div style=&amp;quot;font-size: 68%%; color: #475569; margin-top: 2px;&amp;quot;&amp;gt;(Agg: %s)&amp;lt;/div&amp;gt;&#039;, aggregate) or &amp;quot;&amp;quot;), awayTeam))&lt;br /&gt;
    &lt;br /&gt;
    if homeGoals ~= &amp;quot;&amp;quot; or awayGoals ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, string.format([[&lt;br /&gt;
            &amp;lt;tr style=&amp;quot;font-size: 75%%; color: #334155; vertical-align: top;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 6px; text-align: right; line-height: 1.4;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 0; font-size: 85%%;&amp;quot;&amp;gt;⚽&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 6px; text-align: left; line-height: 1.4;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        ]], homeGoals, awayGoals))&lt;br /&gt;
    end&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;/table&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    local function makeStatRow(label, hVal, aVal, isBold)&lt;br /&gt;
        if hVal ~= &amp;quot;&amp;quot; or aVal ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            local weight = isBold and &amp;quot;800&amp;quot; or &amp;quot;700&amp;quot;&lt;br /&gt;
            return string.format(&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;display: flex; justify-content: space-between; align-items: center; padding: 3px 0; border-bottom: 1px solid #f1f5f9;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;font-weight: %s; width: 30%%; text-align: right; color: #0f172a;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;color: #64748b; width: 40%%; text-align: center; font-size: 88%%;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;font-weight: %s; width: 30%%; text-align: left; color: #0f172a;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;/div&amp;gt;&#039;, &lt;br /&gt;
                weight, hVal ~= &amp;quot;&amp;quot; and hVal or &amp;quot;0&amp;quot;, label, weight, aVal ~= &amp;quot;&amp;quot; and aVal or &amp;quot;0&amp;quot;&lt;br /&gt;
            )&lt;br /&gt;
        end&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local function formatCards(yellow, red)&lt;br /&gt;
        local parts = {}&lt;br /&gt;
        if yellow ~= &amp;quot;&amp;quot; and yellow ~= &amp;quot;0&amp;quot; then&lt;br /&gt;
            table.insert(parts, string.format(&#039;%s &amp;lt;span style=&amp;quot;background: #eab308; color: #fff; padding: 1px 4px; border-radius: 3px; font-size: 75%%; font-weight: bold;&amp;quot;&amp;gt;K&amp;lt;/span&amp;gt;&#039;, yellow))&lt;br /&gt;
        end&lt;br /&gt;
        if red ~= &amp;quot;&amp;quot; and red ~= &amp;quot;0&amp;quot; then&lt;br /&gt;
            table.insert(parts, string.format(&#039;%s &amp;lt;span style=&amp;quot;background: #ef4444; color: #fff; padding: 1px 4px; border-radius: 3px; font-size: 75%%; font-weight: bold;&amp;quot;&amp;gt;M&amp;lt;/span&amp;gt;&#039;, red))&lt;br /&gt;
        end&lt;br /&gt;
        if #parts == 0 then return &amp;quot;&amp;quot; end&lt;br /&gt;
        return table.concat(parts, &amp;quot; &amp;amp;nbsp;&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local homeCardsFormatted = formatCards(homeYellow, homeRed)&lt;br /&gt;
    local awayCardsFormatted = formatCards(awayYellow, awayRed)&lt;br /&gt;
&lt;br /&gt;
    local hasStats = homePoss ~= &amp;quot;&amp;quot; or homeShotsOn ~= &amp;quot;&amp;quot; or homeXG ~= &amp;quot;&amp;quot; or homeCorners ~= &amp;quot;&amp;quot; or homeFouls ~= &amp;quot;&amp;quot; or homeCardsFormatted ~= &amp;quot;&amp;quot; or homePasses ~= &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    if hasStats then&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;border-top: 1px solid #e2e8f0; padding: 6px 10px; font-size: 75%%; background: #f8fafc;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;text-align: center; font-weight: 800; color: #334155; margin-bottom: 6px; font-size: 82%%; letter-spacing: 0.5px; text-transform: uppercase;&amp;quot;&amp;gt;STATISTIK PERTANDINGAN&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
        &lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Ekspektasi Gol (xG)&amp;quot;, homeXG, awayXG, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Penguasaan Bola&amp;quot;, homePoss, awayPoss, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Total Tembakan&amp;quot;, homeShotsTotal, awayShotsTotal))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Akurat&amp;quot;, homeShotsOn, awayShotsOn, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Meleset&amp;quot;, homeShotsOff, awayShotsOff))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Diblok&amp;quot;, homeShotsBlocked, awayShotsBlocked))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Total Operan&amp;quot;, homePasses, awayPasses))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Akurasi Operan&amp;quot;, homePassAcc, awayPassAcc))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tendangan Sudut&amp;quot;, homeCorners, awayCorners))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Offside&amp;quot;, homeOffsides, awayOffsides))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Penyelamatan Kiper&amp;quot;, homeSaves, awaySaves))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tekel Berhasil&amp;quot;, homeTackles, awayTackles))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Lemparan Dalam&amp;quot;, homeThrowIns, awayThrowIns))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Pelanggaran&amp;quot;, homeFouls, awayFouls))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Kartu Disiplin&amp;quot;, homeCardsFormatted, awayCardsFormatted, true))&lt;br /&gt;
        &lt;br /&gt;
        table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if venue ~= &amp;quot;&amp;quot; or referee ~= &amp;quot;&amp;quot; or attendance ~= &amp;quot;&amp;quot; or weather ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;border-top: 1px solid #e2e8f0; padding: 6px 8px; font-size: 70%%; color: #64748b; background: #ffffff; text-align: center; line-height: 1.5;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        local details = {}&lt;br /&gt;
        if venue ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Stadion:&amp;lt;/b&amp;gt; &amp;quot; .. venue) end&lt;br /&gt;
        if referee ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Wasit:&amp;lt;/b&amp;gt; &amp;quot; .. referee) end&lt;br /&gt;
        if attendance ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Penonton:&amp;lt;/b&amp;gt; &amp;quot; .. attendance) end&lt;br /&gt;
        if weather ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Cuaca:&amp;lt;/b&amp;gt; &amp;quot; .. weather) end&lt;br /&gt;
        table.insert(html, table.concat(details, &amp;quot; | &amp;quot;))&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    return table.concat(html, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Modul:MatchSystem&amp;diff=1452</id>
		<title>Modul:MatchSystem</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Modul:MatchSystem&amp;diff=1452"/>
		<updated>2026-10-18T13:24:45Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- 1. FUNGSI UNTUK DAFTAR LAGA (HASIL &amp;amp; JADWAL MENDATANG)&lt;br /&gt;
function p.row(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    local date = args.tanggal or args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
    local comp = args.kompetisi or args[2] or &amp;quot;&amp;quot;&lt;br /&gt;
    local home = args.tuan_rumah or args[3] or &amp;quot;&amp;quot;&lt;br /&gt;
    local scoreOrTime = args.skor_atau_waktu or args[4] or &amp;quot;vs&amp;quot;&lt;br /&gt;
    local away = args.tamu or args[5] or &amp;quot;&amp;quot;&lt;br /&gt;
    local resultType = string.lower(args.hasil or args[6] or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    local badgeStyle = &amp;quot;background: #3b82f6; color: #ffffff;&amp;quot;&lt;br /&gt;
    local badgeText = &amp;quot;VS&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    if resultType == &amp;quot;w&amp;quot; or resultType == &amp;quot;win&amp;quot; or resultType == &amp;quot;menang&amp;quot; or resultType == &amp;quot;m&amp;quot; then&lt;br /&gt;
        badgeStyle = &amp;quot;background: #22c55e; color: #ffffff;&amp;quot;&lt;br /&gt;
        badgeText = &amp;quot;M&amp;quot;&lt;br /&gt;
    elseif resultType == &amp;quot;l&amp;quot; or resultType == &amp;quot;loss&amp;quot; or resultType == &amp;quot;kalah&amp;quot; or resultType == &amp;quot;k&amp;quot; then&lt;br /&gt;
        badgeStyle = &amp;quot;background: #ef4444; color: #ffffff;&amp;quot;&lt;br /&gt;
        badgeText = &amp;quot;K&amp;quot;&lt;br /&gt;
    elseif resultType == &amp;quot;d&amp;quot; or resultType == &amp;quot;draw&amp;quot; or resultType == &amp;quot;seri&amp;quot; or resultType == &amp;quot;s&amp;quot; then&lt;br /&gt;
        badgeStyle = &amp;quot;background: #64748b; color: #ffffff;&amp;quot;&lt;br /&gt;
        badgeText = &amp;quot;S&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return string.format([[&lt;br /&gt;
&amp;lt;tr style=&amp;quot;border-bottom: 1px solid #f1f5f9; font-size: 75%%; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;td style=&amp;quot;padding: 4px 2px; color: #64748b; font-size: 90%%; width: 18%%;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td style=&amp;quot;padding: 4px 2px; font-weight: 600; color: #1e293b; width: 30%%; text-align: right;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td style=&amp;quot;padding: 4px 2px; width: 22%%;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span style=&amp;quot;font-weight: 800; color: #0f172a; display: inline-block; padding: 1px 4px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 4px;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td style=&amp;quot;padding: 4px 2px; font-weight: 600; color: #1e293b; width: 30%%; text-align: left;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td style=&amp;quot;padding: 4px 2px; width: 10%%;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span style=&amp;quot;%s padding: 1px 4px; border-radius: 3px; font-weight: 800; font-size: 80%%;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;]], date, home, scoreOrTime, away, badgeStyle, badgeText)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.container(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local title = args.judul or args.title or &amp;quot;Jadwal &amp;amp; Hasil Pertandingan&amp;quot;&lt;br /&gt;
    local content = args.content or args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    return string.format([[&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #cbd5e1; border-radius: 8px; background: #ffffff; overflow: hidden; margin: 6px 0; font-family: -apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, sans-serif;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background: #0f172a; color: #f8fafc; padding: 5px 8px; font-size: 80%%; font-weight: 700; text-align: center; letter-spacing: 0.5px;&amp;quot;&amp;gt;&lt;br /&gt;
        %s&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;table style=&amp;quot;width: 100%%; border-collapse: collapse; background: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
        %s&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;]], title, content)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- 2. FUNGSI UNTUK LAPORAN DETAIL MATCH (MATCH CENTER EKSLUSIF)&lt;br /&gt;
function p.detail(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    local derby = args.laga_spesial or args.derby or &amp;quot;&amp;quot;&lt;br /&gt;
    local comp = args.kompetisi or args.competition or &amp;quot;&amp;quot;&lt;br /&gt;
    local phase = args.fase or args.babak or &amp;quot;&amp;quot;&lt;br /&gt;
    local date = args.tanggal or args.date or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local venue = args.stadion or args.venue or &amp;quot;&amp;quot;&lt;br /&gt;
    local referee = args.wasit or args.referee or &amp;quot;&amp;quot;&lt;br /&gt;
    local attendance = args.penonton or args.attendance or &amp;quot;&amp;quot;&lt;br /&gt;
    local weather = args.cuaca or args.weather or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local homeTeam = args.tuan_rumah or args.home or &amp;quot;Tuan Rumah&amp;quot;&lt;br /&gt;
    local awayTeam = args.tamu or args.away or &amp;quot;Tamu&amp;quot;&lt;br /&gt;
    local homeScore = args.skor_home or args.home_score or &amp;quot;0&amp;quot;&lt;br /&gt;
    local awayScore = args.skor_away or args.away_score or &amp;quot;0&amp;quot;&lt;br /&gt;
    local status = args.status or &amp;quot;FT&amp;quot;&lt;br /&gt;
    local aggregate = args.agregat or args.aggregate or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local homeGoals = args.gol_home or args.home_goals or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayGoals = args.gol_away or args.away_goals or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- Statistik Komplit&lt;br /&gt;
    local homeXG = args.xg_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayXG = args.xg_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePoss = args.possession_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPoss = args.possession_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsTotal = args.shots_total_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsTotal = args.shots_total_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsOn = args.shots_on_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsOn = args.shots_on_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsOff = args.shots_off_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsOff = args.shots_off_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsBlocked = args.shots_blocked_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsBlocked = args.shots_blocked_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePasses = args.passes_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPasses = args.passes_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePassAcc = args.pass_acc_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPassAcc = args.pass_acc_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeCorners = args.corners_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayCorners = args.corners_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeOffsides = args.offsides_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayOffsides = args.offsides_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeSaves = args.saves_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awaySaves = args.saves_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeFouls = args.fouls_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayFouls = args.fouls_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeTackles = args.tackles_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayTackles = args.tackles_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeThrowIns = args.throwins_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayThrowIns = args.throwins_away or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local homeYellow = args.kartu_kuning_home or args.yellow_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayYellow = args.kartu_kuning_away or args.yellow_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeRed = args.kartu_merah_home or args.red_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayRed = args.kartu_merah_away or args.red_away or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local hScoreNum = tonumber(homeScore) or 0&lt;br /&gt;
    local aScoreNum = tonumber(awayScore) or 0&lt;br /&gt;
    local statusBg = &amp;quot;#6c757d&amp;quot;&lt;br /&gt;
    if hScoreNum &amp;gt; aScoreNum then&lt;br /&gt;
        statusBg = &amp;quot;#16a34a&amp;quot;&lt;br /&gt;
    elseif hScoreNum &amp;lt; aScoreNum then&lt;br /&gt;
        statusBg = &amp;quot;#dc2626&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local html = {}&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;div style=&amp;quot;border: 1px solid #cbd5e1; border-radius: 10px; background: #ffffff; overflow: hidden; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif; margin: 8px 0; box-shadow: 0 2px 6px rgba(0,0,0,0.08);&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    &lt;br /&gt;
    if derby ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, string.format(&#039;&amp;lt;div style=&amp;quot;background: linear-gradient(135deg, #0f172a 0%%, #1e1b4b 50%%, #312e81 100%%); color: #fbbf24; padding: 6px 8px; font-size: 85%%; text-align: center; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; border-bottom: 2px solid #fbbf24;&amp;quot;&amp;gt;🏆 %s 🏆&amp;lt;/div&amp;gt;&#039;, derby))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if comp ~= &amp;quot;&amp;quot; or date ~= &amp;quot;&amp;quot; or phase ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        local headerText = comp&lt;br /&gt;
        if phase ~= &amp;quot;&amp;quot; then headerText = (headerText ~= &amp;quot;&amp;quot; and (headerText .. &amp;quot; • &amp;quot;) or &amp;quot;&amp;quot;) .. phase end&lt;br /&gt;
        if date ~= &amp;quot;&amp;quot; then headerText = (headerText ~= &amp;quot;&amp;quot; and (headerText .. &amp;quot; • &amp;quot;) or &amp;quot;&amp;quot;) .. date end&lt;br /&gt;
        table.insert(html, string.format(&#039;&amp;lt;div style=&amp;quot;background: #1e293b; color: #cbd5e1; padding: 4px 8px; font-size: 78%%; text-align: center; font-weight: 600;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039;, headerText))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;table style=&amp;quot;width: 100%%; border-collapse: collapse; text-align: center; margin: 10px 0; background: transparent;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    table.insert(html, string.format([[&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 38%%; font-weight: 800; font-size: 92%%; color: #0f172a; padding: 2px 6px; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 24%%; padding: 2px; vertical-align: middle;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;span style=&amp;quot;background: %s; color: #ffffff; padding: 4px 10px; border-radius: 6px; font-weight: 900; font-size: 125%%; display: inline-block; letter-spacing: 1.5px; box-shadow: 0 2px 4px rgba(0,0,0,0.15);&amp;quot;&amp;gt;%s - %s&amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;font-size: 70%%; color: #64748b; margin-top: 4px; font-weight: 800; text-transform: uppercase;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&lt;br /&gt;
                %s&lt;br /&gt;
            &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 38%%; font-weight: 800; font-size: 92%%; color: #0f172a; padding: 2px 6px; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    ]], homeTeam, statusBg, homeScore, awayScore, status, (aggregate ~= &amp;quot;&amp;quot; and string.format(&#039;&amp;lt;div style=&amp;quot;font-size: 68%%; color: #475569; margin-top: 2px;&amp;quot;&amp;gt;(Agg: %s)&amp;lt;/div&amp;gt;&#039;, aggregate) or &amp;quot;&amp;quot;), awayTeam))&lt;br /&gt;
    &lt;br /&gt;
    if homeGoals ~= &amp;quot;&amp;quot; or awayGoals ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, string.format([[&lt;br /&gt;
            &amp;lt;tr style=&amp;quot;font-size: 75%%; color: #334155; vertical-align: top;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 6px; text-align: right; line-height: 1.4;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 0; font-size: 85%%;&amp;quot;&amp;gt;⚽&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 6px; text-align: left; line-height: 1.4;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        ]], homeGoals, awayGoals))&lt;br /&gt;
    end&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;/table&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    local function makeStatRow(label, hVal, aVal, isBold)&lt;br /&gt;
        if hVal ~= &amp;quot;&amp;quot; or aVal ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            local weight = isBold and &amp;quot;800&amp;quot; or &amp;quot;700&amp;quot;&lt;br /&gt;
            return string.format(&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;display: flex; justify-content: space-between; align-items: center; padding: 3px 0; border-bottom: 1px solid #f1f5f9;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;font-weight: %s; width: 30%%; text-align: right; color: #0f172a;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;color: #64748b; width: 40%%; text-align: center; font-size: 88%%;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;font-weight: %s; width: 30%%; text-align: left; color: #0f172a;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;/div&amp;gt;&#039;, &lt;br /&gt;
                weight, hVal ~= &amp;quot;&amp;quot; and hVal or &amp;quot;0&amp;quot;, label, weight, aVal ~= &amp;quot;&amp;quot; and aVal or &amp;quot;0&amp;quot;&lt;br /&gt;
            )&lt;br /&gt;
        end&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local function formatCards(yellow, red)&lt;br /&gt;
        local parts = {}&lt;br /&gt;
        if yellow ~= &amp;quot;&amp;quot; and yellow ~= &amp;quot;0&amp;quot; then&lt;br /&gt;
            table.insert(parts, string.format(&#039;%s &amp;lt;span style=&amp;quot;background: #eab308; color: #fff; padding: 1px 4px; border-radius: 3px; font-size: 75%%; font-weight: bold;&amp;quot;&amp;gt;K&amp;lt;/span&amp;gt;&#039;, yellow))&lt;br /&gt;
        end&lt;br /&gt;
        if red ~= &amp;quot;&amp;quot; and red ~= &amp;quot;0&amp;quot; then&lt;br /&gt;
            table.insert(parts, string.format(&#039;%s &amp;lt;span style=&amp;quot;background: #ef4444; color: #fff; padding: 1px 4px; border-radius: 3px; font-size: 75%%; font-weight: bold;&amp;quot;&amp;gt;M&amp;lt;/span&amp;gt;&#039;, red))&lt;br /&gt;
        end&lt;br /&gt;
        if #parts == 0 then return &amp;quot;&amp;quot; end&lt;br /&gt;
        return table.concat(parts, &amp;quot; &amp;amp;nbsp;&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local homeCardsFormatted = formatCards(homeYellow, homeRed)&lt;br /&gt;
    local awayCardsFormatted = formatCards(awayYellow, awayRed)&lt;br /&gt;
&lt;br /&gt;
    local hasStats = homePoss ~= &amp;quot;&amp;quot; or homeShotsOn ~= &amp;quot;&amp;quot; or homeXG ~= &amp;quot;&amp;quot; or homeCorners ~= &amp;quot;&amp;quot; or homeFouls ~= &amp;quot;&amp;quot; or homeCardsFormatted ~= &amp;quot;&amp;quot; or homePasses ~= &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    if hasStats then&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;border-top: 1px solid #e2e8f0; padding: 6px 10px; font-size: 75%%; background: #f8fafc;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;text-align: center; font-weight: 800; color: #334155; margin-bottom: 6px; font-size: 82%%; letter-spacing: 0.5px; text-transform: uppercase;&amp;quot;&amp;gt;STATISTIK PERTANDINGAN&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
        &lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Ekspektasi Gol (xG)&amp;quot;, homeXG, awayXG, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Penguasaan Bola&amp;quot;, homePoss, awayPoss, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Total Tembakan&amp;quot;, homeShotsTotal, awayShotsTotal))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Akurat&amp;quot;, homeShotsOn, awayShotsOn, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Meleset&amp;quot;, homeShotsOff, awayShotsOff))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Diblok&amp;quot;, homeShotsBlocked, awayShotsBlocked))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Total Operan&amp;quot;, homePasses, awayPasses))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Akurasi Operan&amp;quot;, homePassAcc, awayPassAcc))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tendangan Sudut&amp;quot;, homeCorners, awayCorners))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Offside&amp;quot;, homeOffsides, awayOffsides))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Penyelamatan Kiper&amp;quot;, homeSaves, awaySaves))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tekel Berhasil&amp;quot;, homeTackles, awayTackles))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Lemparan Dalam&amp;quot;, homeThrowIns, awayThrowIns))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Pelanggaran&amp;quot;, homeFouls, awayFouls))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Kartu Disiplin&amp;quot;, homeCardsFormatted, awayCardsFormatted, true))&lt;br /&gt;
        &lt;br /&gt;
        table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if venue ~= &amp;quot;&amp;quot; or referee ~= &amp;quot;&amp;quot; or attendance ~= &amp;quot;&amp;quot; or weather ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;border-top: 1px solid #e2e8f0; padding: 6px 8px; font-size: 70%%; color: #64748b; background: #ffffff; text-align: center; line-height: 1.5;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        local details = {}&lt;br /&gt;
        if venue ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Stadion:&amp;lt;/b&amp;gt; &amp;quot; ..&amp;quot; &amp;quot; .. venue) end&lt;br /&gt;
        if referee ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Wasit:&amp;lt;/b&amp;gt; &amp;quot; .. referee) end&lt;br /&gt;
        if attendance ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Penonton:&amp;lt;/b&amp;gt; &amp;quot; .. attendance) end&lt;br /&gt;
        if weather ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Cuaca:&amp;lt;/b&amp;gt; &amp;quot; .. weather) end&lt;br /&gt;
        table.insert(html, table.concat(details, &amp;quot; | &amp;quot;))&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    return table.concat(html, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Macth_row&amp;diff=1451</id>
		<title>Templat:Macth row</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Macth_row&amp;diff=1451"/>
		<updated>2026-10-18T13:21:51Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: Wikisporta memindahkan halaman Templat:Macth row ke Templat:Match row&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#ALIH [[Templat:Match row]]&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Match_row&amp;diff=1450</id>
		<title>Templat:Match row</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Match_row&amp;diff=1450"/>
		<updated>2026-10-18T13:21:51Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: Wikisporta memindahkan halaman Templat:Macth row ke Templat:Match row&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:MatchSystem|row}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Match_list&amp;diff=1449</id>
		<title>Templat:Match list</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Match_list&amp;diff=1449"/>
		<updated>2026-10-18T13:20:20Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: /* */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:MatchSystem|container|judul={{{judul|PERTANDINGAN &amp;amp; JADWAL TERBARU}}}|isi={{{isi|{{{1|}}}}}}}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Modul:MatchSystem&amp;diff=1448</id>
		<title>Modul:MatchSystem</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Modul:MatchSystem&amp;diff=1448"/>
		<updated>2026-10-18T13:19:53Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- 1. FUNGSI UNTUK BARIS PERTANDINGAN (Match row)&lt;br /&gt;
function p.row(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    local date = args.tanggal or args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
    local comp = args.kompetisi or args[2] or &amp;quot;&amp;quot;&lt;br /&gt;
    local home = args.tuan_rumah or args[3] or &amp;quot;&amp;quot;&lt;br /&gt;
    local scoreOrTime = args.skor_atau_waktu or args[4] or &amp;quot;vs&amp;quot;&lt;br /&gt;
    local away = args.tamu or args[5] or &amp;quot;&amp;quot;&lt;br /&gt;
    local resultType = string.lower(args.hasil or args[6] or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    local badgeStyle = &amp;quot;background: #3b82f6; color: #ffffff;&amp;quot;&lt;br /&gt;
    local badgeText = &amp;quot;VS&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    if resultType == &amp;quot;w&amp;quot; or resultType == &amp;quot;win&amp;quot; or resultType == &amp;quot;menang&amp;quot; or resultType == &amp;quot;m&amp;quot; then&lt;br /&gt;
        badgeStyle = &amp;quot;background: #22c55e; color: #ffffff;&amp;quot;&lt;br /&gt;
        badgeText = &amp;quot;M&amp;quot;&lt;br /&gt;
    elseif resultType == &amp;quot;l&amp;quot; or resultType == &amp;quot;loss&amp;quot; or resultType == &amp;quot;kalah&amp;quot; or resultType == &amp;quot;k&amp;quot; then&lt;br /&gt;
        badgeStyle = &amp;quot;background: #ef4444; color: #ffffff;&amp;quot;&lt;br /&gt;
        badgeText = &amp;quot;K&amp;quot;&lt;br /&gt;
    elseif resultType == &amp;quot;d&amp;quot; or resultType == &amp;quot;draw&amp;quot; or resultType == &amp;quot;seri&amp;quot; or resultType == &amp;quot;s&amp;quot; then&lt;br /&gt;
        badgeStyle = &amp;quot;background: #64748b; color: #ffffff;&amp;quot;&lt;br /&gt;
        badgeText = &amp;quot;S&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return string.format(&#039;&amp;lt;tr style=&amp;quot;border-bottom: 1px solid #f1f5f9; font-size: 78%%; text-align: center;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; color: #64748b; font-size: 90%%; width: 18%%;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; font-weight: 600; color: #1e293b; width: 30%%; text-align: right;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; width: 22%%;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-weight: 800; color: #0f172a; display: inline-block; padding: 2px 5px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 4px;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; font-weight: 600; color: #1e293b; width: 30%%; text-align: left;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;td style=&amp;quot;padding: 6px 2px; width: 10%%;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;%s padding: 2px 5px; border-radius: 3px; font-weight: 800; font-size: 80%%;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&amp;lt;/td&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;/tr&amp;gt;&#039;, date, home, scoreOrTime, away, badgeStyle, badgeText)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- 2. FUNGSI UNTUK PEMBUNGKUS (Match list)&lt;br /&gt;
function p.container(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local title = args.judul or args.title or &amp;quot;Jadwal &amp;amp; Hasil Pertandingan&amp;quot;&lt;br /&gt;
    local content = args.isi or args.content or args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    return string.format(&#039;&amp;lt;div style=&amp;quot;border: 1px solid #cbd5e1; border-radius: 8px; background: #ffffff; overflow: hidden; margin: 6px 0; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;div style=&amp;quot;background: #0f172a; color: #f8fafc; padding: 6px 8px; font-size: 80%%; font-weight: 700; text-align: center; letter-spacing: 0.5px; text-transform: uppercase;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;table style=&amp;quot;width: 100%%; border-collapse: collapse; background: #ffffff;&amp;quot;&amp;gt;%s&amp;lt;/table&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;/div&amp;gt;&#039;, title, content)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- 3. FUNGSI UNTUK LAPORAN DETAIL MATCH (Match result)&lt;br /&gt;
function p.detail(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    local derby = args.laga_spesial or args.derby or &amp;quot;&amp;quot;&lt;br /&gt;
    local comp = args.kompetisi or args.competition or &amp;quot;&amp;quot;&lt;br /&gt;
    local phase = args.fase or args.babak or &amp;quot;&amp;quot;&lt;br /&gt;
    local date = args.tanggal or args.date or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local venue = args.stadion or args.venue or &amp;quot;&amp;quot;&lt;br /&gt;
    local referee = args.wasit or args.referee or &amp;quot;&amp;quot;&lt;br /&gt;
    local attendance = args.penonton or args.attendance or &amp;quot;&amp;quot;&lt;br /&gt;
    local weather = args.cuaca or args.weather or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local homeTeam = args.tuan_rumah or args.home or &amp;quot;Tuan Rumah&amp;quot;&lt;br /&gt;
    local awayTeam = args.tamu or args.away or &amp;quot;Tamu&amp;quot;&lt;br /&gt;
    local homeScore = args.skor_home or args.home_score or &amp;quot;0&amp;quot;&lt;br /&gt;
    local awayScore = args.skor_away or args.away_score or &amp;quot;0&amp;quot;&lt;br /&gt;
    local status = args.status or &amp;quot;FT&amp;quot;&lt;br /&gt;
    local aggregate = args.agregat or args.aggregate or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local homeGoals = args.gol_home or args.home_goals or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayGoals = args.gol_away or args.away_goals or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local homeXG = args.xg_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayXG = args.xg_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePoss = args.possession_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPoss = args.possession_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsTotal = args.shots_total_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsTotal = args.shots_total_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsOn = args.shots_on_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsOn = args.shots_on_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsOff = args.shots_off_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsOff = args.shots_off_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsBlocked = args.shots_blocked_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsBlocked = args.shots_blocked_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePasses = args.passes_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPasses = args.passes_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePassAcc = args.pass_acc_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPassAcc = args.pass_acc_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeCorners = args.corners_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayCorners = args.corners_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeOffsides = args.offsides_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayOffsides = args.offsides_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeSaves = args.saves_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awaySaves = args.saves_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeFouls = args.fouls_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayFouls = args.fouls_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeTackles = args.tackles_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayTackles = args.tackles_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeThrowIns = args.throwins_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayThrowIns = args.throwins_away or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local homeYellow = args.kartu_kuning_home or args.yellow_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayYellow = args.kartu_kuning_away or args.yellow_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeRed = args.kartu_merah_home or args.red_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayRed = args.kartu_merah_away or args.red_away or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local hScoreNum = tonumber(homeScore) or 0&lt;br /&gt;
    local aScoreNum = tonumber(awayScore) or 0&lt;br /&gt;
    local statusBg = &amp;quot;#6c757d&amp;quot;&lt;br /&gt;
    if hScoreNum &amp;gt; aScoreNum then&lt;br /&gt;
        statusBg = &amp;quot;#16a34a&amp;quot;&lt;br /&gt;
    elseif hScoreNum &amp;lt; aScoreNum then&lt;br /&gt;
        statusBg = &amp;quot;#dc2626&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local html = {}&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;div style=&amp;quot;border: 1px solid #cbd5e1; border-radius: 10px; background: #ffffff; overflow: hidden; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif; margin: 8px 0; box-shadow: 0 2px 6px rgba(0,0,0,0.08);&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    &lt;br /&gt;
    if derby ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, string.format(&#039;&amp;lt;div style=&amp;quot;background: linear-gradient(135deg, #0f172a 0%%, #1e1b4b 50%%, #312e81 100%%); color: #fbbf24; padding: 6px 8px; font-size: 85%%; text-align: center; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; border-bottom: 2px solid #fbbf24;&amp;quot;&amp;gt;🏆 %s 🏆&amp;lt;/div&amp;gt;&#039;, derby))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if comp ~= &amp;quot;&amp;quot; or date ~= &amp;quot;&amp;quot; or phase ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        local headerText = comp&lt;br /&gt;
        if phase ~= &amp;quot;&amp;quot; then headerText = (headerText ~= &amp;quot;&amp;quot; and (headerText .. &amp;quot; • &amp;quot;) or &amp;quot;&amp;quot;) .. phase end&lt;br /&gt;
        if date ~= &amp;quot;&amp;quot; then headerText = (headerText ~= &amp;quot;&amp;quot; and (headerText .. &amp;quot; • &amp;quot;) or &amp;quot;&amp;quot;) .. date end&lt;br /&gt;
        table.insert(html, string.format(&#039;&amp;lt;div style=&amp;quot;background: #1e293b; color: #cbd5e1; padding: 4px 8px; font-size: 78%%; text-align: center; font-weight: 600;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039;, headerText))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;table style=&amp;quot;width: 100%%; border-collapse: collapse; text-align: center; margin: 10px 0; background: transparent;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    table.insert(html, string.format([[&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 38%%; font-weight: 800; font-size: 92%%; color: #0f172a; padding: 2px 6px; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 24%%; padding: 2px; vertical-align: middle;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;span style=&amp;quot;background: %s; color: #ffffff; padding: 4px 10px; border-radius: 6px; font-weight: 900; font-size: 125%%; display: inline-block; letter-spacing: 1.5px; box-shadow: 0 2px 4px rgba(0,0,0,0.15);&amp;quot;&amp;gt;%s - %s&amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;font-size: 70%%; color: #64748b; margin-top: 4px; font-weight: 800; text-transform: uppercase;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&lt;br /&gt;
                %s&lt;br /&gt;
            &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 38%%; font-weight: 800; font-size: 92%%; color: #0f172a; padding: 2px 6px; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    ]], homeTeam, statusBg, homeScore, awayScore, status, (aggregate ~= &amp;quot;&amp;quot; and string.format(&#039;&amp;lt;div style=&amp;quot;font-size: 68%%; color: #475569; margin-top: 2px;&amp;quot;&amp;gt;(Agg: %s)&amp;lt;/div&amp;gt;&#039;, aggregate) or &amp;quot;&amp;quot;), awayTeam))&lt;br /&gt;
    &lt;br /&gt;
    if homeGoals ~= &amp;quot;&amp;quot; or awayGoals ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, string.format([[&lt;br /&gt;
            &amp;lt;tr style=&amp;quot;font-size: 75%%; color: #334155; vertical-align: top;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 6px; text-align: right; line-height: 1.4;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 0; font-size: 85%%;&amp;quot;&amp;gt;⚽&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 6px; text-align: left; line-height: 1.4;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        ]], homeGoals, awayGoals))&lt;br /&gt;
    end&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;/table&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    local function makeStatRow(label, hVal, aVal, isBold)&lt;br /&gt;
        if hVal ~= &amp;quot;&amp;quot; or aVal ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            local weight = isBold and &amp;quot;800&amp;quot; or &amp;quot;700&amp;quot;&lt;br /&gt;
            return string.format(&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;display: flex; justify-content: space-between; align-items: center; padding: 3px 0; border-bottom: 1px solid #f1f5f9;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;font-weight: %s; width: 30%%; text-align: right; color: #0f172a;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;color: #64748b; width: 40%%; text-align: center; font-size: 88%%;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;font-weight: %s; width: 30%%; text-align: left; color: #0f172a;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;/div&amp;gt;&#039;, &lt;br /&gt;
                weight, hVal ~= &amp;quot;&amp;quot; and hVal or &amp;quot;0&amp;quot;, label, weight, aVal ~= &amp;quot;&amp;quot; and aVal or &amp;quot;0&amp;quot;&lt;br /&gt;
            )&lt;br /&gt;
        end&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local function formatCards(yellow, red)&lt;br /&gt;
        local parts = {}&lt;br /&gt;
        if yellow ~= &amp;quot;&amp;quot; and yellow ~= &amp;quot;0&amp;quot; then&lt;br /&gt;
            table.insert(parts, string.format(&#039;%s &amp;lt;span style=&amp;quot;background: #eab308; color: #fff; padding: 1px 4px; border-radius: 3px; font-size: 75%%; font-weight: bold;&amp;quot;&amp;gt;K&amp;lt;/span&amp;gt;&#039;, yellow))&lt;br /&gt;
        end&lt;br /&gt;
        if red ~= &amp;quot;&amp;quot; and red ~= &amp;quot;0&amp;quot; then&lt;br /&gt;
            table.insert(parts, string.format(&#039;%s &amp;lt;span style=&amp;quot;background: #ef4444; color: #fff; padding: 1px 4px; border-radius: 3px; font-size: 75%%; font-weight: bold;&amp;quot;&amp;gt;M&amp;lt;/span&amp;gt;&#039;, red))&lt;br /&gt;
        end&lt;br /&gt;
        if #parts == 0 then return &amp;quot;&amp;quot; end&lt;br /&gt;
        return table.concat(parts, &amp;quot; &amp;amp;nbsp;&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local homeCardsFormatted = formatCards(homeYellow, homeRed)&lt;br /&gt;
    local awayCardsFormatted = formatCards(awayYellow, awayRed)&lt;br /&gt;
&lt;br /&gt;
    local hasStats = homePoss ~= &amp;quot;&amp;quot; or homeShotsOn ~= &amp;quot;&amp;quot; or homeXG ~= &amp;quot;&amp;quot; or homeCorners ~= &amp;quot;&amp;quot; or homeFouls ~= &amp;quot;&amp;quot; or homeCardsFormatted ~= &amp;quot;&amp;quot; or homePasses ~= &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    if hasStats then&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;border-top: 1px solid #e2e8f0; padding: 6px 10px; font-size: 75%%; background: #f8fafc;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;text-align: center; font-weight: 800; color: #334155; margin-bottom: 6px; font-size: 82%%; letter-spacing: 0.5px; text-transform: uppercase;&amp;quot;&amp;gt;STATISTIK PERTANDINGAN&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
        &lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Ekspektasi Gol (xG)&amp;quot;, homeXG, awayXG, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Penguasaan Bola&amp;quot;, homePoss, awayPoss, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Total Tembakan&amp;quot;, homeShotsTotal, awayShotsTotal))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Akurat&amp;quot;, homeShotsOn, awayShotsOn, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Meleset&amp;quot;, homeShotsOff, awayShotsOff))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Diblok&amp;quot;, homeShotsBlocked, awayShotsBlocked))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Total Operan&amp;quot;, homePasses, awayPasses))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Akurasi Operan&amp;quot;, homePassAcc, awayPassAcc))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tendangan Sudut&amp;quot;, homeCorners, awayCorners))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Offside&amp;quot;, homeOffsides, awayOffsides))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Penyelamatan Kiper&amp;quot;, homeSaves, awaySaves))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tekel Berhasil&amp;quot;, homeTackles, awayTackles))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Lemparan Dalam&amp;quot;, homeThrowIns, awayThrowIns))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Pelanggaran&amp;quot;, homeFouls, awayFouls))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Kartu Disiplin&amp;quot;, homeCardsFormatted, awayCardsFormatted, true))&lt;br /&gt;
        &lt;br /&gt;
        table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if venue ~= &amp;quot;&amp;quot; or referee ~= &amp;quot;&amp;quot; or attendance ~= &amp;quot;&amp;quot; or weather ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;border-top: 1px solid #e2e8f0; padding: 6px 8px; font-size: 70%%; color: #64748b; background: #ffffff; text-align: center; line-height: 1.5;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        local details = {}&lt;br /&gt;
        if venue ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Stadion:&amp;lt;/b&amp;gt; &amp;quot; .. venue) end&lt;br /&gt;
        if referee ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Wasit:&amp;lt;/b&amp;gt; &amp;quot; .. referee) end&lt;br /&gt;
        if attendance ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Penonton:&amp;lt;/b&amp;gt; &amp;quot; .. attendance) end&lt;br /&gt;
        if weather ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Cuaca:&amp;lt;/b&amp;gt; &amp;quot; .. weather) end&lt;br /&gt;
        table.insert(html, table.concat(details, &amp;quot; | &amp;quot;))&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    return table.concat(html, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Match_result&amp;diff=1447</id>
		<title>Templat:Match result</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Match_result&amp;diff=1447"/>
		<updated>2026-10-17T22:14:13Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: Melindungi &amp;quot;Templat:Match result&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:MatchSystem|detail}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Match_result&amp;diff=1446</id>
		<title>Templat:Match result</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Match_result&amp;diff=1446"/>
		<updated>2026-10-17T22:14:07Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: ←Membuat halaman berisi &amp;#039;&amp;lt;includeonly&amp;gt;{{#invoke:MatchSystem|detail}}&amp;lt;/includeonly&amp;gt;&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:MatchSystem|detail}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Match_row&amp;diff=1445</id>
		<title>Templat:Match row</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Match_row&amp;diff=1445"/>
		<updated>2026-10-17T22:12:50Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: Melindungi &amp;quot;Templat:Macth row&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:MatchSystem|row}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Match_row&amp;diff=1444</id>
		<title>Templat:Match row</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Match_row&amp;diff=1444"/>
		<updated>2026-10-17T22:12:45Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: ←Membuat halaman berisi &amp;#039;&amp;lt;includeonly&amp;gt;{{#invoke:MatchSystem|row}}&amp;lt;/includeonly&amp;gt;&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:MatchSystem|row}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Match_list&amp;diff=1443</id>
		<title>Templat:Match list</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Match_list&amp;diff=1443"/>
		<updated>2026-10-17T22:12:16Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: Melindungi &amp;quot;Templat:Match list&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:MatchSystem|container|judul={{{judul|Jadwal &amp;amp; Hasil Pertandingan}}}|content={{{1|{{{isi|}}}}}}}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Match_list&amp;diff=1442</id>
		<title>Templat:Match list</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Match_list&amp;diff=1442"/>
		<updated>2026-10-17T22:12:10Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: ←Membuat halaman berisi &amp;#039;&amp;lt;includeonly&amp;gt;{{#invoke:MatchSystem|container|judul={{{judul|Jadwal &amp;amp; Hasil Pertandingan}}}|content={{{1|{{{isi|}}}}}}}}&amp;lt;/includeonly&amp;gt;&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:MatchSystem|container|judul={{{judul|Jadwal &amp;amp; Hasil Pertandingan}}}|content={{{1|{{{isi|}}}}}}}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Modul:MatchSystem&amp;diff=1441</id>
		<title>Modul:MatchSystem</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Modul:MatchSystem&amp;diff=1441"/>
		<updated>2026-10-17T22:11:12Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: Melindungi &amp;quot;Modul:MatchSystem&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- 1. FUNGSI UNTUK DAFTAR LAGA (HASIL &amp;amp; JADWAL MENDATANG)&lt;br /&gt;
function p.row(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    local date = args.tanggal or args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
    local comp = args.kompetisi or args[2] or &amp;quot;&amp;quot;&lt;br /&gt;
    local home = args.tuan_rumah or args[3] or &amp;quot;&amp;quot;&lt;br /&gt;
    local scoreOrTime = args.skor_atau_waktu or args[4] or &amp;quot;vs&amp;quot;&lt;br /&gt;
    local away = args.tamu or args[5] or &amp;quot;&amp;quot;&lt;br /&gt;
    local resultType = string.lower(args.hasil or args[6] or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    local badgeStyle = &amp;quot;background: #3b82f6; color: #ffffff;&amp;quot;&lt;br /&gt;
    local badgeText = &amp;quot;VS&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    if resultType == &amp;quot;w&amp;quot; or resultType == &amp;quot;win&amp;quot; or resultType == &amp;quot;menang&amp;quot; or resultType == &amp;quot;m&amp;quot; then&lt;br /&gt;
        badgeStyle = &amp;quot;background: #22c55e; color: #ffffff;&amp;quot;&lt;br /&gt;
        badgeText = &amp;quot;M&amp;quot;&lt;br /&gt;
    elseif resultType == &amp;quot;l&amp;quot; or resultType == &amp;quot;loss&amp;quot; or resultType == &amp;quot;kalah&amp;quot; or resultType == &amp;quot;k&amp;quot; then&lt;br /&gt;
        badgeStyle = &amp;quot;background: #ef4444; color: #ffffff;&amp;quot;&lt;br /&gt;
        badgeText = &amp;quot;K&amp;quot;&lt;br /&gt;
    elseif resultType == &amp;quot;d&amp;quot; or resultType == &amp;quot;draw&amp;quot; or resultType == &amp;quot;seri&amp;quot; or resultType == &amp;quot;s&amp;quot; then&lt;br /&gt;
        badgeStyle = &amp;quot;background: #64748b; color: #ffffff;&amp;quot;&lt;br /&gt;
        badgeText = &amp;quot;S&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return string.format([[&lt;br /&gt;
&amp;lt;tr style=&amp;quot;border-bottom: 1px solid #f1f5f9; font-size: 75%%; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;td style=&amp;quot;padding: 4px 2px; color: #64748b; font-size: 90%%; width: 18%%;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td style=&amp;quot;padding: 4px 2px; font-weight: 600; color: #1e293b; width: 30%%; text-align: right;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td style=&amp;quot;padding: 4px 2px; width: 22%%;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span style=&amp;quot;font-weight: 800; color: #0f172a; display: inline-block; padding: 1px 4px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 4px;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td style=&amp;quot;padding: 4px 2px; font-weight: 600; color: #1e293b; width: 30%%; text-align: left;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td style=&amp;quot;padding: 4px 2px; width: 10%%;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span style=&amp;quot;%s padding: 1px 4px; border-radius: 3px; font-weight: 800; font-size: 80%%;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;]], date, home, scoreOrTime, away, badgeStyle, badgeText)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.container(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local title = args.judul or args.title or &amp;quot;Jadwal &amp;amp; Hasil Pertandingan&amp;quot;&lt;br /&gt;
    local content = args.content or args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    return string.format([[&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #cbd5e1; border-radius: 8px; background: #ffffff; overflow: hidden; margin: 6px 0; font-family: -apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, sans-serif;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background: #0f172a; color: #f8fafc; padding: 5px 8px; font-size: 80%%; font-weight: 700; text-align: center; letter-spacing: 0.5px;&amp;quot;&amp;gt;&lt;br /&gt;
        %s&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;table style=&amp;quot;width: 100%%; border-collapse: collapse; background: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
        %s&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;]], title, content)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- 2. FUNGSI UNTUK LAPORAN DETAIL MATCH (MATCH CENTER EKSLUSIF)&lt;br /&gt;
function p.detail(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    local derby = args.laga_spesial or args.derby or &amp;quot;&amp;quot;&lt;br /&gt;
    local comp = args.kompetisi or args.competition or &amp;quot;&amp;quot;&lt;br /&gt;
    local phase = args.fase or args.babak or &amp;quot;&amp;quot;&lt;br /&gt;
    local date = args.tanggal or args.date or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local venue = args.stadion or args.venue or &amp;quot;&amp;quot;&lt;br /&gt;
    local referee = args.wasit or args.referee or &amp;quot;&amp;quot;&lt;br /&gt;
    local attendance = args.penonton or args.attendance or &amp;quot;&amp;quot;&lt;br /&gt;
    local weather = args.cuaca or args.weather or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local homeTeam = args.tuan_rumah or args.home or &amp;quot;Tuan Rumah&amp;quot;&lt;br /&gt;
    local awayTeam = args.tamu or args.away or &amp;quot;Tamu&amp;quot;&lt;br /&gt;
    local homeScore = args.skor_home or args.home_score or &amp;quot;0&amp;quot;&lt;br /&gt;
    local awayScore = args.skor_away or args.away_score or &amp;quot;0&amp;quot;&lt;br /&gt;
    local status = args.status or &amp;quot;FT&amp;quot;&lt;br /&gt;
    local aggregate = args.agregat or args.aggregate or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local homeGoals = args.gol_home or args.home_goals or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayGoals = args.gol_away or args.away_goals or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- Statistik Komplit&lt;br /&gt;
    local homeXG = args.xg_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayXG = args.xg_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePoss = args.possession_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPoss = args.possession_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsTotal = args.shots_total_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsTotal = args.shots_total_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsOn = args.shots_on_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsOn = args.shots_on_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsOff = args.shots_off_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsOff = args.shots_off_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsBlocked = args.shots_blocked_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsBlocked = args.shots_blocked_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePasses = args.passes_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPasses = args.passes_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePassAcc = args.pass_acc_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPassAcc = args.pass_acc_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeCorners = args.corners_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayCorners = args.corners_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeOffsides = args.offsides_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayOffsides = args.offsides_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeSaves = args.saves_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awaySaves = args.saves_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeFouls = args.fouls_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayFouls = args.fouls_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeTackles = args.tackles_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayTackles = args.tackles_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeThrowIns = args.throwins_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayThrowIns = args.throwins_away or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local homeYellow = args.kartu_kuning_home or args.yellow_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayYellow = args.kartu_kuning_away or args.yellow_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeRed = args.kartu_merah_home or args.red_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayRed = args.kartu_merah_away or args.red_away or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local hScoreNum = tonumber(homeScore) or 0&lt;br /&gt;
    local aScoreNum = tonumber(awayScore) or 0&lt;br /&gt;
    local statusBg = &amp;quot;#6c757d&amp;quot;&lt;br /&gt;
    if hScoreNum &amp;gt; aScoreNum then&lt;br /&gt;
        statusBg = &amp;quot;#16a34a&amp;quot;&lt;br /&gt;
    elseif hScoreNum &amp;lt; aScoreNum then&lt;br /&gt;
        statusBg = &amp;quot;#dc2626&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local html = {}&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;div style=&amp;quot;border: 1px solid #cbd5e1; border-radius: 10px; background: #ffffff; overflow: hidden; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif; margin: 8px 0; box-shadow: 0 2px 6px rgba(0,0,0,0.08);&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    &lt;br /&gt;
    if derby ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, string.format(&#039;&amp;lt;div style=&amp;quot;background: linear-gradient(135deg, #0f172a 0%%, #1e1b4b 50%%, #312e81 100%%); color: #fbbf24; padding: 6px 8px; font-size: 85%%; text-align: center; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; border-bottom: 2px solid #fbbf24;&amp;quot;&amp;gt;🏆 %s 🏆&amp;lt;/div&amp;gt;&#039;, derby))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if comp ~= &amp;quot;&amp;quot; or date ~= &amp;quot;&amp;quot; or phase ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        local headerText = comp&lt;br /&gt;
        if phase ~= &amp;quot;&amp;quot; then headerText = (headerText ~= &amp;quot;&amp;quot; and (headerText .. &amp;quot; • &amp;quot;) or &amp;quot;&amp;quot;) .. phase end&lt;br /&gt;
        if date ~= &amp;quot;&amp;quot; then headerText = (headerText ~= &amp;quot;&amp;quot; and (headerText .. &amp;quot; • &amp;quot;) or &amp;quot;&amp;quot;) .. date end&lt;br /&gt;
        table.insert(html, string.format(&#039;&amp;lt;div style=&amp;quot;background: #1e293b; color: #cbd5e1; padding: 4px 8px; font-size: 78%%; text-align: center; font-weight: 600;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039;, headerText))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;table style=&amp;quot;width: 100%%; border-collapse: collapse; text-align: center; margin: 10px 0; background: transparent;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    table.insert(html, string.format([[&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 38%%; font-weight: 800; font-size: 92%%; color: #0f172a; padding: 2px 6px; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 24%%; padding: 2px; vertical-align: middle;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;span style=&amp;quot;background: %s; color: #ffffff; padding: 4px 10px; border-radius: 6px; font-weight: 900; font-size: 125%%; display: inline-block; letter-spacing: 1.5px; box-shadow: 0 2px 4px rgba(0,0,0,0.15);&amp;quot;&amp;gt;%s - %s&amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;font-size: 70%%; color: #64748b; margin-top: 4px; font-weight: 800; text-transform: uppercase;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&lt;br /&gt;
                %s&lt;br /&gt;
            &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 38%%; font-weight: 800; font-size: 92%%; color: #0f172a; padding: 2px 6px; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    ]], homeTeam, statusBg, homeScore, awayScore, status, (aggregate ~= &amp;quot;&amp;quot; and string.format(&#039;&amp;lt;div style=&amp;quot;font-size: 68%%; color: #475569; margin-top: 2px;&amp;quot;&amp;gt;(Agg: %s)&amp;lt;/div&amp;gt;&#039;, aggregate) or &amp;quot;&amp;quot;), awayTeam))&lt;br /&gt;
    &lt;br /&gt;
    if homeGoals ~= &amp;quot;&amp;quot; or awayGoals ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, string.format([[&lt;br /&gt;
            &amp;lt;tr style=&amp;quot;font-size: 75%%; color: #334155; vertical-align: top;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 6px; text-align: right; line-height: 1.4;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 0; font-size: 85%%;&amp;quot;&amp;gt;⚽&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 6px; text-align: left; line-height: 1.4;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        ]], homeGoals, awayGoals))&lt;br /&gt;
    end&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;/table&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    local function makeStatRow(label, hVal, aVal, isBold)&lt;br /&gt;
        if hVal ~= &amp;quot;&amp;quot; or aVal ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            local weight = isBold and &amp;quot;800&amp;quot; or &amp;quot;700&amp;quot;&lt;br /&gt;
            return string.format(&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;display: flex; justify-content: space-between; align-items: center; padding: 3px 0; border-bottom: 1px solid #f1f5f9;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;font-weight: %s; width: 30%%; text-align: right; color: #0f172a;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;color: #64748b; width: 40%%; text-align: center; font-size: 88%%;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;font-weight: %s; width: 30%%; text-align: left; color: #0f172a;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;/div&amp;gt;&#039;, &lt;br /&gt;
                weight, hVal ~= &amp;quot;&amp;quot; and hVal or &amp;quot;0&amp;quot;, label, weight, aVal ~= &amp;quot;&amp;quot; and aVal or &amp;quot;0&amp;quot;&lt;br /&gt;
            )&lt;br /&gt;
        end&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local function formatCards(yellow, red)&lt;br /&gt;
        local parts = {}&lt;br /&gt;
        if yellow ~= &amp;quot;&amp;quot; and yellow ~= &amp;quot;0&amp;quot; then&lt;br /&gt;
            table.insert(parts, string.format(&#039;%s &amp;lt;span style=&amp;quot;background: #eab308; color: #fff; padding: 1px 4px; border-radius: 3px; font-size: 75%%; font-weight: bold;&amp;quot;&amp;gt;K&amp;lt;/span&amp;gt;&#039;, yellow))&lt;br /&gt;
        end&lt;br /&gt;
        if red ~= &amp;quot;&amp;quot; and red ~= &amp;quot;0&amp;quot; then&lt;br /&gt;
            table.insert(parts, string.format(&#039;%s &amp;lt;span style=&amp;quot;background: #ef4444; color: #fff; padding: 1px 4px; border-radius: 3px; font-size: 75%%; font-weight: bold;&amp;quot;&amp;gt;M&amp;lt;/span&amp;gt;&#039;, red))&lt;br /&gt;
        end&lt;br /&gt;
        if #parts == 0 then return &amp;quot;&amp;quot; end&lt;br /&gt;
        return table.concat(parts, &amp;quot; &amp;amp;nbsp;&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local homeCardsFormatted = formatCards(homeYellow, homeRed)&lt;br /&gt;
    local awayCardsFormatted = formatCards(awayYellow, awayRed)&lt;br /&gt;
&lt;br /&gt;
    local hasStats = homePoss ~= &amp;quot;&amp;quot; or homeShotsOn ~= &amp;quot;&amp;quot; or homeXG ~= &amp;quot;&amp;quot; or homeCorners ~= &amp;quot;&amp;quot; or homeFouls ~= &amp;quot;&amp;quot; or homeCardsFormatted ~= &amp;quot;&amp;quot; or homePasses ~= &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    if hasStats then&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;border-top: 1px solid #e2e8f0; padding: 6px 10px; font-size: 75%%; background: #f8fafc;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;text-align: center; font-weight: 800; color: #334155; margin-bottom: 6px; font-size: 82%%; letter-spacing: 0.5px; text-transform: uppercase;&amp;quot;&amp;gt;STATISTIK PERTANDINGAN&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
        &lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Ekspektasi Gol (xG)&amp;quot;, homeXG, awayXG, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Penguasaan Bola&amp;quot;, homePoss, awayPoss, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Total Tembakan&amp;quot;, homeShotsTotal, awayShotsTotal))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Akurat&amp;quot;, homeShotsOn, awayShotsOn, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Meleset&amp;quot;, homeShotsOff, awayShotsOff))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Diblok&amp;quot;, homeShotsBlocked, awayShotsBlocked))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Total Operan&amp;quot;, homePasses, awayPasses))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Akurasi Operan&amp;quot;, homePassAcc, awayPassAcc))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tendangan Sudut&amp;quot;, homeCorners, awayCorners))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Offside&amp;quot;, homeOffsides, awayOffsides))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Penyelamatan Kiper&amp;quot;, homeSaves, awaySaves))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tekel Berhasil&amp;quot;, homeTackles, awayTackles))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Lemparan Dalam&amp;quot;, homeThrowIns, awayThrowIns))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Pelanggaran&amp;quot;, homeFouls, awayFouls))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Kartu Disiplin&amp;quot;, homeCardsFormatted, awayCardsFormatted, true))&lt;br /&gt;
        &lt;br /&gt;
        table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if venue ~= &amp;quot;&amp;quot; or referee ~= &amp;quot;&amp;quot; or attendance ~= &amp;quot;&amp;quot; or weather ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;border-top: 1px solid #e2e8f0; padding: 6px 8px; font-size: 70%%; color: #64748b; background: #ffffff; text-align: center; line-height: 1.5;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        local details = {}&lt;br /&gt;
        if venue ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Stadion:&amp;lt;/b&amp;gt; &amp;quot; ..&amp;quot; &amp;quot; .. venue) end&lt;br /&gt;
        if referee ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Wasit:&amp;lt;/b&amp;gt; &amp;quot; .. referee) end&lt;br /&gt;
        if attendance ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Penonton:&amp;lt;/b&amp;gt; &amp;quot; .. attendance) end&lt;br /&gt;
        if weather ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Cuaca:&amp;lt;/b&amp;gt; &amp;quot; .. weather) end&lt;br /&gt;
        table.insert(html, table.concat(details, &amp;quot; | &amp;quot;))&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    return table.concat(html, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Modul:MatchSystem&amp;diff=1440</id>
		<title>Modul:MatchSystem</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Modul:MatchSystem&amp;diff=1440"/>
		<updated>2026-10-17T22:11:04Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: ←Membuat halaman berisi &amp;#039;local p = {}  -- 1. FUNGSI UNTUK DAFTAR LAGA (HASIL &amp;amp; JADWAL MENDATANG) function p.row(frame)     local args = frame:getParent().args          local date = args.tanggal or args[1] or &amp;quot;&amp;quot;     local comp = args.kompetisi or args[2] or &amp;quot;&amp;quot;     local home = args.tuan_rumah or args[3] or &amp;quot;&amp;quot;     local scoreOrTime = args.skor_atau_waktu or args[4] or &amp;quot;vs&amp;quot;     local away = args.tamu or args[5] or &amp;quot;&amp;quot;     local resultType = string.lower(args.hasil or args[6] or &amp;quot;&amp;quot;)      loca...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- 1. FUNGSI UNTUK DAFTAR LAGA (HASIL &amp;amp; JADWAL MENDATANG)&lt;br /&gt;
function p.row(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    local date = args.tanggal or args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
    local comp = args.kompetisi or args[2] or &amp;quot;&amp;quot;&lt;br /&gt;
    local home = args.tuan_rumah or args[3] or &amp;quot;&amp;quot;&lt;br /&gt;
    local scoreOrTime = args.skor_atau_waktu or args[4] or &amp;quot;vs&amp;quot;&lt;br /&gt;
    local away = args.tamu or args[5] or &amp;quot;&amp;quot;&lt;br /&gt;
    local resultType = string.lower(args.hasil or args[6] or &amp;quot;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    local badgeStyle = &amp;quot;background: #3b82f6; color: #ffffff;&amp;quot;&lt;br /&gt;
    local badgeText = &amp;quot;VS&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    if resultType == &amp;quot;w&amp;quot; or resultType == &amp;quot;win&amp;quot; or resultType == &amp;quot;menang&amp;quot; or resultType == &amp;quot;m&amp;quot; then&lt;br /&gt;
        badgeStyle = &amp;quot;background: #22c55e; color: #ffffff;&amp;quot;&lt;br /&gt;
        badgeText = &amp;quot;M&amp;quot;&lt;br /&gt;
    elseif resultType == &amp;quot;l&amp;quot; or resultType == &amp;quot;loss&amp;quot; or resultType == &amp;quot;kalah&amp;quot; or resultType == &amp;quot;k&amp;quot; then&lt;br /&gt;
        badgeStyle = &amp;quot;background: #ef4444; color: #ffffff;&amp;quot;&lt;br /&gt;
        badgeText = &amp;quot;K&amp;quot;&lt;br /&gt;
    elseif resultType == &amp;quot;d&amp;quot; or resultType == &amp;quot;draw&amp;quot; or resultType == &amp;quot;seri&amp;quot; or resultType == &amp;quot;s&amp;quot; then&lt;br /&gt;
        badgeStyle = &amp;quot;background: #64748b; color: #ffffff;&amp;quot;&lt;br /&gt;
        badgeText = &amp;quot;S&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return string.format([[&lt;br /&gt;
&amp;lt;tr style=&amp;quot;border-bottom: 1px solid #f1f5f9; font-size: 75%%; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;td style=&amp;quot;padding: 4px 2px; color: #64748b; font-size: 90%%; width: 18%%;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td style=&amp;quot;padding: 4px 2px; font-weight: 600; color: #1e293b; width: 30%%; text-align: right;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td style=&amp;quot;padding: 4px 2px; width: 22%%;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span style=&amp;quot;font-weight: 800; color: #0f172a; display: inline-block; padding: 1px 4px; background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 4px;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td style=&amp;quot;padding: 4px 2px; font-weight: 600; color: #1e293b; width: 30%%; text-align: left;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td style=&amp;quot;padding: 4px 2px; width: 10%%;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;span style=&amp;quot;%s padding: 1px 4px; border-radius: 3px; font-weight: 800; font-size: 80%%;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;]], date, home, scoreOrTime, away, badgeStyle, badgeText)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.container(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    local title = args.judul or args.title or &amp;quot;Jadwal &amp;amp; Hasil Pertandingan&amp;quot;&lt;br /&gt;
    local content = args.content or args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    return string.format([[&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid #cbd5e1; border-radius: 8px; background: #ffffff; overflow: hidden; margin: 6px 0; font-family: -apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, sans-serif;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background: #0f172a; color: #f8fafc; padding: 5px 8px; font-size: 80%%; font-weight: 700; text-align: center; letter-spacing: 0.5px;&amp;quot;&amp;gt;&lt;br /&gt;
        %s&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;table style=&amp;quot;width: 100%%; border-collapse: collapse; background: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
        %s&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;]], title, content)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- 2. FUNGSI UNTUK LAPORAN DETAIL MATCH (MATCH CENTER EKSLUSIF)&lt;br /&gt;
function p.detail(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    local derby = args.laga_spesial or args.derby or &amp;quot;&amp;quot;&lt;br /&gt;
    local comp = args.kompetisi or args.competition or &amp;quot;&amp;quot;&lt;br /&gt;
    local phase = args.fase or args.babak or &amp;quot;&amp;quot;&lt;br /&gt;
    local date = args.tanggal or args.date or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local venue = args.stadion or args.venue or &amp;quot;&amp;quot;&lt;br /&gt;
    local referee = args.wasit or args.referee or &amp;quot;&amp;quot;&lt;br /&gt;
    local attendance = args.penonton or args.attendance or &amp;quot;&amp;quot;&lt;br /&gt;
    local weather = args.cuaca or args.weather or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local homeTeam = args.tuan_rumah or args.home or &amp;quot;Tuan Rumah&amp;quot;&lt;br /&gt;
    local awayTeam = args.tamu or args.away or &amp;quot;Tamu&amp;quot;&lt;br /&gt;
    local homeScore = args.skor_home or args.home_score or &amp;quot;0&amp;quot;&lt;br /&gt;
    local awayScore = args.skor_away or args.away_score or &amp;quot;0&amp;quot;&lt;br /&gt;
    local status = args.status or &amp;quot;FT&amp;quot;&lt;br /&gt;
    local aggregate = args.agregat or args.aggregate or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local homeGoals = args.gol_home or args.home_goals or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayGoals = args.gol_away or args.away_goals or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- Statistik Komplit&lt;br /&gt;
    local homeXG = args.xg_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayXG = args.xg_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePoss = args.possession_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPoss = args.possession_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsTotal = args.shots_total_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsTotal = args.shots_total_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsOn = args.shots_on_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsOn = args.shots_on_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsOff = args.shots_off_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsOff = args.shots_off_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsBlocked = args.shots_blocked_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsBlocked = args.shots_blocked_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePasses = args.passes_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPasses = args.passes_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePassAcc = args.pass_acc_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPassAcc = args.pass_acc_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeCorners = args.corners_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayCorners = args.corners_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeOffsides = args.offsides_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayOffsides = args.offsides_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeSaves = args.saves_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awaySaves = args.saves_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeFouls = args.fouls_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayFouls = args.fouls_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeTackles = args.tackles_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayTackles = args.tackles_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeThrowIns = args.throwins_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayThrowIns = args.throwins_away or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    local homeYellow = args.kartu_kuning_home or args.yellow_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayYellow = args.kartu_kuning_away or args.yellow_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeRed = args.kartu_merah_home or args.red_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayRed = args.kartu_merah_away or args.red_away or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    local hScoreNum = tonumber(homeScore) or 0&lt;br /&gt;
    local aScoreNum = tonumber(awayScore) or 0&lt;br /&gt;
    local statusBg = &amp;quot;#6c757d&amp;quot;&lt;br /&gt;
    if hScoreNum &amp;gt; aScoreNum then&lt;br /&gt;
        statusBg = &amp;quot;#16a34a&amp;quot;&lt;br /&gt;
    elseif hScoreNum &amp;lt; aScoreNum then&lt;br /&gt;
        statusBg = &amp;quot;#dc2626&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local html = {}&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;div style=&amp;quot;border: 1px solid #cbd5e1; border-radius: 10px; background: #ffffff; overflow: hidden; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif; margin: 8px 0; box-shadow: 0 2px 6px rgba(0,0,0,0.08);&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    &lt;br /&gt;
    if derby ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, string.format(&#039;&amp;lt;div style=&amp;quot;background: linear-gradient(135deg, #0f172a 0%%, #1e1b4b 50%%, #312e81 100%%); color: #fbbf24; padding: 6px 8px; font-size: 85%%; text-align: center; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; border-bottom: 2px solid #fbbf24;&amp;quot;&amp;gt;🏆 %s 🏆&amp;lt;/div&amp;gt;&#039;, derby))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if comp ~= &amp;quot;&amp;quot; or date ~= &amp;quot;&amp;quot; or phase ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        local headerText = comp&lt;br /&gt;
        if phase ~= &amp;quot;&amp;quot; then headerText = (headerText ~= &amp;quot;&amp;quot; and (headerText .. &amp;quot; • &amp;quot;) or &amp;quot;&amp;quot;) .. phase end&lt;br /&gt;
        if date ~= &amp;quot;&amp;quot; then headerText = (headerText ~= &amp;quot;&amp;quot; and (headerText .. &amp;quot; • &amp;quot;) or &amp;quot;&amp;quot;) .. date end&lt;br /&gt;
        table.insert(html, string.format(&#039;&amp;lt;div style=&amp;quot;background: #1e293b; color: #cbd5e1; padding: 4px 8px; font-size: 78%%; text-align: center; font-weight: 600;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039;, headerText))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;table style=&amp;quot;width: 100%%; border-collapse: collapse; text-align: center; margin: 10px 0; background: transparent;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    table.insert(html, string.format([[&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 38%%; font-weight: 800; font-size: 92%%; color: #0f172a; padding: 2px 6px; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 24%%; padding: 2px; vertical-align: middle;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;span style=&amp;quot;background: %s; color: #ffffff; padding: 4px 10px; border-radius: 6px; font-weight: 900; font-size: 125%%; display: inline-block; letter-spacing: 1.5px; box-shadow: 0 2px 4px rgba(0,0,0,0.15);&amp;quot;&amp;gt;%s - %s&amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;font-size: 70%%; color: #64748b; margin-top: 4px; font-weight: 800; text-transform: uppercase;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&lt;br /&gt;
                %s&lt;br /&gt;
            &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 38%%; font-weight: 800; font-size: 92%%; color: #0f172a; padding: 2px 6px; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    ]], homeTeam, statusBg, homeScore, awayScore, status, (aggregate ~= &amp;quot;&amp;quot; and string.format(&#039;&amp;lt;div style=&amp;quot;font-size: 68%%; color: #475569; margin-top: 2px;&amp;quot;&amp;gt;(Agg: %s)&amp;lt;/div&amp;gt;&#039;, aggregate) or &amp;quot;&amp;quot;), awayTeam))&lt;br /&gt;
    &lt;br /&gt;
    if homeGoals ~= &amp;quot;&amp;quot; or awayGoals ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, string.format([[&lt;br /&gt;
            &amp;lt;tr style=&amp;quot;font-size: 75%%; color: #334155; vertical-align: top;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 6px; text-align: right; line-height: 1.4;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 0; font-size: 85%%;&amp;quot;&amp;gt;⚽&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 6px; text-align: left; line-height: 1.4;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        ]], homeGoals, awayGoals))&lt;br /&gt;
    end&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;/table&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    local function makeStatRow(label, hVal, aVal, isBold)&lt;br /&gt;
        if hVal ~= &amp;quot;&amp;quot; or aVal ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            local weight = isBold and &amp;quot;800&amp;quot; or &amp;quot;700&amp;quot;&lt;br /&gt;
            return string.format(&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;display: flex; justify-content: space-between; align-items: center; padding: 3px 0; border-bottom: 1px solid #f1f5f9;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;font-weight: %s; width: 30%%; text-align: right; color: #0f172a;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;color: #64748b; width: 40%%; text-align: center; font-size: 88%%;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;font-weight: %s; width: 30%%; text-align: left; color: #0f172a;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;/div&amp;gt;&#039;, &lt;br /&gt;
                weight, hVal ~= &amp;quot;&amp;quot; and hVal or &amp;quot;0&amp;quot;, label, weight, aVal ~= &amp;quot;&amp;quot; and aVal or &amp;quot;0&amp;quot;&lt;br /&gt;
            )&lt;br /&gt;
        end&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local function formatCards(yellow, red)&lt;br /&gt;
        local parts = {}&lt;br /&gt;
        if yellow ~= &amp;quot;&amp;quot; and yellow ~= &amp;quot;0&amp;quot; then&lt;br /&gt;
            table.insert(parts, string.format(&#039;%s &amp;lt;span style=&amp;quot;background: #eab308; color: #fff; padding: 1px 4px; border-radius: 3px; font-size: 75%%; font-weight: bold;&amp;quot;&amp;gt;K&amp;lt;/span&amp;gt;&#039;, yellow))&lt;br /&gt;
        end&lt;br /&gt;
        if red ~= &amp;quot;&amp;quot; and red ~= &amp;quot;0&amp;quot; then&lt;br /&gt;
            table.insert(parts, string.format(&#039;%s &amp;lt;span style=&amp;quot;background: #ef4444; color: #fff; padding: 1px 4px; border-radius: 3px; font-size: 75%%; font-weight: bold;&amp;quot;&amp;gt;M&amp;lt;/span&amp;gt;&#039;, red))&lt;br /&gt;
        end&lt;br /&gt;
        if #parts == 0 then return &amp;quot;&amp;quot; end&lt;br /&gt;
        return table.concat(parts, &amp;quot; &amp;amp;nbsp;&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local homeCardsFormatted = formatCards(homeYellow, homeRed)&lt;br /&gt;
    local awayCardsFormatted = formatCards(awayYellow, awayRed)&lt;br /&gt;
&lt;br /&gt;
    local hasStats = homePoss ~= &amp;quot;&amp;quot; or homeShotsOn ~= &amp;quot;&amp;quot; or homeXG ~= &amp;quot;&amp;quot; or homeCorners ~= &amp;quot;&amp;quot; or homeFouls ~= &amp;quot;&amp;quot; or homeCardsFormatted ~= &amp;quot;&amp;quot; or homePasses ~= &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    if hasStats then&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;border-top: 1px solid #e2e8f0; padding: 6px 10px; font-size: 75%%; background: #f8fafc;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;text-align: center; font-weight: 800; color: #334155; margin-bottom: 6px; font-size: 82%%; letter-spacing: 0.5px; text-transform: uppercase;&amp;quot;&amp;gt;STATISTIK PERTANDINGAN&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
        &lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Ekspektasi Gol (xG)&amp;quot;, homeXG, awayXG, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Penguasaan Bola&amp;quot;, homePoss, awayPoss, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Total Tembakan&amp;quot;, homeShotsTotal, awayShotsTotal))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Akurat&amp;quot;, homeShotsOn, awayShotsOn, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Meleset&amp;quot;, homeShotsOff, awayShotsOff))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Diblok&amp;quot;, homeShotsBlocked, awayShotsBlocked))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Total Operan&amp;quot;, homePasses, awayPasses))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Akurasi Operan&amp;quot;, homePassAcc, awayPassAcc))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tendangan Sudut&amp;quot;, homeCorners, awayCorners))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Offside&amp;quot;, homeOffsides, awayOffsides))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Penyelamatan Kiper&amp;quot;, homeSaves, awaySaves))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tekel Berhasil&amp;quot;, homeTackles, awayTackles))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Lemparan Dalam&amp;quot;, homeThrowIns, awayThrowIns))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Pelanggaran&amp;quot;, homeFouls, awayFouls))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Kartu Disiplin&amp;quot;, homeCardsFormatted, awayCardsFormatted, true))&lt;br /&gt;
        &lt;br /&gt;
        table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if venue ~= &amp;quot;&amp;quot; or referee ~= &amp;quot;&amp;quot; or attendance ~= &amp;quot;&amp;quot; or weather ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;border-top: 1px solid #e2e8f0; padding: 6px 8px; font-size: 70%%; color: #64748b; background: #ffffff; text-align: center; line-height: 1.5;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        local details = {}&lt;br /&gt;
        if venue ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Stadion:&amp;lt;/b&amp;gt; &amp;quot; ..&amp;quot; &amp;quot; .. venue) end&lt;br /&gt;
        if referee ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Wasit:&amp;lt;/b&amp;gt; &amp;quot; .. referee) end&lt;br /&gt;
        if attendance ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Penonton:&amp;lt;/b&amp;gt; &amp;quot; .. attendance) end&lt;br /&gt;
        if weather ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Cuaca:&amp;lt;/b&amp;gt; &amp;quot; .. weather) end&lt;br /&gt;
        table.insert(html, table.concat(details, &amp;quot; | &amp;quot;))&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    return table.concat(html, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Hasil_pertandingan&amp;diff=1439</id>
		<title>Templat:Hasil pertandingan</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Hasil_pertandingan&amp;diff=1439"/>
		<updated>2026-10-17T21:59:47Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: Melindungi &amp;quot;Templat:Hasil pertandingan&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:MatchResult|main}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Hasil_pertandingan/doc&amp;diff=1438</id>
		<title>Templat:Hasil pertandingan/doc</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Hasil_pertandingan/doc&amp;diff=1438"/>
		<updated>2026-10-17T21:59:40Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: Melindungi &amp;quot;Templat:Hasil pertandingan/doc&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
Template &#039;&#039;&#039;{{tl|Hasil pertandingan}}&#039;&#039;&#039; digunakan untuk menampilkan papan skor ringkas, banner laga eksklusif, dan statistik rinci pertandingan terkini secara otomatis di Infobox klub atau artikel pertandingan.&lt;br /&gt;
&lt;br /&gt;
=== Sintaks Lengkap (Statistik Super Komplit) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Match result&lt;br /&gt;
| laga_spesial       = EL CLÁSICO&lt;br /&gt;
| kompetisi          = La Liga 2025–2026&lt;br /&gt;
| fase               = Pekan 32&lt;br /&gt;
| tanggal            = 11 Mei 2026&lt;br /&gt;
| tuan_rumah         = FC Barcelona&lt;br /&gt;
| tamu               = Real Madrid&lt;br /&gt;
| skor_home          = 3&lt;br /&gt;
| skor_away          = 2&lt;br /&gt;
| status             = FT&lt;br /&gt;
| agregat            = 4 - 3&lt;br /&gt;
| gol_home           = Lamine Yamal 18&#039;&amp;lt;br /&amp;gt;Raphinha 54&#039;&amp;lt;br /&amp;gt;Lewandowski 89&#039;&lt;br /&gt;
| gol_away           = Vinícius Jr. 29&#039;&amp;lt;br /&amp;gt;Bellingham 72&#039;&lt;br /&gt;
| xg_home            = 2.45&lt;br /&gt;
| xg_away            = 1.82&lt;br /&gt;
| possession_home    = 56%&lt;br /&gt;
| possession_away    = 44%&lt;br /&gt;
| shots_total_home   = 16&lt;br /&gt;
| shots_total_away   = 11&lt;br /&gt;
| shots_on_home      = 7&lt;br /&gt;
| shots_on_away      = 4&lt;br /&gt;
| shots_off_home     = 6&lt;br /&gt;
| shots_off_away     = 5&lt;br /&gt;
| shots_blocked_home = 3&lt;br /&gt;
| shots_blocked_away = 2&lt;br /&gt;
| passes_home        = 580&lt;br /&gt;
| passes_away        = 420&lt;br /&gt;
| pass_acc_home      = 89%&lt;br /&gt;
| pass_acc_away      = 84%&lt;br /&gt;
| corners_home       = 6&lt;br /&gt;
| corners_away       = 4&lt;br /&gt;
| offsides_home      = 2&lt;br /&gt;
| offsides_away      = 3&lt;br /&gt;
| saves_home         = 2&lt;br /&gt;
| saves_away         = 4&lt;br /&gt;
| tackles_home       = 14&lt;br /&gt;
| tackles_away       = 18&lt;br /&gt;
| throwins_home      = 15&lt;br /&gt;
| throwins_away      = 12&lt;br /&gt;
| fouls_home         = 11&lt;br /&gt;
| fouls_away         = 14&lt;br /&gt;
| kartu_kuning_home  = 2&lt;br /&gt;
| kartu_kuning_away  = 4&lt;br /&gt;
| kartu_merah_home   = 0&lt;br /&gt;
| kartu_merah_away   = 1&lt;br /&gt;
| stadion            = Spotify Camp Nou&lt;br /&gt;
| wasit              = Jesús Gil Manzano&lt;br /&gt;
| penonton           = 98.421&lt;br /&gt;
| cuaca              = Cerah, 21°C&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sintaks Ringkas (Hanya Skor &amp;amp; Gol Utama) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Match result&lt;br /&gt;
| kompetisi  = Liga 1 2026&lt;br /&gt;
| tuan_rumah = Persija&lt;br /&gt;
| tamu       = Persebaya&lt;br /&gt;
| skor_home  = 2&lt;br /&gt;
| skor_away  = 1&lt;br /&gt;
| gol_home   = Marko Simic 12&#039;, 45&#039;&lt;br /&gt;
| gol_away   = Bruno Moreira 68&#039; (pen.)&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fitur Unggulan ==&lt;br /&gt;
* &#039;&#039;&#039;Banner Laga Eksklusif:&#039;&#039;&#039; Menggunakan parameter `laga_spesial` (misal: &#039;&#039;El Clásico&#039;&#039;, &#039;&#039;Derbi Madura&#039;&#039;, &#039;&#039;Final UCL&#039;&#039;) untuk memicu banner emas &amp;amp; navy khusus di bagian atas.&lt;br /&gt;
* &#039;&#039;&#039;Ikon Disiplin &amp;amp; Gol Otomatis:&#039;&#039;&#039; Cukup masukkan angka pada `kartu_kuning_home` atau `kartu_merah_away`, sistem akan memformatnya otomatis dengan badge K (kuning) dan M (merah).&lt;br /&gt;
* &#039;&#039;&#039;Statistik Lanjutan (Opta/Sofascore Style):&#039;&#039;&#039; Mendukung xG, total operan, akurasi operan, tekel, hingga kondisi cuaca stadion.&lt;br /&gt;
* &#039;&#039;&#039;Responsif &amp;amp; Adaptif:&#039;&#039;&#039; Hanya statistik yang diisi yang akan muncul di layar. Parameter yang dikosongkan tidak akan merusak atau meninggalkan ruang kosong pada layout.&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Hasil_pertandingan/doc&amp;diff=1437</id>
		<title>Templat:Hasil pertandingan/doc</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Hasil_pertandingan/doc&amp;diff=1437"/>
		<updated>2026-10-17T21:59:29Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: /* Fitur Unggulan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
Template &#039;&#039;&#039;{{tl|Hasil pertandingan}}&#039;&#039;&#039; digunakan untuk menampilkan papan skor ringkas, banner laga eksklusif, dan statistik rinci pertandingan terkini secara otomatis di Infobox klub atau artikel pertandingan.&lt;br /&gt;
&lt;br /&gt;
=== Sintaks Lengkap (Statistik Super Komplit) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Match result&lt;br /&gt;
| laga_spesial       = EL CLÁSICO&lt;br /&gt;
| kompetisi          = La Liga 2025–2026&lt;br /&gt;
| fase               = Pekan 32&lt;br /&gt;
| tanggal            = 11 Mei 2026&lt;br /&gt;
| tuan_rumah         = FC Barcelona&lt;br /&gt;
| tamu               = Real Madrid&lt;br /&gt;
| skor_home          = 3&lt;br /&gt;
| skor_away          = 2&lt;br /&gt;
| status             = FT&lt;br /&gt;
| agregat            = 4 - 3&lt;br /&gt;
| gol_home           = Lamine Yamal 18&#039;&amp;lt;br /&amp;gt;Raphinha 54&#039;&amp;lt;br /&amp;gt;Lewandowski 89&#039;&lt;br /&gt;
| gol_away           = Vinícius Jr. 29&#039;&amp;lt;br /&amp;gt;Bellingham 72&#039;&lt;br /&gt;
| xg_home            = 2.45&lt;br /&gt;
| xg_away            = 1.82&lt;br /&gt;
| possession_home    = 56%&lt;br /&gt;
| possession_away    = 44%&lt;br /&gt;
| shots_total_home   = 16&lt;br /&gt;
| shots_total_away   = 11&lt;br /&gt;
| shots_on_home      = 7&lt;br /&gt;
| shots_on_away      = 4&lt;br /&gt;
| shots_off_home     = 6&lt;br /&gt;
| shots_off_away     = 5&lt;br /&gt;
| shots_blocked_home = 3&lt;br /&gt;
| shots_blocked_away = 2&lt;br /&gt;
| passes_home        = 580&lt;br /&gt;
| passes_away        = 420&lt;br /&gt;
| pass_acc_home      = 89%&lt;br /&gt;
| pass_acc_away      = 84%&lt;br /&gt;
| corners_home       = 6&lt;br /&gt;
| corners_away       = 4&lt;br /&gt;
| offsides_home      = 2&lt;br /&gt;
| offsides_away      = 3&lt;br /&gt;
| saves_home         = 2&lt;br /&gt;
| saves_away         = 4&lt;br /&gt;
| tackles_home       = 14&lt;br /&gt;
| tackles_away       = 18&lt;br /&gt;
| throwins_home      = 15&lt;br /&gt;
| throwins_away      = 12&lt;br /&gt;
| fouls_home         = 11&lt;br /&gt;
| fouls_away         = 14&lt;br /&gt;
| kartu_kuning_home  = 2&lt;br /&gt;
| kartu_kuning_away  = 4&lt;br /&gt;
| kartu_merah_home   = 0&lt;br /&gt;
| kartu_merah_away   = 1&lt;br /&gt;
| stadion            = Spotify Camp Nou&lt;br /&gt;
| wasit              = Jesús Gil Manzano&lt;br /&gt;
| penonton           = 98.421&lt;br /&gt;
| cuaca              = Cerah, 21°C&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sintaks Ringkas (Hanya Skor &amp;amp; Gol Utama) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Match result&lt;br /&gt;
| kompetisi  = Liga 1 2026&lt;br /&gt;
| tuan_rumah = Persija&lt;br /&gt;
| tamu       = Persebaya&lt;br /&gt;
| skor_home  = 2&lt;br /&gt;
| skor_away  = 1&lt;br /&gt;
| gol_home   = Marko Simic 12&#039;, 45&#039;&lt;br /&gt;
| gol_away   = Bruno Moreira 68&#039; (pen.)&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fitur Unggulan ==&lt;br /&gt;
* &#039;&#039;&#039;Banner Laga Eksklusif:&#039;&#039;&#039; Menggunakan parameter `laga_spesial` (misal: &#039;&#039;El Clásico&#039;&#039;, &#039;&#039;Derbi Madura&#039;&#039;, &#039;&#039;Final UCL&#039;&#039;) untuk memicu banner emas &amp;amp; navy khusus di bagian atas.&lt;br /&gt;
* &#039;&#039;&#039;Ikon Disiplin &amp;amp; Gol Otomatis:&#039;&#039;&#039; Cukup masukkan angka pada `kartu_kuning_home` atau `kartu_merah_away`, sistem akan memformatnya otomatis dengan badge K (kuning) dan M (merah).&lt;br /&gt;
* &#039;&#039;&#039;Statistik Lanjutan (Opta/Sofascore Style):&#039;&#039;&#039; Mendukung xG, total operan, akurasi operan, tekel, hingga kondisi cuaca stadion.&lt;br /&gt;
* &#039;&#039;&#039;Responsif &amp;amp; Adaptif:&#039;&#039;&#039; Hanya statistik yang diisi yang akan muncul di layar. Parameter yang dikosongkan tidak akan merusak atau meninggalkan ruang kosong pada layout.&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Hasil_pertandingan/doc&amp;diff=1436</id>
		<title>Templat:Hasil pertandingan/doc</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Hasil_pertandingan/doc&amp;diff=1436"/>
		<updated>2026-10-17T21:58:53Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: ←Membuat halaman berisi &amp;#039;{{Documentation subpage}} Template &amp;#039;&amp;#039;&amp;#039;{{tl|Hasil pertandingan}}&amp;#039;&amp;#039;&amp;#039; digunakan untuk menampilkan papan skor ringkas, banner laga eksklusif, dan statistik rinci pertandingan terkini secara otomatis di Infobox klub atau artikel pertandingan.  === Sintaks Lengkap (Statistik Super Komplit) === &amp;lt;pre&amp;gt; {{Match result | laga_spesial       = EL CLÁSICO | kompetisi          = La Liga 2025–2026 | fase               = Pekan 32 | tanggal            = 11 Mei 2026 | tuan_rumah...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
Template &#039;&#039;&#039;{{tl|Hasil pertandingan}}&#039;&#039;&#039; digunakan untuk menampilkan papan skor ringkas, banner laga eksklusif, dan statistik rinci pertandingan terkini secara otomatis di Infobox klub atau artikel pertandingan.&lt;br /&gt;
&lt;br /&gt;
=== Sintaks Lengkap (Statistik Super Komplit) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Match result&lt;br /&gt;
| laga_spesial       = EL CLÁSICO&lt;br /&gt;
| kompetisi          = La Liga 2025–2026&lt;br /&gt;
| fase               = Pekan 32&lt;br /&gt;
| tanggal            = 11 Mei 2026&lt;br /&gt;
| tuan_rumah         = FC Barcelona&lt;br /&gt;
| tamu               = Real Madrid&lt;br /&gt;
| skor_home          = 3&lt;br /&gt;
| skor_away          = 2&lt;br /&gt;
| status             = FT&lt;br /&gt;
| agregat            = 4 - 3&lt;br /&gt;
| gol_home           = Lamine Yamal 18&#039;&amp;lt;br /&amp;gt;Raphinha 54&#039;&amp;lt;br /&amp;gt;Lewandowski 89&#039;&lt;br /&gt;
| gol_away           = Vinícius Jr. 29&#039;&amp;lt;br /&amp;gt;Bellingham 72&#039;&lt;br /&gt;
| xg_home            = 2.45&lt;br /&gt;
| xg_away            = 1.82&lt;br /&gt;
| possession_home    = 56%&lt;br /&gt;
| possession_away    = 44%&lt;br /&gt;
| shots_total_home   = 16&lt;br /&gt;
| shots_total_away   = 11&lt;br /&gt;
| shots_on_home      = 7&lt;br /&gt;
| shots_on_away      = 4&lt;br /&gt;
| shots_off_home     = 6&lt;br /&gt;
| shots_off_away     = 5&lt;br /&gt;
| shots_blocked_home = 3&lt;br /&gt;
| shots_blocked_away = 2&lt;br /&gt;
| passes_home        = 580&lt;br /&gt;
| passes_away        = 420&lt;br /&gt;
| pass_acc_home      = 89%&lt;br /&gt;
| pass_acc_away      = 84%&lt;br /&gt;
| corners_home       = 6&lt;br /&gt;
| corners_away       = 4&lt;br /&gt;
| offsides_home      = 2&lt;br /&gt;
| offsides_away      = 3&lt;br /&gt;
| saves_home         = 2&lt;br /&gt;
| saves_away         = 4&lt;br /&gt;
| tackles_home       = 14&lt;br /&gt;
| tackles_away       = 18&lt;br /&gt;
| throwins_home      = 15&lt;br /&gt;
| throwins_away      = 12&lt;br /&gt;
| fouls_home         = 11&lt;br /&gt;
| fouls_away         = 14&lt;br /&gt;
| kartu_kuning_home  = 2&lt;br /&gt;
| kartu_kuning_away  = 4&lt;br /&gt;
| kartu_merah_home   = 0&lt;br /&gt;
| kartu_merah_away   = 1&lt;br /&gt;
| stadion            = Spotify Camp Nou&lt;br /&gt;
| wasit              = Jesús Gil Manzano&lt;br /&gt;
| penonton           = 98.421&lt;br /&gt;
| cuaca              = Cerah, 21°C&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sintaks Ringkas (Hanya Skor &amp;amp; Gol Utama) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Match result&lt;br /&gt;
| kompetisi  = Liga 1 2026&lt;br /&gt;
| tuan_rumah = Persija&lt;br /&gt;
| tamu       = Persebaya&lt;br /&gt;
| skor_home  = 2&lt;br /&gt;
| skor_away  = 1&lt;br /&gt;
| gol_home   = Marko Simic 12&#039;, 45&#039;&lt;br /&gt;
| gol_away   = Bruno Moreira 68&#039; (pen.)&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Fitur Unggulan ==&lt;br /&gt;
* &#039;&#039;&#039;Banner Laga Eksklusif:&#039;&#039;&#039; Menggunakan parameter `laga_spesial` (misal: &#039;&#039;El Clásico&#039;&#039;, &#039;&#039;Derbi Madura&#039;&#039;, &#039;&#039;Final UCL&#039;&#039;) untuk memicu banner emas &amp;amp; navy khusus di bagian atas.&lt;br /&gt;
* &#039;&#039;&#039;Ikon Disiplin &amp;amp; Gol Otomatis:&#039;&#039;&#039; Cukup masukkan angka pada `kartu_kuning_home` atau `kartu_merah_away`, sistem akan memformatnya otomatis dengan badge **K** (kuning) dan **M** (merah).&lt;br /&gt;
* &#039;&#039;&#039;Statistik Lanjutan (Opta/Sofascore Style):&#039;&#039;&#039; Mendukung xG (*Expected Goals*), total operan, akurasi operan, tekel, hingga kondisi cuaca stadion.&lt;br /&gt;
* &#039;&#039;&#039;Responsif &amp;amp; Adaptif:&#039;&#039;&#039; Hanya statistik yang diisi yang akan muncul di layar. Parameter yang dikosongkan tidak akan merusak atau meninggalkan ruang kosong pada layout.&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Hasil_pertandingan&amp;diff=1435</id>
		<title>Templat:Hasil pertandingan</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Hasil_pertandingan&amp;diff=1435"/>
		<updated>2026-10-17T21:58:23Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: ←Membuat halaman berisi &amp;#039;&amp;lt;includeonly&amp;gt;{{#invoke:MatchResult|main}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:MatchResult|main}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Modul:MatchResult&amp;diff=1434</id>
		<title>Modul:MatchResult</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Modul:MatchResult&amp;diff=1434"/>
		<updated>2026-10-17T21:56:23Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: Melindungi &amp;quot;Modul:MatchResult&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    -- Branding &amp;amp; Laga Eksklusif&lt;br /&gt;
    local derby = args.laga_spesial or args.derby or &amp;quot;&amp;quot;&lt;br /&gt;
    local comp = args.kompetisi or args.competition or &amp;quot;&amp;quot;&lt;br /&gt;
    local phase = args.fase or args.babak or &amp;quot;&amp;quot;&lt;br /&gt;
    local date = args.tanggal or args.date or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    -- Informasi Stadion &amp;amp; Info Tambahan&lt;br /&gt;
    local venue = args.stadion or args.venue or &amp;quot;&amp;quot;&lt;br /&gt;
    local referee = args.wasit or args.referee or &amp;quot;&amp;quot;&lt;br /&gt;
    local attendance = args.penonton or args.attendance or &amp;quot;&amp;quot;&lt;br /&gt;
    local weather = args.cuaca or args.weather or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    -- Tim &amp;amp; Papan Skor&lt;br /&gt;
    local homeTeam = args.tuan_rumah or args.home or &amp;quot;Tuan Rumah&amp;quot;&lt;br /&gt;
    local awayTeam = args.tamu or args.away or &amp;quot;Tamu&amp;quot;&lt;br /&gt;
    local homeScore = args.skor_home or args.home_score or &amp;quot;0&amp;quot;&lt;br /&gt;
    local awayScore = args.skor_away or args.away_score or &amp;quot;0&amp;quot;&lt;br /&gt;
    local status = args.status or &amp;quot;FT&amp;quot;&lt;br /&gt;
    local aggregate = args.agregat or args.aggregate or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- Detail Pencetak Gol &amp;amp; Kejadian&lt;br /&gt;
    local homeGoals = args.gol_home or args.home_goals or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayGoals = args.gol_away or args.away_goals or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- STATISTIK SUPER LENGKAP&lt;br /&gt;
    local homeXG = args.xg_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayXG = args.xg_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePoss = args.possession_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPoss = args.possession_away or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    -- Tembakan&lt;br /&gt;
    local homeShotsTotal = args.shots_total_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsTotal = args.shots_total_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsOn = args.shots_on_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsOn = args.shots_on_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsOff = args.shots_off_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsOff = args.shots_off_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsBlocked = args.shots_blocked_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsBlocked = args.shots_blocked_away or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- Operan &amp;amp; Penguasaan&lt;br /&gt;
    local homePasses = args.passes_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPasses = args.passes_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePassAcc = args.pass_acc_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPassAcc = args.pass_acc_away or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- Pertahanan &amp;amp; Pertandingan&lt;br /&gt;
    local homeCorners = args.corners_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayCorners = args.corners_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeOffsides = args.offsides_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayOffsides = args.offsides_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeSaves = args.saves_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awaySaves = args.saves_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeFouls = args.fouls_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayFouls = args.fouls_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeTackles = args.tackles_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayTackles = args.tackles_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeThrowIns = args.throwins_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayThrowIns = args.throwins_away or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    -- Kartu (Otomatis)&lt;br /&gt;
    local homeYellow = args.kartu_kuning_home or args.yellow_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayYellow = args.kartu_kuning_away or args.yellow_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeRed = args.kartu_merah_home or args.red_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayRed = args.kartu_merah_away or args.red_away or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- Penentuan Warna Indikator Hasil&lt;br /&gt;
    local hScoreNum = tonumber(homeScore) or 0&lt;br /&gt;
    local aScoreNum = tonumber(awayScore) or 0&lt;br /&gt;
    local statusBg = &amp;quot;#6c757d&amp;quot; -- Seri&lt;br /&gt;
    if hScoreNum &amp;gt; aScoreNum then&lt;br /&gt;
        statusBg = &amp;quot;#16a34a&amp;quot; -- Home Win&lt;br /&gt;
    elseif hScoreNum &amp;lt; aScoreNum then&lt;br /&gt;
        statusBg = &amp;quot;#dc2626&amp;quot; -- Away Win&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local html = {}&lt;br /&gt;
    &lt;br /&gt;
    -- Container Utama&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;div style=&amp;quot;border: 1px solid #cbd5e1; border-radius: 10px; background: #ffffff; overflow: hidden; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif; margin: 8px 0; box-shadow: 0 2px 6px rgba(0,0,0,0.08);&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    &lt;br /&gt;
    -- 1. HEADER EKSKLUSIF (Laga Spesial / Derby / Tournament)&lt;br /&gt;
    if derby ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, string.format(&#039;&amp;lt;div style=&amp;quot;background: linear-gradient(135deg, #0f172a 0%%, #1e1b4b 50%%, #312e81 100%%); color: #fbbf24; padding: 6px 8px; font-size: 85%%; text-align: center; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; border-bottom: 2px solid #fbbf24;&amp;quot;&amp;gt;🏆 %s 🏆&amp;lt;/div&amp;gt;&#039;, derby))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Header Kompetisi &amp;amp; Tanggal&lt;br /&gt;
    if comp ~= &amp;quot;&amp;quot; or date ~= &amp;quot;&amp;quot; or phase ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        local headerText = comp&lt;br /&gt;
        if phase ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            headerText = (headerText ~= &amp;quot;&amp;quot; and (headerText .. &amp;quot; • &amp;quot;) or &amp;quot;&amp;quot;) .. phase&lt;br /&gt;
        end&lt;br /&gt;
        if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            headerText = (headerText ~= &amp;quot;&amp;quot; and (headerText .. &amp;quot; • &amp;quot;) or &amp;quot;&amp;quot;) .. date&lt;br /&gt;
        end&lt;br /&gt;
        table.insert(html, string.format(&#039;&amp;lt;div style=&amp;quot;background: #1e293b; color: #cbd5e1; padding: 4px 8px; font-size: 78%%; text-align: center; font-weight: 600;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039;, headerText))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- 2. PAPAN SKOR UTAMA&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;table style=&amp;quot;width: 100%; border-collapse: collapse; text-align: center; margin: 10px 0; background: transparent;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    table.insert(html, string.format([[&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 38%%; font-weight: 800; font-size: 92%%; color: #0f172a; padding: 2px 6px; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 24%%; padding: 2px; vertical-align: middle;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;span style=&amp;quot;background: %s; color: #ffffff; padding: 4px 10px; border-radius: 6px; font-weight: 900; font-size: 125%%; display: inline-block; letter-spacing: 1.5px; box-shadow: 0 2px 4px rgba(0,0,0,0.15);&amp;quot;&amp;gt;%s - %s&amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;font-size: 70%%; color: #64748b; margin-top: 4px; font-weight: 800; text-transform: uppercase;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&lt;br /&gt;
                %s&lt;br /&gt;
            &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 38%%; font-weight: 800; font-size: 92%%; color: #0f172a; padding: 2px 6px; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    ]], homeTeam, statusBg, homeScore, awayScore, status, (aggregate ~= &amp;quot;&amp;quot; and string.format(&#039;&amp;lt;div style=&amp;quot;font-size: 68%%; color: #475569; margin-top: 2px;&amp;quot;&amp;gt;(Agg: %s)&amp;lt;/div&amp;gt;&#039;, aggregate) or &amp;quot;&amp;quot;), awayTeam))&lt;br /&gt;
    &lt;br /&gt;
    -- Baris Gol (Ikon Otomatis)&lt;br /&gt;
    if homeGoals ~= &amp;quot;&amp;quot; or awayGoals ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, string.format([[&lt;br /&gt;
            &amp;lt;tr style=&amp;quot;font-size: 75%%; color: #334155; vertical-align: top;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 6px; text-align: right; line-height: 1.4;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 0; font-size: 85%%;&amp;quot;&amp;gt;⚽&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 6px; text-align: left; line-height: 1.4;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        ]], homeGoals, awayGoals))&lt;br /&gt;
    end&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;/table&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    -- Helper Baris Statistik&lt;br /&gt;
    local function makeStatRow(label, hVal, aVal, isBold)&lt;br /&gt;
        if hVal ~= &amp;quot;&amp;quot; or aVal ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            local weight = isBold and &amp;quot;800&amp;quot; or &amp;quot;700&amp;quot;&lt;br /&gt;
            return string.format(&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;display: flex; justify-content: space-between; align-items: center; padding: 3px 0; border-bottom: 1px solid #f1f5f9;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;font-weight: %s; width: 30%%; text-align: right; color: #0f172a;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;color: #64748b; width: 40%%; text-align: center; font-size: 88%%;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;font-weight: %s; width: 30%%; text-align: left; color: #0f172a;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;/div&amp;gt;&#039;, &lt;br /&gt;
                weight, hVal ~= &amp;quot;&amp;quot; and hVal or &amp;quot;0&amp;quot;, label, weight, aVal ~= &amp;quot;&amp;quot; and aVal or &amp;quot;0&amp;quot;&lt;br /&gt;
            )&lt;br /&gt;
        end&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Format Kartu Otomatis&lt;br /&gt;
    local function formatCards(yellow, red)&lt;br /&gt;
        local parts = {}&lt;br /&gt;
        if yellow ~= &amp;quot;&amp;quot; and yellow ~= &amp;quot;0&amp;quot; then&lt;br /&gt;
            table.insert(parts, string.format(&#039;%s &amp;lt;span style=&amp;quot;background: #eab308; color: #fff; padding: 1px 4px; border-radius: 3px; font-size: 75%%; font-weight: bold;&amp;quot;&amp;gt;K&amp;lt;/span&amp;gt;&#039;, yellow))&lt;br /&gt;
        end&lt;br /&gt;
        if red ~= &amp;quot;&amp;quot; and red ~= &amp;quot;0&amp;quot; then&lt;br /&gt;
            table.insert(parts, string.format(&#039;%s &amp;lt;span style=&amp;quot;background: #ef4444; color: #fff; padding: 1px 4px; border-radius: 3px; font-size: 75%%; font-weight: bold;&amp;quot;&amp;gt;M&amp;lt;/span&amp;gt;&#039;, red))&lt;br /&gt;
        end&lt;br /&gt;
        if #parts == 0 then return &amp;quot;&amp;quot; end&lt;br /&gt;
        return table.concat(parts, &amp;quot; &amp;amp;nbsp;&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local homeCardsFormatted = formatCards(homeYellow, homeRed)&lt;br /&gt;
    local awayCardsFormatted = formatCards(awayYellow, awayRed)&lt;br /&gt;
&lt;br /&gt;
    -- 3. TABEL STATISTIK SUPER LENGKAP&lt;br /&gt;
    local hasStats = homePoss ~= &amp;quot;&amp;quot; or homeShotsOn ~= &amp;quot;&amp;quot; or homeXG ~= &amp;quot;&amp;quot; or homeCorners ~= &amp;quot;&amp;quot; or homeFouls ~= &amp;quot;&amp;quot; or homeCardsFormatted ~= &amp;quot;&amp;quot; or homePasses ~= &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    if hasStats then&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;border-top: 1px solid #e2e8f0; padding: 6px 10px; font-size: 75%%; background: #f8fafc;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;text-align: center; font-weight: 800; color: #334155; margin-bottom: 6px; font-size: 82%%; letter-spacing: 0.5px; text-transform: uppercase;&amp;quot;&amp;gt;STATISTIK PERTANDINGAN&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
        &lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Ekspektasi Gol (xG)&amp;quot;, homeXG, awayXG, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Penguasaan Bola&amp;quot;, homePoss, awayPoss, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Total Tembakan&amp;quot;, homeShotsTotal, awayShotsTotal))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Akurat&amp;quot;, homeShotsOn, awayShotsOn, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Meleset&amp;quot;, homeShotsOff, awayShotsOff))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Diblok&amp;quot;, homeShotsBlocked, awayShotsBlocked))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Total Operan&amp;quot;, homePasses, awayPasses))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Akurasi Operan&amp;quot;, homePassAcc, awayPassAcc))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tendangan Sudut&amp;quot;, homeCorners, awayCorners))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Offside&amp;quot;, homeOffsides, awayOffsides))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Penyelamatan Kiper&amp;quot;, homeSaves, awaySaves))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tekel Berhasil&amp;quot;, homeTackles, awayTackles))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Lemparan Dalam&amp;quot;, homeThrowIns, awayThrowIns))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Pelanggaran&amp;quot;, homeFouls, awayFouls))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Kartu Disiplin&amp;quot;, homeCardsFormatted, awayCardsFormatted, true))&lt;br /&gt;
        &lt;br /&gt;
        table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- 4. FOOTER INFORMASI LAGA&lt;br /&gt;
    if venue ~= &amp;quot;&amp;quot; or referee ~= &amp;quot;&amp;quot; or attendance ~= &amp;quot;&amp;quot; or weather ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;border-top: 1px solid #e2e8f0; padding: 6px 8px; font-size: 70%%; color: #64748b; background: #ffffff; text-align: center; line-height: 1.5;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        local details = {}&lt;br /&gt;
        if venue ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Stadion:&amp;lt;/b&amp;gt; &amp;quot; .. venue) end&lt;br /&gt;
        if referee ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Wasit:&amp;lt;/b&amp;gt; &amp;quot; .. referee) end&lt;br /&gt;
        if attendance ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Penonton:&amp;lt;/b&amp;gt; &amp;quot; .. attendance) end&lt;br /&gt;
        if weather ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Cuaca:&amp;lt;/b&amp;gt; &amp;quot; .. weather) end&lt;br /&gt;
        table.insert(html, table.concat(details, &amp;quot; | &amp;quot;))&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(html, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Modul:MatchResult&amp;diff=1433</id>
		<title>Modul:MatchResult</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Modul:MatchResult&amp;diff=1433"/>
		<updated>2026-10-17T21:56:17Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: ←Membuat halaman berisi &amp;#039;local p = {}  function p.main(frame)     local args = frame:getParent().args          -- Branding &amp;amp; Laga Eksklusif     local derby = args.laga_spesial or args.derby or &amp;quot;&amp;quot;     local comp = args.kompetisi or args.competition or &amp;quot;&amp;quot;     local phase = args.fase or args.babak or &amp;quot;&amp;quot;     local date = args.tanggal or args.date or &amp;quot;&amp;quot;          -- Informasi Stadion &amp;amp; Info Tambahan     local venue = args.stadion or args.venue or &amp;quot;&amp;quot;     local referee = args.wasit or args.refer...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    -- Branding &amp;amp; Laga Eksklusif&lt;br /&gt;
    local derby = args.laga_spesial or args.derby or &amp;quot;&amp;quot;&lt;br /&gt;
    local comp = args.kompetisi or args.competition or &amp;quot;&amp;quot;&lt;br /&gt;
    local phase = args.fase or args.babak or &amp;quot;&amp;quot;&lt;br /&gt;
    local date = args.tanggal or args.date or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    -- Informasi Stadion &amp;amp; Info Tambahan&lt;br /&gt;
    local venue = args.stadion or args.venue or &amp;quot;&amp;quot;&lt;br /&gt;
    local referee = args.wasit or args.referee or &amp;quot;&amp;quot;&lt;br /&gt;
    local attendance = args.penonton or args.attendance or &amp;quot;&amp;quot;&lt;br /&gt;
    local weather = args.cuaca or args.weather or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    -- Tim &amp;amp; Papan Skor&lt;br /&gt;
    local homeTeam = args.tuan_rumah or args.home or &amp;quot;Tuan Rumah&amp;quot;&lt;br /&gt;
    local awayTeam = args.tamu or args.away or &amp;quot;Tamu&amp;quot;&lt;br /&gt;
    local homeScore = args.skor_home or args.home_score or &amp;quot;0&amp;quot;&lt;br /&gt;
    local awayScore = args.skor_away or args.away_score or &amp;quot;0&amp;quot;&lt;br /&gt;
    local status = args.status or &amp;quot;FT&amp;quot;&lt;br /&gt;
    local aggregate = args.agregat or args.aggregate or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- Detail Pencetak Gol &amp;amp; Kejadian&lt;br /&gt;
    local homeGoals = args.gol_home or args.home_goals or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayGoals = args.gol_away or args.away_goals or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- STATISTIK SUPER LENGKAP&lt;br /&gt;
    local homeXG = args.xg_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayXG = args.xg_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePoss = args.possession_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPoss = args.possession_away or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    -- Tembakan&lt;br /&gt;
    local homeShotsTotal = args.shots_total_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsTotal = args.shots_total_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsOn = args.shots_on_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsOn = args.shots_on_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsOff = args.shots_off_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsOff = args.shots_off_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeShotsBlocked = args.shots_blocked_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayShotsBlocked = args.shots_blocked_away or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- Operan &amp;amp; Penguasaan&lt;br /&gt;
    local homePasses = args.passes_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPasses = args.passes_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homePassAcc = args.pass_acc_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayPassAcc = args.pass_acc_away or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- Pertahanan &amp;amp; Pertandingan&lt;br /&gt;
    local homeCorners = args.corners_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayCorners = args.corners_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeOffsides = args.offsides_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayOffsides = args.offsides_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeSaves = args.saves_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awaySaves = args.saves_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeFouls = args.fouls_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayFouls = args.fouls_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeTackles = args.tackles_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayTackles = args.tackles_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeThrowIns = args.throwins_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayThrowIns = args.throwins_away or &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    -- Kartu (Otomatis)&lt;br /&gt;
    local homeYellow = args.kartu_kuning_home or args.yellow_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayYellow = args.kartu_kuning_away or args.yellow_away or &amp;quot;&amp;quot;&lt;br /&gt;
    local homeRed = args.kartu_merah_home or args.red_home or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayRed = args.kartu_merah_away or args.red_away or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    -- Penentuan Warna Indikator Hasil&lt;br /&gt;
    local hScoreNum = tonumber(homeScore) or 0&lt;br /&gt;
    local aScoreNum = tonumber(awayScore) or 0&lt;br /&gt;
    local statusBg = &amp;quot;#6c757d&amp;quot; -- Seri&lt;br /&gt;
    if hScoreNum &amp;gt; aScoreNum then&lt;br /&gt;
        statusBg = &amp;quot;#16a34a&amp;quot; -- Home Win&lt;br /&gt;
    elseif hScoreNum &amp;lt; aScoreNum then&lt;br /&gt;
        statusBg = &amp;quot;#dc2626&amp;quot; -- Away Win&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local html = {}&lt;br /&gt;
    &lt;br /&gt;
    -- Container Utama&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;div style=&amp;quot;border: 1px solid #cbd5e1; border-radius: 10px; background: #ffffff; overflow: hidden; font-family: -apple-system, BlinkMacSystemFont, \&#039;Segoe UI\&#039;, Roboto, sans-serif; margin: 8px 0; box-shadow: 0 2px 6px rgba(0,0,0,0.08);&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    &lt;br /&gt;
    -- 1. HEADER EKSKLUSIF (Laga Spesial / Derby / Tournament)&lt;br /&gt;
    if derby ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, string.format(&#039;&amp;lt;div style=&amp;quot;background: linear-gradient(135deg, #0f172a 0%%, #1e1b4b 50%%, #312e81 100%%); color: #fbbf24; padding: 6px 8px; font-size: 85%%; text-align: center; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; border-bottom: 2px solid #fbbf24;&amp;quot;&amp;gt;🏆 %s 🏆&amp;lt;/div&amp;gt;&#039;, derby))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Header Kompetisi &amp;amp; Tanggal&lt;br /&gt;
    if comp ~= &amp;quot;&amp;quot; or date ~= &amp;quot;&amp;quot; or phase ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        local headerText = comp&lt;br /&gt;
        if phase ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            headerText = (headerText ~= &amp;quot;&amp;quot; and (headerText .. &amp;quot; • &amp;quot;) or &amp;quot;&amp;quot;) .. phase&lt;br /&gt;
        end&lt;br /&gt;
        if date ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            headerText = (headerText ~= &amp;quot;&amp;quot; and (headerText .. &amp;quot; • &amp;quot;) or &amp;quot;&amp;quot;) .. date&lt;br /&gt;
        end&lt;br /&gt;
        table.insert(html, string.format(&#039;&amp;lt;div style=&amp;quot;background: #1e293b; color: #cbd5e1; padding: 4px 8px; font-size: 78%%; text-align: center; font-weight: 600;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&#039;, headerText))&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- 2. PAPAN SKOR UTAMA&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;table style=&amp;quot;width: 100%; border-collapse: collapse; text-align: center; margin: 10px 0; background: transparent;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
    table.insert(html, string.format([[&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 38%%; font-weight: 800; font-size: 92%%; color: #0f172a; padding: 2px 6px; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 24%%; padding: 2px; vertical-align: middle;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;span style=&amp;quot;background: %s; color: #ffffff; padding: 4px 10px; border-radius: 6px; font-weight: 900; font-size: 125%%; display: inline-block; letter-spacing: 1.5px; box-shadow: 0 2px 4px rgba(0,0,0,0.15);&amp;quot;&amp;gt;%s - %s&amp;lt;/span&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;font-size: 70%%; color: #64748b; margin-top: 4px; font-weight: 800; text-transform: uppercase;&amp;quot;&amp;gt;%s&amp;lt;/div&amp;gt;&lt;br /&gt;
                %s&lt;br /&gt;
            &amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;width: 38%%; font-weight: 800; font-size: 92%%; color: #0f172a; padding: 2px 6px; vertical-align: middle;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    ]], homeTeam, statusBg, homeScore, awayScore, status, (aggregate ~= &amp;quot;&amp;quot; and string.format(&#039;&amp;lt;div style=&amp;quot;font-size: 68%%; color: #475569; margin-top: 2px;&amp;quot;&amp;gt;(Agg: %s)&amp;lt;/div&amp;gt;&#039;, aggregate) or &amp;quot;&amp;quot;), awayTeam))&lt;br /&gt;
    &lt;br /&gt;
    -- Baris Gol (Ikon Otomatis)&lt;br /&gt;
    if homeGoals ~= &amp;quot;&amp;quot; or awayGoals ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, string.format([[&lt;br /&gt;
            &amp;lt;tr style=&amp;quot;font-size: 75%%; color: #334155; vertical-align: top;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 6px; text-align: right; line-height: 1.4;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 0; font-size: 85%%;&amp;quot;&amp;gt;⚽&amp;lt;/td&amp;gt;&lt;br /&gt;
                &amp;lt;td style=&amp;quot;padding: 4px 6px; text-align: left; line-height: 1.4;&amp;quot;&amp;gt;%s&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;/tr&amp;gt;&lt;br /&gt;
        ]], homeGoals, awayGoals))&lt;br /&gt;
    end&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;/table&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    -- Helper Baris Statistik&lt;br /&gt;
    local function makeStatRow(label, hVal, aVal, isBold)&lt;br /&gt;
        if hVal ~= &amp;quot;&amp;quot; or aVal ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            local weight = isBold and &amp;quot;800&amp;quot; or &amp;quot;700&amp;quot;&lt;br /&gt;
            return string.format(&lt;br /&gt;
                &#039;&amp;lt;div style=&amp;quot;display: flex; justify-content: space-between; align-items: center; padding: 3px 0; border-bottom: 1px solid #f1f5f9;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;font-weight: %s; width: 30%%; text-align: right; color: #0f172a;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;color: #64748b; width: 40%%; text-align: center; font-size: 88%%;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;span style=&amp;quot;font-weight: %s; width: 30%%; text-align: left; color: #0f172a;&amp;quot;&amp;gt;%s&amp;lt;/span&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;/div&amp;gt;&#039;, &lt;br /&gt;
                weight, hVal ~= &amp;quot;&amp;quot; and hVal or &amp;quot;0&amp;quot;, label, weight, aVal ~= &amp;quot;&amp;quot; and aVal or &amp;quot;0&amp;quot;&lt;br /&gt;
            )&lt;br /&gt;
        end&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- Format Kartu Otomatis&lt;br /&gt;
    local function formatCards(yellow, red)&lt;br /&gt;
        local parts = {}&lt;br /&gt;
        if yellow ~= &amp;quot;&amp;quot; and yellow ~= &amp;quot;0&amp;quot; then&lt;br /&gt;
            table.insert(parts, string.format(&#039;%s &amp;lt;span style=&amp;quot;background: #eab308; color: #fff; padding: 1px 4px; border-radius: 3px; font-size: 75%%; font-weight: bold;&amp;quot;&amp;gt;K&amp;lt;/span&amp;gt;&#039;, yellow))&lt;br /&gt;
        end&lt;br /&gt;
        if red ~= &amp;quot;&amp;quot; and red ~= &amp;quot;0&amp;quot; then&lt;br /&gt;
            table.insert(parts, string.format(&#039;%s &amp;lt;span style=&amp;quot;background: #ef4444; color: #fff; padding: 1px 4px; border-radius: 3px; font-size: 75%%; font-weight: bold;&amp;quot;&amp;gt;M&amp;lt;/span&amp;gt;&#039;, red))&lt;br /&gt;
        end&lt;br /&gt;
        if #parts == 0 then return &amp;quot;&amp;quot; end&lt;br /&gt;
        return table.concat(parts, &amp;quot; &amp;amp;nbsp;&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local homeCardsFormatted = formatCards(homeYellow, homeRed)&lt;br /&gt;
    local awayCardsFormatted = formatCards(awayYellow, awayRed)&lt;br /&gt;
&lt;br /&gt;
    -- 3. TABEL STATISTIK SUPER LENGKAP&lt;br /&gt;
    local hasStats = homePoss ~= &amp;quot;&amp;quot; or homeShotsOn ~= &amp;quot;&amp;quot; or homeXG ~= &amp;quot;&amp;quot; or homeCorners ~= &amp;quot;&amp;quot; or homeFouls ~= &amp;quot;&amp;quot; or homeCardsFormatted ~= &amp;quot;&amp;quot; or homePasses ~= &amp;quot;&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    if hasStats then&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;border-top: 1px solid #e2e8f0; padding: 6px 10px; font-size: 75%%; background: #f8fafc;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;text-align: center; font-weight: 800; color: #334155; margin-bottom: 6px; font-size: 82%%; letter-spacing: 0.5px; text-transform: uppercase;&amp;quot;&amp;gt;STATISTIK PERTANDINGAN&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
        &lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Ekspektasi Gol (xG)&amp;quot;, homeXG, awayXG, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Penguasaan Bola&amp;quot;, homePoss, awayPoss, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Total Tembakan&amp;quot;, homeShotsTotal, awayShotsTotal))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Akurat&amp;quot;, homeShotsOn, awayShotsOn, true))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Meleset&amp;quot;, homeShotsOff, awayShotsOff))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tembakan Diblok&amp;quot;, homeShotsBlocked, awayShotsBlocked))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Total Operan&amp;quot;, homePasses, awayPasses))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Akurasi Operan&amp;quot;, homePassAcc, awayPassAcc))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tendangan Sudut&amp;quot;, homeCorners, awayCorners))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Offside&amp;quot;, homeOffsides, awayOffsides))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Penyelamatan Kiper&amp;quot;, homeSaves, awaySaves))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Tekel Berhasil&amp;quot;, homeTackles, awayTackles))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Lemparan Dalam&amp;quot;, homeThrowIns, awayThrowIns))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Pelanggaran&amp;quot;, homeFouls, awayFouls))&lt;br /&gt;
        table.insert(html, makeStatRow(&amp;quot;Kartu Disiplin&amp;quot;, homeCardsFormatted, awayCardsFormatted, true))&lt;br /&gt;
        &lt;br /&gt;
        table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    -- 4. FOOTER INFORMASI LAGA&lt;br /&gt;
    if venue ~= &amp;quot;&amp;quot; or referee ~= &amp;quot;&amp;quot; or attendance ~= &amp;quot;&amp;quot; or weather ~= &amp;quot;&amp;quot; then&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;div style=&amp;quot;border-top: 1px solid #e2e8f0; padding: 6px 8px; font-size: 70%%; color: #64748b; background: #ffffff; text-align: center; line-height: 1.5;&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        local details = {}&lt;br /&gt;
        if venue ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Stadion:&amp;lt;/b&amp;gt; &amp;quot; .. venue) end&lt;br /&gt;
        if referee ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Wasit:&amp;lt;/b&amp;gt; &amp;quot; .. referee) end&lt;br /&gt;
        if attendance ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Penonton:&amp;lt;/b&amp;gt; &amp;quot; .. attendance) end&lt;br /&gt;
        if weather ~= &amp;quot;&amp;quot; then table.insert(details, &amp;quot;&amp;lt;b&amp;gt;Cuaca:&amp;lt;/b&amp;gt; &amp;quot; .. weather) end&lt;br /&gt;
        table.insert(html, table.concat(details, &amp;quot; | &amp;quot;))&lt;br /&gt;
        table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    table.insert(html, &#039;&amp;lt;/div&amp;gt;&#039;)&lt;br /&gt;
&lt;br /&gt;
    return table.concat(html, &amp;quot;&amp;quot;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Jersey&amp;diff=1432</id>
		<title>Templat:Jersey</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Jersey&amp;diff=1432"/>
		<updated>2026-10-17T21:45:28Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: Melindungi &amp;quot;Templat:Jersey&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:Jersey|main}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Jersey/doc&amp;diff=1431</id>
		<title>Templat:Jersey/doc</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Jersey/doc&amp;diff=1431"/>
		<updated>2026-10-17T21:45:21Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: Melindungi &amp;quot;Templat:Jersey/doc&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
Template &#039;&#039;&#039;{{tl|Jersey}}&#039;&#039;&#039; digunakan pada Infobox klub sepak bola untuk menampilkan gambar kostum tim (Kandang, Tandang, dan Ketiga) secara berdampingan dan simetris.&lt;br /&gt;
&lt;br /&gt;
=== Sintaks ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Jersey&lt;br /&gt;
| home  = Nama_Gambar_Kandang.png&lt;br /&gt;
| away  = Nama_Gambar_Tandang.png&lt;br /&gt;
| third = Nama_Gambar_Ketiga.png&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atau menggunakan sintaks pendek:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Jersey|Gambar_Kandang.png|Gambar_Tandang.png|Gambar_Ketiga.png}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Contoh Penggunaan ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Code !! Hasil Tampilan&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Jersey|home=FCB_Home.png|away=FCB_Away.png}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; || Displays Kandang and Tandang side-by-side&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Contoh Implementasi di Infobox ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
| kostum = {{Jersey&lt;br /&gt;
  | home  = Barcelona_2026_Home.png&lt;br /&gt;
  | away  = Barcelona_2026_Away.png&lt;br /&gt;
  | third = Barcelona_2026_Third.png&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Keunggulan ==&lt;br /&gt;
* &#039;&#039;&#039;Responsif &amp;amp; Simetris:&#039;&#039;&#039; Menggunakan tabel transparan dengan lebar otomatis sehingga proporsional di tampilan seluler (HP).&lt;br /&gt;
* &#039;&#039;&#039;Otomatis Label Bahasa Indonesia:&#039;&#039;&#039; Menampilkan keterangan label &amp;quot;Kandang&amp;quot;, &amp;quot;Tandang&amp;quot;, dan &amp;quot;Ketiga&amp;quot; berukuran presisi (85%) di bawah masing-masing gambar.&lt;br /&gt;
* &#039;&#039;&#039;Pembersih Tag Otomatis:&#039;&#039;&#039; Dapat menerima nama berkas langsung tanpa perlu mengetik awalan `Berkas:` atau `File:`.&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Jersey/doc&amp;diff=1430</id>
		<title>Templat:Jersey/doc</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Jersey/doc&amp;diff=1430"/>
		<updated>2026-10-17T21:45:14Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: ←Membuat halaman berisi &amp;#039;{{Documentation subpage}} Template &amp;#039;&amp;#039;&amp;#039;{{tl|Jersey}}&amp;#039;&amp;#039;&amp;#039; digunakan pada Infobox klub sepak bola untuk menampilkan gambar kostum tim (Kandang, Tandang, dan Ketiga) secara berdampingan dan simetris.  === Sintaks === &amp;lt;pre&amp;gt; {{Jersey | home  = Nama_Gambar_Kandang.png | away  = Nama_Gambar_Tandang.png | third = Nama_Gambar_Ketiga.png }} &amp;lt;/pre&amp;gt;  Atau menggunakan sintaks pendek: &amp;lt;pre&amp;gt; {{Jersey|Gambar_Kandang.png|Gambar_Tandang.png|Gambar_Ketiga.png}} &amp;lt;/pre&amp;gt;  === Contoh Pen...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
Template &#039;&#039;&#039;{{tl|Jersey}}&#039;&#039;&#039; digunakan pada Infobox klub sepak bola untuk menampilkan gambar kostum tim (Kandang, Tandang, dan Ketiga) secara berdampingan dan simetris.&lt;br /&gt;
&lt;br /&gt;
=== Sintaks ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Jersey&lt;br /&gt;
| home  = Nama_Gambar_Kandang.png&lt;br /&gt;
| away  = Nama_Gambar_Tandang.png&lt;br /&gt;
| third = Nama_Gambar_Ketiga.png&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Atau menggunakan sintaks pendek:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Jersey|Gambar_Kandang.png|Gambar_Tandang.png|Gambar_Ketiga.png}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Contoh Penggunaan ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Code !! Hasil Tampilan&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Jersey|home=FCB_Home.png|away=FCB_Away.png}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; || Displays Kandang and Tandang side-by-side&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Contoh Implementasi di Infobox ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
| kostum = {{Jersey&lt;br /&gt;
  | home  = Barcelona_2026_Home.png&lt;br /&gt;
  | away  = Barcelona_2026_Away.png&lt;br /&gt;
  | third = Barcelona_2026_Third.png&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Keunggulan ==&lt;br /&gt;
* &#039;&#039;&#039;Responsif &amp;amp; Simetris:&#039;&#039;&#039; Menggunakan tabel transparan dengan lebar otomatis sehingga proporsional di tampilan seluler (HP).&lt;br /&gt;
* &#039;&#039;&#039;Otomatis Label Bahasa Indonesia:&#039;&#039;&#039; Menampilkan keterangan label &amp;quot;Kandang&amp;quot;, &amp;quot;Tandang&amp;quot;, dan &amp;quot;Ketiga&amp;quot; berukuran presisi (85%) di bawah masing-masing gambar.&lt;br /&gt;
* &#039;&#039;&#039;Pembersih Tag Otomatis:&#039;&#039;&#039; Dapat menerima nama berkas langsung tanpa perlu mengetik awalan `Berkas:` atau `File:`.&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Jersey&amp;diff=1429</id>
		<title>Templat:Jersey</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Jersey&amp;diff=1429"/>
		<updated>2026-10-17T21:44:34Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: ←Membuat halaman berisi &amp;#039;&amp;lt;includeonly&amp;gt;{{#invoke:Jersey|main}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:Jersey|main}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Modul:Jersey&amp;diff=1428</id>
		<title>Modul:Jersey</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Modul:Jersey&amp;diff=1428"/>
		<updated>2026-10-17T21:44:02Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: Melindungi &amp;quot;Modul:Jersey&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    local homeImg = args.home or args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayImg = args.away or args[2] or &amp;quot;&amp;quot;&lt;br /&gt;
    local thirdImg = args.third or args[3] or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    if homeImg == &amp;quot;&amp;quot; and awayImg == &amp;quot;&amp;quot; and thirdImg == &amp;quot;&amp;quot; then&lt;br /&gt;
        return &#039;&amp;lt;span style=&amp;quot;color:red; font-weight:bold;&amp;quot;&amp;gt;[Gambar Jersey Harus Diisi]&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local items = {}&lt;br /&gt;
&lt;br /&gt;
    -- Helper function tanpa div bermasalah &amp;amp; bersih dari syntax parser error&lt;br /&gt;
    local function makeCol(img, label)&lt;br /&gt;
        if img and img ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            -- Bersihkan awalan Berkas: atau File: jika pengguna tidak sengaja mengetiknya&lt;br /&gt;
            img = img:gsub(&amp;quot;^Berkas:&amp;quot;, &amp;quot;&amp;quot;):gsub(&amp;quot;^File:&amp;quot;, &amp;quot;&amp;quot;):gsub(&amp;quot;^berkas:&amp;quot;, &amp;quot;&amp;quot;):gsub(&amp;quot;^file:&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
            &lt;br /&gt;
            return string.format(&lt;br /&gt;
                &#039;&amp;lt;td style=&amp;quot;text-align: center; vertical-align: bottom; width: 33%%; padding: 4px 2px;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
                &#039;[[Berkas:%s|100px|center|alt=%s]]&#039; ..&lt;br /&gt;
                &#039;&amp;lt;small style=&amp;quot;display: block; font-size: 85%%; font-weight: bold; margin-top: 4px;&amp;quot;&amp;gt;%s&amp;lt;/small&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;/td&amp;gt;&#039;,&lt;br /&gt;
                img, label, label&lt;br /&gt;
            )&lt;br /&gt;
        end&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if homeImg ~= &amp;quot;&amp;quot; then table.insert(items, makeCol(homeImg, &amp;quot;Kandang&amp;quot;)) end&lt;br /&gt;
    if awayImg ~= &amp;quot;&amp;quot; then table.insert(items, makeCol(awayImg, &amp;quot;Tandang&amp;quot;)) end&lt;br /&gt;
    if thirdImg ~= &amp;quot;&amp;quot; then table.insert(items, makeCol(thirdImg, &amp;quot;Ketiga&amp;quot;)) end&lt;br /&gt;
&lt;br /&gt;
    -- Output tabel transparan murni yang aman bagi parser MediaWiki&lt;br /&gt;
    return string.format(&lt;br /&gt;
        &#039;&amp;lt;table style=&amp;quot;width: 100%%; margin: 0 auto; border-collapse: collapse; background: transparent;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;tr&amp;gt;%s&amp;lt;/tr&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;/table&amp;gt;&#039;,&lt;br /&gt;
        table.concat(items, &amp;quot;&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Modul:Jersey&amp;diff=1427</id>
		<title>Modul:Jersey</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Modul:Jersey&amp;diff=1427"/>
		<updated>2026-10-17T21:43:56Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: ←Membuat halaman berisi &amp;#039;local p = {}  function p.main(frame)     local args = frame:getParent().args          local homeImg = args.home or args[1] or &amp;quot;&amp;quot;     local awayImg = args.away or args[2] or &amp;quot;&amp;quot;     local thirdImg = args.third or args[3] or &amp;quot;&amp;quot;      if homeImg == &amp;quot;&amp;quot; and awayImg == &amp;quot;&amp;quot; and thirdImg == &amp;quot;&amp;quot; then         return &amp;#039;&amp;lt;span style=&amp;quot;color:red; font-weight:bold;&amp;quot;&amp;gt;[Gambar Jersey Harus Diisi]&amp;lt;/span&amp;gt;&amp;#039;     end      local items = {}      -- Helper function tanpa div bermasalah &amp;amp; bersih...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
    local args = frame:getParent().args&lt;br /&gt;
    &lt;br /&gt;
    local homeImg = args.home or args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
    local awayImg = args.away or args[2] or &amp;quot;&amp;quot;&lt;br /&gt;
    local thirdImg = args.third or args[3] or &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    if homeImg == &amp;quot;&amp;quot; and awayImg == &amp;quot;&amp;quot; and thirdImg == &amp;quot;&amp;quot; then&lt;br /&gt;
        return &#039;&amp;lt;span style=&amp;quot;color:red; font-weight:bold;&amp;quot;&amp;gt;[Gambar Jersey Harus Diisi]&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local items = {}&lt;br /&gt;
&lt;br /&gt;
    -- Helper function tanpa div bermasalah &amp;amp; bersih dari syntax parser error&lt;br /&gt;
    local function makeCol(img, label)&lt;br /&gt;
        if img and img ~= &amp;quot;&amp;quot; then&lt;br /&gt;
            -- Bersihkan awalan Berkas: atau File: jika pengguna tidak sengaja mengetiknya&lt;br /&gt;
            img = img:gsub(&amp;quot;^Berkas:&amp;quot;, &amp;quot;&amp;quot;):gsub(&amp;quot;^File:&amp;quot;, &amp;quot;&amp;quot;):gsub(&amp;quot;^berkas:&amp;quot;, &amp;quot;&amp;quot;):gsub(&amp;quot;^file:&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
            &lt;br /&gt;
            return string.format(&lt;br /&gt;
                &#039;&amp;lt;td style=&amp;quot;text-align: center; vertical-align: bottom; width: 33%%; padding: 4px 2px;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
                &#039;[[Berkas:%s|100px|center|alt=%s]]&#039; ..&lt;br /&gt;
                &#039;&amp;lt;small style=&amp;quot;display: block; font-size: 85%%; font-weight: bold; margin-top: 4px;&amp;quot;&amp;gt;%s&amp;lt;/small&amp;gt;&#039; ..&lt;br /&gt;
                &#039;&amp;lt;/td&amp;gt;&#039;,&lt;br /&gt;
                img, label, label&lt;br /&gt;
            )&lt;br /&gt;
        end&lt;br /&gt;
        return &amp;quot;&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if homeImg ~= &amp;quot;&amp;quot; then table.insert(items, makeCol(homeImg, &amp;quot;Kandang&amp;quot;)) end&lt;br /&gt;
    if awayImg ~= &amp;quot;&amp;quot; then table.insert(items, makeCol(awayImg, &amp;quot;Tandang&amp;quot;)) end&lt;br /&gt;
    if thirdImg ~= &amp;quot;&amp;quot; then table.insert(items, makeCol(thirdImg, &amp;quot;Ketiga&amp;quot;)) end&lt;br /&gt;
&lt;br /&gt;
    -- Output tabel transparan murni yang aman bagi parser MediaWiki&lt;br /&gt;
    return string.format(&lt;br /&gt;
        &#039;&amp;lt;table style=&amp;quot;width: 100%%; margin: 0 auto; border-collapse: collapse; background: transparent;&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;tr&amp;gt;%s&amp;lt;/tr&amp;gt;&#039; ..&lt;br /&gt;
        &#039;&amp;lt;/table&amp;gt;&#039;,&lt;br /&gt;
        table.concat(items, &amp;quot;&amp;quot;)&lt;br /&gt;
    )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Cristiano_Ronaldo&amp;diff=1426</id>
		<title>Cristiano Ronaldo</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Cristiano_Ronaldo&amp;diff=1426"/>
		<updated>2026-10-17T21:36:40Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: /* */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SHORTDESC:Pemain sepak bola profesional asal Portugal}}&lt;br /&gt;
{{Hatnote|Pemain sepak bola dalam artikel ini menggunakan cara penamaan Portugis. Nama keluarga pertama nya adalah dos Santos dan nama keluarga kedua nya adalah Aveiro.}}&lt;br /&gt;
{{Infobox pemain sepak bola&lt;br /&gt;
| Nama = Cristiano Ronaldo &lt;br /&gt;
| image = Cristiano Ronaldo 2018.jpg&lt;br /&gt;
| image_caption = Ronaldo saat membela tim nasional Portugal pada tahun 2018&lt;br /&gt;
| image2 = Cristiano Ronaldo Croatia v Portugal 2 July 2026-075 (cropped).jpg&lt;br /&gt;
| image2_caption = Ronaldo sekarang pada tahun 2026&lt;br /&gt;
| Nama lengkap = Cristiano Ronaldo dos Santos Aveiro&lt;br /&gt;
| Tanggal_lahir = {{Tanggal lahir dan umur|1985|2|5}}&lt;br /&gt;
| Tempat_lahir = [[Funchal]], [[Madeira]], [[Portugal]]&lt;br /&gt;
| Jumlah_anak = {{Children|6|Lihat di bawah}}&lt;br /&gt;
| Anak =&lt;br /&gt;
{{List|Cristiano Ronaldo Jr.| Angel dos Santos Aveiro|Alana Martina dos Santos Aveiro|Bella Esmeralda|Eva Maria Dos Santos|Mateo Ronaldo}}&lt;br /&gt;
| Orang_tua = {{list|José Diniz Aveiro (ayah)|Maria Dolores dos Santos Aveiro (ibu)}}&lt;br /&gt;
| Saudara_kandung = {{list|Hugo Aveiro|Liliana Catia Aveiro|Elma Aveiro}}&lt;br /&gt;
| Pasangan = {{Pernikahan|Georgina Rodríguez|2026}}&lt;br /&gt;
| Tinggi = 1,87 m&lt;br /&gt;
| Posisi_bermain = [[Penyerang (sepak bola)|Penyerang]]&lt;br /&gt;
| Klub_saat_ini = [[Al-Nassr FC|Al-Nassr]]&lt;br /&gt;
| Nomor_punggung = 7&lt;br /&gt;
| Karier_junior = &lt;br /&gt;
{{Infobox pemain sepak bola/baris|tahun=1992–1995|klub=[[Andorinha]]}}&lt;br /&gt;
{{Infobox pemain sepak bola/baris|tahun=1995–1997|klub=[[CD Nacional|Nacional]]}}&lt;br /&gt;
{{Infobox pemain sepak bola/baris|tahun=1997–2002|klub=[[Sporting CP]]}}&lt;br /&gt;
| Karier_senior = &lt;br /&gt;
{{Infobox pemain sepak bola/baris|tahun=2002–2003|klub=[[Sporting CP B]]|tampil=2|gol=0|assist=0}}&lt;br /&gt;
{{Infobox pemain sepak bola/baris|tahun=2002–2003|klub=[[Sporting CP]]|tampil=25|gol=3|assist=1}}&lt;br /&gt;
{{Infobox pemain sepak bola/baris|tahun=2003–2009|klub=[[Manchester United F.C.|Manchester United]]|tampil=196|gol=84|assist=34}}&lt;br /&gt;
{{Infobox pemain sepak bola/baris|tahun=2009–2018|klub=[[Real Madrid CF|Real Madrid]]|tampil=292|gol=311|assist=85}}&lt;br /&gt;
{{Infobox pemain sepak bola/baris|tahun=2018–2021|klub=[[Juventus FC|Juventus]]|tampil=98|gol=101|assist=22}}&lt;br /&gt;
{{Infobox pemain sepak bola/baris|tahun=2021–2022|klub=[[Manchester United F.C.|Manchester United]]|tampil=40|gol=19|assist=3}}&lt;br /&gt;
{{Infobox pemain sepak bola/baris|tahun=2023–|klub=[[Al-Nassr FC|Al-Nassr]]|tampil=65|gol=58|assist=15}}&lt;br /&gt;
| Tim_nasional = &lt;br /&gt;
{{Infobox pemain sepak bola/baris|tahun=2001|klub=[[Tim nasional U-15 Portugal|Portugal U-15]]|tampil=9|gol=7|assist=2}}&lt;br /&gt;
{{Infobox pemain sepak bola/baris|tahun=2001–2002|klub=[[Tim nasional U-17 Portugal|Portugal U-17]]|tampil=7|gol=5|assist=1}}&lt;br /&gt;
{{Infobox pemain sepak bola/baris|tahun=2003|klub=[[Tim nasional U-20 Portugal|Portugal U-20]]|tampil=5|gol=1|assist=0}}&lt;br /&gt;
{{Infobox pemain sepak bola/baris|tahun=2002–2003|klub=[[Tim nasional U-21 Portugal|Portugal U-21]]|tampil=6|gol=1|assist=2}}&lt;br /&gt;
{{Infobox pemain sepak bola/baris|tahun=2004|klub=[[Tim nasional U-23 Portugal|Portugal U-23]]|tampil=3|gol=2|assist=1}}&lt;br /&gt;
{{Infobox pemain sepak bola/baris|tahun=2003–|klub=[[Tim nasional sepak bola Portugal|Portugal]]|tampil=216|gol=135|assist=36}}&lt;br /&gt;
| Prestasi = &lt;br /&gt;
{{Infobox pemain sepak bola/prestasi|[[Sporting CP]]|[[Supertaça Cândido de Oliveira]]|2002}}&lt;br /&gt;
{{Infobox pemain sepak bola/prestasi|[[Manchester United F.C.|Manchester United]]|[[Liga Utama Inggris]]|2006–07, 2007–08, 2008–09}}&lt;br /&gt;
{{Infobox pemain sepak bola/prestasi|[[Manchester United F.C.|Manchester United]]|[[Piala FA]]|2003–04}}&lt;br /&gt;
{{Infobox pemain sepak bola/prestasi|[[Manchester United F.C.|Manchester United]]|[[Piala EFL]]|2005–06, 2008–09}}&lt;br /&gt;
{{Infobox pemain sepak bola/prestasi|[[Manchester United F.C.|Manchester United]]|[[Community Shield FA]]|2007}}&lt;br /&gt;
{{Infobox pemain sepak bola/prestasi|[[Manchester United F.C.|Manchester United]]|[[Liga Champions UEFA]]|2007–08}}&lt;br /&gt;
{{Infobox pemain sepak bola/prestasi|[[Manchester United F.C.|Manchester United]]|[[Piala Dunia Antarklub FIFA]]|2008}}&lt;br /&gt;
{{Infobox pemain sepak bola/prestasi|[[Real Madrid CF|Real Madrid]]|[[La Liga]]|2011–12, 2016–17}}&lt;br /&gt;
{{Infobox pemain sepak bola/prestasi|[[Real Madrid CF|Real Madrid]]|[[Copa del Rey]]|2010–11, 2013–14}}&lt;br /&gt;
{{Infobox pemain sepak bola/prestasi|[[Real Madrid CF|Real Madrid]]|[[Supercopa de España]]|2012, 2017}}&lt;br /&gt;
{{Infobox pemain sepak bola/prestasi|[[Real Madrid CF|Real Madrid]]|[[Liga Champions UEFA]]|2013–14, 2015–16, 2016–17, 2017–18}}&lt;br /&gt;
{{Infobox pemain sepak bola/prestasi|[[Real Madrid CF|Real Madrid]]|[[Piala Super UEFA]]|2014, 2017}}&lt;br /&gt;
{{Infobox pemain sepak bola/prestasi|[[Real Madrid CF|Real Madrid]]|[[Piala Dunia Antarklub FIFA]]|2014, 2016, 2017}}&lt;br /&gt;
{{Infobox pemain sepak bola/prestasi|[[Juventus FC|Juventus]]|[[Serie A]]|2018–19, 2019–20}}&lt;br /&gt;
{{Infobox pemain sepak bola/prestasi|[[Juventus FC|Juventus]]|[[Coppa Italia]]|2020–21}}&lt;br /&gt;
{{Infobox pemain sepak bola/prestasi|[[Juventus FC|Juventus]]|[[Supercoppa Italiana]]|2018, 2020}}&lt;br /&gt;
{{Infobox pemain sepak bola/prestasi|[[Al-Nassr FC|Al-Nassr]]|[[Kejuaraan Klub Arab]]|2023}}&lt;br /&gt;
{{Infobox pemain sepak bola/prestasi|[[Tim nasional sepak bola Portugal|Portugal]]|[[Kejuaraan Eropa UEFA]]|2016}}&lt;br /&gt;
{{Infobox pemain sepak bola/prestasi|[[Tim nasional sepak bola Portugal|Portugal]]|[[Liga Negara UEFA]]|2018–19}}&lt;br /&gt;
{{Infobox pemain sepak bola/prestasi|Individual|[[Ballon d&#039;Or]]|2008, 2013, 2014, 2016, 2017}}&lt;br /&gt;
{{Infobox pemain sepak bola/prestasi|Individual|[[Sepatu Emas Eropa]]|2007–08, 2010–11, 2013–14, 2014–15}}&lt;br /&gt;
| Catatan = Tampilan, gol, dan assist klub senior dihitung dari liga domestik saja dan akurat per Oktober 2026.&lt;br /&gt;
----&lt;br /&gt;
{{Ciutkan&lt;br /&gt;
|judul=Tampilkan rincian&lt;br /&gt;
|sembunyi=ya&lt;br /&gt;
|1=&lt;br /&gt;
{{Infobox rincian media sosial/Header&lt;br /&gt;
| akurat = 11 Oktober 2026&lt;br /&gt;
| ig_ikut = 680 Jt&lt;br /&gt;
| yt_sub = 83,5 Jt&lt;br /&gt;
| Instagram_username = cristiano&lt;br /&gt;
| YouTube = https://youtube.com/@cristiano?si=JhvyvpriHxaoIgnL&lt;br /&gt;
| estimasi = ya&lt;br /&gt;
| pembaruan = 11 Oktober 2026&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Cristiano Ronaldo dos Santos Aveiro&#039;&#039;&#039; ({{lahir|1985|2|5}}) adalah seorang [[pemain sepak bola profesional]] asal [[Portugal]] yang bermain sebagai [[penyerang (sepak bola)|penyerang]] dan menjabat sebagai kapten bagi klub Liga Profesional Saudi [[Al-Nassr FC|Al-Nassr]] serta [[tim nasional sepak bola Portugal|tim nasional Portugal]]. Luas dianggap sebagai salah satu pemain terhebat sepanjang masa, Ronaldo telah memenangkan lima penghargaan [[Ballon d&#039;Or]] dan empat [[Sepatu Emas Eropa]], yang merupakan rekor terbanyak untuk pemain Eropa. Ia telah memenangkan 33 trofi sepanjang kariernya, termasuk tujuh gelar [[liga (sepak bola)|liga]], lima [[Liga Champions UEFA]], satu [[Kejuaraan Eropa UEFA]], dan satu [[Liga Negara UEFA]]. Ronaldo memegang rekor sebagai pencetak gol terbanyak di Liga Champions UEFA (140 gol) dan Kejuaraan Eropa UEFA (14 gol), serta pencetak gol internasional terbanyak sepanjang sejarah sepak bola pria.&lt;br /&gt;
&lt;br /&gt;
== Kehidupan awal ==&lt;br /&gt;
Cristiano Ronaldo dos Santos Aveiro lahir di [[Santo António]], sebuah lingkungan di [[Funchal]], [[Madeira]], [[Portugal]], anak bungsu dari pasangan Maria Dolores dos Santos Viveiros da Aveiro, seorang juru masak, dan José Dinis Aveiro, seorang tukang kebun paruh waktu dan pengurus kit klub sepak bola. Nama tengah keduanya, &amp;quot;Ronaldo&amp;quot;, dipilih untuk menghormati aktor dan calon Presiden Amerika Serikat [[Ronald Reagan]], yang merupakan favorit ayahnya. Ia memiliki seorang kakak laki-laki bernama Hugo, serta dua kakak perempuan bernama Elma dan Liliana Cátia. Keluarganya hidup dalam kemiskinan; Ronaldo berbagi kamar tidur kecil dengan semua saudaranya.&lt;br /&gt;
&lt;br /&gt;
Saat berusia sepuluh tahun, bakat sepak bolanya mulai terlihat jelas. Klub lokal [[Andorinha]] adalah klub pertamanya, di mana ia bermain dari tahun 1992 hingga 1995. Setelah itu, ia bergabung dengan [[CD Nacional|Nacional]] selama dua musim sebelum menjalani masa uji coba dan kemudian bergabung dengan akademi muda [[Sporting CP]] pada tahun 1997.&lt;br /&gt;
&lt;br /&gt;
== Karier klub ==&lt;br /&gt;
=== Sporting CP ===&lt;br /&gt;
Ronaldo bergabung dengan jajaran pemain muda [[Sporting CP]] di Alcochete. Ia menjadi satu-satunya pemain dalam sejarah Sporting yang bermain untuk tim U-16, U-17, U-18, tim B, dan tim utama dalam satu musim yang sama. Pada usia 16 tahun, ia dipromosikan ke tim utama oleh manajer [[Laszlo Bölöni]]. Ia melakukan debut profesionalnya di [[Primeira Liga]] pada 7 Oktober 2002, melawan [[Moreirense FC|Moreirense]], di mana ia mencetak dua gol dalam kemenangan 3-0. Performa gemilangnya menarik perhatian manajer [[Manchester United F.C.|Manchester United]], [[Sir Alex Ferguson]], pada Agustus 2003 ketika Sporting mengalahkan United 3-1 dalam pertandingan peresmian Stadion [[Estádio José Alvalade]].&lt;br /&gt;
&lt;br /&gt;
=== Manchester United (Periode Pertama) ===&lt;br /&gt;
Ronaldo bergabung dengan [[Manchester United F.C.|Manchester United]] seharga £12,24 juta pada musim panas 2003, menjadikannya pemain remaja termahal di sepak bola Inggris pada saat itu. Ia meminta nomor punggung 28, tetapi Ferguson bersikeras memberinya nomor punggung 7, yang sebelumnya dikenakan oleh legenda klub seperti [[George Best]], [[Eric Cantona]], dan [[David Beckham]]. &lt;br /&gt;
&lt;br /&gt;
Di bawah bimbingan Ferguson, kemampuan teknis dan fisik Ronaldo berkembang pesat. Ia membantu United memenangkan tiga gelar [[Liga Utama Inggris]] berturut-turut (2006–2009), [[Piala FA]], dan [[Liga Champions UEFA]] pada musim 2007–2008, di mana ia mencetak gol di pertandingan final melawan [[Chelsea F.C.|Chelsea]] dan dinobatkan sebagai [[Pemain Terbaik Dunia FIFA]] serta meraih [[Ballon d&#039;Or]] pertamanya pada tahun 2008.&lt;br /&gt;
&lt;br /&gt;
=== Real Madrid ===&lt;br /&gt;
Pada musim panas 2009, Ronaldo pindah ke [[Real Madrid CF|Real Madrid]] dengan nilai transfer rekor dunia sebesar £80 juta (€94 juta). Ia diperkenalkan di [[Stadion Santiago Bernabéu]] di hadapan 80.000 penggemar. Selama sembilan tahun di Spanyol, ia menjadi pencetak gol sepanjang masa klub dengan torehan 450 gol di semua kompetisi.&lt;br /&gt;
&lt;br /&gt;
Bersama Real Madrid, Ronaldo memenangkan dua gelar [[La Liga]], dua [[Copa del Rey]], dan empat trofi [[Liga Champions UEFA]] (termasuk tiga gelar beruntun dari 2016 hingga 2018). Ia juga memenangkan empat tambahan penghargaan [[Ballon d&#039;Or]] (2013, 2014, 2016, dan 2017) dan mencetak rekor gol dalam satu musim Liga Champions (17 gol pada musim 2013–2014).&lt;br /&gt;
&lt;br /&gt;
=== Juventus ===&lt;br /&gt;
Pada Juli 2018, Ronaldo menandatangani kontrak dengan klub Italia [[Juventus FC|Juventus]] senilai €100 juta. Dalam tiga musim di Turin, ia memenangkan dua gelar [[Serie A]], satu [[Coppa Italia]], dan dua [[Supercoppa Italiana]]. Ia mencetak 101 gol dalam 134 penampilan di semua kompetisi, menjadikannya pemain tercepat yang mencapai 100 gol untuk klub tersebut.&lt;br /&gt;
&lt;br /&gt;
=== Manchester United (Periode Kedua) ===&lt;br /&gt;
Pada Agustus 2021, Ronaldo kembali ke [[Manchester United F.C.|Manchester United]] di bawah asuhan [[Ole Gunnar Solskjær]]. Pada musim 2021–2022, ia menjadi pencetak gol terbanyak klub dengan 24 gol di semua kompetisi. Namun, pada paruh pertama musim berikutnya di bawah manajer [[Erik ten Hag]], hubungannya dengan klub memburuk, yang berujung pada pemutusan kontrak bersama pada November 2022.&lt;br /&gt;
&lt;br /&gt;
=== Al-Nassr ===&lt;br /&gt;
Pada Januari 2023, Ronaldo bergabung dengan klub Arab Saudi [[Al-Nassr FC|Al-Nassr]] dengan kontrak fantastis. Ia langsung memberikan dampak instan dengan mencetak banyak gol dan memecahkan rekor gol terbanyak dalam satu musim [[Liga Profesional Saudi]] (35 gol pada musim 2023–2024), serta membantu klub menjuarai [[Kejuaraan Klub Arab]].&lt;br /&gt;
&lt;br /&gt;
== Karier internasional ==&lt;br /&gt;
Ronaldo melakukan debut internasional senior untuk [[tim nasional sepak bola Portugal]] pada Agustus 2003 dalam pertandingan persahabatan melawan [[Kazakstan]]. Ia mewakili Portugal di 11 turnamen besar (lima [[Piala Dunia FIFA]] dan enam [[Kejuaraan Eropa UEFA]]), mencetak gol di setiap turnamen tersebut.&lt;br /&gt;
&lt;br /&gt;
Puncak karier internasionalnya terjadi pada [[Piala Eropa 2016]], di mana ia memimpin Portugal meraih gelar mayor pertama mereka, meskipun ia harus ditarik keluar pada babak pertama pertandingan final akibat cedera. Ia juga memenangkan [[Liga Negara UEFA]] 2019 dan dinobatkan sebagai pencetak gol internasional pria terbanyak sepanjang masa.&lt;br /&gt;
&lt;br /&gt;
== Statistik karier ==&lt;br /&gt;
=== Klub ===&lt;br /&gt;
&#039;&#039;Per Oktober 2026.&#039;&#039;&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Klub&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot; | Musim&lt;br /&gt;
! colspan=&amp;quot;3&amp;quot; | Liga Domestik&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Piala Domestik&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Piala Liga&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Kontinental&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Lainnya&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot; | Total&lt;br /&gt;
|-&lt;br /&gt;
! Divisi !! Tampil !! Gol !! Tampil !! Gol !! Tampil !! Gol !! Tampil !! Gol !! Tampil !! Gol !! Tampil !! Gol&lt;br /&gt;
|-&lt;br /&gt;
| [[Sporting CP B]]&lt;br /&gt;
| 2002–2003 || [[Segunda Liga]] || 2 || 0 || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || 2 || 0&lt;br /&gt;
|-&lt;br /&gt;
| [[Sporting CP]]&lt;br /&gt;
| 2002–2003 || [[Primeira Liga]] || 25 || 3 || 3 || 2 || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || 3 || 0 || 1 || 0 || 32 || 5&lt;br /&gt;
|-&lt;br /&gt;
! Total Sporting CP !! 27 !! 3 !! 3 !! 2 !! 0 !! 0 !! 3 !! 0 !! 1 !! 0 !! 34 !! 5&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;7&amp;quot; | [[Manchester United F.C.|Manchester United]]&lt;br /&gt;
| 2003–2004 || rowspan=&amp;quot;6&amp;quot; | [[Liga Utama Inggris]] || 29 || 4 || 5 || 2 || 1 || 0 || 5 || 0 || 0 || 0 || 40 || 6&lt;br /&gt;
|-&lt;br /&gt;
| 2004–2005 || 33 || 5 || 7 || 4 || 2 || 0 || 8 || 1 || 0 || 0 || 50 || 10&lt;br /&gt;
|-&lt;br /&gt;
| 2005–2006 || 33 || 9 || 2 || 0 || 4 || 2 || 8 || 1 || 0 || 0 || 47 || 12&lt;br /&gt;
|-&lt;br /&gt;
| 2006–2007 || 34 || 17 || 7 || 3 || 1 || 0 || 11 || 3 || 0 || 0 || 53 || 23&lt;br /&gt;
|-&lt;br /&gt;
| 2007–2008 || 34 || 31 || 3 || 3 || 0 || 0 || 11 || 8 || 1 || 0 || 49 || 42&lt;br /&gt;
|-&lt;br /&gt;
| 2008–2009 || 33 || 18 || 2 || 1 || 4 || 2 || 12 || 4 || 2 || 1 || 53 || 26&lt;br /&gt;
|-&lt;br /&gt;
! Total MU (1) !! 196 !! 84 !! 26 !! 13 !! 12 !! 4 !! 55 !! 17 !! 3 !! 1 !! 292 || 119&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;10&amp;quot; | [[Real Madrid CF|Real Madrid]]&lt;br /&gt;
| 2009–2010 || rowspan=&amp;quot;9&amp;quot; | [[La Liga]] || 29 || 26 || 0 || 0 || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || 6 || 7 || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || 35 || 33&lt;br /&gt;
|-&lt;br /&gt;
| 2010–2011 || 34 || 40 || 8 || 7 || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || 12 || 6 || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || 54 || 53&lt;br /&gt;
|-&lt;br /&gt;
| 2011–2012 || 38 || 46 || 5 || 3 || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || 10 || 10 || 2 || 1 || 55 || 60&lt;br /&gt;
|-&lt;br /&gt;
| 2012–2013 || 34 || 34 || 7 || 7 || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || 12 || 12 || 2 || 2 || 55 || 55&lt;br /&gt;
|-&lt;br /&gt;
| 2013–2014 || 30 || 31 || 6 || 3 || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || 11 || 17 || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || 47 || 51&lt;br /&gt;
|-&lt;br /&gt;
| 2014–2015 || 35 || 48 || 2 || 1 || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || 12 || 10 || 3 || 2 || 52 || 61&lt;br /&gt;
|-&lt;br /&gt;
| 2015–2016 || 36 || 35 || 0 || 0 || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || 12 || 16 || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || 48 || 51&lt;br /&gt;
|-&lt;br /&gt;
| 2016–2017 || 29 || 25 || 2 || 1 || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || 13 || 12 || 4 || 4 || 48 || 42&lt;br /&gt;
|-&lt;br /&gt;
| 2017–2018 || 27 || 26 || 0 || 0 || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || 13 || 15 || 4 || 3 || 44 || 44&lt;br /&gt;
|-&lt;br /&gt;
! Total Real Madrid !! 292 !! 311 !! 30 !! 22 !! 0 !! 0 !! 101 !! 105 !! 15 !! 12 !! 438 || 450&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | [[Juventus FC|Juventus]]&lt;br /&gt;
| 2018–2019 || rowspan=&amp;quot;3&amp;quot; | [[Serie A]] || 31 || 21 || 2 || 0 || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || 9 || 6 || 1 || 1 || 43 || 28&lt;br /&gt;
|-&lt;br /&gt;
| 2019–2020 || 33 || 31 || 4 || 2 || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || 8 || 4 || 1 || 0 || 46 || 37&lt;br /&gt;
|-&lt;br /&gt;
| 2020–2021 || 33 || 29 || 4 || 2 || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || 6 || 4 || 1 || 1 || 44 || 36&lt;br /&gt;
|-&lt;br /&gt;
! Total Juventus !! 98 || 101 || 10 || 4 || 0 || 0 || 23 || 14 || 3 || 2 || 133 || 121&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | [[Manchester United F.C.|Manchester United]]&lt;br /&gt;
| 2021–2022 || rowspan=&amp;quot;2&amp;quot; | [[Liga Utama Inggris]] || 30 || 18 || 1 || 0 || 0 || 0 || 7 || 6 || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || 38 || 24&lt;br /&gt;
|-&lt;br /&gt;
| 2022–2023 || 10 || 1 || 0 || 0 || 0 || 0 || 6 || 2 || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || 16 || 3&lt;br /&gt;
|-&lt;br /&gt;
! Total MU (2) !! 40 || 19 || 1 || 0 || 0 || 0 || 13 || 8 || 0 || 0 || 54 || 27&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | [[Al-Nassr FC|Al-Nassr]]&lt;br /&gt;
| 2022–2023 || rowspan=&amp;quot;4&amp;quot; | [[Liga Profesional Saudi]] || 16 || 14 || 2 || 0 || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || 1 || 0 || 19 || 14&lt;br /&gt;
|-&lt;br /&gt;
| 2023–2024 || 31 || 35 || 4 || 3 || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || 9 || 6 || 6 || 6 || 50 || 50&lt;br /&gt;
|-&lt;br /&gt;
| 2024–2025 || 30 || 25 || 2 || 1 || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || 8 || 7 || 2 || 2 || 42 || 35&lt;br /&gt;
|-&lt;br /&gt;
| 2025–2026 || 18 || 15 || 1 || 1 || colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot; | — || 5 || 4 || 1 || 1 || 25 || 21&lt;br /&gt;
|-&lt;br /&gt;
! Total Al-Nassr !! 95 || 89 || 9 || 5 || 0 || 0 || 22 || 17 || 10 || 9 || 136 || 120&lt;br /&gt;
|-&lt;br /&gt;
! Total Karier !! 748 !! 607 !! 53 !! 34 !! 12 !! 4 !! 217 !! 161 !! 32 !! 24 || 1.062 || 830&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Prestasi ==&lt;br /&gt;
* &#039;&#039;&#039;Sporting CP&#039;&#039;&#039;&lt;br /&gt;
** [[Supertaça Cândido de Oliveira]]: 2002&lt;br /&gt;
* &#039;&#039;&#039;Manchester United&#039;&#039;&#039;&lt;br /&gt;
** [[Liga Utama Inggris]]: 2006–2007, 2007–2008, 2008–2009&lt;br /&gt;
** [[Piala FA]]: 2003–2004&lt;br /&gt;
** [[Piala EFL]]: 2005–2006, 2008–2009&lt;br /&gt;
** [[Community Shield FA]]: 2007&lt;br /&gt;
** [[Liga Champions UEFA]]: 2007–2008&lt;br /&gt;
** [[Piala Dunia Antarklub FIFA]]: 2008&lt;br /&gt;
* &#039;&#039;&#039;Real Madrid&#039;&#039;&#039;&lt;br /&gt;
** [[La Liga]]: 2011–2012, 2016–2017&lt;br /&gt;
** [[Copa del Rey]]: 2010–2011, 2013–2014&lt;br /&gt;
** [[Supercopa de España]]: 2012, 2017&lt;br /&gt;
** [[Liga Champions UEFA]]: 2013–2014, 2015–2016, 2016–2017, 2017–2018&lt;br /&gt;
** [[Piala Super UEFA]]: 2014, 2017&lt;br /&gt;
** [[Piala Dunia Antarklub FIFA]]: 2014, 2016, 2017&lt;br /&gt;
* &#039;&#039;&#039;Juventus&#039;&#039;&#039;&lt;br /&gt;
** [[Serie A]]: 2018–2019, 2019–2020&lt;br /&gt;
** [[Coppa Italia]]: 2020–2021&lt;br /&gt;
** [[Supercoppa Italiana]]: 2018, 2020&lt;br /&gt;
* &#039;&#039;&#039;Al-Nassr&#039;&#039;&#039;&lt;br /&gt;
** [[Kejuaraan Klub Arab]]: 2023&lt;br /&gt;
* &#039;&#039;&#039;Portugal&#039;&#039;&#039;&lt;br /&gt;
** [[Kejuaraan Eropa UEFA]]: 2016&lt;br /&gt;
** [[Liga Negara UEFA]]: 2018–2019&lt;br /&gt;
&lt;br /&gt;
== Referensi ==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
[[Kategori:Pemain sepak bola Portugal]]&lt;br /&gt;
[[Kategori:Pemenang Ballon d&#039;Or]]&lt;br /&gt;
[[Kategori:Pemain tim nasional sepak bola Portugal]]&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Children/doc&amp;diff=1425</id>
		<title>Templat:Children/doc</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Children/doc&amp;diff=1425"/>
		<updated>2026-10-17T21:35:29Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: /* Keunggulan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
Template &#039;&#039;&#039;{{tl|Children}}&#039;&#039;&#039; digunakan pada Infobox tokoh di kolom `| anak =` untuk menampilkan jumlah anak beserta detail nama atau keterangannya secara terstruktur dan rapi.&lt;br /&gt;
&lt;br /&gt;
=== Sintaks ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Children|JUMLAH|DETAIL_NAMA_ATAU_KETERANGAN}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Contoh Penggunaan ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Code !! Hasil Tampilan&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Children|6|3 putra, 3 putri}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; || 6&amp;lt;br /&amp;gt;&amp;lt;small style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;(3 putra, 3 putri)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Children|3|Cristiano Jr., Eva, Mateo}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; || 3&amp;lt;br /&amp;gt;&amp;lt;small style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;(Cristiano Jr., Eva, Mateo)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Children|4}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; || 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Contoh Implementasi di Infobox ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
| anak = {{Children|6|including Paris Pernandes Jr.}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Keunggulan ==&lt;br /&gt;
* &#039;&#039;&#039;Jelas &amp;amp; Lebih Informatif:&#039;&#039;&#039; Tidak sekadar angka polos, pengunjung wiki bisa langsung tahu rinciannya.&lt;br /&gt;
* &#039;&#039;&#039;Format Rapi:&#039;&#039;&#039; Angka jumlah berada di atas, sedangkan detail nama/keterangan turun ke bawah dengan tanda kurung dan ukuran font kecil (85%).&lt;br /&gt;
* &#039;&#039;&#039;Anti-Berantakan:&#039;&#039;&#039; Menjaga lebar kolom Infobox tetap simetris di tampilan HP (Mobile View).&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Children&amp;diff=1424</id>
		<title>Templat:Children</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Children&amp;diff=1424"/>
		<updated>2026-10-17T21:34:52Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: Melindungi &amp;quot;Templat:Children&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:Children|main}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Children/doc&amp;diff=1423</id>
		<title>Templat:Children/doc</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Children/doc&amp;diff=1423"/>
		<updated>2026-10-17T21:34:46Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: Melindungi &amp;quot;Templat:Children/doc&amp;quot; ([Sunting=Hanya untuk pengurus] (selamanya) [Pindahkan=Hanya untuk pengurus] (selamanya))&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
Template &#039;&#039;&#039;{{tl|Children}}&#039;&#039;&#039; digunakan pada Infobox tokoh di kolom `| anak =` untuk menampilkan jumlah anak beserta detail nama atau keterangannya secara terstruktur dan rapi.&lt;br /&gt;
&lt;br /&gt;
=== Sintaks ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Children|JUMLAH|DETAIL_NAMA_ATAU_KETERANGAN}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Contoh Penggunaan ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Code !! Hasil Tampilan&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Children|6|3 putra, 3 putri}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; || 6&amp;lt;br /&amp;gt;&amp;lt;small style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;(3 putra, 3 putri)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Children|3|Cristiano Jr., Eva, Mateo}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; || 3&amp;lt;br /&amp;gt;&amp;lt;small style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;(Cristiano Jr., Eva, Mateo)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Children|4}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; || 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Contoh Implementasi di Infobox ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
| anak = {{Children|6|including Paris Pernandes Jr.}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Keunggulan ==&lt;br /&gt;
* &#039;&#039;&#039;Jelas &amp;amp; Lebih Informatif:&#039;&#039;&#039; Tidak sekadar angka polos, pengunjung wiki bisa langsung tahu rinciannya.&lt;br /&gt;
* &#039;&#039;&#039;Format Rapi (`&amp;lt;br /&amp;gt;`):&#039;&#039;&#039; Angka jumlah berada di atas, sedangkan detail nama/keterangan turun ke bawah dengan tanda kurung dan ukuran font kecil (`85%`).&lt;br /&gt;
* &#039;&#039;&#039;Anti-Berantakan:&#039;&#039;&#039; Menjaga lebar kolom Infobox tetap simetris di tampilan HP (Mobile View).&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Children/doc&amp;diff=1422</id>
		<title>Templat:Children/doc</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Children/doc&amp;diff=1422"/>
		<updated>2026-10-17T21:34:41Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: ←Membuat halaman berisi &amp;#039;{{Documentation subpage}} Template &amp;#039;&amp;#039;&amp;#039;{{tl|Children}}&amp;#039;&amp;#039;&amp;#039; digunakan pada Infobox tokoh di kolom `| anak =` untuk menampilkan jumlah anak beserta detail nama atau keterangannya secara terstruktur dan rapi.  === Sintaks === &amp;lt;pre&amp;gt; {{Children|JUMLAH|DETAIL_NAMA_ATAU_KETERANGAN}} &amp;lt;/pre&amp;gt;  === Contoh Penggunaan ===  {| class=&amp;quot;wikitable&amp;quot; ! Code !! Hasil Tampilan |- | &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Children|6|3 putra, 3 putri}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; || 6&amp;lt;br /&amp;gt;&amp;lt;small style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;(3...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Documentation subpage}}&lt;br /&gt;
Template &#039;&#039;&#039;{{tl|Children}}&#039;&#039;&#039; digunakan pada Infobox tokoh di kolom `| anak =` untuk menampilkan jumlah anak beserta detail nama atau keterangannya secara terstruktur dan rapi.&lt;br /&gt;
&lt;br /&gt;
=== Sintaks ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Children|JUMLAH|DETAIL_NAMA_ATAU_KETERANGAN}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Contoh Penggunaan ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Code !! Hasil Tampilan&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Children|6|3 putra, 3 putri}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; || 6&amp;lt;br /&amp;gt;&amp;lt;small style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;(3 putra, 3 putri)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Children|3|Cristiano Jr., Eva, Mateo}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; || 3&amp;lt;br /&amp;gt;&amp;lt;small style=&amp;quot;font-size: 85%;&amp;quot;&amp;gt;(Cristiano Jr., Eva, Mateo)&amp;lt;/small&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{Children|4}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; || 4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Contoh Implementasi di Infobox ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
| anak = {{Children|6|including Paris Pernandes Jr.}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Keunggulan ==&lt;br /&gt;
* &#039;&#039;&#039;Jelas &amp;amp; Lebih Informatif:&#039;&#039;&#039; Tidak sekadar angka polos, pengunjung wiki bisa langsung tahu rinciannya.&lt;br /&gt;
* &#039;&#039;&#039;Format Rapi (`&amp;lt;br /&amp;gt;`):&#039;&#039;&#039; Angka jumlah berada di atas, sedangkan detail nama/keterangan turun ke bawah dengan tanda kurung dan ukuran font kecil (`85%`).&lt;br /&gt;
* &#039;&#039;&#039;Anti-Berantakan:&#039;&#039;&#039; Menjaga lebar kolom Infobox tetap simetris di tampilan HP (Mobile View).&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
	<entry>
		<id>https://wikisporta.org/index.php?title=Templat:Children&amp;diff=1421</id>
		<title>Templat:Children</title>
		<link rel="alternate" type="text/html" href="https://wikisporta.org/index.php?title=Templat:Children&amp;diff=1421"/>
		<updated>2026-10-17T21:34:19Z</updated>

		<summary type="html">&lt;p&gt;Wikisporta: ←Membuat halaman berisi &amp;#039;&amp;lt;includeonly&amp;gt;{{#invoke:Children|main}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:Children|main}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wikisporta</name></author>
	</entry>
</feed>