Ana içeriğe atla

Görev Kuyruğu (Queue)

Queue, Ziva’un merkezi bileşenidir. Görevlerin sıralı yürütülmesini yönetir ve kullanıcı etkileşimi için birleşik bir arayüz sağlar.

Kuyruk Oluşturma

queue := ziva.NewQueue("Kuyruk başlığı")
Ekran görüntüsü: kuyruk özet görünümü

Ana Metodlar

Görev Ekleme

// Tek görev ekleme
queue.AddTasks(task1)

// Birden fazla görev ekleme
queue.AddTasks(task1, task2, task3)

// Zincirleme ekleme
queue.AddTasks(task1).AddTasks(task2)

Kuyruğu Çalıştırma

if err := queue.Run(); err != nil {
    log.Fatal(err)
}

Görünüm Yapılandırması

Uygulama Adı

queue.WithAppName("BenimUygulamam")

Ad ve Başlık Renkleri

// Uygulama adı rengi
queue.WithAppNameColor(ziva.BlueBright, true) // renk, kalın

// Kuyruk başlığı rengi
queue.WithTitleColor(ziva.GreenBright, false) // renk, normal

Görev Numaralandırma

// Format ile numaralandırmayı etkinleştir
queue.WithTasksNumbered(true, "[%02d]") // [01], [02], [03]...

// Alternatif formatlar
queue.WithTasksNumbered(true, "(%d)")   // (1), (2), (3)...
queue.WithTasksNumbered(true, "%d.")    // 1., 2., 3....

// Format'ın ilk karakterini koruma
queue.WithTasksNumbered(true, "[%02d]") // '[' karakterini koru

Özet Yönetimi

// Tamamlanma özetini devre dışı bırak
queue.WithOutSummary()

// Sonuç ayıraç çizgilerini devre dışı bırak
queue.WithOutResultLine()

Ekran Temizleme

// Çalıştırmadan önce ekranı temizle
queue.WithClearScreen(true)

Hata Yönetimi

Hata Renklerini Yapılandırma

// Hata türlerini içe aktarma
import "github.com/qzeleza/ziva/internal/query"

// Hata rengini ayarlama
queue.SetErrorColor(query.ErrorColorRed)    // Kırmızı
queue.SetErrorColor(query.ErrorColorYellow) // Sarı
queue.SetErrorColor(query.ErrorColorNone)   // Renksiz

Yapılandırma Örnekleri

Minimalist Yapılandırma

queue := ziva.NewQueue("Basit uygulama")
queue.AddTasks(task1, task2)
queue.Run()

Tam Yapılandırma

queue := ziva.NewQueue("Gelişmiş TUI Uygulaması")
queue.WithAppName("GelişmişUygulama").
      WithAppNameColor(ziva.BlueBright, true).
      WithTitleColor(ziva.GreenBright, false).
      WithTasksNumbered(true, "[%02d]").
      WithClearScreen(true).
      WithOutResultLine().
      SetErrorColor(query.ErrorColorRed)

queue.AddTasks(
    confirmTask,
    selectTask,
    inputTask,
    functionTask,
)

if err := queue.Run(); err != nil {
    log.Fatalf("Yürütme hatası: %v", err)
}

Gömülü Sistemler için Yapılandırma

queue := ziva.NewQueue("IoT Yapılandırması")
queue.WithAppName("RouterKurulum").
      WithOutSummary().        // Yer tasarrufu
      WithOutResultLine().         // Basitleştirilmiş çıktı
      WithTasksNumbered(false, ""). // Numarasız
      WithClearScreen(false)       // Bağlamı koru

// Basitleştirilmiş renkler kullan
queue.WithAppNameColor(ziva.WhiteBright, false).
      WithTitleColor(ziva.GrayBright, false)

Kuyruk Yaşam Döngüsü

  1. Oluşturma - NewQueue(title)
  2. Yapılandırma - With* metod çağrıları
  3. Görev Ekleme - AddTasks(...)
  4. Yürütme - Run()

Durum İşleme

Başarılı Yürütme

Tüm görevler başarıyla tamamlandığında Run() nil döner.

Kullanıcı İptali

Kullanıcı yürütmeyi iptal ederse (Ctrl+C), kuyruk düzgün şekilde sonlanır.

Yürütme Hataları

if err := queue.Run(); err != nil {
    switch err {
    case context.Canceled:
        fmt.Println("Yürütme kullanıcı tarafından iptal edildi")
    default:
        fmt.Printf("Hata: %v\n", err)
    }
}

Performans Optimizasyonu

Büyük Kuyruklar İçin

// Tamamlanan görev geçmişini sınırla
os.Setenv("ZIVA_MAX_COMPLETED_TASKS", "5")

// Bellek izleme
os.Setenv("ZIVA_MEMORY_PRESSURE_THRESHOLD", "100M")

Yavaş Terminaller İçin

// Basitleştirilmiş görüntü modu
queue.WithOutResultLine().
      WithOutSummary().
      WithTasksNumbered(false, "")
İpucu: Özel ortamınızda optimal kullanıcı deneyimi elde etmek için farklı ayarlarla deneme yapın.

Ayrıca Bakınız

I