Skip to content

Commit c537264

Browse files
authored
Merge pull request #530 from Rdornier/duplicate-labels
Duplicated labels removal
2 parents e310ddb + 06d2d50 commit c537264

File tree

1 file changed

+23
-4
lines changed

1 file changed

+23
-4
lines changed

src/js/models/panel_model.js

+23-4
Original file line numberDiff line numberDiff line change
@@ -244,12 +244,23 @@
244244
var oldLabs = this.get("labels");
245245
// Need to clone the list of labels...
246246
var labs = [];
247+
var oldLabKeys = [];
248+
249+
// Keep old labels unchanged...
247250
for (var i=0; i<oldLabs.length; i++) {
248-
labs.push( $.extend(true, {}, oldLabs[i]) );
251+
var lbl = oldLabs[i];
252+
var lbl_key = this.get_label_key(lbl);
253+
oldLabKeys.push(lbl_key);
254+
labs.push( $.extend(true, {}, lbl));
249255
}
250256
// ... then add new labels ...
251257
for (var j=0; j<labels.length; j++) {
252-
labs.push( $.extend(true, {}, labels[j]) );
258+
var lbl = labels[j];
259+
var lbl_key = this.get_label_key(lbl);
260+
if (!oldLabKeys.includes(lbl_key)) {
261+
// otherwise leave un-edited
262+
labs.push( $.extend(true, {}, lbl));
263+
}
253264
}
254265
// ... so that we get the changed event triggering OK
255266
this.save('labels', labs);
@@ -439,7 +450,7 @@
439450
// labels_map is {labelKey: {size:s, text:t, position:p, color:c}} or {labelKey: false} to delete
440451
// where labelKey specifies the label to edit. "l.text + '_' + l.size + '_' + l.color + '_' + l.position"
441452
edit_labels: function(labels_map) {
442-
453+
443454
var oldLabs = this.get('labels');
444455
// Need to clone the list of labels...
445456
var labs = [],
@@ -461,8 +472,16 @@
461472
labs.push( lbl );
462473
}
463474
}
475+
476+
// Extract all the keys (even duplicates)
477+
var keys = labs.map(lbl => this.get_label_key(lbl));
478+
479+
// get all unique labels based on filtering keys
480+
//(i.e removing duplicate keys based on the index of the first occurrence of the value)
481+
var filtered_lbls = labs.filter((lbl, index) => index == keys.indexOf(this.get_label_key(lbl)));
482+
464483
// ... so that we get the changed event triggering OK
465-
this.save('labels', labs);
484+
this.save('labels', filtered_lbls);
466485
},
467486

468487
save_channel: function(cIndex, attr, value) {

0 commit comments

Comments
 (0)