> ## Documentation Index
> Fetch the complete documentation index at: https://docs.azalt.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Dashboard

> Widget'lar için konteyner; organizasyon genelinde filtre, görünürlük ve parola korumalı paylaşım.

### Dashboard

Dashboard, göstergeleri görselleştiren widget'ların bulunduğu konteynerdir. Organizasyon genelinde tekil bir küresel filtre (site, yıl aralığı, durumlar), düzen yönetimi ve isteğe bağlı halka açık (parola korumalı) paylaşım desteklenir.

#### Kısaca

* Grid yerleşimi; sürükle-bırak ile hareket/yeniden boyutlandırma
* Küresel filtre: `siteIds`, `startYear`, `endYear`, `statuses`
* Görünürlük: özel (organizasyon üyeleri) veya halka açık (isteğe bağlı parola)
* Filtre önceliği: widget filtresi, dashboard küresel filtresini geçersiz kılar
* Varsayılanlar: durumlar, organizasyon varsayılanlarına; yoksa `APPROVED`’a düşer

#### Veri Yapısı

```typescript theme={null}
// apps/azalt/src/server/db/types/dashboard.ts (özet)
interface Dashboard {
  id: string;
  name: string;
  description: string | null;
  organizationId: string;
  globalFilter: {
    siteIds?: string[];
    startYear?: number;
    endYear?: number;
    statuses?: ("APPROVED" | "COMPLETED" | "REJECTED")[];
  };
  isPublic: boolean;      // halka açık ise giriş gerektirmez
  password: string | null; // parola hash; halka açıldığında isteğe bağlı
  order: number;          // organizasyon içi gösterim sırası
}
```

#### Küresel Filtre

* Dashboard küresel filtresi, widget kendi filtresini tanımlamadıysa tüm widget’lara uygulanır.
* Birleşik filtre anahtarları: `siteIds`, `startYear`, `endYear`, `statuses`.
* Durumlar için geri dönüş: widget ve dashboard belirtmiyorsa organizasyon varsayılanları, yoksa `APPROVED`.
* Halka açık dashboard’lar, kaydetmeden per-widget geçici filtre geçersiz kılmalarını API üzerinden kabul eder.

#### Görünürlük ve Paylaşım

* Özel: yalnızca mevcut organizasyon üyeleri.
* Halka açık: bağlantıya sahip herkes; isteğe bağlı parola koruması. Parola sunucuda doğrulanır (bcrypt).
* Halka açık görünüm, doğru parolayı yerel olarak saklayabilir; hesap gerektirmez.

#### Filtre Önceliği

1. Halka açık istek geçersiz kılmaları → 2) Widget filtresi → 3) Dashboard küresel filtresi → 4) Organizasyon varsayılan durumlar → 5) `APPROVED`.

#### Güvenlik ve Yetkiler

* Okuma: Özel dashboard için Viewer ve üzeri, halka açık için bağlantı yeterlidir
* Yazma (oluştur/güncelle/sil/sırala/küresel filtre güncelle): Manager ve üzeri
* API: uygulama ve API anahtarıyla erişilen karşılık gelen prosedürler mevcuttur

#### Sık Yapılan İşlemler

* Dashboard oluştur (varsayılan: özel)
* Halka açıklık/parola ayarla veya kaldır
* Dashboard ve widget’ları sürükle-bırak ile yeniden sırala
* Küresel filtreyi (site/yıl/durum) güncelle
* Gerektiğinde arayüzden widget görsellerini dışa aktar

#### API Notları

* `dashboards.get`: normalize edilmiş `globalFilter` ve arayüz için `organizationDefaultStatuses` döner
* `dashboards.update`: `name`, `description`, `isPublic`, isteğe bağlı `password` alır
* `dashboards.updateGlobalFilters`: birleşik `globalFilter`’ı kaydeder
* `dashboards.getWithData` (halka açık): dashboard, widget’lar, dataset’ler, göstergeler ve birleştirilmiş filtrelerle widget verilerini döner

#### İlgili Kavramlar

* Widget — görselleştirme birimi
* Indicator — widget’ın veri kaynağı olan hesaplanmış metrik
* Dataset — gösterge hesaplamalarında kullanılan katsayılar ve referans değerler
