Skip to content

Commit 98d59f1

Browse files
committed
Fix - In zoom mode, fixed donut breaking when segregating series
1 parent f167fc7 commit 98d59f1

File tree

1 file changed

+14
-21
lines changed

1 file changed

+14
-21
lines changed

src/components/vue-ui-donut-evolution.vue

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -271,17 +271,23 @@ function enter(datapoint) {
271271
hoveredDatapoint.value = datapoint;
272272
}
273273
274-
function fixDatapoint(datapoint) {
274+
const fixedDatapointIndex = ref(null);
275+
276+
function fixDatapoint(datapoint, index) {
275277
if(!datapoint.subtotal) return;
276278
hoveredDatapoint.value = null;
277279
hoveredIndex.value = null;
278280
isFixed.value = true;
279281
fixedDatapoint.value = datapoint;
282+
if(![null, undefined].includes(index)) {
283+
fixedDatapointIndex.value = index;
284+
}
280285
}
281286
282287
function unfixDatapoint() {
283288
fixedDatapoint.value = null;
284289
isFixed.value = false;
290+
fixedDatapointIndex.value = null;
285291
}
286292
287293
const __to__ = ref(null);
@@ -327,29 +333,16 @@ const legendConfig = computed(() => {
327333
}
328334
})
329335
330-
function segregate(index) {
331-
332-
if(segregated.value.includes(index)) {
333-
segregated.value = segregated.value.filter(s => s !== index);
336+
function segregate(id) {
337+
if(segregated.value.includes(id)) {
338+
segregated.value = segregated.value.filter(s => s !== id);
334339
}else {
335340
if(segregated.value.length === convertedDataset.value.length - 1) return;
336-
segregated.value.push(index);
341+
segregated.value.push(id);
337342
}
338343
emit('selectLegend', drawableDataset.value);
339344
if(fixedDatapoint.value) {
340-
fixedDatapoint.value = {
341-
...fixedDatapoint.value,
342-
donutFocus: makeDonut({
343-
series: mutableDataset.value.map((s, k) => {
344-
return {
345-
color: s.color,
346-
name: s.name,
347-
value: s.values[fixedDatapoint.value.index] ?? 0
348-
}
349-
}).filter(ds => !segregated.value.includes(ds.uid))
350-
}, svg.value.centerX, svg.value.centerY, svg.value.height / 5, svg.value.height / 5),
351-
}
352-
fixDatapoint(fixedDatapoint.value)
345+
fixDatapoint(drawableDataset.value.find((_, i) => i === fixedDatapointIndex.value))
353346
}
354347
}
355348
@@ -696,7 +689,7 @@ defineExpose({
696689
:width="slit"
697690
:height="10"
698691
:fill="hoveredIndex === datapoint.index ? `url(#hover_${uid})` : 'transparent'"
699-
@click="fixDatapoint(datapoint)"
692+
@click="fixDatapoint(datapoint, i)"
700693
:class="{'donut-hover': hoveredIndex === datapoint.index && datapoint.subtotal}"
701694
/>
702695
<rect
@@ -710,7 +703,7 @@ defineExpose({
710703
fill="transparent"
711704
@mouseenter="enter(datapoint)"
712705
@mouseleave="leave"
713-
@click="fixDatapoint(datapoint)"
706+
@click="fixDatapoint(datapoint, i)"
714707
:class="{'donut-hover': hoveredIndex === datapoint.index && datapoint.subtotal}"
715708
/>
716709

0 commit comments

Comments
 (0)