λμΌν κ·Έλ£Ήμ μ¬λ¬ κ°μ νμνλ κ°λ‘ λμ λ§λ μ°¨νΈ
@subarroca κ³Όκ±°μ μ΄λ¬ν κ΅¬μ± μμμ λν΄ λͺ μ¬λκ³Ό μ΄μΌκΈ°ν μ μ΄ μμ΅λλ€. λ°λΌμ μ΄κ²μ΄ λΌμ΄λΈλ¬λ¦¬μ μ’μ μΆκ° κΈ°λ₯μ΄ λ κ²μ΄λΌκ³ μκ°ν©λλ€.
ꡬνμ μμνκΈ° μ μ λ¨Όμ API μ μμ μμ±νμμμ€.
μ΄κΈ° μκ° λ° μ§λ¬Έ:
κ³Όκ±°μ μ΄ λ¬Έμ μ μ§λ©΄ν μ£Όμ λ¬Έμ λ μ°κ²°λ λ°©μ(μ: ν
μ΄λΈ μ΄μμ)μΌλ‘ μλν΄μΌ νλ€λ κ²μ
λλ€.
μ¬κΈ°μ λ¬Έμ λ νΉμ λ©νΈλ¦μ΄ μ°κ²°λ λͺ¨λ μΈμ€ν΄μ€μμ λμΌν μμμ κ°μ ΈμΌ νλ€λ κ²μ
λλ€.
ν 1μ λ€μμ 보μ¬μ€λλ€. metricA νλμ, metricB λΉ¨κ°μ, metricC λ
Έλμ
ν 2λ λ€μμ 보μ¬μ€λλ€. metricA νλμ, metricC λ
Έλμ
μ΄κ²μ μ°¨νΈλ₯Ό μμΉ νλ νμ¬ μμ€ν μ λν΄ μ½κ° μλν©λλ€. μ΄κ²μ΄ μ°λ¦¬κ° μ¬μ ν μ΄ μμ€ν μ λ¬Έμ κ° μλ μ΄μ μ λλ€.
λμΌν λ©νΈλ¦μ λμΌν λ°©μμΌλ‘ νμ μμμ μ§μ νλ €λ©΄ κ°λ°μμκ² μ΄λ₯Ό λ§‘κ²¨μΌ ν μλ μμ΅λλ€. λ¨μ μ μ€μΌμ΄μ€ λ° μ°κ²°λ μ μ€μΌμ΄μ€μ μλ μ±μμ μ리μ¦μ μμμ μ€μ ν΄μΌ ν©λλ€.
<dt-single-stacked-bar
[series]="series"
[selected]="selected"
(selectedChange)="onSelect($event)"
valueDisplayMode="percent"
[visibleLegend]="false"
>
<div dtSingleStackedBarOverlay>...</div>
</dt-single-stacked-bar>
DtChartValueMode.ABSOLUTE
DtSingleStackedBarNode
μ νλ¨interface DtSingleStackedBarNode {
label: string;
value: number;
color?: DtColors | string;
}
export enum DtChartValueMode {
ABSOLUTE = 'absolute',
PERCENT = 'percent',
}
μλ
νμΈμ @subarrocaμ
λλ€!
API μ μμ μ§κΈκΉμ§ μ’μ 보μ
λλ€. λ΄κ° λ
Όμνκ³ μΆμ λͺ κ°μ§.
visibleLegend: λΆμΈ λ²λ‘λ₯Ό νμν μ§ μ¬λΆμ λλ€. κΈ°λ³Έκ°: μ°Έ
SingleStackedBarChartλ₯Ό dt-legendμ μ°κ²°νκ³ μλΉμκ° λ²λ‘κ° λ λλ§λ μμΉλ₯Ό μ μνλλ‘ ν΄μΌ νλ€κ³ μκ°ν©λλ€. ν
μ΄λΈ ν λ΄μμ SingleStackedBarChartμ μ¬μ© μ¬λ‘μ λν΄ μκ°νκ³ μμ΅λλ€. ν
μ΄λΈ μ체μ λμ μ°¨νΈμ λ²λ‘κ° νμλ©λλ€.
κ·Έλ¬λ μ΄λ‘ μΈν΄ https://github.com/dynatrace-oss/barista/issues/884#issuecomment -614602707μ μΈκΈλ λλ‘ μ°¨νΈ κ°μ κ³μ΄κ³Ό μμμ λκΈ°ννλ λ° νμν ν΅μ μ΄ νμν©λλ€. ν΄κ²° λ°©λ²μ κ³μ΄μ΄ μλμΌλ‘ μ°¨νΈ μμμ λ°λ₯΄μ§ μλλ‘ νκ³ μ¬μ©μκ° μ°¨νΈ μμμ μ μνλλ‘ νλ κ²μ
λλ€.
κ° μ°¨νΈμ νμλλ μ λ λλ μλ μ«μ
μ΄κ±°ν λμ κ°μΌλ‘ 'percent' | 'absolute'
μ 곡μ©μ²΄ μ νμ μ¬μ©νμμμ€.
μλ
νμΈμ @tomhellerμ
λλ€! λ μ λ§λλ‘ μ μμ μ½κ° λ³κ²½νμ΅λλ€.
μ λ DtSingleStackedBarChartValueDisplayMode
λ₯Ό μ¬μ©νκ³ μμ΅λλ€.
export type DtSingleStackedBarChartValueDisplayMode =
| 'none'
| 'absolute'
| 'percent';
μ΄κ²μ΄ λΉμ μκ² ν¨κ³Όκ° μμ΅λκΉ, μλλ©΄ μ νμ΄ μλ κ²μ μ νΈν©λκΉ?
λν λͺ¨λ κ²½μ°μ μ ν κ°λ₯ν μ°¨νΈλ‘ μ¬μ©νλ €λ κ²μ μλκΈ° λλ¬Έμ selectable
λ₯Ό μΆκ°νμ΅λλ€.
μμμ getDtChartColorPalette
λ₯Ό μ¬μ©νμ¬ μλμΌλ‘ κ°μ Έμ€μ§λ§ λ
Έλμ μμμ΄ μλ κ²½μ° ν λΉλ μμμ 무μν©λλ€.
λ²λ‘μ μ¬μ©μ λν΄. ν νλ¦Ώμ λ£μμ΅λλ€. μ°κ²°ν΄μΌ νκ±°λ λ²λ‘λ₯Ό μ΄λ»κ²λ λ ΈμΆν΄μΌ ν©λκΉ?
μ΄κ²μ΄ λΉμ μκ² ν¨κ³Όκ° μμ΅λκΉ, μλλ©΄ μ νμ΄ μλ κ²μ μ νΈν©λκΉ?
μ΄κ²μ μ μκ² μλ²½νκ² μλν©λλ€. :+1:
λν λͺ¨λ κ²½μ°μ μ ν κ°λ₯ν μ°¨νΈλ‘ μ¬μ©νλ €λ κ²μ μλκΈ° λλ¬Έμ μ ν κ°λ₯ν νλͺ©μ μΆκ°νμ΅λλ€.
μ΄κ²μ μ μκ²λ ν¨κ³Όμ μ λλ€. κ·νμ μ견μλ λ³κ²½ μ¬νμ λ°μν μ μμΌλ―λ‘ μ¬κΈ°μ μ΅μ λ¨μΌ μμ€κ° μμ΅λλ€. https://github.com/dynatrace-oss/barista/issues/884#issuecomment -614605963
λ²λ‘μ μ¬μ©μ λν΄. ν νλ¦Ώμ λ£μμ΅λλ€. μ°κ²°ν΄μΌ νκ±°λ λ²λ‘λ₯Ό μ΄λ»κ²λ λ ΈμΆν΄μΌ ν©λκΉ?
λ΄κ° λ§νλ €κ³ νλ μμ μ μ¬λ¬ μ°¨νΈκ° νλμ λ²λ‘λ₯Ό 곡μ ν μ μλ€λ κ²μ λλ€. κ·Έλ κΈ° λλ¬Έμ μ°¨νΈ μ체μ λ²λ‘λ₯Ό ν¬ν¨ν μλ μμ§λ§ μ΄μ κ°μ΄ ν΄μΌ νλ€κ³ μκ°ν©λλ€. νμ΄ μλ―Έμ μΌλ‘ μ°κ²°λ ν μ΄λΈμ΄λ λ€λ₯Έ μ’ λ₯μ λ°λ³΅ λ°μ΄ν° ννμ μμν΄ λ³΄μμμ€.
<dt-dummy-table>
<dt-dummy-row *ngFor="let row of rows">
<dt-single-stacked-bar [series]="row.series" legend="dummyTableLegend">
</dt-single-stacked-bar>
</dt-dummy-row>
</dt-dummy-table>
<dt-single-stacked-bar-legend #dummyTableLegend>
<!-- ... ? -->
</dt-single-stacked-bar-legend>
μ΄λ κ² νλ©΄ λͺ¨λ ν λ΄μμ λ²λ‘λ₯Ό λ λλ§νμ§ μκ³ ν
μ΄λΈ λμ λͺ¨λ μλ¦¬μ¦ ν¬μΈνΈλ₯Ό μμ§νκ³ ν΄λΉ μμ΄μ½κ³Ό λ μ΄λΈμ νμνλ κ²μ μνμ§ μμ κ²μ
λλ€.
κ·Έλ¦¬κ³ μ΄κ²μ΄ λμΌν μ리μ¦μ λν΄ ν
μ΄λΈ ββλ΄μ λͺ¨λ μ°¨νΈμμ λμΌν μμμ κ°μ ΈμΌ νκΈ° λλ¬Έμ μ°¨νΈλ³λ‘ μ°¨νΈ μμμ μλμΌλ‘ κ°μ Έμ€λ κ²μ΄ λΆκ°λ₯ν μ μλ μ΄μ μ
λλ€. μλ₯Ό λ€μ΄ 7νμμ νλμ μ리μ¦κ° λλ½λ κ²½μ°μλ λ§μ°¬κ°μ§μ
λλ€.
μ΄κ²μ΄ μ΄ν΄ν μ μκΈ°λ₯Ό λ°λλλ€.
μ, μμ ν μ΄ν΄ν μ μμ΅λλ€. λ²λ‘μ μνΈ μμ©νκ³ μ°¨νΈμ μμλ₯Ό μ¨κΈ°κ±°λ νμνκ³ μΆλ€κ³ μκ°νμ΅λλ€.
μ μ νμ μ μλ₯Ό μ λ°μ΄νΈνκ² μ΅λλ€.
<dt-single-stacked-bar
[series]="series"
[selected]="selected"
(selectedChange)="onSelect($event)"
valueDisplayMode="percent"
[visibleLegend]="false"
>
<div dtSingleStackedBarOverlay>...</div>
</dt-single-stacked-bar>
none
DtSingleStackedBarChartNode
μ νλ¨interface DtSingleStackedBarChartNode {
label: string;
value: number;
color?: DtColors | string;
}
export type DtSingleStackedBarChartValueDisplayMode =
| 'none'
| 'absolute'
| 'percent';
λ¨μΌ μ€ν λ§λ μ°¨νΈμ μ¬λ¬ μ°κ²°μ λν΄ μκ°νλ€λ©΄ max
μ
λ ₯κ³Ό κ°μ κ²μ΄ λμμ΄ λ κ²μ
λλ€. μ무 κ²λ μ£Όμ΄μ§μ§ μμΌλ©΄ ν¨μ€ μ리μ¦μ ν©μΌλ‘ μ΅λκ°μ κ³μ°ν μ μμ§λ§, ν¨μ€ μ리μ¦κ° μ¬λ¬ κ°μΈ κ²½μ° λΉκ΅ν μ μλλ‘ λμΌν μ²λλ‘ λ μ μμ΅λλ€.
μ΄κ²κ³Ό μΈλΆ λ²λ‘λ μλ§λ μ°λ¦¬κ° λΉμ₯ ν΄κ²°ν΄μΌ νλ κ²μ μλ κ²μ λλ€. μλνλ©΄ μ΄κ²μ΄ ν° λ³ν μμ΄ λμ€μ μ΅μ μΌλ‘ νμ₯λ μ μλ€κ³ μκ°νκΈ° λλ¬Έμ λλ€.
μ μ ν μ΄ κ΅¬μ± μμλ₯Ό μ¬λ¬ μ리μ¦μ μ¬μ¬μ©ν μ μλ€λ μ μ κ³ λ €νμ¬ λ μ΄μ single
λΌκ³ λΆλ₯΄μ§ μκ³ μ
κ·Έλ μ΄λνκΈ°λ‘ κ²°μ νμ΅λλ€. μ±κΈμ΄ λ± κ·Έλ° κ²½μ°μΌ κ²μ
λλ€.
<dt-stacked-bar
[series]="series"
[selectable]="selectable"
[(selected)]="selected"
[valueDisplayMode]="valueDisplayMode"
[direction]="direction"
[labelPosition]="labelPosition"
[legendPosition]="legendPosition"
[legends]="legends"
[fillMode]="fillMode"
[maxBarSize]="maxBarSize"
[max]="max"
>
<ng-template dtStackedBarChartOverlay let-tooltip>
<strong>{{ tooltip.seriesOrigin.label }}</strong>
<div>{{ tooltip.origin.label }}: {{ tooltip.origin.value }}</div>
</ng-template>
</dt-stacked-bar>
none
top
bottom
DtStackedBarChartSeries
λ° DtStackedBarChartNode
μ νλ¨interface DtStackedBarChartSeries {
label: string;
nodes: DtStackedBarChartNode[];
}
interface DtStackedBarChartNode {
label: string;
value: number;
color?: DtColors | string;
}
interface DtStackedBarChartTooltipData {
origin: DtStackedBarChartNode;
seriesOrigin: DtStackedBarChartSeries;
valueRelative: number;
color: DtColors | string;
visible: boolean;
selected: boolean;
length?: string;
}
series
λ°°μ΄μμ μ¬μ©μκ° μ λ¬ν μλ³Έ λ
Έλtype DtStackedBarChartValueDisplayMode = 'none' | 'absolute' | 'percent';
type DtStackedBarChartElementPosition =
| 'none'
| 'top'
| 'right'
| 'bottom'
| 'left';
type DtStackedBarChartFillMode = 'full' | 'relative';
type DtStackedBarChartDirection = 'horizontal' | 'vertical';
μλ
νμΈμ @subarrocaμ
λλ€!
μ΄κ²μ λ§λ μ°¨νΈλ₯Ό νμ₯νκΈ° μν ν° λ
Έλ ₯μ
λλ€. κ³ λ €ν΄μΌ ν λͺ κ°μ§ μ¬ν:
κ°λ‘ λ§λν/μΈλ‘ λ§λν μ°¨νΈ λ° μΈλ‘ λ§λν μ°¨νΈ
μ°¨νΈμμ μΈλ‘ λ§λ μ°¨νΈλ μΌλ°μ μΌλ‘ μΈλ‘ λ§λν μ°¨νΈλΌκ³ ν©λλ€. μ΄ νμ€μμ λ²μ΄λκ³ μΆμμ§ μ λͺ¨λ₯΄κ² μ΅λλ€. dt-stacked-column-chart
λ° dt-stacked-bar-chart
λ κ΅¬μ± μμλ₯Ό λ§λ€κΈ°λ‘ μ ννκ³ κΈ°λ³Έ ν΄λμ€(μ: DtStackedBarColumnChartBase
)λ₯Ό ν΅ν΄ λλΆλΆμ λ΄λΆ λ
Όλ¦¬λ₯Ό 곡μ ν μ μμ΅λλ€.
μ νμ
κ΅¬μ± μμκ° λ¬΄μμ λνλΌ κ²μΈμ§ λͺ
ννκ² νκΈ° μν΄ μ νκΈ° λ΄μ "μ°¨νΈ"λΌλ λ¨μ΄λ₯Ό ν¬ν¨νμμμ€.
λ°©ν₯ μ
λ ₯
λ κ΅¬μ± μμλ‘ λλλ©΄ λ μ΄μ νμνμ§ μμ κ²μ
λλ€.
λ μ΄λΈ μμΉ: DtStackedBarChartElementPosition
λ κ°μ§ λͺ¨λμ μ ν©νκ³ μΈλ‘ λ§λν λ° λ§λν μ°¨νΈμ λμΌνκ² μ μ©ν μ μλ μ νμ μ°Ύμ μ μμ΅λλ€. μΌμͺ½/μ€λ₯Έμͺ½μ μΈλ‘ λ§λν μ°¨νΈμμ μλ―Έκ° μκ³ μμͺ½/μλμͺ½ λ§λ μ°¨νΈμμλ μλ―Έκ° μμΌλ―λ‘ start | end
μ κ°μ΄ μ¬μ©ν μ μμ΅λλ€.
λ²λ‘ μμΉ: DtStackedBarChartElementPosition
νμ¬ μμ€μμ μ΄κ²μ μ κ±°νκ³ λ²λ‘μ λν κ³ μ μμΉλ₯Ό μ 곡νκΈ°λ‘ μ νν©λλ€. νμ¬λ‘μλ μ§μλ₯Ό μ μν μ μλ μ΄μ μ΄λ μ¬μ© μ¬λ‘κ° μμ΅λλ€. νμ¬λ‘μλ λ§λ/μ΄ μ°¨νΈμ λν λͺ¨λ λ²λ‘κ° μ°¨νΈ μλμ μμ΅λλ€.
maxBarSize: μ«μ
λλ μ΄κ²μ΄ λ¨μΌ 컬λΌ/λ°μ maxWidthλ₯Ό μ°Έμ‘°νλ€κ³ μΆμΈ‘ν©λλ€. μλ§λ maxTrackSize
μ κ°μ λ€λ₯Έ μ΄λ¦μΌλ‘ 컬λΌκ³Ό λ° κ°μ μ΄κ²μ 곡μ νλ λ°©λ²μ μ°Ύμ μ μμ κ²μ
λλ€.
API μ μμλ μΆ, μΆ λ μ΄λΈ, λκΈ λ° ν¬κΈ°μ λν λ΄μ©μ΄ ν¬ν¨λμ΄ μμ§ μμ΅λλ€. λμ€μ μΆκ° λ¨κ³μμ κ·Έλ κ² ν μ μλ€κ³ μκ°ν©λλ€.
μ΄κ²μ λ§€μ° ν° κ΅¬μ± μμμ²λΌ 보μ΄κΈ° λλ¬Έμ μ΄κ²μ λΆν νκ³ μμνκΈ° μν΄ μ΅μ μ€ν κ°λ₯ν μ νμ μ μνλ κ²μ΄ κ°λ₯νλ€κ³ μκ°ν©λλ€. κ·Έλ μ§ μμΌλ©΄ κ½€ μ€λ μκ°μ΄ 걸립λλ€. @ffriedl89 @subarroca μ λν΄ μ΄λ»κ² μκ°νμΈμ?
μλ !
μ°μ μ κ° μ μν λͺ¨λ κ²μ μ΄λ―Έ μλ£λμμΌλ―λ‘ ν μ€νΈλ₯Ό μ μΈνκ³ λ μ΄ μμ μ μννλ λ° λ§μ μκ°μ΄ μμλμ§ μμ΅λλ€.
μ νμ
μ΄λ―Έ μ΄λ¦μ 'μ°¨νΈ'κ° μμ§λ§ μ¬κΈ°μμ μμ΄ λ²λ Έμ΅λλ€. κ·Έλλ μμ μ£Όμ
μ κ°μ¬ν©λλ€.
λ§λ / μΈλ‘ λ§λν μ°¨νΈ μ 보
μ¬μ€ νλμ λ¨μΌ ν
νλ¦Ώκ³Ό 그리λ λ μ΄μμ λ° μμ μμΉ μ§μ μ μ¬μ©νμ¬ νλμ κ΅¬μ± μμμμ μ΄λ―Έ μνλμμΌλ―λ‘ λ³λμ κ΅¬μ± μμ μ κ·Ό λ°©μμ μ¬μ©νμ§ μμ΅λλ€. direction
μ΄λ¦μ type: 'bar' | 'column'
λ‘ λ³κ²½ν μ μμ΅λλ€.
λΌλ²¨ μμΉ
UXμ λͺ κ°μ§ μλλ₯Ό 보μ¬μ€ λ λ μ΄λΈμ΄ λ§λ μ°¨νΈμ μΌμͺ½μ κ° μ μλ€κ³ μ μ νμΌλ―λ‘ μ, μλ λ° μΌμͺ½μ΄ μμκ³ μ€λ₯Έμͺ½μ κ·Έλ¦Όμ μμ±νλ κ²μ²λΌ 보μμ§λ§ κ·Έλ€μ§ μ μ©νμ§λ μμ κ²μ
λλ€. λλ μ°λ¦¬κ° μ’μ°λ₯Ό μμ¨ μ μλμ§ μμ보기 μν΄ κ·Έλ€κ³Ό μ΄μΌκΈ°ν κ²μ΄λ€.
λ μ λ ν¬μ§μ
μ½κ² μ κ±° κ°λ₯
μ΅λ λ§λ ν¬κΈ°
κ·Έκ²μ λΉμ μ΄ μ€λͺ
ν κ²κ³Ό μ νν κ°μ΅λλ€. μ΄λ¦μ bar|column
λ‘ λ³κ²½νλ©΄ μ μν λλ‘ μ΄λ¦μ λ°κΎΈλ κ²μ΄ μ’μ΅λλ€.
μ€μ¬μ
μΈλ‘ λ§λν μ°¨νΈμ μ¬μ©ν xμΆ μ μ΄ μμ΅λλ€. μ΄λ»κ²λ 'valueAxis'λ₯Ό μΆκ°ν΄μΌ νλ€κ³ μκ°νμ§λ§ λ€μ λ¨κ³μμλ μ΄κ²μ΄ μλμ νκ³λ₯Ό ν¨μ¬ λμ΄μ°κ³ μ½κ² μΆκ°ν μ μλ κ°μ μ¬νμ΄ λ κ²μ΄λΌκ³ μκ°νμ΅λλ€.
#988μ μν΄ νμ