Skip to content

Commit 500abe5

Browse files
committed
Merge pull request #236 from neveldo/feature/optimise-update-event
Fix prevent from updating unneeded areas, plots and links in the 'update' event
2 parents 1cd996a + 3867cf6 commit 500abe5

File tree

2 files changed

+51
-54
lines changed

2 files changed

+51
-54
lines changed

js/jquery.mapael.js

Lines changed: 50 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -993,79 +993,76 @@
993993
// Update areas attributes and tooltips
994994
$.each(self.areas, function (id) {
995995
// Avoid updating unchanged elements
996-
if (opt.mapOptions === undefined ||
996+
if ((opt.mapOptions !== undefined &&
997997
(
998-
(opt.mapOptions.map === undefined || opt.mapOptions.map.defaultArea === undefined)
999-
&& (opt.mapOptions.areas === undefined || opt.mapOptions.areas[id] === undefined)
1000-
&& (opt.mapOptions.legend === undefined || opt.mapOptions.legend.area === undefined)
1001-
)
998+
(opt.mapOptions.map !== undefined && opt.mapOptions.map.defaultArea !== undefined)
999+
|| (opt.mapOptions.areas !== undefined && opt.mapOptions.areas[id] !== undefined)
1000+
|| (opt.mapOptions.legend !== undefined && opt.mapOptions.legend.area !== undefined)
1001+
))
1002+
|| opt.replaceOptions === true
10021003
) {
1003-
return;
1004-
}
1004+
var elemOptions = self.getElemOptions(
1005+
self.options.map.defaultArea,
1006+
(self.options.areas[id] ? self.options.areas[id] : {}),
1007+
self.options.legend.area
1008+
);
10051009

1006-
var elemOptions = self.getElemOptions(
1007-
self.options.map.defaultArea,
1008-
(self.options.areas[id] ? self.options.areas[id] : {}),
1009-
self.options.legend.area
1010-
);
1011-
1012-
self.updateElem(elemOptions, self.areas[id], animDuration);
1010+
self.updateElem(elemOptions, self.areas[id], animDuration);
1011+
}
10131012
});
10141013

10151014
// Update plots attributes and tooltips
10161015
$.each(self.plots, function (id) {
10171016
// Avoid updating unchanged elements
1018-
if (opt.mapOptions === undefined ||
1017+
if ((opt.mapOptions !== undefined &&
10191018
(
1020-
(opt.mapOptions.map === undefined || opt.mapOptions.map.defaultPlot === undefined)
1021-
&& (opt.mapOptions.plots === undefined || opt.mapOptions.plots[id] === undefined)
1022-
&& (opt.mapOptions.legend === undefined || opt.mapOptions.legend.plot === undefined)
1023-
)
1019+
(opt.mapOptions.map !== undefined && opt.mapOptions.map.defaultPlot !== undefined)
1020+
|| (opt.mapOptions.plots !== undefined && opt.mapOptions.plots[id] !== undefined)
1021+
|| (opt.mapOptions.legend !== undefined && opt.mapOptions.legend.plot !== undefined)
1022+
))
1023+
|| opt.replaceOptions === true
10241024
) {
1025-
return;
1026-
}
1025+
var elemOptions = self.getElemOptions(
1026+
self.options.map.defaultPlot,
1027+
(self.options.plots[id] ? self.options.plots[id] : {}),
1028+
self.options.legend.plot
1029+
);
1030+
if (elemOptions.type == "square") {
1031+
elemOptions.attrs.width = elemOptions.size;
1032+
elemOptions.attrs.height = elemOptions.size;
1033+
elemOptions.attrs.x = self.plots[id].mapElem.attrs.x - (elemOptions.size - self.plots[id].mapElem.attrs.width) / 2;
1034+
elemOptions.attrs.y = self.plots[id].mapElem.attrs.y - (elemOptions.size - self.plots[id].mapElem.attrs.height) / 2;
1035+
} else if (elemOptions.type == "image") {
1036+
elemOptions.attrs.width = elemOptions.width;
1037+
elemOptions.attrs.height = elemOptions.height;
1038+
elemOptions.attrs.x = self.plots[id].mapElem.attrs.x - (elemOptions.width - self.plots[id].mapElem.attrs.width) / 2;
1039+
elemOptions.attrs.y = self.plots[id].mapElem.attrs.y - (elemOptions.height - self.plots[id].mapElem.attrs.height) / 2;
1040+
} else { // Default : circle
1041+
elemOptions.attrs.r = elemOptions.size / 2;
1042+
}
10271043

1028-
var elemOptions = self.getElemOptions(
1029-
self.options.map.defaultPlot,
1030-
(self.options.plots[id] ? self.options.plots[id] : {}),
1031-
self.options.legend.plot
1032-
);
1033-
if (elemOptions.type == "square") {
1034-
elemOptions.attrs.width = elemOptions.size;
1035-
elemOptions.attrs.height = elemOptions.size;
1036-
elemOptions.attrs.x = self.plots[id].mapElem.attrs.x - (elemOptions.size - self.plots[id].mapElem.attrs.width) / 2;
1037-
elemOptions.attrs.y = self.plots[id].mapElem.attrs.y - (elemOptions.size - self.plots[id].mapElem.attrs.height) / 2;
1038-
} else if (elemOptions.type == "image") {
1039-
elemOptions.attrs.width = elemOptions.width;
1040-
elemOptions.attrs.height = elemOptions.height;
1041-
elemOptions.attrs.x = self.plots[id].mapElem.attrs.x - (elemOptions.width - self.plots[id].mapElem.attrs.width) / 2;
1042-
elemOptions.attrs.y = self.plots[id].mapElem.attrs.y - (elemOptions.height - self.plots[id].mapElem.attrs.height) / 2;
1043-
} else { // Default : circle
1044-
elemOptions.attrs.r = elemOptions.size / 2;
1044+
self.updateElem(elemOptions, self.plots[id], animDuration);
10451045
}
1046-
1047-
self.updateElem(elemOptions, self.plots[id], animDuration);
10481046
});
10491047

10501048
// Update links attributes and tooltips
10511049
$.each(self.links, function (id) {
10521050
// Avoid updating unchanged elements
1053-
if (opt.mapOptions === undefined ||
1051+
if ((opt.mapOptions !== undefined &&
10541052
(
1055-
(opt.mapOptions.map === undefined || opt.mapOptions.map.defaultLink === undefined)
1056-
&& (opt.mapOptions.links === undefined || opt.mapOptions.links[id] === undefined)
1057-
)
1053+
(opt.mapOptions.map !== undefined && opt.mapOptions.map.defaultLink !== undefined)
1054+
|| (opt.mapOptions.links !== undefined && opt.mapOptions.links[id] !== undefined)
1055+
))
1056+
|| opt.replaceOptions === true
10581057
) {
1059-
return;
1060-
}
1058+
var elemOptions = self.getElemOptions(
1059+
self.options.map.defaultLink,
1060+
(self.options.links[id] ? self.options.links[id] : {}),
1061+
{}
1062+
);
10611063

1062-
var elemOptions = self.getElemOptions(
1063-
self.options.map.defaultLink,
1064-
(self.options.links[id] ? self.options.links[id] : {}),
1065-
{}
1066-
);
1067-
1068-
self.updateElem(elemOptions, self.links[id], animDuration);
1064+
self.updateElem(elemOptions, self.links[id], animDuration);
1065+
}
10691066
});
10701067

10711068
// Update legends

0 commit comments

Comments
 (0)