|
1113 | 1113 | } |
1114 | 1114 |
|
1115 | 1115 | $.each(elems, function(id) { |
| 1116 | + // Retreive stored data of element |
| 1117 | + // 'hidden-by' contains the list of legendIndex that is hiding this element |
| 1118 | + var hiddenBy = elems[id].mapElem.data('hidden-by'); |
| 1119 | + // Set to empty object if undefined |
| 1120 | + if (typeof hiddenBy == "undefined") hiddenBy = {}; |
| 1121 | + |
1116 | 1122 | if ($.isArray(elems[id].value)) { |
1117 | 1123 | elemValue = elems[id].value[legendIndex]; |
1118 | 1124 | } else { |
|
1125 | 1131 | && (typeof sliceOptions.max == "undefined" || elemValue <= sliceOptions.max)) |
1126 | 1132 | ) { |
1127 | 1133 | (function(id) { |
1128 | | - if (hidden === '0') { |
| 1134 | + if (hidden === '0') { // we want to hide this element |
| 1135 | + hiddenBy[legendIndex] = true; // add legendIndex to the data object for later use |
1129 | 1136 | elems[id].mapElem.animate({"opacity":legendOptions.hideElemsOnClick.opacity}, legendOptions.hideElemsOnClick.animDuration, "linear", function() { |
1130 | 1137 | if (legendOptions.hideElemsOnClick.opacity === 0) elems[id].mapElem.hide(); |
1131 | 1138 | }); |
|
1134 | 1141 | if (legendOptions.hideElemsOnClick.opacity === 0) elems[id].textElem.hide(); |
1135 | 1142 | }); |
1136 | 1143 | } |
1137 | | - } else { |
1138 | | - if (legendOptions.hideElemsOnClick.opacity === 0) { |
1139 | | - elems[id].mapElem.show(); |
1140 | | - if (elems[id].textElem) elems[id].textElem.show(); |
| 1144 | + } else { // We want to show this element |
| 1145 | + delete hiddenBy[legendIndex]; // Remove this legendIndex from object |
| 1146 | + // Check if another legendIndex is defined |
| 1147 | + // We will show this element only if no legend is no longer hiding it |
| 1148 | + if ($.isEmptyObject(hiddenBy)) { |
| 1149 | + if (legendOptions.hideElemsOnClick.opacity === 0) { |
| 1150 | + elems[id].mapElem.show(); |
| 1151 | + if (elems[id].textElem) elems[id].textElem.show(); |
| 1152 | + } |
| 1153 | + elems[id].mapElem.animate({"opacity":typeof elems[id].mapElem.originalAttrs.opacity != "undefined" ? elems[id].mapElem.originalAttrs.opacity : 1}, legendOptions.hideElemsOnClick.animDuration); |
| 1154 | + if (elems[id].textElem) elems[id].textElem.animate({"opacity":typeof elems[id].textElem.originalAttrs.opacity != "undefined" ? elems[id].textElem.originalAttrs.opacity : 1}, legendOptions.hideElemsOnClick.animDuration); |
1141 | 1155 | } |
1142 | | - elems[id].mapElem.animate({"opacity":typeof elems[id].mapElem.originalAttrs.opacity != "undefined" ? elems[id].mapElem.originalAttrs.opacity : 1}, legendOptions.hideElemsOnClick.animDuration); |
1143 | | - if (elems[id].textElem) elems[id].textElem.animate({"opacity":typeof elems[id].textElem.originalAttrs.opacity != "undefined" ? elems[id].textElem.originalAttrs.opacity : 1}, legendOptions.hideElemsOnClick.animDuration); |
1144 | 1156 | } |
| 1157 | + // Update elem data with new values |
| 1158 | + elems[id].mapElem.data('hidden-by', hiddenBy); |
1145 | 1159 | })(id); |
1146 | 1160 | } |
1147 | 1161 | }); |
|
0 commit comments