Pantrix UI

Gauge

Bir gösterge: bir ölçekte tek bir değer, bir yayın ne kadarını dolandığıyla. Bir hız, bir yük, bir kotanın payı: olabileceği en aza ve en çoğa göre okunan bir değer.

import com.pantrixui.components.chart.gauge.PantrixGauge

Örnekler

Bir ölçekte bir değer

En yalın hâli: bir değer ve ölçeğin sonu. Elli gigabaytlık bir depolamanın otuz ikisi dolu; format değeri ve ölçeğin iki ucunu birimiyle yazar.

PantrixGauge(
    value = 32,
    max = 50,
    format = { "${it.toInt()} GB" },
    description = "Kullanılan depolama",
    tagKey = "plain"
)

Aralıklar

Ölçeğin üç aralığı var: altmışa kadar olağan, seksen beşe kadar yüksek, ondan sonra kritik. Yay, değerin ulaştığı aralığın rengiyle dolar; aralıklar soluk renkleriyle altında görünür.

Bir değer seç: yay oraya gider ve rengi ulaştığı aralığa göre değişir. Ekran okuyucu değerden sonra aralığın adını da söyler: "%72, Yüksek". Değeri format temanın diliyle yazıyor (PantrixTheme.strings.percent).

Aralıklar burada renklerini kendileri söylüyor: temanın başarı, uyarı ve tehlike renkleri. Rengi verilmeyen aralık temanın sıradaki grafik rengini alır; o renkler bir anlam taşımaz.

var load by remember { mutableStateOf(72) }
val strings = PantrixTheme.strings
PantrixSegmentButton(
    options = loadReadings(),
    selected = load,
    onSelect = { load = it },
    fullWidth = false,
    tagKey = "gauge_load"
)
PantrixGauge(
    value = load,
    segments = loadRanges(),
    format = { strings.percent(it / 100) },
    description = "İşlemci yükü",
    tagKey = "segments"
)

@Composable
private fun loadRanges(): List<GaugeSegment> {
    val colors = PantrixTheme.colors
    return listOf(
        GaugeSegment(upTo = 60, color = colors.success.color, name = "Olağan"),
        GaugeSegment(upTo = 85, color = colors.warning.color, name = "Yüksek"),
        GaugeSegment(upTo = 100, color = colors.danger.color, name = "Kritik")
    )
}

@Composable
private fun loadReadings(): List<SegmentOption<Int>> {
    val strings = PantrixTheme.strings
    return listOf(40 to "low", 72 to "high", 93 to "critical").map { (load, key) ->
        SegmentOption(value = load, label = strings.percent(load / 100.0), tagKey = key)
    }
}

İbre

İbreli gösterge: ortadan değere bir ibre uzanır, değer ibrenin altına yazılır. Aralıklar tam renkleriyle çizilir ve yay dolmaz: ibre onlara göre okunur.

var load by remember { mutableStateOf(40) }
val strings = PantrixTheme.strings
PantrixSegmentButton(
    options = loadReadings(),
    selected = load,
    onSelect = { load = it },
    fullWidth = false,
    tagKey = "gauge_needle_load"
)
PantrixGauge(
    value = load,
    segments = loadRanges(),
    needle = true,
    format = { strings.percent(it / 100) },
    description = "İşlemci yükü",
    tagKey = "needle"
)

@Composable
private fun loadRanges(): List<GaugeSegment> {
    val colors = PantrixTheme.colors
    return listOf(
        GaugeSegment(upTo = 60, color = colors.success.color, name = "Olağan"),
        GaugeSegment(upTo = 85, color = colors.warning.color, name = "Yüksek"),
        GaugeSegment(upTo = 100, color = colors.danger.color, name = "Kritik")
    )
}

@Composable
private fun loadReadings(): List<SegmentOption<Int>> {
    val strings = PantrixTheme.strings
    return listOf(40 to "low", 72 to "high", 93 to "critical").map { (load, key) ->
        SegmentOption(value = load, label = strings.percent(load / 100.0), tagKey = key)
    }
}

Sıfırdan başlamayan ölçek

Aralıksız, ibreli bir gösterge: yay değere kadar dolar ve ibre de değeri gösterir. Ölçek sıfırdan başlamak zorunda değildir: bu termometre eksi yirmiden kırka gider.

val strings = PantrixTheme.strings
PantrixGauge(
    value = 7.5,
    min = -20,
    max = 40,
    needle = true,
    format = { "${strings.decimal(it, fractionDigits = 1)}°" },
    description = "Dış sıcaklık",
    tagKey = "below_zero"
)

Ortada kendi içeriğin

center, değerin yazısının yerine kendi içeriğini koyar: burada değerin altında birimi. İçerik, yayın ortasında bıraktığı yere sığar.

Ekran okuyucu değeri göstergenin kendisinden duyar (description ve format); ortadaki yazılar gözün içindir.

PantrixGauge(
    value = 86,
    max = 120,
    format = { "${it.toInt()} km/sa" },
    center = {
        Column(horizontalAlignment = Alignment.CenterHorizontally) {
            PantrixText(text = "86", style = PantrixTheme.typography.headline)
            PantrixText(text = "km/sa", color = PantrixTheme.colors.textSecondary)
        }
    },
    description = "Hız",
    tagKey = "own_center"
)

Kendi ölçülerin

Bir göstergenin kendi ölçüleri: yay daha ince (gaugeWidth) ve gösterge daha alçak (height). Aralıkların arası kapalı (sliceGap). Verilmeyen alan temanınki kalır.

val strings = PantrixTheme.strings
PantrixGauge(
    value = 54,
    segments = loadRanges(),
    format = { strings.percent(it / 100) },
    description = "İşlemci yükü",
    style = ChartStyle(gaugeWidth = 8.dp, height = 160.dp, sliceGap = 0.dp),
    tagKey = "own_look"
)

@Composable
private fun loadRanges(): List<GaugeSegment> {
    val colors = PantrixTheme.colors
    return listOf(
        GaugeSegment(upTo = 60, color = colors.success.color, name = "Olağan"),
        GaugeSegment(upTo = 85, color = colors.warning.color, name = "Yüksek"),
        GaugeSegment(upTo = 100, color = colors.danger.color, name = "Kritik")
    )
}

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.

Ortadaki değer dosyada da yazılıdır; ortaya center ile konan bir içerik ise dosyaya çıkmaz.

var file by remember { mutableStateOf<ChartExportFile?>(null) }
PantrixGauge(
    value = 32,
    max = 50,
    format = { "${it.toInt()} GB" },
    description = "Kullanılan depolama",
    tagKey = "exported",
    export = ChartExport(fileName = "depolama") { file = it }
)
ExportedFile(file, tagKey = "exported")

API

value

Bir gösterge: bir ölçekte tek bir değer, bir yayın ne kadarını dolandığıyla. Bir hız, bir yük, bir kotanın payı: olabileceği en aza ve en çoğa göre okunan bir değer.

ParametreTürVarsayılanNe olduğu
valueNumber?ölçüm. null ve sayı olmayan şey ölçüm değildir: gösterge ölçeğini gösterir, üstünde hiçbir şey göstermez.
modifierModifierModifiergöstergenin modifier'ı. Buradaki bir yükseklik göstergenindir.
minNumber0ölçeğin başladığı yer.
maxNumber100ölçeğin bittiği yer: min'den büyük.
segmentsList<GaugeSegment>emptyList()ölçeğin bir rengi ve bir adı olan parçaları, ölçek boyunca durdukları sırayla; her biri bir öncekinin bittiği yerden ötede biter. Hiç yoksa yay grafiğin renklerinin ilkiyle çizilir.
needleBooleanfalsedeğeri bir ibrenin gösterip göstermediği.
format((Double) -> String)?nullbir değerin nasıl yazıldığı: ölçüm ve ölçeğin iki ucu. Verilmezse temanın diliyle sayı olarak yazılırlar.
center(@Composable () -> Unit)?nullgöstergede, yazıldığı hâliyle ölçümün yerinde duran: altında birimiyle ölçüm, bir ikon. Yayın ortasında bıraktığı yer onundur; göstergenin ibresi varsa yayın iki ucunun arasındaki yer.
descriptionString?nullgöstergenin neyi ölçtüğü, birkaç sözcükle, ekran okuyucu için: gösterge hakkında söylediği ilk şey.
styleChartStyle?nullbu göstergenin kendi geometrisi: burada verilen alanlar, gerisi temanınkiyle.
colorsChartColors?nullbu göstergenin kendi renkleri, temanınkiler olmadıkları yerde.
tagKeyString?nullgöstergenin otomasyon anahtarı: gösterge Gauge_<tagKey> olur.
exportChartExport?nullgrafiğ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. Ortada duran, center, dosyada yoktur; göstergenin oraya kendi yazdığı değer vardır.

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ığı.

ParametreTürVarsayılanNe olduğu
heightDpDp.UnspecifiedGrafiğ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.
lineWidthDpDp.UnspecifiedBir serinin çizgisinin kalınlığı.
markerSizeDpDp.UnspecifiedBir noktadaki işaretin genişliği ve yüksekliği.
selectedMarkerSizeDpDp.UnspecifiedAynısı, gösterilen noktadaki işaret için.
gridWidthDpDp.UnspecifiedKılavuz çizgilerinin, eksenler boyunca çizilen çizgilerin ve gösterilen yeri işaretleyen çizginin kalınlığı. Sıfır hiçbirini çizmez.
labelGapDpDp.UnspecifiedÇizim alanıyla yanına ve altına yazılanın arası, ve onunla bir eksenin başlığının arası.
tickSpacingDpDp.UnspecifiedDeğ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.
legendGapDpDp.UnspecifiedLejantla yanında durduğu grafiğin arası.
legendItemGapDpDp.UnspecifiedLejantın bir kaydıyla sonrakinin arası.
swatchSizeDpDp.UnspecifiedBir serinin lejanttaki ve tooltip'teki örneğinin ne kadar geniş olduğu: çizgisinin kısa bir parçası ya da dolgusunun bir yaması.
swatchGapDpDp.UnspecifiedO örnekle ardındaki adın arası.
tooltipShapeShapeSpecShapeSpec.UnspecifiedTooltip'in köşeleri: markanın şekil ölçeğinin bir basamağı ya da sabit bir şekil.
tooltipHorizontalPaddingDpDp.UnspecifiedTooltip'in yanlarıyla içindekinin arası.
tooltipVerticalPaddingDpDp.UnspecifiedÜstü ve altıyla içindekinin arası, ve başlığıyla satırlarının arası.
tooltipGapDpDp.UnspecifiedGösterilen yerle yanındaki tooltip'in arası.
tooltipElevationDpDp.UnspecifiedTooltip'in gölgesi.
barGapDpDp.UnspecifiedBir yerde yan yana duran iki çubuğun arası. Bunun için fazla ince olan çubuklar daha yakın durur.
barMaxWidthDpDp.UnspecifiedBir çubuğun en fazla ne kadar geniş olduğu, yerinin ne kadar yeri olursa olsun: üç yerli bir grafik üç kalas değildir.
barRadiusDpDp.UnspecifiedBir çubuğun ucunun, sıfırdan uzak ucunun, köşelerinin ne kadar yuvarlak olduğu.
sliceGapDpDp.UnspecifiedBir pastanın yan yana duran iki dilimi arasında; pastanın ortasından kenarına kadar aynı genişlikte.
selectedSliceOffsetDpDp.UnspecifiedBir 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.
gaugeWidthDpDp.UnspecifiedBir göstergenin yayının kalınlığı. Bir yay, yarıçapının yarısından kalın olmaz.
meterHeightDpDp.UnspecifiedBir ölçüm grubunun çubuğunun yüksekliği.
trackerHeightDpDp.UnspecifiedBir durum izleyicinin bloklarının yüksekliği.
bubbleMinSizeDpDp.UnspecifiedBir 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.
bubbleMaxSizeDpDp.UnspecifiedEn büyük balonunun genişliği: büyüklüğü grafiğin en büyüğü olanın.
navigatorHeightDpDp.UnspecifiedZoom'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.
barBandShareFloatFloat.NaNBir 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.
markLineWidthDpDp.UnspecifiedBir 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.
markBandAlphaFloatFloat.NaNBir işaretin bandının renginin ne kadarıyla çizildiği, sıfırdan bire: bant serilerin arkasında durur ve bir tondur.
patternsBoolean?nullBir 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ı.
nodeWidthDpDp.UnspecifiedBir sankey düğümünün ne kadar geniş olduğu.
nodeGapDpDp.UnspecifiedBir 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.

ParametreTürVarsayılanNe olduğu
seriesList<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.
gridColorColor.UnspecifiedBir eksenin işaretlerinde grafik boyunca çizilen çizgiler. Temanın divider'ı.
axisColorColor.UnspecifiedBir eksen boyunca çizilen çizgi. Temanın border'ı.
labelColorColor.UnspecifiedEksenlerin yanına yazılanlar: değerler, yerler ve eksenlerin başlıkları, bir de lejanttaki adlar. Temanın textSecondary'si.
crosshairColorColor.UnspecifiedGösterilen yeri işaretleyen çizgi. Temanın borderHover'ı: içinden geçtiği kılavuz çizgilerinden güçlü, arkasında durduğu serilerden sessiz.
tooltipContainerColorColor.UnspecifiedTooltip'in dolgusu. Temanın surface'i.
tooltipBorderColorColor.UnspecifiedTooltip'in kenarı. Temanın border'ı.
tooltipTextColorColor.UnspecifiedTooltip'in başlığı ve değerleri. Temanın textPrimary'si.
tooltipLabelColorColor.UnspecifiedTooltip'teki seri adları. Temanın textSecondary'si.
risingColorColor.UnspecifiedYukarı giden bir değerin çizildiği renk: bir şelalenin ekleyen adımı. Temanın success'i.
fallingColorColor.UnspecifiedAşağı giden bir değerin çizildiği renk: bir şelalenin götüren adımı. Temanın danger'ı.

Erişilebilirlik