@@ -19,10 +19,10 @@ export type StackedBarChartData = Array<{
19
19
class="segment"
20
20
[style.width.%]="asPercent(item.value)"
21
21
[style.background-color]="item.color"
22
- (click)="toggleDisplayMode(item )"
23
- [attr.data-tooltip]="getTooltipText(item) "
22
+ (click)="toggleDisplayMode()"
23
+ [attr.data-tooltip]="showLegend() ? null : item.label "
24
24
>
25
- {{ getItemDisplayValue(item, displayPercentage() ) }}
25
+ {{ getItemDisplayValue(item) }}
26
26
</div>
27
27
}
28
28
}
@@ -53,7 +53,6 @@ export type StackedBarChartData = Array<{
53
53
.chart-container {
54
54
width: 100%;
55
55
background-color: var(--card-bg-color);
56
- border-radius: 12px;
57
56
}
58
57
59
58
.stacked-bar {
@@ -112,6 +111,7 @@ export type StackedBarChartData = Array<{
112
111
align-items: center;
113
112
font-size: 14px;
114
113
color: var(--text-secondary);
114
+ white-space: nowrap;
115
115
}
116
116
117
117
.legend-color {
@@ -121,7 +121,7 @@ export type StackedBarChartData = Array<{
121
121
margin-right: 8px;
122
122
}
123
123
124
- .segment::before {
124
+ .segment[data-tooltip] ::before {
125
125
content: attr(data-tooltip); /* Use a data attribute for the text */
126
126
position: absolute;
127
127
bottom: 110%; /* Position it above the segment */
@@ -141,12 +141,6 @@ export type StackedBarChartData = Array<{
141
141
z-index: 10;
142
142
}
143
143
144
- .segment:last-child:not(:only-child)::before {
145
- right: 0;
146
- left: auto;
147
- transform: none;
148
- }
149
-
150
144
/* Show tooltip on hover */
151
145
.segment:hover::before,
152
146
.segment:hover::after {
@@ -163,6 +157,7 @@ export class StackedBarChart {
163
157
total = computed ( ( ) =>
164
158
this . data ( ) . reduce ( ( acc , item ) => acc + item . value , 0 )
165
159
) ;
160
+
166
161
protected displayPercentage = signal ( false ) ;
167
162
168
163
asPercent ( value : number ) {
@@ -171,23 +166,14 @@ export class StackedBarChart {
171
166
return parseFloat ( percentage . toFixed ( percentage % 1 === 0 ? 0 : 1 ) ) ;
172
167
}
173
168
174
- toggleDisplayMode ( item : StackedBarChartData [ 0 ] ) : void {
169
+ toggleDisplayMode ( ) : void {
175
170
this . displayPercentage . update ( ( current ) => ! current ) ;
176
171
}
177
172
178
- getItemDisplayValue (
179
- item : StackedBarChartData [ 0 ] ,
180
- showPercent : boolean
181
- ) : string {
173
+ getItemDisplayValue ( item : StackedBarChartData [ 0 ] ) : string {
182
174
if ( item . value === 0 ) return '' ;
183
- return showPercent ? `${ this . asPercent ( item . value ) } %` : `${ item . value } ` ;
184
- }
185
-
186
- getTooltipText ( item : StackedBarChartData [ 0 ] ) {
187
- if ( ! this . showLegend ( ) ) {
188
- return item . label ;
189
- }
190
-
191
- return this . getItemDisplayValue ( item , ! this . displayPercentage ( ) ) ;
175
+ return this . displayPercentage ( )
176
+ ? `${ this . asPercent ( item . value ) } %`
177
+ : `${ item . value } ` ;
192
178
}
193
179
}
0 commit comments