İçeriğe geç

Element Editor

Animation Element Editor, SVG ekran üzerinde görsel olarak obje seçip, seçilen objeye animation davranışı bağlamak için kullanılan düzenleyicidir. Kod yazmadan, görsel yapılandırma arayüzü ile hızlıca SCADA ekranları oluşturulur.

Animation Element Editor

Menü: Development → Animations → Animation Dev → sağ üst köşedeki Element Editor butonu

Editör, SVG ekranının yanında panel olarak açılır.


Animation Dev ekranında açık olan SVG üzerinde mouse ile tıklayarak obje seçersiniz. Seçilen obje görsel olarak vurgulanır.

SVG’deki objeler genellikle <g> (group) elementleri içinde gruplanmıştır. Varsayılan tıklamada en üst seviye grup seçilir.

Grup içindeki bir objeye erişmek için:

  1. Ctrl tuşuna bir kez basıp bırakın
  2. Artık mouse ile tıkladığınızda grup yerine doğrudan tıkladığınız obje seçilir
  3. Bu sayede bir grup içindeki text, rect, circle gibi iç objeleri hedefleyebilirsiniz

Bir obje seçili iken Element Editor butonuna tıklayın. Editör açıldığında:

  • Seçili objenin DOM ID’si otomatik olarak alınır
  • Objenin SVG tag tipine göre (text, rect, g, image, circle, path…) uygulanabilir animation tipleri otomatik filtrelenir
  • Uygun animation tipleri sekmeler halinde yapılandırmaya hazır gösterilir

SVG Tag Tipine Göre Kullanılabilir Animation Tipleri

Section titled “SVG Tag Tipine Göre Kullanılabilir Animation Tipleri”
SVG TagKullanılabilir Tipler
text / tspanGet, Color, Opacity, Visibility, Rotate, Move, Scale, Bar, Pipe, Blink, Tooltip, AlarmIndication, Click
rect / circle / ellipse / polygonYukarıdakilere ek: Chart, Iframe, Datatable, Slider, Input, QRCode, GetSymbol, Faceplate, Peity, Menu, Button, Image
g (group)Animate, Faceplate, Iframe, Rotate, Move, Scale, Opacity, Visibility
imageFaceplate, Iframe, Image

Adım 3: Animation Tipi Seçme ve Yapılandırma

Section titled “Adım 3: Animation Tipi Seçme ve Yapılandırma”

Sekmelerden istediğiniz animation tipini seçin. Her animation tipinin kendine özel görsel yapılandırma arayüzü vardır:

Her animation tipi, tipine uygun form alanlarıyla birlikte gelir. Geliştirici bu form alanlarını doldurarak kod yazmadan yapılandırma yapar:

Animation TipiYapılandırma Arayüzü
GetDeğişken seçici, format ayarı, birim
ColorRenk paleti, koşul tablosu (değer → renk eşleşmesi)
RotateDöndürme merkezi (cx, cy), min/max açı, min/max değer
BarYön (yatay/dikey), min/max değer, dolgu rengi
MoveEksen (X/Y), mesafe aralığı, min/max değer
SliderMin, max, step, yön, renk
ChartGrafik tipi, renkler, eksen ayarları, veri kaynağı
OpacityMin/max opaklık, min/max değer
VisibilityKoşul (Boolean veya eşik)
BlinkYanıp sönme hızı, renkler
SetHedef değişken, yazılacak değer
InputTip (text/number), min, max, placeholder
IframeURL adresi
OpenHedef animation seçici
FaceplateFaceplate seçici, placeholder değerleri
DatatableKolon tanımları, veri kaynağı
AlarmIndicationAlarm grubu seçici

Adım 4: Expression (İleri Düzey — Opsiyonel)

Section titled “Adım 4: Expression (İleri Düzey — Opsiyonel)”

Her animation tipinde bir Expression bölümü bulunur. Bu bölüm opsiyoneldir — görsel yapılandırma yeterliyse kullanmanıza gerek yoktur.

Expression, geliştiricinin animation davranışını tamamen serbest biçimde programlamasını sağlar:

TipAçıklamaNe Zaman Kullanılır
TagDeğişken adı referansıEn basit — bir değişkeni doğrudan bağlamak
ExpressionJavaScript koduHesaplama, formatlama, koşullu mantık
SwitchDeğer → sonuç tablosuDurum bazlı çoklu eşleşme
NumericSabit sayıTest amaçlı
TextSabit metinEtiket, başlık
CollectionÇoklu değişkenChart, Datatable için
AlarmAlarm referansıAlarmIndication için
FaceplateFaceplate referansıFaceplate yerleştirme
AnimationAnimation referansıEkran geçişi (Open)
Animation PopupPopup referansıModal ekran açma
Custom MenuMenü referansıMenü açma
UrlURLIframe gömme
Tetra Color4 renkli alarm durumuAlarm renk kodları
ButtonButon yapılandırmasıButton tipi
HtmlHTML içerikZengin içerik
System PageSistem sayfasıPlatform dahili sayfa
InSCADA ViewPlatform görünümüDahili görünüm

Tag — Değişken adı yazmak yeterli:

ActivePower_kW

Expression — JavaScript ile serbest hesaplama:

// Formatlı değer
var val = ins.getVariableValue("ActivePower_kW");
return val.value.toFixed(1) + " kW";
// Koşullu renk
var temp = ins.getVariableValue("Temperature_C").value;
if (temp > 80) return "#ff0000";
if (temp > 60) return "#ff8800";
return "#00cc00";
// İki değişkenden hesaplama
var power = ins.getVariableValue("ActivePower_kW").value;
var voltage = ins.getVariableValue("Voltage_V").value;
if (voltage > 0) return (power * 1000 / voltage).toFixed(1);
return "0";

Switch — Değer → sonuç eşleşme tablosu:

0 → Durdu
1 → Çalışıyor
2 → Arıza
3 → Bakım

Renk switch:

true → #00cc00
false → #ff0000
Butonİşlev
SaveAnimation element’i kaydeder. Objeye binding bağlanmış olur
Run & SaveÖnce expression’ı sunucuda test eder, sonuç başarılıysa kaydeder

Run & Save özellikle expression geliştirirken kullanışlıdır — kaydetmeden önce sonucu doğrularsınız.

Kayıt sonrası, animation Visualization modunda çalıştırıldığında binding otomatik olarak aktif olur.


Element Editor’de yapılandırılan binding’ler, Visualization ekranında şu şekilde çalışır:

WebSocket Tabanlı Gerçek Zamanlı Güncelleme

Section titled “WebSocket Tabanlı Gerçek Zamanlı Güncelleme”
┌─────────────┐ ┌──────────┐ ┌─────────┐
│ Tarayıcı │──eval-animation──▶│ Sunucu │◀── Değişken ───│ Cache │
│ (SVG DOM) │◀─anim-results────│ (Engine) │ Değerleri │ │
└──────┬──────┘ └──────────┘ └─────────┘
Her element için
tipine uygun
DOM güncelleme
  1. Visualization açılır → Animation element’leri yüklenir, WebSocket abone olunur
  2. Her duration ms’de → Tarayıcı eval-animation mesajı gönderir
  3. Sunucu → Tüm element expression’larını çalıştırır, değişken değerlerini cache’ten okur
  4. Sonuç döner → Her element ID için hesaplanan değer
  5. DOM güncellenir → Her element tipine göre uygun DOM işlemi uygulanır
Animation TipiDOM İşlemi
Getelement.textContent = değer
Colorelement.style.fill = renk
Opacityelement.style.opacity = değer
Visibilityelement.style.display = değer ? '' : 'none'
Rotatetransform: rotate(açı)
Movetransform: translate(x, y)
Barelement.height = değer veya element.width = değer
Scaletransform: scale(değer)
BlinkSVG <animate> element ekleme/kaldırma
Pipestroke-dashoffset animasyonu

Kontrol Element’leri (Set, Slider, Input, Click)

Section titled “Kontrol Element’leri (Set, Slider, Input, Click)”

Kontrol tipleri periyodik değerlendirmeye dahil değildir. Kullanıcı etkileşiminde tetiklenir:

Kullanıcı Tıklama → Expression Çalıştır → ins.setVariableValue() → Cache → Saha Cihazı
  • Tüm element’ler tek bir WebSocket mesajında toplu değerlendirilir
  • Değişken değerleri cache’ten okunur (veritabanına gidilmez, < 1ms)
  • Sadece aktif element’ler (status: true) değerlendirilir
  • Click, MouseDown gibi olay bazlı element’ler periyodik döngüden hariçtir
  • Timeout: yanıt duration × 10 ms içinde gelmezse yeniden denenir