İçeriğe geç

SVG Animations

SVG Animation, inSCADA’nın temel görselleştirme bileşenidir. Her animation bir SVG dosyasından oluşur ve değişken değerlerine bağlanarak gerçek zamanlı SCADA ekranları oluşturur.

Energy Monitoring Dashboard

Menü: Development → Animations → Animation Dev

AlanZorunluAçıklama
NameEvetEkran adı (proje içinde benzersiz)
SVG ContentEvetSVG kaynak kodu
DurationEvetAnimasyon güncelleme periyodu (ms, min: 100)
Play OrderEvetSıralama (birden fazla ekran varsa)
MainEvetAna ekran mı
ColorHayırArka plan rengi
DescriptionHayırAçıklama

Her animation üç bileşenden oluşur:

Animation
├── SVG Content (ekranın görsel yapısı)
├── Animation Elements (değişken bağlantıları)
│ ├── Element 1: "temp_text" → Temperature_C (text binding)
│ ├── Element 2: "motor_rect" → MotorStatus (color binding)
│ └── Element 3: "valve_group" → ValvePosition (rotation binding)
└── Animation Scripts (ekran açılma/kapanma scriptleri)
├── Pre-Animation Code (ekran açıldığında)
└── Post-Animation Code (ekran kapandığında)

Animation Element, SVG içindeki bir DOM öğesini bir değişkene bağlar. Binding türüne göre öğenin metin, renk, konum, görünürlük vb. özellikleri değişken değerine göre güncellenir.

AlanAçıklama
SVG Element IDSVG içindeki hedef öğenin id özniteliği
VariableBağlanacak değişken
TypeBinding tipi (aşağıdaki tabloya bakın)
ExpressionÖzel dönüşüm formülü (opsiyonel)
TipAçıklamaÖrnek
TextÖğenin metin içeriğini güncellerSıcaklık: 25.4°C
ColorÖğenin dolgusunu/rengini değiştirirAlarm: kırmızı/yeşil
VisibilityÖğeyi göster/gizleMotor çalışıyorsa ok ikonu görünsün
RotationÖğeyi döndürVana pozisyonu: 0°-90°
TranslationÖğeyi kaydır (X/Y)Seviye göstergesi: 0-100%
ScaleÖğeyi ölçekleBar grafik yüksekliği
OpacitySaydamlık ayarlaHaberleşme kesilince soluk göster
ClassCSS class ekle/kaldırDurum bazlı stil değişimi

Element’e özel JavaScript expression atanabilir:

// Renk binding: değere göre renk seç
if (value > 80) return '#ff0000'; // kırmızı
else if (value > 60) return '#ff8800'; // turuncu
else return '#00cc00'; // yeşil
// Text binding: birim ve format ekle
return value.toFixed(1) + ' °C';
// Visibility: birden fazla koşul
var power = ins.getVariableValue("ActivePower_kW").value;
var status = ins.getVariableValue("GridStatus").value;
return power > 100 && status;

Her animation’a pre/post script atanabilir:

ScriptÇalışma ZamanıKullanım
Pre-Animation CodeEkran açıldığında (ilk yükleme)Başlangıç değerleri, veri çekme
Post-Animation CodeEkran kapandığındaTemizlik, kaynak serbest bırakma
// Pre-Animation: Son 1 saatlik güç verilerini çek ve grafiğe aktar
var endMs = ins.now().getTime();
var startMs = endMs - (60 * 60 * 1000);
var logs = ins.getLoggedVariableValuesByPage(
['ActivePower_kW'],
ins.getDate(startMs), ins.getDate(endMs), 0, 30
);
// SVG içindeki grafiği güncelle...

SVG öğelerine anlamlı id değerleri verin — Animation Element bunları referans eder:

<text id="temp_display">--</text>
<rect id="motor_indicator" fill="#cccccc"/>
<g id="valve_group" transform="rotate(0)">
<path d="..."/>
</g>

Animation’ın alignment özelliği ile ekran farklı çözünürlüklerde nasıl davranacağı belirlenir.

Animation açıldığında WebSocket bağlantısı kurulur. Platform, duration parametresinde belirtilen aralıkta değişken değerlerini istemciye push eder ve binding’ler otomatik güncellenir. Sayfa yenilemesi gerekmez.

Animation’lara placeholder tanımlanabilir. Aynı SVG tasarımı farklı parametrelerle (farklı cihaz, farklı değişken seti) tekrar kullanılabilir.

Örnek: Bir “Motor Detay” ekranı tasarlayın, placeholder olarak {motor_name} tanımlayın. Farklı motorlar için aynı ekranı farklı parametrelerle açın.