diff --git a/lib/timeline/component/LineGraph.js b/lib/timeline/component/LineGraph.js index 3fda715f..edf29781 100644 --- a/lib/timeline/component/LineGraph.js +++ b/lib/timeline/component/LineGraph.js @@ -361,12 +361,6 @@ LineGraph.prototype.setGroups = function (groups) { this._onUpdate(); }; - -/** - * Update the data - * @param [ids] - * @private - */ LineGraph.prototype._onUpdate = function (ids) { this._updateAllGroupData(); this.redraw(true); @@ -385,7 +379,6 @@ LineGraph.prototype._onAddGroups = function (groupIds) { this._onUpdateGroups(groupIds); }; - /** * this cleans the group out off the legends and the dataaxis, updates the ungrouped and updates the graph * @param {Array} groupIds @@ -393,23 +386,31 @@ LineGraph.prototype._onAddGroups = function (groupIds) { */ LineGraph.prototype._onRemoveGroups = function (groupIds) { for (var i = 0; i < groupIds.length; i++) { - if (this.groups.hasOwnProperty(groupIds[i])) { - if (this.groups[groupIds[i]].options.yAxisOrientation == 'right') { - this.yAxisRight.removeGroup(groupIds[i]); - this.legendRight.removeGroup(groupIds[i]); - this.legendRight.redraw(); - } - else { - this.yAxisLeft.removeGroup(groupIds[i]); - this.legendLeft.removeGroup(groupIds[i]); - this.legendLeft.redraw(); - } - delete this.groups[groupIds[i]]; - } + this._removeGroup(groupIds[i]); } this.redraw(true); }; +/** + * this cleans the group out off the legends and the dataaxis + * @param groupId + * @private + */ +LineGraph.prototype._removeGroup = function (groupId) { + if (this.groups.hasOwnProperty(groupId)) { + if (this.groups[groupId].options.yAxisOrientation == 'right') { + this.yAxisRight.removeGroup(groupId); + this.legendRight.removeGroup(groupId); + this.legendRight.redraw(); + } + else { + this.yAxisLeft.removeGroup(groupId); + this.legendLeft.removeGroup(groupId); + this.legendLeft.redraw(); + } + delete this.groups[groupId]; + } +} /** * update a group object with the group dataset entree @@ -485,12 +486,22 @@ LineGraph.prototype._updateAllGroupData = function () { var index= groupsContent[groupId].length - groupCounts[groupId]--; groupsContent[groupId][index] = extended; } + + //Make sure all groups are present, to allow removal of old groups + for (var groupId in this.groups){ + if (this.groups.hasOwnProperty(groupId)){ + if (!groupsContent.hasOwnProperty(groupId)) { + groupsContent[groupId] = new Array(0); + } + } + } + //Update legendas, style and axis for (var groupId in groupsContent) { if (groupsContent.hasOwnProperty(groupId)) { if (groupsContent[groupId].length == 0) { if (this.groups.hasOwnProperty(groupId)) { - this._onRemoveGroups([groupId]); + this._removeGroup(groupId); } } else { var group = undefined; @@ -678,7 +689,7 @@ LineGraph.prototype._updateGraph = function () { if (group.options.shaded.orientation === "group") { var subGroupId = group.options.shaded.groupId; if (groupIds.indexOf(subGroupId) === -1) { - console.log("Unknown shading group target given:" + subGroupId); + console.log(group.id + ": Unknown shading group target given:" + subGroupId); continue; } if (!paths.hasOwnProperty(subGroupId)) {