İstemci betiği API'si
İstemci betikleri JavaScript'tir; tüm kod async çalışır, bu yüzden await her yerde kullanılabilir. Editör bu adları
yazarken tamamlar. Betiklerin ne zaman çalıştığı için bkz. Nesne ve sayfa olayları.
Tag — sinyaller
| Çağrı | Döndürür | Anlamı |
|---|---|---|
Tag("P101.Speed") | Sinyal nesnesi | Karşılaştırma ve aritmetikte değer gibi kullanın |
.value | Değer | Şimdiki değer; ilk değer gelene kadar undefined |
.quality | Sayı | 0 iyi, 1 gateway haberleşme arızası, 2 cihaz haberleşme arızası, 3 sinyal arızası, 4 manuel |
.state | Metin | ok, waiting, invalid, timeout ya da empty |
.waiting | Açık/kapalı | Değer henüz gelmedi |
.unit | Metin | Sinyalin birimi |
.timestamp, .source_time, .device_time, .arrival_time | Zaman | Değerin zamanları |
.raw_value | Değer | Ölçeklemeden önceki değer |
await Tag("x").read(timeoutMs?) | Değer | Güncel bir değeri bekler; sayfada olmayan bir sinyal için kullanın |
await Tag("x").write(v), await Tag.write("x", v) | — | Komut gönderir (bkz. Yazma) |
await Tag.writeMany({ "a": 1, "b": true }) | — | Aynı anda birkaç komut |
setTag(yol, değer) ve getTag(yol) yazma ve okumanın kısa biçimleridir.
Yazma
İstemci betiğinden yazma, girişli kullanıcının olağan bir komutudur: sunucu yetkiyi, sorumluluk alanını, sınırları, kilitleri ve haberleşmeyi denetler ve komut kaydına yazar.
- Reddedilen, zaman aşımına uğrayan ya da geri okunmayan yazma hata fırlatır;
await Tag(...).write(...)'itry/catchiçine alın. - Olay betiğinden saha cihazına yazma operatörden onay ister; kritik komut, ekrandaki gibi gerekçe ve ikinci kullanıcı ister; sonuç ve kopan bağlantı ekranda ileti olarak görünür. Sayfa betiği (tetikleyici) pencere açmadan ve bu iletiler olmadan yazar, orada kritik komut reddedilir.
- Hiçbir şey sıraya alınmaz: bağlantı yoksa yazma hemen reddedilir.
- Yalnız izleme için otomatik giriş yazamaz.
UI — ekran
| Çağrı | Anlamı |
|---|---|
UI.toast(metin, tür?) | Ekranın kenarında ileti; tür success, info, warning ya da error |
await UI.confirm(metin) | Evet / Hayır sorar; true ya da false döndürür |
await UI.prompt(metin, { default }) | Bir metin ister; onu ya da null döndürür |
UI.navigate(sayfaKimliği, params?) | Başka bir sayfayı açar |
UI.set(ad, özellik, değer), UI.get(ad, özellik) | Bir nesnenin özelliğini adıyla değiştirir ya da okur, örneğin UI.set("Pump1", "fill", "@running") |
UI.getColor(ad, varyant?) | Bir proje renginin değeri |
Bir popup nesnesinin olay betiğinde UI.set ve UI.get adı önce o popupın nesnelerinde, sonra sayfada arar. Bir giriş
kutusunda UI.set(ad, "value", x) kutuyu bir kez doldurur: operatör üzerine yazabilir, sinyale bir şey yazılmaz ve kutu popupıyla
kapanınca değer gider. Bkz. Popupta giriş kutuları.
Betiğin ayarladığı özellik sayfa terk edilene kadar kalır. Ham renkler yerine proje renk adlarını (@running) kullanın;
katı renk adlandırması açıksa ham renkler uygulanmaz.
Alarm ve Log
| Çağrı | Anlamı |
|---|---|
Alarm.info / warning / error / critical(metin) | Ekranda bir ileti gösterir. Alarm oluşturmaz: bunun için alarm tanımı kullanın. |
Log.debug / info / warn / error(metin), console.log / warn / error | Tarayıcı konsoluna [Script] önekiyle yazar |
User
| Üye | Anlamı |
|---|---|
User.id, User.name | Girişli kullanıcı (girişsiz anonymous) |
User.role, User.roleIds | Kullanıcının profilleri |
Sunucu her komutun yetkisini denetler; bu yüzden bir betik, girişli kullanıcının gönderemeyeceği bir komutu gönderemez.
Maps
Maps.setView(harita, enlem, boylam, yakınlık?), Maps.fitItems(harita, adlar?), Maps.follow(harita, öğe | null),
Maps.gotoBookmark(harita, ad), Maps.getView(harita) ve Maps.reset(harita) bir harita nesnesini adıyla yönetir.
Harita henüz çizilmediyse çağrı 10 saniyeye kadar bekler.
Driver — haberleşme kontrolü
await Driver.start(anahtar), Driver.stop(anahtar) ve Driver.restart(anahtar) bir sürücüyü başlatır, durdurur ya da
yeniden başlatır ve başarıda true döndürür. Operatör her zaman önce onaylar ve kullanıcının Communication control
(Haberleşme kontrolü) yetkisi gerekir.
Diğer
| Ad | Anlamı |
|---|---|
await wait(500), await wait("2 sec") | Bekler; sayı milisaniyedir, metin 500ms, 2 sec, 1 min olabilir |
globals | Açık sayfanın betikleri ve olay betiklerinin paylaştığı nesne; sayfa yeniden yüklenince kaybolur |
modals.open(ad, { data, onConfirm, onCancel }), modals.close(ad?), modals.closeAll() | Popup açar ve kapatır |
page.name, page.widgets(), page.widget(ad) | Açık sayfa ve nesneleri |
math | JavaScript Math |
import / export | Kütüphane dosyaları arasında: adlı, varsayılan ve ad alanı içe aktarmaları |
Standart JavaScript (JSON, Date, Map, Promise, setTimeout…) kullanılabilir. window, document, fetch,
localStorage ve benzeri tarayıcı arayüzleri kullanılamaz.