<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Rozpočet - ProCírkvice z. s.</title>
	<atom:link href="https://www.procirkvice.cz/tag/rozpocet/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.procirkvice.cz</link>
	<description>Propojení. Prosperita. Prospěch.</description>
	<lastBuildDate>Thu, 04 Jun 2026 19:15:45 +0000</lastBuildDate>
	<language>cs</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.procirkvice.cz/wp-content/uploads/2023/02/profil-150x150.png</url>
	<title>Rozpočet - ProCírkvice z. s.</title>
	<link>https://www.procirkvice.cz</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Rozpočet 2026 &#8211; vizualizace</title>
		<link>https://www.procirkvice.cz/2026/02/09/rozpocet-2026-vizualizace/</link>
		
		<dc:creator><![CDATA[Jakub]]></dc:creator>
		<pubDate>Mon, 09 Feb 2026 11:01:59 +0000</pubDate>
				<category><![CDATA[Naše Obec]]></category>
		<category><![CDATA[Církvice]]></category>
		<category><![CDATA[Rozpočet]]></category>
		<guid isPermaLink="false">https://www.procirkvice.cz/?p=1571</guid>

					<description><![CDATA[<p>Zastupitelstvo obce schválilo rozpočet na rok 2026. Připravili jsme pro vás přehlednou vizualizaci, abyste nemuseli číst složité tabulky. Z dat vyplývá, že obec letos plánuje hospodařit s celkovými výdaji ve výši 40 milionů Kč.</p>
<p>The post <a href="https://www.procirkvice.cz/2026/02/09/rozpocet-2026-vizualizace/">Rozpočet 2026 – vizualizace</a> first appeared on <a href="https://www.procirkvice.cz">ProCírkvice z. s.</a>.</p>]]></description>
										<content:encoded><![CDATA[<h4 class="wp-block-heading">Do čeho budeme v roce 2026 investovat? Pohled do obecního rozpočtu.</h4>



<p class="wp-block-paragraph">Zastupitelstvo obce schválilo rozpočet na rok 2026. Připravili jsme pro vás přehlednou vizualizaci, abyste nemuseli číst složité tabulky. Z dat vyplývá, že obec letos plánuje hospodařit se schodkem 2,5 milionu a celkovými výdaji ve výši <strong>40 milionů Kč</strong>.</p>



<p class="wp-block-paragraph">Zde jsou 3 hlavní body, které z nového rozpočtu vyčtete:</p>



<p class="wp-block-paragraph"><strong>1. Výrazná investice do silnic a dopravy</strong> Rozpočet ukazuje velký důraz na infrastrukturu. Zatímco v roce 2025 stály opravy a údržba komunikací necelých 1,8 milionu Kč, pro rok 2026 vyčlenila radnice na silnice a dopravní obslužnost přes <strong>4,3 milionu Kč</strong>. Plánují se tedy rozsáhlejší opravy a údržba než v loňském roce. Významná je v tomto roce i investice do budovy obecního úřadu, kde se počítá s částkou 9 milionu.</p>



<p class="wp-block-paragraph"><strong>2. Školství zůstává prioritou</strong> Největší část provozních výdajů obce směřuje do vzdělávání. Na provoz Mateřské školy a Základní školy je v rozpočtu pamatováno částkou téměř <strong>9 milionů Kč</strong>. Jen rozpočet pro Mateřskou školu byl navýšen o více než milion korun oproti loňskému roku, což má zajistit kvalitní zázemí pro místní děti. Navíc velkou část nákladů za nepedagogické zaměstnance zaplatí stát.</p>



<p class="wp-block-paragraph"><strong>3. Obec sáhne do úspor, aby mohla investovat</strong> V grafech si můžete všimnout, že plánované výdaje (40 mil. Kč) převyšují příjmy (37,5 mil. Kč). Obec plánuje využít finanční rezervy a úspory z minulých let, aby mohla realizovat naplánované investice do rozvoje obce.</p>



<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js"></script>

<style>
    /* Reset a základní font */
    .budget-dashboard-v5 {
        font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
        max-width: 1200px;
        margin: 40px auto;
        color: #2c3e50;
        box-sizing: border-box;
    }
    .budget-dashboard-v5 * { box-sizing: border-box; }

    /* --- KARTY (SOUHRN) --- */
    .budget-summary {
        display: flex;
        justify-content: space-between;
        gap: 20px;
        margin-bottom: 40px;
        flex-wrap: wrap;
    }

    .budget-card {
        flex: 1;
        min-width: 250px;
        padding: 25px;
        border-radius: 12px;
        background: #fff;
        box-shadow: 0 4px 15px rgba(0,0,0,0.08);
        text-align: center;
        border-bottom: 4px solid #ddd;
        transition: transform 0.2s, box-shadow 0.2s;
    }
    
    .budget-card:hover { 
        transform: translateY(-5px); 
        box-shadow: 0 8px 25px rgba(0,0,0,0.15);
    }

    .budget-card h3 {
        margin: 0 0 10px 0;
        font-size: 1rem;
        text-transform: uppercase;
        color: #7f8c8d;
        font-weight: 600;
    }

    .budget-card .amount {
        font-size: 2rem;
        font-weight: 800;
        color: #2c3e50;
        margin-bottom: 5px;
    }
    
    .budget-card small { font-size: 0.85rem; color: #95a5a6; }
    .card-income { border-bottom-color: #27ae60; }
    .card-expense { border-bottom-color: #c0392b; }
    .card-invest { border-bottom-color: #2980b9; }

    /* --- KONTEJNERY PRO GRAFY A DETAILY --- */
    .charts-wrapper {
        display: flex;
        flex-direction: column;
        gap: 40px;
    }

    .chart-row {
        display: flex;
        background: #fff;
        border-radius: 16px;
        box-shadow: 0 4px 20px rgba(0,0,0,0.06);
        overflow: hidden;
        min-height: 450px; /* Zvětšena výška pro více detailů */
    }

    /* Levá část - Graf */
    .chart-visual-container {
        flex: 3;
        padding: 20px;
        display: flex;
        flex-direction: column;
        border-right: 1px solid #eee;
    }

    .chart-canvas-wrapper {
        flex-grow: 1;
        position: relative;
        min-height: 300px;
    }

    h4.chart-title {
        text-align: center;
        margin-bottom: 20px;
        font-size: 1.2rem;
        color: #34495e;
    }

    /* Pravá část - Detailní panel */
    .chart-details-panel {
        flex: 2;
        background: #f9fbfc;
        padding: 25px;
        display: flex;
        flex-direction: column;
        /* Povolit scrollovaní pokud je seznam dlouhý */
        overflow-y: auto; 
        max-height: 450px;
    }

    .details-placeholder {
        text-align: center;
        color: #bdc3c7;
        font-style: italic;
        margin-top: auto; margin-bottom: auto;
    }

    .details-content {
        display: none;
        animation: fadeIn 0.3s ease-in-out;
    }

    .details-header {
        font-size: 1.1rem;
        font-weight: bold;
        margin-bottom: 15px;
        padding-bottom: 10px;
        border-bottom: 2px solid #eee;
        color: #2c3e50;
        position: sticky; top: 0; background: #f9fbfc; /* Fixní hlavička při scrollu */
    }

    .details-list {
        list-style: none;
        padding: 0;
        margin: 0;
    }

    .details-list li {
        display: flex;
        justify-content: space-between;
        padding: 10px 0;
        border-bottom: 1px solid #eee;
        font-size: 0.95rem;
    }

    .details-list li .val { font-weight: 600; }
    
    /* Zvýraznění velkých položek v detailu */
    .details-list li.major-item {
        background-color: #f0f4f7;
        padding-left: 10px; padding-right: 10px;
        border-radius: 6px;
        font-weight: 500;
    }

    @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }

    /* Responzivita */
    @media (max-width: 900px) {
        .chart-row { flex-direction: column; height: auto; max-height: none;}
        .chart-visual-container { border-right: none; border-bottom: 1px solid #eee; min-height: 400px;}
        .chart-details-panel { min-height: 250px; max-height: none; background: #f0f3f5; }
    }
</style>

<div class="budget-dashboard-v5">
    <div class="budget-summary">
        <div class="budget-card card-income">
            <h3>Příjmy 2026</h3>
            <div class="amount counter" data-target="37569500">0</div>
            <small>Daňové příjmy a dotace [cite: 5]</small>
        </div>
        <div class="budget-card card-expense">
            <h3>Výdaje 2026</h3>
            <div class="amount counter" data-target="40079000">0</div>
            <small>Celkový plán výdajů </small>
        </div>
        <div class="budget-card card-invest">
            <h3>Zapojení úspor</h3>
            <div class="amount counter" data-target="2509500">0</div>
            <small>Krytí rozdílu z minulých let [cite: 19]</small>
        </div>
    </div>

    <div class="charts-wrapper">
        <div class="chart-row">
            <div class="chart-visual-container">
                <h4 class="chart-title">Struktura Výdajů (Najeďte myší pro detail)</h4>
                <div class="chart-canvas-wrapper">
                    <canvas id="expensesChartV5"></canvas>
                </div>
            </div>
            <div class="chart-details-panel" id="expense-details">
                <div class="details-placeholder">Najeďte myší na graf pro zobrazení podrobností.</div>
                <div class="details-content">
                    <div class="details-header" id="exp-det-title"></div>
                    <ul class="details-list" id="exp-det-list"></ul>
                </div>
            </div>
        </div>

        <div class="chart-row">
            <div class="chart-visual-container">
                <h4 class="chart-title">Struktura Příjmů (Najeďte myší pro detail)</h4>
                <div class="chart-canvas-wrapper">
                    <canvas id="incomeChartV5"></canvas>
                </div>
            </div>
            <div class="chart-details-panel" id="income-details">
                <div class="details-placeholder">Najeďte myší na graf pro zobrazení podrobností.</div>
                <div class="details-content">
                    <div class="details-header" id="inc-det-title"></div>
                    <ul class="details-list" id="inc-det-list"></ul>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
window.addEventListener('load', function() {
    if (typeof Chart === 'undefined') { console.error('Chart.js not loaded'); return; }

    // --- 1. DEFINICE DETAILNÍCH DAT (Doplněno o "různé") ---
    
    // Detailní rozpad výdajů 
    const expenseDetailsData = {
        'Školství (MŠ a ZŠ)': [
            { name: 'Mateřská škola (provoz)', value: 5450000, major: true },
            { name: 'Základní škola (1. stupeň)', value: 3350000, major: true },
            { name: 'Ostatní předškolní', value: 520000 }
        ],
        'Místní správa': [
            { name: 'Činnost místní správy (úřad)', value: 4865000, major: true },
            { name: 'Zastupitelstva obcí', value: 2000000, major: true }
        ],
        'Doprava a cesty': [
            { name: 'Silnice a ost. komunikace', value: 4290000, major: true },
            { name: 'Dopravní obslužnost (bus)', value: 170000 }
        ],
        'Odpadové hospodářství': [
            { name: 'Sběr a svoz komunál. odpadu', value: 3300000, major: true }
        ],
        'Kultura a sport': [
            { name: 'Sportovní činnost', value: 2105000, major: true },
            { name: 'Knihovna a ostatní kultura', value: 199000 },
            { name: 'Rozhlas, TV a sděl. prostř.', value: 115000 } // přídáno 3341+3349
        ],
        'Veřejná zeleň a osvětlení': [
            { name: 'Veřejné osvětlení', value: 850000 },
            { name: 'Péče o vzhled a zeleň', value: 100000 }
        ],
        // ZDE JE KLÍČOVÁ ZMĚNA - Rozpad "Různé"
        'Ostatní služby, hasiči a rezervy': [
             // Položky explicitně uvedené v PDF 
            { name: 'Kanalizace a odpadní vody', value: 1200000, major: true },
            { name: 'Záležitosti pošt', value: 750000 },
            { name: 'Komunální služby j.n.', value: 505000 },
            { name: 'Pitná voda', value: 350000 },
            { name: 'Hasiči (dobrovolná část)', value: 245000 },
            { name: 'Krizová a protipožární opatření', value: 200000 },
            { name: 'Podpora bytové výstavby', value: 150000 },
            { name: 'Bankovní poplatky a převody', value: 85000 },
            { name: 'Sociální prevence a pomoc', value: 60000 },
            { name: 'Pohřebnictví', value: 30000 },
            { name: 'Ostatní drobné (zvířata, ruch)', value: 25000 },
            // dopočet do celkové částky 40 079 000 Kč, která v PDF chybí v rozpisu
            { name: 'Nespecifikované výdaje / Rezervy', value: 9315000, major: true } 
        ]
    };

    // Detailní rozpad příjmů [cite: 5]
    const incomeDetailsData = {
        'Hlavní daňové příjmy': [
            { name: 'Daňové příjmy a sdílené daně', value: 36412000, major: true }
        ],
        'Poplatky za odpady': [
            { name: 'Využívání komunál. odpadů', value: 250000 }
        ],
        'Příjmy ze správy': [
            { name: 'Činnost místní správy', value: 80000 }
        ],
        'Školkovné': [
            { name: 'Příjmy Mateřské školy', value: 300000 }
        ],
        'Ostatní příjmy': [
            { name: 'Záležitosti pošt', value: 300000 },
            { name: 'Různé drobné příjmy', value: 227500 }
        ]
    };

    // --- 2. FUNKCE PRO AKTUALIZACI DETAILNÍHO PANELU ---
    function updateDetailsPanel(chart, index, panelId, dataMap) {
        const panel = document.getElementById(panelId);
        const placeholder = panel.querySelector('.details-placeholder');
        const content = panel.querySelector('.details-content');
        const titleEl = panel.querySelector('.details-header');
        const listEl = panel.querySelector('.details-list');

        if (index === null || index === undefined) return;

        const label = chart.data.labels[index];
        const details = dataMap[label];

        if (details) {
            titleEl.textContent = label;
            listEl.innerHTML = '';
            // Seřadit podle velikosti pro lepší přehled
            const sortedDetails = [...details].sort((a, b) => b.value - a.value);
            
            sortedDetails.forEach(item => {
                const li = document.createElement('li');
                if (item.major) li.classList.add('major-item');
                li.innerHTML = `<span>${item.name}</span><span class="val">${item.value.toLocaleString('cs-CZ')} Kč</span>`;
                listEl.appendChild(li);
            });

            placeholder.style.display = 'none';
            content.style.display = 'block';
        }
    }

    // --- 3. KONFIGURACE GRAFŮ ---
    const commonOptions = (panelId, dataMap) => ({
        responsive: true,
        maintainAspectRatio: false,
        cutout: '60%',
        onHover: (event, elements, chart) => {
            if (elements && elements.length > 0) {
                updateDetailsPanel(chart, elements[0].index, panelId, dataMap);
            }
        },
        plugins: {
            legend: { position: 'bottom', labels: { boxWidth: 12, padding: 15, font: {size: 11} } },
            tooltip: {
                callbacks: {
                    label: function(context) {
                        let val = context.raw;
                        let total = context.chart._metasets[context.datasetIndex].total;
                        let pct = Math.round((val / total) * 100) + '%';
                        return ` ${val.toLocaleString('cs-CZ')} Kč (${pct} z celku)`;
                    }
                }
            }
        }
    });

    // Graf Výdajů
    const ctxExp = document.getElementById('expensesChartV5');
    const expLabels = Object.keys(expenseDetailsData);
    const expData = expLabels.map(key => expenseDetailsData[key].reduce((sum, item) => sum + item.value, 0));

    new Chart(ctxExp, {
        type: 'doughnut',
        data: {
            labels: expLabels,
            datasets: [{
                data: expData,
                backgroundColor: ['#3498db', '#9b59b6', '#e67e22', '#2ecc71', '#f1c40f', '#1abc9c', '#95a5a6'],
                borderWidth: 2, borderColor: '#fff', hoverOffset: 15
            }]
        },
        options: commonOptions('expense-details', expenseDetailsData)
    });

    // Graf Příjmů
    const ctxInc = document.getElementById('incomeChartV5');
    const incLabels = Object.keys(incomeDetailsData);
    const incData = incLabels.map(key => incomeDetailsData[key].reduce((sum, item) => sum + item.value, 0));

    new Chart(ctxInc, {
        type: 'pie',
        data: {
            labels: incLabels,
            datasets: [{
                data: incData,
                backgroundColor: ['#27ae60', '#2ecc71', '#3498db', '#f39c12', '#bdc3c7'],
                borderWidth: 2, borderColor: '#fff', hoverOffset: 15
            }]
        },
        options: commonOptions('income-details', incomeDetailsData)
    });

    // 4. Animace counterů
    const counters = document.querySelectorAll('.counter');
    counters.forEach(counter => {
        const target = +counter.getAttribute('data-target');
        let current = 0; const increment = target / 40;
        const timer = setInterval(() => {
            current += increment;
            if (current >= target) {
                counter.innerText = target.toLocaleString('cs-CZ') + " Kč"; clearInterval(timer);
            } else {
                counter.innerText = Math.ceil(current).toLocaleString('cs-CZ');
            }
        }, 30);
    });
});
</script>



<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js"></script>

<style>
    /* Kontejner pro graf */
    .history-chart-wrapper {
        font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
        max-width: 1000px;
        margin: 40px auto;
        background: #ffffff; /* Bílé pozadí pro čistý vzhled */
        padding: 30px;
        border-radius: 20px;
        box-shadow: 0 10px 40px rgba(0,0,0,0.1);
        position: relative;
    }

    .history-chart-wrapper h3 {
        text-align: center;
        color: #2c3e50;
        margin-bottom: 10px;
        font-size: 1.5rem;
        text-transform: uppercase;
        letter-spacing: 1px;
    }

    .history-chart-wrapper p.subtitle {
        text-align: center;
        color: #7f8c8d;
        font-size: 0.9rem;
        margin-bottom: 30px;
    }

    .canvas-container {
        position: relative;
        height: 450px;
        width: 100%;
    }

    /* Legenda pod grafem */
    .custom-legend {
        display: flex;
        justify-content: center;
        gap: 30px;
        margin-top: 20px;
        font-size: 0.9rem;
        color: #555;
    }
    
    .legend-item { display: flex; align-items: center; gap: 8px; }
    .dot { width: 12px; height: 12px; border-radius: 50%; display: inline-block; }
    .dot-green { background: #00e676; box-shadow: 0 0 10px #00e676; }
    .dot-red { background: #ff1744; box-shadow: 0 0 10px #ff1744; }

    @media (max-width: 768px) {
        .canvas-container { height: 300px; }
        .history-chart-wrapper { padding: 15px; }
    }
</style>

<div class="history-chart-wrapper">
    <h3>Hospodaření obce v čase</h3>
    <p class="subtitle">Vývoj příjmů a výdajů (2009–2024) + Plán (2025–2026)</p>
    
    <div class="canvas-container">
        <canvas id="historyChart"></canvas>
    </div>

    <div class="custom-legend">
        <div class="legend-item"><span class="dot dot-green"></span> Příjmy (mil. Kč)</div>
        <div class="legend-item"><span class="dot dot-red"></span> Výdaje (mil. Kč)</div>
    </div>
</div>

<script>
window.addEventListener('load', function() {
    // Ověření načtení knihovny
    if (typeof Chart === 'undefined') { return; }

    const ctx = document.getElementById('historyChart').getContext('2d');

    // DATA (Zkompletovaná historie + Plán z PDF)
    const years = [
        '2009', '2010', '2011', '2012', '2013', 
        '2014', '2015', '2016', '2017', '2018', 
        '2019', '2020', '2021', '2022', '2023', 
        '2024', '2025 (Plán)', '2026 (Plán)'
    ];

    const dataIncome = [
        13.7, 16.4, 16.4, 15.3, 23.0, 
        20.3, 17.2, 17.6, 23.0, 31.4, 
        32.1, 33.7, 34.3, 32.1, 34.9, 
        26.7, 31.5, 37.6
    ];

    const dataExpenses = [
        12.8, 16.7, 13.6, 13.9, 28.7, 
        18.1, 17.1, 13.1, 20.9, 36.1, 
        17.7, 35.1, 27.0, 17.7, 41.5, 
        24.5, 30.0, 40.1
    ];

    // Vlastní plugin pro "Glow" (Záři) efekt
    const glowPlugin = {
        id: 'glowEffect',
        beforeDatasetDraw: (chart, args) => {
            const ctx = chart.ctx;
            ctx.save();
            // Nastavení stínu podle barvy linky
            ctx.shadowColor = args.meta.dataset.options.borderColor;
            ctx.shadowBlur = 15; // Síla záře
            ctx.shadowOffsetX = 0;
            ctx.shadowOffsetY = 0;
        },
        afterDatasetDraw: (chart) => {
            chart.ctx.restore();
        }
    };

    new Chart(ctx, {
        type: 'line',
        data: {
            labels: years,
            datasets: [
                {
                    label: 'Příjmy',
                    data: dataIncome,
                    borderColor: '#00e676', // Svítivá zelená
                    backgroundColor: 'rgba(0, 230, 118, 0.1)', // Jemná výplň
                    borderWidth: 3,
                    pointBackgroundColor: '#ffffff',
                    pointBorderColor: '#00e676',
                    pointBorderWidth: 2,
                    pointRadius: 4,
                    pointHoverRadius: 8,
                    tension: 0.4, // Hladké křivky
                    fill: true
                },
                {
                    label: 'Výdaje',
                    data: dataExpenses,
                    borderColor: '#ff1744', // Svítivá červená
                    backgroundColor: 'rgba(255, 23, 68, 0.05)', // Jemná výplň
                    borderWidth: 3,
                    pointBackgroundColor: '#ffffff',
                    pointBorderColor: '#ff1744',
                    pointBorderWidth: 2,
                    pointRadius: 4,
                    pointHoverRadius: 8,
                    tension: 0.4,
                    fill: true
                }
            ]
        },
        options: {
            responsive: true,
            maintainAspectRatio: false,
            interaction: {
                mode: 'index',
                intersect: false,
            },
            plugins: {
                legend: { display: false }, // Vlastní legenda v HTML
                tooltip: {
                    backgroundColor: 'rgba(255, 255, 255, 0.95)',
                    titleColor: '#333',
                    bodyColor: '#333',
                    borderColor: '#ddd',
                    borderWidth: 1,
                    padding: 12,
                    callbacks: {
                        label: function(context) {
                            return ' ' + context.dataset.label + ': ' + context.raw.toLocaleString('cs-CZ') + ' mil. Kč';
                        }
                    }
                },
                // Vykreslení svislé čáry oddělující historii a plán
                annotation: {
                    // Pokud byste chtěli pokročilé anotace, je třeba další plugin. 
                    // Zde to řešíme vizuálně v popisku osy X.
                }
            },
            scales: {
                y: {
                    beginAtZero: true,
                    grid: { color: '#f0f0f0' },
                    ticks: {
                        callback: function(value) { return value + ' mil.'; },
                        color: '#999'
                    }
                },
                x: {
                    grid: { display: false },
                    ticks: { color: '#777' }
                }
            }
        },
        plugins: [glowPlugin] // Aktivace svítícího efektu
    });
});
</script><p>The post <a href="https://www.procirkvice.cz/2026/02/09/rozpocet-2026-vizualizace/">Rozpočet 2026 – vizualizace</a> first appeared on <a href="https://www.procirkvice.cz">ProCírkvice z. s.</a>.</p>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
