Skip to content

Commit 3a931f4

Browse files
committed
Option 'display' that allows to hide a specific element from the legend
1 parent e31ba75 commit 3a931f4

File tree

1 file changed

+74
-72
lines changed

1 file changed

+74
-72
lines changed

js/jquery.mapael.js

Lines changed: 74 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -404,84 +404,86 @@
404404
}
405405

406406
for(var i = 0, length = legendOptions.slices.length; i < length; ++i) {
407-
defaultElemOptions = (legendType == 'plot') ? options.map['defaultPlot'] : options.map['defaultArea'];
408-
legendOptions.slices[i].attrs = $.extend(
409-
{}
410-
, defaultElemOptions.attrs
411-
, legendOptions.slices[i].attrs
412-
);
413-
legendOptions.slices[i].attrsHover = $.extend(
414-
{}
415-
, defaultElemOptions.attrsHover
416-
, legendOptions.slices[i].attrsHover
417-
);
418-
419-
if(legendType == 'area' || legendOptions.slices[i].type == "square") {
420-
// Draw a square for squared plots AND areas
421-
!legendOptions.slices[i].size && (legendOptions.slices[i].size = 20);
407+
if (typeof legendOptions.slices[i].display == 'undefined' || legendOptions.slices[i].display == true) {
408+
defaultElemOptions = (legendType == 'plot') ? options.map['defaultPlot'] : options.map['defaultArea'];
409+
legendOptions.slices[i].attrs = $.extend(
410+
{}
411+
, defaultElemOptions.attrs
412+
, legendOptions.slices[i].attrs
413+
);
414+
legendOptions.slices[i].attrsHover = $.extend(
415+
{}
416+
, defaultElemOptions.attrsHover
417+
, legendOptions.slices[i].attrsHover
418+
);
422419

423-
elem = paper.rect(
424-
legendOptions.marginLeft
425-
, height
426-
, scale * (legendOptions.slices[i].size)
427-
, scale * (legendOptions.slices[i].size)
428-
).attr(legendOptions.slices[i].attrs);
429-
} else {
430-
elem = paper.circle(
431-
legendOptions.marginLeft + scale * (legendOptions.slices[i].size / 2)
420+
if(legendType == 'area' || legendOptions.slices[i].type == "square") {
421+
// Draw a square for squared plots AND areas
422+
!legendOptions.slices[i].size && (legendOptions.slices[i].size = 20);
423+
424+
elem = paper.rect(
425+
legendOptions.marginLeft
426+
, height
427+
, scale * (legendOptions.slices[i].size)
428+
, scale * (legendOptions.slices[i].size)
429+
).attr(legendOptions.slices[i].attrs);
430+
} else {
431+
elem = paper.circle(
432+
legendOptions.marginLeft + scale * (legendOptions.slices[i].size / 2)
433+
, height + scale * (legendOptions.slices[i].size / 2)
434+
, scale * (legendOptions.slices[i].size / 2)
435+
).attr(legendOptions.slices[i].attrs);
436+
}
437+
438+
label = paper.text(
439+
legendOptions.marginLeft + scale * legendOptions.slices[i].size + legendOptions.marginLeftLabel
432440
, height + scale * (legendOptions.slices[i].size / 2)
433-
, scale * (legendOptions.slices[i].size / 2)
434-
).attr(legendOptions.slices[i].attrs);
435-
}
436-
437-
label = paper.text(
438-
legendOptions.marginLeft + scale * legendOptions.slices[i].size + legendOptions.marginLeftLabel
439-
, height + scale * (legendOptions.slices[i].size / 2)
440-
, legendOptions.slices[i].label
441-
).attr(legendOptions.labelAttrs);
442-
443-
height += legendOptions.marginBottom + scale * legendOptions.slices[i].size;
444-
width = Math.max(width, legendOptions.marginLeft + scale * legendOptions.slices[i].size + legendOptions.marginLeftLabel + label.getBBox().width);
445-
446-
if (legendOptions.hideElemsOnClick.enabled) {
447-
// Hide/show elements when user clicks on a legend element
448-
label.attr({cursor:'pointer'});
441+
, legendOptions.slices[i].label
442+
).attr(legendOptions.labelAttrs);
449443

450-
$.fn.mapael.setHoverOptions(elem, legendOptions.slices[i].attrs, legendOptions.slices[i].attrsHover);
451-
$.fn.mapael.setHoverOptions(label, legendOptions.labelAttrs, legendOptions.labelAttrs);
452-
$.fn.mapael.setHover(paper, elem, label);
444+
height += legendOptions.marginBottom + scale * legendOptions.slices[i].size;
445+
width = Math.max(width, legendOptions.marginLeft + scale * legendOptions.slices[i].size + legendOptions.marginLeftLabel + label.getBBox().width);
453446

454-
label.hidden = false;
455-
(function(i, elem, label) {
456-
$(label.node).on('click', function() {
457-
if (!label.hidden) {
458-
label.animate({'opacity':0.5}, 300);
459-
} else {
460-
label.animate({'opacity':1}, 300);
461-
}
462-
463-
for (var id in elems) {
464-
if ((!legendOptions.slices[i].min || elems[id].value >= legendOptions.slices[i].min)
465-
&& (!legendOptions.slices[i].max || elems[id].value < legendOptions.slices[i].max)
466-
) {
467-
(function(id) {
468-
if (!label.hidden) {
469-
elems[id].mapElem.animate({'opacity':legendOptions.hideElemsOnClick.opacity}, 300, 'linear', function() {(legendOptions.hideElemsOnClick.opacity == 0) && elems[id].mapElem.hide();});
470-
elems[id].textElem && elems[id].textElem.animate({'opacity':legendOptions.hideElemsOnClick.opacity}, 300, 'linear', function() {(legendOptions.hideElemsOnClick.opacity == 0) && elems[id].textElem.hide();});
471-
} else {
472-
if (legendOptions.hideElemsOnClick.opacity == 0) {
473-
elems[id].mapElem.show();
474-
elems[id].textElem && elems[id].textElem.show();
447+
if (legendOptions.hideElemsOnClick.enabled) {
448+
// Hide/show elements when user clicks on a legend element
449+
label.attr({cursor:'pointer'});
450+
451+
$.fn.mapael.setHoverOptions(elem, legendOptions.slices[i].attrs, legendOptions.slices[i].attrsHover);
452+
$.fn.mapael.setHoverOptions(label, legendOptions.labelAttrs, legendOptions.labelAttrs);
453+
$.fn.mapael.setHover(paper, elem, label);
454+
455+
label.hidden = false;
456+
(function(i, elem, label) {
457+
$(label.node).on('click', function() {
458+
if (!label.hidden) {
459+
label.animate({'opacity':0.5}, 300);
460+
} else {
461+
label.animate({'opacity':1}, 300);
462+
}
463+
464+
for (var id in elems) {
465+
if ((!legendOptions.slices[i].min || elems[id].value >= legendOptions.slices[i].min)
466+
&& (!legendOptions.slices[i].max || elems[id].value < legendOptions.slices[i].max)
467+
) {
468+
(function(id) {
469+
if (!label.hidden) {
470+
elems[id].mapElem.animate({'opacity':legendOptions.hideElemsOnClick.opacity}, 300, 'linear', function() {(legendOptions.hideElemsOnClick.opacity == 0) && elems[id].mapElem.hide();});
471+
elems[id].textElem && elems[id].textElem.animate({'opacity':legendOptions.hideElemsOnClick.opacity}, 300, 'linear', function() {(legendOptions.hideElemsOnClick.opacity == 0) && elems[id].textElem.hide();});
472+
} else {
473+
if (legendOptions.hideElemsOnClick.opacity == 0) {
474+
elems[id].mapElem.show();
475+
elems[id].textElem && elems[id].textElem.show();
476+
}
477+
elems[id].mapElem.animate({'opacity':typeof elems[id].mapElem.originalAttrs.opacity != "undefined" ? elems[id].mapElem.originalAttrs.opacity : 1}, 300);
478+
elems[id].textElem && elems[id].textElem.animate({'opacity':typeof elems[id].textElem.originalAttrs.opacity != "undefined" ? elems[id].textElem.originalAttrs.opacity : 1}, 300);
475479
}
476-
elems[id].mapElem.animate({'opacity':typeof elems[id].mapElem.originalAttrs.opacity != "undefined" ? elems[id].mapElem.originalAttrs.opacity : 1}, 300);
477-
elems[id].textElem && elems[id].textElem.animate({'opacity':typeof elems[id].textElem.originalAttrs.opacity != "undefined" ? elems[id].textElem.originalAttrs.opacity : 1}, 300);
478-
}
479-
})(id);
480+
})(id);
481+
}
480482
}
481-
}
482-
label.hidden = !label.hidden;
483-
});
484-
})(i, elem, label);
483+
label.hidden = !label.hidden;
484+
});
485+
})(i, elem, label);
486+
}
485487
}
486488
}
487489

0 commit comments

Comments
 (0)