Skip to content

Commit 72bfd2e

Browse files
committed
New feature - Add exposed hideSeries & showSeries methods
1 parent bac6dc7 commit 72bfd2e

19 files changed

+697
-5
lines changed

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

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -766,17 +766,50 @@ const legendConfig = computed(() => {
766766
function segregate(id) {
767767
if(segregated.value.includes(id)) {
768768
segregated.value = segregated.value.filter(s => s !== id);
769-
emit('selectLegend', null)
769+
emit('selectLegend', mutableDataset.value)
770770
}else {
771771
if(segregated.value.length === convertedDataset.value.length - 1) return;
772772
segregated.value.push(id);
773-
emit('selectLegend', convertedDataset.value.find(d => d.uid === id));
773+
emit('selectLegend', mutableDataset.value);
774774
}
775775
if(fixedDatapoint.value) {
776776
fixDatapoint(drawableDataset.value.find((_, i) => i === fixedDatapointIndex.value))
777777
}
778778
}
779779
780+
function validSeriesToToggle(name) {
781+
if (!convertedDataset.value.length) {
782+
if (FINAL_CONFIG.value.debug) {
783+
console.warn('VueUiDonutEvolution - There are no series to show.');
784+
}
785+
return null;
786+
}
787+
const dp = convertedDataset.value.find(d => d.name === name);
788+
if (!dp) {
789+
if (FINAL_CONFIG.value.debug) {
790+
console.warn(`VueUiDonutEvolution - Series name not found "${name}"`);
791+
}
792+
return null;
793+
}
794+
return dp;
795+
}
796+
797+
function showSeries(name) {
798+
const dp = validSeriesToToggle(name);
799+
if (dp === null) return;
800+
if (segregated.value.includes(dp.uid)) {
801+
segregate(dp.uid);
802+
}
803+
}
804+
805+
function hideSeries(name) {
806+
const dp = validSeriesToToggle(name);
807+
if (dp === null) return;
808+
if (!segregated.value.includes(dp.uid)) {
809+
segregate(dp.uid);
810+
}
811+
}
812+
780813
const table = computed(() => {
781814
const head = [''].concat(convertedDataset.value.filter(ds => !segregated.value.includes(ds.uid)).map(ds => {
782815
return {
@@ -1001,6 +1034,8 @@ defineExpose({
10011034
generateCsv,
10021035
generateImage,
10031036
generateSvg,
1037+
hideSeries,
1038+
showSeries,
10041039
toggleTable,
10051040
toggleAnnotator,
10061041
toggleFullscreen

src/components/vue-ui-donut.vue

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -719,6 +719,39 @@ function segregate(index) {
719719
})));
720720
}
721721
722+
function validSeriesToToggle(name) {
723+
if (!immutableSet.value.length) {
724+
if (FINAL_CONFIG.value.debug) {
725+
console.warn('VueUiDonut - There are no series to show.');
726+
}
727+
return null;
728+
}
729+
const dp = immutableSet.value.find(d => d.name === name);
730+
if (!dp) {
731+
if (FINAL_CONFIG.value.debug) {
732+
console.warn(`VueUiDonut - Series name not found "${name}"`);
733+
}
734+
return null;
735+
}
736+
return dp;
737+
}
738+
739+
function showSeries(name) {
740+
const dp = validSeriesToToggle(name);
741+
if (dp === null) return;
742+
if (segregated.value.includes(dp.seriesIndex)) {
743+
segregate(dp.seriesIndex);
744+
}
745+
}
746+
747+
function hideSeries(name) {
748+
const dp = validSeriesToToggle(name);
749+
if (dp === null) return;
750+
if (!segregated.value.includes(dp.seriesIndex)) {
751+
segregate(dp.seriesIndex);
752+
}
753+
}
754+
722755
723756
const _total = computed(() => FINAL_DATASET.value.reduce((sum, ds) => sum + ds.values.reduce((a, b) => a + b, 0), 0));
724757
@@ -1231,6 +1264,8 @@ defineExpose({
12311264
generateCsv,
12321265
generateImage,
12331266
generateSvg,
1267+
hideSeries,
1268+
showSeries,
12341269
toggleTable,
12351270
toggleLabels,
12361271
toggleTooltip,

src/components/vue-ui-galaxy.vue

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,39 @@ function segregate(datapoint) {
275275
}));
276276
}
277277
278+
function validSeriesToToggle(name) {
279+
if (!immutableSet.value.length) {
280+
if (FINAL_CONFIG.value.debug) {
281+
console.warn('VueUiGalaxy - There are no series to show.');
282+
}
283+
return null;
284+
}
285+
const dp = immutableSet.value.find(d => d.name === name);
286+
if (!dp) {
287+
if (FINAL_CONFIG.value.debug) {
288+
console.warn(`VueUiGalaxy - Series name not found "${name}"`);
289+
}
290+
return null;
291+
}
292+
return dp;
293+
}
294+
295+
function showSeries(name) {
296+
const dp = validSeriesToToggle(name);
297+
if (dp === null) return;
298+
if (segregated.value.includes(dp.id)) {
299+
segregate({ id : dp.id });
300+
}
301+
}
302+
303+
function hideSeries(name) {
304+
const dp = validSeriesToToggle(name);
305+
if (dp === null) return;
306+
if (!segregated.value.includes(dp.id)) {
307+
segregate({ id: dp.id });
308+
}
309+
}
310+
278311
const immutableSet = computed(() => {
279312
return FINAL_DATASET.value
280313
.map((serie, i) => {
@@ -687,6 +720,8 @@ defineExpose({
687720
generateCsv,
688721
generateImage,
689722
generateSvg,
723+
hideSeries,
724+
showSeries,
690725
toggleTable,
691726
toggleTooltip,
692727
toggleAnnotator,

src/components/vue-ui-history-plot.vue

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -623,6 +623,39 @@ function segregate(index) {
623623
}
624624
}
625625
626+
function validSeriesToToggle(name) {
627+
if (!formattedDataset.value.length) {
628+
if (FINAL_CONFIG.value.debug) {
629+
console.warn('VueUiHistoryPlot - There are no series to show.');
630+
}
631+
return null;
632+
}
633+
const dp = formattedDataset.value.find(d => d.name === name);
634+
if (!dp) {
635+
if (FINAL_CONFIG.value.debug) {
636+
console.warn(`VueUiHistoryPlot - Series name not found "${name}"`);
637+
}
638+
return null;
639+
}
640+
return dp;
641+
}
642+
643+
function showSeries(name) {
644+
const dp = validSeriesToToggle(name);
645+
if (dp === null) return;
646+
if (segregated.value.includes(dp.seriesIndex)) {
647+
segregate(dp.seriesIndex);
648+
}
649+
}
650+
651+
function hideSeries(name) {
652+
const dp = validSeriesToToggle(name);
653+
if (dp === null) return;
654+
if (!segregated.value.includes(dp.seriesIndex)) {
655+
segregate(dp.seriesIndex);
656+
}
657+
}
658+
626659
const legendSet = computed(() => {
627660
return formattedDataset.value.map(ds => {
628661
return {
@@ -983,6 +1016,8 @@ defineExpose({
9831016
generateCsv,
9841017
generateImage,
9851018
generateSvg,
1019+
hideSeries,
1020+
showSeries,
9861021
toggleTable,
9871022
toggleTooltip,
9881023
toggleAnnotator,

src/components/vue-ui-nested-donuts.vue

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -746,6 +746,58 @@ function segregateDonut(item) {
746746
}
747747
}
748748
749+
function validSeriesToToggle(name) {
750+
if (!immutableDataset.value.length) {
751+
if (FINAL_CONFIG.value.debug) {
752+
console.warn('VueUiNestedDonuts - There are no series to show.');
753+
}
754+
return null;
755+
}
756+
757+
const dp = immutableDataset.value.flatMap(d => d.series).filter((el) => el.name === name)
758+
759+
if (!dp) {
760+
if (FINAL_CONFIG.value.debug) {
761+
console.warn(`VueUiNestedDonuts - Series name not found "${name}"`);
762+
}
763+
return null;
764+
}
765+
return dp
766+
}
767+
768+
function showSeries(name) {
769+
const dp = validSeriesToToggle(name);
770+
if (dp === null) return;
771+
772+
if (Array.isArray(dp)) {
773+
dp.forEach(el => {
774+
if (segregated.value.includes(el.id)) {
775+
segregateDonut({ id : el.id });
776+
}
777+
})
778+
} else {
779+
if (segregated.value.includes(dp.id)) {
780+
segregateDonut({ id: dp.id });
781+
}
782+
}
783+
}
784+
785+
function hideSeries(name) {
786+
const dp = validSeriesToToggle(name);
787+
if (dp === null) return;
788+
if (Array.isArray(dp)) {
789+
dp.forEach(el => {
790+
if (!segregated.value.includes(el.id)) {
791+
segregateDonut({ id: el.id });
792+
}
793+
})
794+
} else {
795+
if (!segregated.value.includes(dp.id)) {
796+
segregateDonut({ id: dp.id });
797+
}
798+
}
799+
}
800+
749801
const donutThickness = computed(() => {
750802
return (
751803
(donutSize.value / immutableDataset.value.length) *
@@ -1347,6 +1399,8 @@ defineExpose({
13471399
generateCsv,
13481400
generateImage,
13491401
generateSvg,
1402+
hideSeries,
1403+
showSeries,
13501404
toggleTable,
13511405
toggleLabels,
13521406
toggleTooltip,

src/components/vue-ui-onion.vue

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -482,11 +482,45 @@ function segregate(id) {
482482
if(segregated.value.includes(id)) {
483483
segregated.value = segregated.value.filter(el => el !== id);
484484
}else {
485+
if (segregated.value.length === immutableDataset.value.length - 1) return;
485486
segregated.value.push(id)
486487
}
487488
emit('selectLegend', mutableDataset.value)
488489
}
489490
491+
function validSeriesToToggle(name) {
492+
if (!immutableDataset.value.length) {
493+
if (FINAL_CONFIG.value.debug) {
494+
console.warn('VueUiOnion - There are no series to show.');
495+
}
496+
return null;
497+
}
498+
const dp = immutableDataset.value.find(d => d.name === name);
499+
if (!dp) {
500+
if (FINAL_CONFIG.value.debug) {
501+
console.warn(`VueUiOnion - Series name not found "${name}"`);
502+
}
503+
return null;
504+
}
505+
return dp;
506+
}
507+
508+
function showSeries(name) {
509+
const dp = validSeriesToToggle(name);
510+
if (dp === null) return;
511+
if (segregated.value.includes(dp.id)) {
512+
segregate(dp.id);
513+
}
514+
}
515+
516+
function hideSeries(name) {
517+
const dp = validSeriesToToggle(name);
518+
if (dp === null) return;
519+
if (!segregated.value.includes(dp.id)) {
520+
segregate(dp.id);
521+
}
522+
}
523+
490524
function getData() {
491525
return mutableDataset.value;
492526
}
@@ -733,6 +767,8 @@ defineExpose({
733767
generateCsv,
734768
generateImage,
735769
generateSvg,
770+
hideSeries,
771+
showSeries,
736772
toggleTable,
737773
toggleTooltip,
738774
toggleAnnotator,

src/components/vue-ui-parallel-coordinate-plot.vue

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,39 @@ const immutableDataset = computed(() => {
441441
});
442442
});
443443
444+
function validSeriesToToggle(name) {
445+
if (!immutableDataset.value.length) {
446+
if (FINAL_CONFIG.value.debug) {
447+
console.warn('VueUiParallelCoordinatePlot - There are no series to show.');
448+
}
449+
return null;
450+
}
451+
const dp = immutableDataset.value.find(d => d.name === name);
452+
if (!dp) {
453+
if (FINAL_CONFIG.value.debug) {
454+
console.warn(`VueUiParallelCoordinatePlot - Series name not found "${name}"`);
455+
}
456+
return null;
457+
}
458+
return dp;
459+
}
460+
461+
function showSeries(name) {
462+
const dp = validSeriesToToggle(name);
463+
if (dp === null) return;
464+
if (segregated.value.includes(dp.id)) {
465+
segregate(dp.id);
466+
}
467+
}
468+
469+
function hideSeries(name) {
470+
const dp = validSeriesToToggle(name);
471+
if (dp === null) return;
472+
if (!segregated.value.includes(dp.id)) {
473+
segregate(dp.id);
474+
}
475+
}
476+
444477
const legendSet = computed(() => {
445478
return immutableDataset.value.map(ds => {
446479
return {
@@ -838,6 +871,8 @@ defineExpose({
838871
generatePdf,
839872
generateImage,
840873
generateSvg,
874+
hideSeries,
875+
showSeries,
841876
toggleTable,
842877
toggleLabels,
843878
toggleTooltip,

0 commit comments

Comments
 (0)