> ## 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.

# FormElement

> Formlar içindeki bireysel alanlar ve UI bileşenleri

FormElement'ler formları oluşturan bireysel yapı taşlarıdır - kullanıcıların etkileşimde bulunduğu gerçek giriş alanları, metin alanları, açılır menüler ve UI bileşenleridir.

## FormElement Türleri ve Yetenekleri

**Veri Toplama Elementleri:**

* **NUMBER**: Birim entegrasyonu, ondalık hassasiyet, min/max doğrulama ile sayısal girişler
* **SHORT\_TEXT**: Karakter sınırları ve format doğrulama ile tek satırlı metin
* **LONG\_TEXT**: Açıklamalar ve yorumlar için çok satırlı metin alanları
* **SINGLE\_CHOICE**: Özel seçenek değerleri ve etiketleri ile radyo butonları
* **MULTIPLE\_CHOICE**: Birden fazla seçime izin veren onay kutuları
* **FILE\_UPLOAD**: Tür kısıtlamaları ve boyut sınırları ile dosya ekleri

**UI ve Organizasyon Elementleri:**

* **TITLE**: Özel stil ve hiyerarşi ile bölüm başlıkları
* **PARAGRAPH**: Talimatlar ve açıklamalar için zengin metin içeriği
* **DIVIDER**: Form organizasyonu için görsel ayırıcılar
* **GROUP**: İlgili alanları organize etmek için daraltılabilir bölümler
* **PAGE**: Navigasyon kontrolleri ile çok sayfalı formlar
* **IMAGE**: Görsel rehberlik için gömülü resimler

**Gelişmiş Elementler:**

* **ACTIVITY**: Aktivite tanımlarına dayalı özel hesaplamalar (TIMESTAMP periyodu kullanılamaz)

## Veri ve Periyotlar

FormElementSubmission, gelişmiş değer yönetimini işleyen temel veri depolama bileşenidir:

**Çok dönemli veri**: Değerler dönem bazında saklanır

```
FormElementSubmission {
  formElementId: "energy-consumption-field",
  periodUnit: 3,        // Mart (aylık: 1..12)
  sequence: 0,          // Bu periyot için ilk giriş
  value: 1250.5,        // Gerçek kWh değeri
  activityId: null      // Karmaşık hesaplama gerekli değil
}
```

**Karmaşık Hesaplama Depolama**: Gelişmiş hesaplamalar için Activity sonuçlarına bağlantı

```
FormElementSubmission {
  formElementId: "emissions-calculation",
  periodUnit: 1,        // Q1 (çeyreklik: 1..4)
  sequence: 0,
  value: 2847.3,        // Hesaplanan tCO2e sonucu
  activityId: "act_123" // Activity hesaplamasına referans
}
```

**Çoklu Giriş Desteği**: Alan/periyot başına birden fazla gönderimi işleme (özellikle dış formlar için)

```
// Tedarikçi A'nın verisi
FormElementSubmission { periodUnit: 6, sequence: 0, value: 850 }
// Tedarikçi B'nin verisi
FormElementSubmission { periodUnit: 6, sequence: 1, value: 1200 }
// İç tahmin
FormElementSubmission { periodUnit: 6, sequence: 2, value: 1000 }
```

**Esnek değer depolama**: `value` JSON farklı türleri destekler

* Sayılar: `1250.5`
* Metin: `"Sertifikalı tedarikçiden doğal gaz"`
* Diziler: `["Şebeke elektriği", "Güneş panelleri"]`
* Nesneler: `{"scope1": 450, "scope2": 280, "total": 730}`

## Yapılandırma Seçenekleri

**Birimler**: Alanlara ölçü birimi bağlayarak etiketleme ve doğrulama sağlar

**Doğrulama Kuralları**: Veri kalitesi ve tutarlılığını sağlayın

* Gerekli alan zorunluluğu
* Min/max değer doğrulaması
* Metin alanları için format doğrulaması
* Yüklemeler için dosya türü ve boyut kısıtlamaları

**Koşullu Mantık**: Diğer alan değerlerine dayalı dinamik davranış

* Yanıtlara göre elementleri göster/gizle
* Koşullu olarak doğrulama kurallarını değiştir
* Mevcut seçenekleri dinamik olarak güncelle

**Periyot yapılandırması**: YEARLY, MONTHLY, QUARTERLY, TIMESTAMP (TIMESTAMP ACTIVITY için geçersiz)

**Dağıtım modu (NUMBER)**: `total` veya `snapshot`.

## İş Akışı Durumu

Her kayıtlı değerin iş akışına bağlı bir durumu vardır (COMPLETED, APPROVED, REJECTED). Onaylar değer bazında uygulanır; ACTIVITY alanları için aynı dönem ve gönderimdeki tüm satırlar topluca güncellenebilir.

## Gerçek Dünya Örnekleri

**Enerji Tüketimi Alanı**:

* Tür: NUMBER
* Birim: kWh
* Doğrulama: Min 0, Max 1.000.000
* Periyot: Aylık
* Gerekli: Evet

**Enerji Kaynağı Seçimi**:

* Tür: SINGLE\_CHOICE
* Seçenekler: \["Şebeke Elektriği", "Güneş", "Rüzgar", "Doğal Gaz"]
* Koşullu: Güneş/rüzgar seçilirse yenilenebilir detayları gösterir

**Destekleyici Dokümantasyon**:

* Tür: FILE\_UPLOAD
* Kabul edilen: PDF, Excel, CSV
* Max boyut: 10MB
* Gerekli: Hayır
* Metadata: Formlar `publicSupportingDocumentsMode = "opt-in"` şeklinde yapılandırıldığında bu alan için belge yükleme ikonunu göstermek için `allowSupportingDocumentsUpload: true` değerini ekleyin. Bu seçenek oluşturucuda **Destekleyici belgeler (genel)** anahtarı olarak görünür.

### Satır içi seçim alt alanları

Bir seçenek seçildiğinde hemen altında yeni bir alan göstermek istediğinizde:

* İlgili alt alan için yalnızca tek bir `show` grubu ve tek bir `equals` koşulu oluşturun; koşul tek bir `SINGLE_CHOICE` / `MULTIPLE_CHOICE` üst alanını ve tek bir seçenek değerini hedeflemelidir (toplayıcı `SINGLE` kalmalıdır).
* Oluşturucuda **Seçenek altında satır içi göster** anahtarını etkinleştirin (koşul uygun değilse anahtar devre dışı kalır).
* Çocuk alanlar seçilen seçeneğin altında ve tüm periyotlarda (TIMESTAMP satırları dahil) otomatik olarak yerleştirilir. `config.inlineChoiceDisplay` ayarlanmamış alanlar klasik düzeni kullanmaya devam eder.

**Emisyon Hesaplaması**:

* Tür: ACTIVITY
* Girişler: Yakıt tüketimi, emisyon faktörü
* Çıktı: Toplam CO2e emisyonları
* Otomatik hesaplama: Evet
