{% extends "base.html" %} {% block title %}Panel Audyt GBP - Norda Biznes Partner{% endblock %} {% block extra_css %} {% endblock %} {% block content %}

Panel Audyt GBP

Analiza kompletnosci profili Google Business Profile czlonkow Norda Biznes

Dane z Google Business Profile (via Places API)
API
{{ stats.excellent_count }} Doskonaly (90-100%)
{{ stats.good_count }} Dobry (70-89%)
{{ stats.poor_count }} Slaby (0-69%)
{{ stats.not_audited_count }} Niezbadane
{{ stats.avg_completeness|default('-', true) }}{% if stats.avg_completeness %}%{% endif %} Srednia kompletnosc
{{ stats.avg_rating|default('-', true) }}{% if stats.avg_rating %}/5{% endif %} Srednia ocena Google
{{ stats.total_reviews }} Lacznie recenzji

Pokrycie pol GBP

{% set fields = [ ('name', 'Nazwa firmy', stats.field_coverage.name), ('address', 'Adres', stats.field_coverage.address), ('phone', 'Telefon', stats.field_coverage.phone), ('website', 'Strona WWW', stats.field_coverage.website), ('hours', 'Godziny otwarcia', stats.field_coverage.hours), ('categories', 'Kategorie', stats.field_coverage.categories), ('photos', 'Zdjecia', stats.field_coverage.photos), ('description', 'Opis', stats.field_coverage.description), ('services', 'Uslugi', stats.field_coverage.services), ('reviews', 'Recenzje', stats.field_coverage.reviews) ] %} {% for field_id, field_name, percent in fields %}
{{ field_name }} {{ percent }}%
{% endfor %}
90-100% (doskonaly)
70-89% (dobry)
0-69% (slaby)
{% if companies %}
{% for company in companies %} {% endfor %}
Firma Kategoria Kompletnosc Ocena Recenzje Zdjecia Ostatni audyt Akcje
{{ company.name }} {{ company.category or 'Inne' }} {% if company.completeness_score is not none %} {{ company.completeness_score }}% {% else %} - {% endif %} {% if company.average_rating %}
{{ company.average_rating }}
{% else %} - {% endif %}
{{ company.review_count }} {{ company.photo_count }} {% if company.audit_date %} {% set days_ago = (now - company.audit_date).days %} {{ company.audit_date.strftime('%d.%m.%Y') }} {% else %} Nigdy {% endif %}
{% else %}

Brak firm do wyswietlenia

Nie znaleziono firm z danymi GBP.

{% endif %} {% endblock %} {% block extra_js %} // Sorting state let currentSort = { column: 'completeness', direction: 'desc' }; // Sort table function sortTable(column) { const tbody = document.getElementById('gbpTableBody'); const rows = Array.from(tbody.querySelectorAll('tr')); const headers = document.querySelectorAll('.gbp-table th[data-sort]'); // Toggle direction if same column if (currentSort.column === column) { currentSort.direction = currentSort.direction === 'asc' ? 'desc' : 'asc'; } else { currentSort.column = column; currentSort.direction = 'desc'; } // Update header classes headers.forEach(h => { h.classList.remove('sorted', 'sorted-asc', 'sorted-desc'); if (h.dataset.sort === column) { h.classList.add('sorted', `sorted-${currentSort.direction}`); } }); // Sort rows rows.sort((a, b) => { let aVal, bVal; if (column === 'name') { aVal = a.dataset.name || ''; bVal = b.dataset.name || ''; } else if (column === 'category') { aVal = a.dataset.category || ''; bVal = b.dataset.category || ''; } else if (column === 'date') { aVal = new Date(a.dataset.date).getTime(); bVal = new Date(b.dataset.date).getTime(); } else { aVal = parseFloat(a.dataset[column]) || -1; bVal = parseFloat(b.dataset[column]) || -1; } if (aVal < bVal) return currentSort.direction === 'asc' ? -1 : 1; if (aVal > bVal) return currentSort.direction === 'asc' ? 1 : -1; return 0; }); // Re-append rows rows.forEach(row => tbody.appendChild(row)); } // Setup sorting click handlers document.querySelectorAll('.gbp-table th[data-sort]').forEach(th => { th.addEventListener('click', () => sortTable(th.dataset.sort)); }); // Filtering function applyFilters() { const category = document.getElementById('filterCategory').value; const score = document.getElementById('filterScore').value; const search = document.getElementById('filterSearch').value.toLowerCase(); const rows = document.querySelectorAll('#gbpTableBody tr'); rows.forEach(row => { let show = true; // Category filter if (category && row.dataset.category !== category) { show = false; } // Score filter if (score && show) { const completenessScore = parseFloat(row.dataset.completeness); if (score === 'excellent' && (completenessScore < 90 || completenessScore < 0)) show = false; else if (score === 'good' && (completenessScore < 70 || completenessScore >= 90)) show = false; else if (score === 'poor' && (completenessScore < 0 || completenessScore >= 70)) show = false; else if (score === 'none' && completenessScore >= 0) show = false; } // Search filter if (search && show) { if (!row.dataset.name.includes(search)) { show = false; } } row.style.display = show ? '' : 'none'; }); } function resetFilters() { document.getElementById('filterCategory').value = ''; document.getElementById('filterScore').value = ''; document.getElementById('filterSearch').value = ''; applyFilters(); } {% endblock %}