Just axes for charts
<tui-axes
axisYName="Target"
axisYSecondaryName="Sum"
class="axes"
[axisXLabels]="axisXLabels"
[axisYInset]="true"
[axisYLabels]="axisYLabels"
[axisYSecondaryLabels]="axisYSecondaryLabels"
[horizontalLines]="3"
[verticalLines]="4"
[verticalLinesHandler]="verticalLinesHandler"
/>
.axes {
block-size: 18.75rem;
inline-size: 37.5rem;
}
<tui-axes
axisY="none"
class="axes"
[axisXLabels]="axisXLabels"
[axisYSecondaryLabels]="axisYSecondaryLabels"
[centeredXLabels]="true"
[horizontalLines]="3"
[horizontalLinesHandler]="horizontalLinesHandler"
[verticalLines]="5"
[verticalLinesHandler]="verticalLinesHandler"
>
<tui-bar-chart
class="chart"
[max]="maxValue"
[tuiHintContent]="hint"
[value]="value"
/>
</tui-axes>
<ng-template
#hint
let-setIndex
>
@for (item of value; track item) {
<p class="hint">
<span
class="dot"
[style.background]="`var(--tui-chart-categorical-${$index.toString().padStart(2, '0')})`"
></span>
<span class="name">{{ getSetName($index) }}</span>
<span>{{ (item[setIndex] || 0) * 1000 | tuiAmount: 'RUB' }}</span>
</p>
}
</ng-template>
:host,
.hint {
--tui-chart-categorical-00: #c779d0;
--tui-chart-categorical-01: #feac5e;
--tui-chart-categorical-02: #ff5f6d;
--tui-chart-categorical-03: #4bc0c8;
}
.axes {
block-size: 18.75rem;
inline-size: 37.5rem;
}
.chart {
block-size: 100%;
}
.wrapper {
position: relative;
display: flex;
flex: 1;
align-items: flex-end;
justify-content: center;
block-size: 100%;
margin-block-end: -0.0625rem;
cursor: pointer;
&:hover {
background-color: rgba(0, 0, 0, 0.05);
}
}
.hint {
display: flex;
align-items: center;
}
.dot {
border-radius: 100%;
inline-size: 0.75rem;
block-size: 0.75rem;
margin-inline-end: 0.5rem;
}
.name {
margin-inline-end: 0.5rem;
}
<tui-axes
class="axes"
[axisXLabels]="axisXLabels"
[verticalLines]="5"
>
<div class="t-horizontal-bars">
@for (bar of value; track bar) {
<tui-bar
size="m"
[style.background-color]="`var(--tui-chart-categorical-${$index.toString().padStart(2, '0')})`"
[style.height.%]="getHeight(bar)"
/>
}
</div>
</tui-axes>
.axes {
block-size: 18.75rem;
inline-size: 37.5rem;
}
.t-horizontal-bars {
display: flex;
justify-content: space-between;
align-items: flex-end;
inline-size: 16.75rem;
block-size: 37.5rem;
transform-origin: bottom left;
transform: rotate(90deg) translate(-16.75rem, 0);
}