@@ -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
282287function unfixDatapoint () {
283288 fixedDatapoint .value = null ;
284289 isFixed .value = false ;
290+ fixedDatapointIndex .value = null ;
285291}
286292
287293const __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