Ana içeriğe geç

Ekran paketi biçimi

Ekran paketi, sayfaları, sembolleri, popup'ları ve layout'ları dışarıdan bir YTCC projesine taşır. Bu sayfa biçimi, paketi elle ya da bir araçla üreten herkes için anlatır. Paketin nasıl içe aktarıldığı Ekran paketi içe aktarma sayfasında.

YTCC bir şey eklemeden önce paketi denetler ve errors (hatalar) ile warnings (uyarılar) bildirir. Hatalı paket içe aktarılamaz. Uyarılı paket, kullanıcı uyarıları Import anyway ile onayladıktan sonra içe aktarılır. Paketleri hatasız ve uyarısız teslim edin.

Klasör yapısı​

<paket>/
manifest.json
pages/<ad>.json her sayfa bir dosya
symbols/<ad>.json her sembol bir dosya
modals/<ad>.json her popup bir dosya
layouts/<ad>.json her layout bir dosya
assets/<dosya> paketin kullandığı görseller
  • Paket bir zip dosyası ya da bir klasördür. manifest.json en üst düzeydedir ya da tek bir üst klasörün içindedir.
  • Kullanmadığınız klasörleri koymayın.
  • Dosya adları serbesttir; YTCC bir öğenin kimliğini dosya adından değil id'sinden okur. Dosya adlarında yalnız harf, rakam, -, _ ve . kullanın. Zip dosyasında başka karakter içeren adlar yalnız zip onları UTF-8 olarak işaretlediyse doğru okunur; yoksa eski DOS kod sayfasıyla okunur ve manifest'teki bir yol bulunamayabilir.
  • Her JSON dosyası UTF-8'dir ve dizi değil, tek bir JSON nesnesi içerir.
  • __MACOSX/, .DS_Store, Thumbs.db ve desktop.ini yok sayılır.
  • Bir paket en çok 20.000 dosya içerir. Boyut sınırları ve kabul edilen zip biçimleri Sınırlar altında.

manifest.json​

{
"format": "ytcc-ekran-paketi",
"version": 1,
"name": "Boiler House Screens",
"description": "Boiler house overview and pump faceplate",
"pages": ["pages/boiler-house.json", "pages/pump-detail.json"],
"symbols": ["symbols/pump.json"],
"modals": ["modals/pump-command.json"],
"layouts": [],
"startPage": "page_boiler"
}
AlanKuralYanlışsa
formatTam olarak ytcc-ekran-paketiHata
version1Hata
namePaketin adı, içe aktarma penceresinde görünürBoşsa uyarı
descriptionSerbest metin
pages, symbols, modals, layoutsO klasördeki <klasör>/<ad>.json biçiminde yolların dizisi. Sıra projedeki sıradır. Olmayan dizi boş sayılır.Başka biçimdeki yol ya da olmayan dosya için hata
startPageİsteğe bağlı. Paketteki bir sayfanın id'si. Projenin açılış sayfası yoksa bu sayfa açılış sayfası olur.Dize değilse ya da paketin sayfası değilse hata

Dört klasörden birinde olup manifest'te geçmeyen JSON dosyası içe aktarılmaz; denetim bunun için uyarır.

Öğe dosyaları​

ÖğeZorunlu alanlarAyrıca denetlenen
Sayfaid, name, widgetsVarsa background; tuval canvasWidth × canvasHeight, verilmemişse 1920 × 1080
Sembolid, name, params, width, height, widgetswidth ve height pozitif; params dize dizisi; paramTypes
Popupid, name, width, height, background, widgetswidth ve height pozitif; params; paramTypes
Layoutid, name, widgetsTuval dışındaki nesneler denetlenmez
  • name boş olamaz. widgets nesnelerden oluşan bir dizidir.
  • background, type (solid, linear ya da radial) ve geçerli bir color içeren bir nesnedir.
  • paramTypes bir parametreyi tag, string, number ya da color ile eşler.
  • Öğe türünün bilmediği alan uyarı verir. shapeOps sayfalarda, sembollerde ve popup'larda kullanılabilir (bkz. Şekil işlemleri).
  • folderId içe aktarılmaz: öğeler listelerinin en üst düzeyine gelir. Sayfa alanları widgetCount ve widgetTypes de atılır.

Sembol ya da layout içinde nesnelerin x ve y'si onun sol üst köşesinden, popup içinde popup'ın sol üst köşesinden sayılır. Birim pikseldir, y aşağı doğru artar, rotate derece cinsindendir ve originX / originY çevresinde döner (varsayılan 0.5 / 0.5).

Kimlikler​

  • Bir id ^[A-Za-z0-9_-]{1,120}$ kalıbına uyar. Nesneler için page_, sym_, modal_, layout_ ve w_ gibi önekler paketi okunur tutar.
  • Sayfa, sembol, popup ve layout id'si tüm pakette benzersizdir. Nesne id'si kendi dosyasında benzersizdir.
  • Popup'lara name'leriyle, diğer bütün öğelere id'leriyle başvurulur.

Projede aynı id'li ya da aynı adlı bir öğe zaten varsa içe aktarma yeni öğeye başka bir kimlik ya da ad verir ve paket içindeki başvuruları günceller (bkz. Ekran paketi içe aktarma).

Nesneler​

Her nesnede type, id, name, x ve y bulunur. type, Nesne özellikleri sayfasındaki nesne türlerinden biridir; oradaki alan adları paketin alan adlarıdır.

DenetimDüzey
Bilinmeyen typeHata
Türün zorunlu bir alanı eksik ve varsayılanı yokHata
Zorunlu alan eksik ama varsayılanı var (width, height, radius, points, pts, x2, y2 ve symbolId dışında)Uyarı; varsayılan doldurulur
Türün bilmediği bir alanUyarı
x, y sayı değil (bağlama ya da #parametre# olabilir)Hata
width, height, radius pozitif değilHata
points / pts 2 noktadan az (çokgende 3), ya da noktalar {"x": …, "y": …} değilHata
Noktalı bir nesnenin x, y'si noktalarının en küçük x ve y'si değilUyarı
Çizginin x2, y2'si sayı değilHata
Nesne tuvalin dışına taşıyor (sayfa, sembol ve popup)Uyarı

Özellik değerleri özelliğin türüne göre denetlenir:

Özellik türüKabul edilen değer
Seçenek listesiSeçeneklerden biri
Renk#rgb, #rgba, #rrggbb, #rrggbbaa, rgb(), rgba(), hsl(), hsla() ya da white, transparent, none gibi bir renk adı
SayıBir sayı. Metin olarak yazılmış sayı ("12") uyarı verir.
Evet / hayırtrue ya da false
Metin, sinyalBir dize
Yazı tipisystem, arial, helvetica, calibri, segoe-ui, tahoma, verdana, times, georgia, cambria, courier, consolas, sans-serif, serif, monospace ya da boş
Listeler (seçenekler, seriler, görseller, eleman stilleri, alanlar, desenler, öncelikler)Bir dizi

#parametre# yer tutucusu (sembol ya da popup parametresi) konum, boyut, renk ve sayı için kabul edilir.

Sinyal bağlamaları​

Nesne özelliklerinde Bindable işaretli bir özellik sabit değer yerine {"$bind": "<sinyal>"} alır:

  • $bind bir sinyal adıdır ve boş olamaz.
  • map isteğe bağlıdır. map.mode direct, bit, value, range, string ya da expr'dir; bit için on ve off, value, range ve string için cases dizisi gerekir.
  • $bind, map ve rules dışındaki anahtarlar uyarı verir.
  • Bağlanamayan bir özellikteki bağlama hatadır.

Sinyallere adla başvurulur. Projede olmayan adlar içe aktarma penceresinde listelenir; içe aktarmayı engellemezler ve sonradan editörde bağlanırlar. #parametre# içeren adlar denetlenmez.

Başvurular​

BaşvuruGöstermesi gereken
Sembol örneğinin symbolId'siPaketteki bir sembol
Bağlama olarak symbolId (duruma göre seçilen sembol)Eşlemedeki her sembol, fallback ve unavailable dahil, pakette; en az bir sembol
Sembol örneğinin params'ıSembolün parametreleri. Eksik ya da fazla parametre uyarı verir; yanlış değerli color ya da number parametresi hatadır.
openModalOnClick, openModalOnMiddleClick, openModalOnRightClick, closeModalOn…Paketteki bir popup'ın name'i
eventsYalnız onClick, onMiddleClick ve onRightClick, her biri eylemleriyle
openPopup eylemiparams.modalName paketteki bir popup'ın adı
navigate eylemiparams.pageId paketteki bir sayfa
confirm eylemiparams.onConfirm içindeki eylemler aynı biçimde denetlenir
startBind, endBindAynı dosyadaki bir nesne
eventScriptsevent bilinen bir olay: onClick, onMiddleClick, onRightClick, onDblClick, onMouseEnter, onMouseLeave, onMouseDown, onMouseUp, onValueChange, onKeyDown, onKeyUp, onFocus, onBlur

Eylemler writeTag, toggleTag, confirm, console, navigate, openPopup, closePopup, mapView, signalDetail, driverControl, systemStop ve openTrend'dir; Eylem türleri sayfasında anlatılır.

Görseller​

Görseller assets/ içinde ayrı dosyalardır. Bir nesnenin herhangi bir dize değeri asset:<dosya adı> ile birine başvurur, örneğin "src": "asset:pump-icon.png" ya da "svgSrc": "asset:valve.svg". İçe aktarmada YTCC başvurulan her görseli projeye yükler ve başvuruyu görselin projedeki adresiyle değiştirir. Projede aynı içerikle zaten bulunan görsel ikinci kez saklanmaz.

DenetimDüzey
Başvurulan görsel assets/ içinde yokHata
png, jpg, jpeg, gif, webp, bmp, svg, ico dışında bir dosya türüHata
25 MB'tan büyük dosyaHata
Harf, rakam, ., _, - dışında karakter içeren görsel adıHata
data: adresi (JSON'a gömülü görsel)Hata
/media/ adresi (başka bir projenin görseli)Uyarı
assets/ içinde hiçbir yerden başvurulmayan görselUyarı; yüklenmez

BMP görseller kayıpsız PNG olarak saklanır.

Şekil işlemleri​

Sayfa, sembol ya da popup dosyası shapeOps taşıyabilir: içe aktarmanın sırayla çalıştırdığı, editördeki Shape Operations ile aynı işlemleri yapan bir komut listesi (bkz. Şekilleri birleştirme ve kesme).

"shapeOps": [
{ "op": "union", "inputs": ["w_hall", "w_annex"], "result": "w_building" },
{ "op": "subtract", "inputs": ["w_building", "w_yard"], "result": "w_plan" },
{ "op": "offset", "inputs": ["w_plan"], "distance": 12, "result": "w_fence" }
]
KuralDüzey
op: union, combine, fragment, intersect, subtract, join, trim ya da offsetHata
inputs, aynı dosyadaki nesne kimliklerinden ya da önceki komutların sonuçlarından oluşan boş olmayan bir dizidir; her biri bir kez geçerHata
Girdiler rectangle, circle, pentagon, hexagon, polygon, path, polyline, pencil ya da arrow türünde üst düzey nesnelerdir; gruptaki nesneler olamazHata
union, combine, fragment, intersect ve subtract en az bir kapalı şekil isterHata
union, combine, intersect, subtract, fragment ve join iki girdi ister; fragment ve join tek bir path ile de çalışırHata
Önceki bir komutun kullandığı girdi artık yoktur (kaynağını koruyan offset dışında)Hata
fragment, trim ve offset sonuçları çok parçalıdır ve girdi olamazHata
result, dosyada henüz olmayan geçerli bir kimliktirHata
offset piksel cinsinden pozitif bir distance ister; başka işlemde distanceHata / uyarı
op, inputs, result, distance dışında bir anahtarUyarı

İlk girdi birincildir: sonuç onun stilini, tek sonuçlu işlemlerde ayrıca adını, olaylarını ve popup bağlantılarını alır. Denetim geometri hesaplamaz. Çakışmayan şekiller ya da geriye bir şey bırakmayan çıkarma, içe aktarmayı o noktada, hiçbir görsel yüklenmeden önce hatayla durdurur.

Stil uyarıları​

Bu uyarılar YTCC'nin ekran stiline aykırı tasarımları gösterir. İçe aktarmayı engellemezler.

  • Gradyanlı sayfa ya da popup arka planı, ya da gradyanlı fillStyle, backgroundFillStyle veya pipeFillStyle.
  • Koyu sayfa arka planı.
  • Tuvalin yarısından büyük bir görsel: ekranı tek bir resimden değil, nesnelerden kurun.
  • Sinyalsiz true olarak ayarlanmış blink.
  • Görünürlüğü bir sinyale bağlı olmayan nesnede dolgu, renk, arka plan ya da çizgi olarak sabit bir alarm rengi (#e22028, #ec8629, #f5e11b, #916aad).