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.jsonen ü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.dbvedesktop.iniyok 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"
}
| Alan | Kural | Yanlışsa |
|---|---|---|
format | Tam olarak ytcc-ekran-paketi | Hata |
version | 1 | Hata |
name | Paketin adı, içe aktarma penceresinde görünür | Boşsa uyarı |
description | Serbest metin | |
pages, symbols, modals, layouts | O 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ı
| Öğe | Zorunlu alanlar | Ayrıca denetlenen |
|---|---|---|
| Sayfa | id, name, widgets | Varsa background; tuval canvasWidth × canvasHeight, verilmemişse 1920 × 1080 |
| Sembol | id, name, params, width, height, widgets | width ve height pozitif; params dize dizisi; paramTypes |
| Popup | id, name, width, height, background, widgets | width ve height pozitif; params; paramTypes |
| Layout | id, name, widgets | Tuval dışındaki nesneler denetlenmez |
nameboş olamaz.widgetsnesnelerden oluşan bir dizidir.background,type(solid,linearya daradial) ve geçerli bircoloriçeren bir nesnedir.paramTypesbir parametreyitag,string,numberya dacolorile eşler.- Öğe türünün bilmediği alan uyarı verir.
shapeOpssayfalarda, sembollerde ve popup'larda kullanılabilir (bkz. Şekil işlemleri). folderIdiçe aktarılmaz: öğeler listelerinin en üst düzeyine gelir. Sayfa alanlarıwidgetCountvewidgetTypesde 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çinpage_,sym_,modal_,layout_vew_gibi önekler paketi okunur tutar. - Sayfa, sembol, popup ve layout
id'si tüm pakette benzersizdir. Nesneid'si kendi dosyasında benzersizdir. - Popup'lara
name'leriyle, diğer bütün öğelereid'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.
| Denetim | Düzey |
|---|---|
Bilinmeyen type | Hata |
| Türün zorunlu bir alanı eksik ve varsayılanı yok | Hata |
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 alan | Uyarı |
x, y sayı değil (bağlama ya da #parametre# olabilir) | Hata |
width, height, radius pozitif değil | Hata |
points / pts 2 noktadan az (çokgende 3), ya da noktalar {"x": …, "y": …} değil | Hata |
Noktalı bir nesnenin x, y'si noktalarının en küçük x ve y'si değil | Uyarı |
Çizginin x2, y2'si sayı değil | Hata |
| 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 listesi | Seç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ır | true ya da false |
| Metin, sinyal | Bir dize |
| Yazı tipi | system, 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:
$bindbir sinyal adıdır ve boş olamaz.mapisteğe bağlıdır.map.modedirect,bit,value,range,stringya daexpr'dir;bitiçinonveoff,value,rangevestringiçincasesdizisi gerekir.$bind,mapverulesdışı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şvuru | Göstermesi gereken |
|---|---|
Sembol örneğinin symbolId'si | Paketteki 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 |
events | Yalnız onClick, onMiddleClick ve onRightClick, her biri eylemleriyle |
openPopup eylemi | params.modalName paketteki bir popup'ın adı |
navigate eylemi | params.pageId paketteki bir sayfa |
confirm eylemi | params.onConfirm içindeki eylemler aynı biçimde denetlenir |
startBind, endBind | Aynı dosyadaki bir nesne |
eventScripts | event 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.
| Denetim | Düzey |
|---|---|
Başvurulan görsel assets/ içinde yok | Hata |
| png, jpg, jpeg, gif, webp, bmp, svg, ico dışında bir dosya türü | Hata |
| 25 MB'tan büyük dosya | Hata |
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örsel | Uyarı; 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" }
]
| Kural | Düzey |
|---|---|
op: union, combine, fragment, intersect, subtract, join, trim ya da offset | Hata |
inputs, aynı dosyadaki nesne kimliklerinden ya da önceki komutların sonuçlarından oluşan boş olmayan bir dizidir; her biri bir kez geçer | Hata |
Girdiler rectangle, circle, pentagon, hexagon, polygon, path, polyline, pencil ya da arrow türünde üst düzey nesnelerdir; gruptaki nesneler olamaz | Hata |
union, combine, fragment, intersect ve subtract en az bir kapalı şekil ister | Hata |
union, combine, intersect, subtract, fragment ve join iki girdi ister; fragment ve join tek bir path ile de çalışır | Hata |
Ö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 olamaz | Hata |
result, dosyada henüz olmayan geçerli bir kimliktir | Hata |
offset piksel cinsinden pozitif bir distance ister; başka işlemde distance | Hata / uyarı |
op, inputs, result, distance dışında bir anahtar | Uyarı |
İ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,backgroundFillStyleveyapipeFillStyle. - Koyu sayfa arka planı.
- Tuvalin yarısından büyük bir görsel: ekranı tek bir resimden değil, nesnelerden kurun.
- Sinyalsiz
trueolarak 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).