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ığı")
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ü
- Oluşturma -
NewQueue(title)
- Yapılandırma -
With* metod çağrıları
- Görev Ekleme -
AddTasks(...)
- 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)
}
}
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