Status Tracker
Bir durum izleyici: bir dizi adım, bir sıra blok olarak; her blok, o adımda olanın renginde. Bir hizmetin ayakta olduğu günler, geçen derlemeler: kötü olanların nerede olduğu bir bakışta görülür, hangileri olduğu gösterilerek okunur.
import com.pantrixui.components.chart.statustracker.PantrixStatusTracker
- Gösterilen blok. İmlecin altındaki ya da dokunulan bloğun adı, renginin yanında, sıranın altına yazılır; ötekiler soluk çizilir. Parmakla, gösterilen bloğa yeniden dokunmak onu bırakır.
- Alttaki satır.
captionkapatılırsa ad yazılmaz. Satırın yeri, bir blok gösterilse de gösterilmese de tutulur: sıra yerinden oynamaz. - Basmak.
onSelect, basılan bloğun sıfırdan sayılan yerini verir. - Durum. Gösterilen blok
ChartState'te,x'i bloğun yeri olan bir seçim olarak durur. - Yön. Sağdan sola okunan dilde ilk blok sağda durur ve oklar gösterdikleri yöne gider.
- Dışa aktarma.
exportgrafiğin üstüne bir düğme koyar: grafik ekrandaki hâliyle, gösterilen yer ve tooltip olmadan, PNG, SVG ya da PDF dosyası olarak üretilir ve uygulamaya verilir. - Otomasyon.
StatusTracker_<tagKey>; sıra.Blocks, bloklar.Block_<sıra>, alttaki satır.Caption.
Örnekler
Bir hizmetin günleri
Bir hizmetin son otuz günü: yeşil günlerde ayakta, sarı günlerde yavaş, kırmızı günde kesik; gri günün kaydı yok.
İmleci bir bloğun üstüne getir ya da bloğa dokun: günün adı sıranın altına yazılır ve öteki günler solar. Klavyede oklar günden güne gider.
PantrixStatusTracker(
blocks = uptimeDays(),
description = "Son otuz günün durumu",
tagKey = "plain"
)
@Composable
private fun uptimeDays(): List<StatusBlock> {
val colors = PantrixTheme.colors
return List(30) { index ->
val day = "${index + 1}. gün"
when (index) {
7, 21 -> StatusBlock("$day: Yavaş", colors.warning.color)
13 -> StatusBlock("$day: Kesinti", colors.danger.color)
26 -> StatusBlock("$day: Kayıt yok")
else -> StatusBlock("$day: Sorunsuz", colors.success.color)
}
}
}
Bir bloğa basmak
onSelect, basılan bloğun yerini verir: bir güne bas ya da klavyeyle bir güne gidip Enter'a bas, kartın altındaki satır basılanı yazar. Burada alttaki ad satırı kapalı (caption = false).
val report = LocalExampleEvents.current
val days = uptimeDays()
PantrixStatusTracker(
blocks = days,
caption = false,
description = "Son otuz günün durumu",
onSelect = { report(days[it].name) },
tagKey = "pressed"
)
@Composable
private fun uptimeDays(): List<StatusBlock> {
val colors = PantrixTheme.colors
return List(30) { index ->
val day = "${index + 1}. gün"
when (index) {
7, 21 -> StatusBlock("$day: Yavaş", colors.warning.color)
13 -> StatusBlock("$day: Kesinti", colors.danger.color)
26 -> StatusBlock("$day: Kayıt yok")
else -> StatusBlock("$day: Sorunsuz", colors.success.color)
}
}
}
Kendi ölçülerin
Bir sıranın kendi ölçüleri: bloklar daha yüksek (trackerHeight), araları daha açık (barGap) ve köşeleri keskin (barRadius). Verilmeyen alan temanınki kalır.
PantrixStatusTracker(
blocks = uptimeDays().take(14),
description = "Son iki haftanın durumu",
style = ChartStyle(trackerHeight = 48.dp, barGap = 6.dp, barRadius = 0.dp),
tagKey = "own_look"
)
@Composable
private fun uptimeDays(): List<StatusBlock> {
val colors = PantrixTheme.colors
return List(30) { index ->
val day = "${index + 1}. gün"
when (index) {
7, 21 -> StatusBlock("$day: Yavaş", colors.warning.color)
13 -> StatusBlock("$day: Kesinti", colors.danger.color)
26 -> StatusBlock("$day: Kayıt yok")
else -> StatusBlock("$day: Sorunsuz", colors.success.color)
}
}
}
Dışa aktarma
export = ChartExport(...) grafiğin üstüne bir dışa aktarma düğmesi koyar: bas ve türü seç (PNG, SVG ya da PDF). Grafik dosyayı üretir ve onExport'a verir; altta adı ve boyu, PNG ise resmi görünür, "Dosyayı kaydet" onu platformun yoluyla verir.
Dosyada blokların satırı durur; altındaki, gösterilen bloğun adını yazan satır dosyada yoktur.
var file by remember { mutableStateOf<ChartExportFile?>(null) }
PantrixStatusTracker(
blocks = uptimeDays(),
description = "Son otuz günün durumu",
tagKey = "exported",
export = ChartExport(fileName = "son-otuz-gun") { file = it }
)
ExportedFile(file, tagKey = "exported")
@Composable
private fun uptimeDays(): List<StatusBlock> {
val colors = PantrixTheme.colors
return List(30) { index ->
val day = "${index + 1}. gün"
when (index) {
7, 21 -> StatusBlock("$day: Yavaş", colors.warning.color)
13 -> StatusBlock("$day: Kesinti", colors.danger.color)
26 -> StatusBlock("$day: Kayıt yok")
else -> StatusBlock("$day: Sorunsuz", colors.success.color)
}
}
}
API
blocks
Bir durum izleyici: bir dizi adım, bir sıra blok olarak; her blok, o adımda olanın renginde. Bir hizmetin ayakta olduğu günler, geçen derlemeler: kötü olanların nerede olduğu bir bakışta görülür, hangileri olduğu gösterilerek okunur.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
blocks | List<StatusBlock> | bloklar, okundukları sırayla. | |
modifier | Modifier | Modifier | izleyicinin modifier'ı. |
caption | Boolean | true | gösterilen bloğun adının sıranın altına yazılıp yazılmadığı. Satırın yeri, bir blok gösterilse de gösterilmese de tutulur; böylece sıra yerinden oynamaz. |
state | ChartState | rememberChartState() | okuyucunun gösterdiği: verilmezse izleyicinin kendisininki. |
description | String? | null | sıranın ne gösterdiği, birkaç sözcükle, ekran okuyucu için. |
onSelect | ((Int) -> Unit)? | null | basılan bloğun sıfırdan sayılan yeriyle çağrılır. |
style | ChartStyle? | null | bu izleyicinin kendi geometrisi: burada verilen alanlar, gerisi temanınkiyle. |
colors | ChartColors? | null | bu izleyicinin kendi renkleri, temanınkiler olmadıkları yerde. |
tagKey | String? | null | izleyicinin otomasyon anahtarı: izleyici StatusTracker_<tagKey>, sırası StatusTracker_<tagKey>.Blocks, bir blok, birden sayılarak, StatusTracker_<tagKey>.Block_<number> ve sıranın altındaki satır StatusTracker_<tagKey>.Caption olur. Bir bloğa basış, bloğun numarasıyla bir StatusTracker select olayı olarak bildirilir. Adlardan hiçbir şey bildirilmez. |
export | ChartExport? | null | grafiği uygulamanın dışına PNG, SVG ya da PDF olarak çıkarmayı sağlayan şey: grafiğin üstündeki bir düğme onun o anki hâlinin dosyasını üretip verir (bkz. ChartExport). null, grafikte böyle bir düğme yoktur. Blokların altındaki yazı satırı dosyada yoktur. |
ChartStyle
Bir grafiğin geometrisi: hiçbir şey söylemediğinde ne kadar yüksek olduğu, çizgilerinin ne kadar kalın, işaretlerinin ne kadar büyük olduğu ve parçalarının arasındaki boşluk; ve dolgularının renklerinin yanında desen alıp almadığı.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
height | Dp | Dp.Unspecified | Grafiğin modifier'ı ona bir yükseklik vermediğinde çizim alanının, eksenleriyle birlikte, ne kadar yüksek olduğu. Çizim alanının üstündeki ya da altındaki bir lejant kendi yüksekliğini ekler. |
lineWidth | Dp | Dp.Unspecified | Bir serinin çizgisinin kalınlığı. |
markerSize | Dp | Dp.Unspecified | Bir noktadaki işaretin genişliği ve yüksekliği. |
selectedMarkerSize | Dp | Dp.Unspecified | Aynısı, gösterilen noktadaki işaret için. |
gridWidth | Dp | Dp.Unspecified | Kılavuz çizgilerinin, eksenler boyunca çizilen çizgilerin ve gösterilen yeri işaretleyen çizginin kalınlığı. Sıfır hiçbirini çizmez. |
labelGap | Dp | Dp.Unspecified | Çizim alanıyla yanına ve altına yazılanın arası, ve onunla bir eksenin başlığının arası. |
tickSpacing | Dp | Dp.Unspecified | Değerlerin ekseni boyunca işaretlenen iki değerin arasındaki en az boşluk: eksen söylemediğinde kaç tanesinin işaretleneceğine karar veren şey. |
legendGap | Dp | Dp.Unspecified | Lejantla yanında durduğu grafiğin arası. |
legendItemGap | Dp | Dp.Unspecified | Lejantın bir kaydıyla sonrakinin arası. |
swatchSize | Dp | Dp.Unspecified | Bir serinin lejanttaki ve tooltip'teki örneğinin ne kadar geniş olduğu: çizgisinin kısa bir parçası ya da dolgusunun bir yaması. |
swatchGap | Dp | Dp.Unspecified | O örnekle ardındaki adın arası. |
tooltipShape | ShapeSpec | ShapeSpec.Unspecified | Tooltip'in köşeleri: markanın şekil ölçeğinin bir basamağı ya da sabit bir şekil. |
tooltipHorizontalPadding | Dp | Dp.Unspecified | Tooltip'in yanlarıyla içindekinin arası. |
tooltipVerticalPadding | Dp | Dp.Unspecified | Üstü ve altıyla içindekinin arası, ve başlığıyla satırlarının arası. |
tooltipGap | Dp | Dp.Unspecified | Gösterilen yerle yanındaki tooltip'in arası. |
tooltipElevation | Dp | Dp.Unspecified | Tooltip'in gölgesi. |
barGap | Dp | Dp.Unspecified | Bir yerde yan yana duran iki çubuğun arası. Bunun için fazla ince olan çubuklar daha yakın durur. |
barMaxWidth | Dp | Dp.Unspecified | Bir çubuğun en fazla ne kadar geniş olduğu, yerinin ne kadar yeri olursa olsun: üç yerli bir grafik üç kalas değildir. |
barRadius | Dp | Dp.Unspecified | Bir çubuğun ucunun, sıfırdan uzak ucunun, köşelerinin ne kadar yuvarlak olduğu. |
sliceGap | Dp | Dp.Unspecified | Bir pastanın yan yana duran iki dilimi arasında; pastanın ortasından kenarına kadar aynı genişlikte. |
selectedSliceOffset | Dp | Dp.Unspecified | Bir pastanın gösterilen diliminin, pastanın kenarından ne kadar dışarı taştığı. Pasta çevresinde bu kadar yer bırakır: dilimin duracağı yer olsun. |
gaugeWidth | Dp | Dp.Unspecified | Bir göstergenin yayının kalınlığı. Bir yay, yarıçapının yarısından kalın olmaz. |
meterHeight | Dp | Dp.Unspecified | Bir ölçüm grubunun çubuğunun yüksekliği. |
trackerHeight | Dp | Dp.Unspecified | Bir durum izleyicinin bloklarının yüksekliği. |
bubbleMinSize | Dp | Dp.Unspecified | Bir saçılım grafiğinin en küçük balonunun genişliği: büyüklüğü hiç olmayan ya da bir alan olarak görülemeyecek kadar az olan nokta da bir noktadır. |
bubbleMaxSize | Dp | Dp.Unspecified | En büyük balonunun genişliği: büyüklüğü grafiğin en büyüğü olanın. |
navigatorHeight | Dp | Dp.Unspecified | Zoom'unda gezgin şeridi olan bir grafikte, çizim alanının altındaki şeridin yüksekliği: grafiğin görünen kısmı onun üstünde işaretlenir ve kaydırılır. Yerleri yanından aşağı dizilen grafikte şerit çizim alanının yanında durur ve bu onun genişliğidir. |
barBandShare | Float | Float.NaN | Bir yerin çubuklarının bandından aldığı pay, sıfırdan çok ve en fazla bir: kalanı bir yerin çubuklarıyla sonrakininkiler arasındaki boşluktur. Çubuklar yine de barMaxWidth'ten geniş olmaz. |
markLineWidth | Dp | Dp.Unspecified | Bir işaretin çizgisinin kalınlığı: bir hedefin, bir sınırın, bir günün. Sıfır çizgi çizmez; işaretin yazısı yine yazılır. |
markBandAlpha | Float | Float.NaN | Bir işaretin bandının renginin ne kadarıyla çizildiği, sıfırdan bire: bant serilerin arkasında durur ve bir tondur. |
patterns | Boolean? | null | Bir grafiğin serilerinin, dilimlerinin ve karolarının dolgularının renklerinin yanında desenlerle, çizgilerinin de sırayla kesik çizilip çizilmediği (ChartPattern): renkleri ayırt edemeyen bir okuyucu için onları ayıran şey. Verilmezse sistemin ayarına uyulur: sistem şeyleri renksiz ayırt etmeye ayarlıysa açık (iOS'ta "Differentiate Without Color", Android'de renk düzeltme), değilse kapalı. |
nodeWidth | Dp | Dp.Unspecified | Bir sankey düğümünün ne kadar geniş olduğu. |
nodeGap | Dp | Dp.Unspecified | Bir sankey kolonunun iki düğümü arası. |
ChartColors
Temanın renklerini almayan bir grafik için, onun neyle boyandığı: verilen renk kullanılır, verilmeyen temanınki kalır.
| Parametre | Tür | Varsayılan | Ne olduğu |
|---|---|---|---|
series | List<Color> | emptyList() | Serilerin çizildiği renkler, dağıtıldıkları sırayla, kendi rengini söylemeyen seriler için. Boşsa temanın grafik renkleridir. |
grid | Color | Color.Unspecified | Bir eksenin işaretlerinde grafik boyunca çizilen çizgiler. Temanın divider'ı. |
axis | Color | Color.Unspecified | Bir eksen boyunca çizilen çizgi. Temanın border'ı. |
label | Color | Color.Unspecified | Eksenlerin yanına yazılanlar: değerler, yerler ve eksenlerin başlıkları, bir de lejanttaki adlar. Temanın textSecondary'si. |
crosshair | Color | Color.Unspecified | Gösterilen yeri işaretleyen çizgi. Temanın borderHover'ı: içinden geçtiği kılavuz çizgilerinden güçlü, arkasında durduğu serilerden sessiz. |
tooltipContainer | Color | Color.Unspecified | Tooltip'in dolgusu. Temanın surface'i. |
tooltipBorder | Color | Color.Unspecified | Tooltip'in kenarı. Temanın border'ı. |
tooltipText | Color | Color.Unspecified | Tooltip'in başlığı ve değerleri. Temanın textPrimary'si. |
tooltipLabel | Color | Color.Unspecified | Tooltip'teki seri adları. Temanın textSecondary'si. |
rising | Color | Color.Unspecified | Yukarı giden bir değerin çizildiği renk: bir şelalenin ekleyen adımı. Temanın success'i. |
falling | Color | Color.Unspecified | Aşağı giden bir değerin çizildiği renk: bir şelalenin götüren adımı. Temanın danger'ı. |
Erişilebilirlik
- Klavye. Sıra, Tab için tek duraktır: oklar bloktan bloğa gider ve uçlarda durur, Home ve End ilk ve son bloğa gider, Escape bırakır, Enter ve boşluk gösterilen bloğa basar.
- Ekran okuyucu. Sıra
description'ını, ardından her bloğu adıyla söyler. İki yüzden çok bloğu olan sıra yalnızca açıklamasıyla anlatılır.