# Panel Analitik Kancaları

https://dev.wisecp.com/tr/panel-analitik-kancalari

Rapor göstergeleri, tarih aralıkları, grafikler ve anlık sayaçların altı kancası.

## Genel Bakış

Rapor sayfalarının bütün sayıları bu kancalardan geçer: özet göstergeler, zaman serileri, dağılımlar ve finans toplamları. Yanlarında anlık sayaçların salt-okunur olayı bulunur.

Hepsinde ortak bir kural var: **şeklini bozmayın**. Grafik kütüphanesi ve sonraki sorgular belirli anahtarları bekler; eksik ya da uyumsuz bir yapı sessizce boş rapor üretir.

## Referans

### Anlık metrik okumasını izleme

actionadmin.analytics.realtime_polled

`admin/analytics` salt okuma

Panodaki anlık sayaçlar tazelendiğinde çalışır. Sayfa açıkken **düzenli aralıklarla** tekrarlanır.

Parametreler 1

$statsarrayAnlık metrikler: çevrimiçi sayısı, son beş dakikadaki ziyaretçi ve harita işaretçileri. Bir kopya geçer: **değiştirmenin etkisi yoktur**. Bu bilerek bir olaydır, filtre değil.

Dönüş 1

voidDönüş yoksayılır; veri değiştirilemez.

Dinleyici PHP

```php
Hook::add('action:admin.analytics.realtime_polled', 10, function ($stats) {
    // Kopya gecer: degistirmenin etkisi yok.
    Acme::pushMetric('online', (int) ($stats['online_count'] ?? 0));
});
```

### Rapor tarih aralığını değiştirme

filteradmin.analytics.date_range

`admin/analytics` anahtarlar korunmalı

Kullanıcının seçtiği tarih aralığı çözüldükten sonra çalışır. Bütün rapor sorguları bu aralığı kullanır.

Parametreler 2

$resultarraybağlaÇözülen aralık: başlangıç, bitiş, önceki dönemin başlangıç ve bitişi, gün sayısı. ? **Bütün anahtarlar korunmalıdır**: eksik bir anahtar sonraki sorguları bozar ve rapor boş çıkar.

$rangestringKullanıcıdan gelen ham aralık metni.

Dönüş 1

voidDönüş yoksayılır; verinin üzerine yazarsınız.

Dinleyici PHP

```php
Hook::add('filter:admin.analytics.date_range', 10, function (&$result, $range) {
    // Anahtarlarin hepsi kalmali: eksik anahtar raporu bosaltir.
    $result['start'] = Acme::fiscalStart($result['start']);
});
```

### Özet göstergeleri değiştirme

filteradmin.analytics.kpis

`admin/analytics` şekil bölüme göre

Rapor sayfasının üstündeki özet göstergeler hesaplandıktan sonra çalışır.

Parametreler 3

$kpisarraybağlaHesaplanan değerler. ? **Yapısı bölüme göre değişir**: müşteri raporundaki anahtarlarla hizmet raporundakiler aynı değildir. Bir anahtara erişmeden önce bölüme bakın.

$sectionstringRapor bölümü: müşteriler, hizmetler ya da destek.

$rangearrayAktif tarih aralığı.

Dönüş 1

voidDönüş yoksayılır; verinin üzerine yazarsınız.

Dinleyici PHP

```php
Hook::add('filter:admin.analytics.kpis', 10, function (&$kpis, $section, $range) {
    // Yapi bolume gore degisir: once bolume bakin.
    if ($section !== 'clients') return;

    $kpis['acme_churn'] = Acme::churnRate($range);
});
```

### Zaman serisini değiştirme

filteradmin.analytics.trend_series

`admin/analytics` eşit uzunluk şart

Grafiğin verisi hesaplandıktan sonra çalışır.

Parametreler 3

$trendarraybağlaEtiketler ve bir ya da daha çok değer serisi. ? **Etiketlerle seriler aynı uzunlukta olmalıdır**; grafik eksenlerini buna göre kurar. Var olan seri anahtarlarını koruyun, yeni seriyi ek anahtar olarak koyun.

$reportstringRapor anahtarı: gelir, gider, kâr-zarar, müşteriler, hizmetler ya da destek.

$rangearrayAktif tarih aralığı.

Dönüş 1

voidDönüş yoksayılır; verinin üzerine yazarsınız.

Dinleyici PHP

```php
Hook::add('filter:admin.analytics.trend_series', 10, function (&$trend, $report, $range) {
    // Etiketlerle seri ayni uzunlukta olmali.
    if ($report !== 'income') return;

    $trend['acme_forecast'] = Acme::forecast(count($trend['labels'] ?? []));
});
```

### Dağılım verisini değiştirme

filteradmin.analytics.distribution

`admin/analytics` sabit öğe şekli

Dağılım grafiğinin verisi hesaplandıktan sonra çalışır.

Parametreler 4

$dataarraybağlaDağılım öğeleri. Her öğe **etiket ve değer** taşımak zorundadır; grafik kütüphanesi bu yapıyı bekler, başka bir şekil sessizce boş grafik verir.

$entitystringNeyin dağılımı: müşteri, hizmet ya da talep.

$typestringDağılım tipi: durum, ülke, dil, ürün, dönem, öncelik, departman, personel ya da yanıt süresi.

$rangearrayAktif tarih aralığı.

Dönüş 1

voidDönüş yoksayılır; verinin üzerine yazarsınız.

Dinleyici PHP

```php
Hook::add('filter:admin.analytics.distribution', 10,
    function (&$data, $entity, $type, $range) {
        // Her oge etiket ve deger tasimali.
        if ($entity === 'client' && $type === 'country')
            $data = Acme::mergeSmallCountries($data);
    });
```

### Finans özetini değiştirme

filteradmin.analytics.invoice_report_totals

`admin/analytics` para birimi filtreli

Finans raporunun özet toplamları hesaplandıktan sonra çalışır.

Parametreler 4

$totalsarraybağlaÖzet toplamlar: adet, tutar, gün sayısı, günlük ortalama ve para birimi.

$reportstringHangi rapor: gelir, gider, kâr-zarar, vergi, iptal, iade ya da ödeme yöntemi.

$rangearrayAktif tarih aralığı.

$currency_idintFiltrelenen para birimi; **sıfır** ise yerel para birimidir.

Dönüş 1

voidDönüş yoksayılır; verinin üzerine yazarsınız.

Dinleyici PHP

```php
Hook::add('filter:admin.analytics.invoice_report_totals', 10,
    function (&$totals, $report, $range, $currency_id) {
        // Sifir para birimi = yerel para birimi.
        if ($report === 'income') $totals['acme_target'] = Acme::monthlyTarget($currency_id);
    });
```

## Tuzaklar

> **Tarih aralığında anahtar eksiltmek raporu boşaltır**
> 
> Aralık dizisindeki anahtarların hepsi sonraki sorgular tarafından okunur. Birini kaldırmak ya da adını değiştirmek gösterge ve grafik sorgularını bozar; ekranda hata değil **boş rapor** görünür, bu yüzden fark edilmesi zordur.

> **Etiketlerle seriler aynı uzunlukta olmalı**
> 
> Zaman serisinde etiket sayısı ile değer sayısı ayrışırsa grafik eksenleri kayar. Yeni bir seri eklerken uzunluğu mevcut etiketlere göre kurun; var olan seri anahtarlarını da koruyun.

## İlgili Makaleler

- [Yönetim Paneli Kancaları](https://dev.wisecp.com/tr/yonetim-paneli-kancalari)
- [Müşteri Hesabı Kancaları](https://dev.wisecp.com/tr/musteri-hesabi-kancalari)
- [Kancalar Nasıl Çalışır](https://dev.wisecp.com/tr/kancalar-nasil-calisir)
