fix: [timeline] Prevent collision for Object and Attribute having the

same ID
pull/4743/head
mokaddem 2019-07-01 16:09:34 +02:00
parent 51ea04d91d
commit 3d9a545a00
No known key found for this signature in database
GPG Key ID: 164C473F627A06FA
1 changed files with 17 additions and 11 deletions

View File

@ -193,11 +193,11 @@ function build_object_template(obj) {
return html; return html;
} }
function reflect_change(onIndex, itemType, itemId) { function reflect_change(onIndex, itemType, itemId, item) {
if (onIndex) { if (onIndex) {
updateIndex(scope_id, 'event'); // MISP function updateIndex(scope_id, 'event'); // MISP function
} else { // reflect change on item only } else { // reflect change on item only
quick_fetch_seens(itemType, itemId, function(firstSeen, lastSeen) { quick_fetch_seens(itemType, item.orig_id, function(firstSeen, lastSeen) {
var updatedItem = items_timeline.get(itemId); var updatedItem = items_timeline.get(itemId);
updatedItem.first_seen = firstSeen; updatedItem.first_seen = firstSeen;
updatedItem.last_seen = lastSeen; updatedItem.last_seen = lastSeen;
@ -250,7 +250,7 @@ function update_seen(item, seenType, value, reflect, callback) {
} }
function fetch_form_and_submit(itemType, item, seenType, value, reflect, callback) { function fetch_form_and_submit(itemType, item, seenType, value, reflect, callback) {
var url = "/" + itemType + "/fetchEditForm/" + item.id + "/" + seenType+"_seen"; var url = "/" + itemType + "/fetchEditForm/" + item.orig_id + "/" + seenType+"_seen";
$.ajax({ $.ajax({
beforeSend: function (XMLHttpRequest) { beforeSend: function (XMLHttpRequest) {
$(".loadingTimeline").show(); $(".loadingTimeline").show();
@ -269,7 +269,7 @@ function fetch_form_and_submit(itemType, item, seenType, value, reflect, callbac
cache: false, cache: false,
success:function (data, textStatus) { success:function (data, textStatus) {
if (reflect) { if (reflect) {
reflect_change(false, itemType, item.id); reflect_change(false, itemType, item.id, item);
} }
form.remove() form.remove()
}, },
@ -363,6 +363,7 @@ function timelinePopupCallback(state) {
function adjust_text_length(elem) { function adjust_text_length(elem) {
var maxChar = $('#slider_timeline_display_max_char_num').val(); var maxChar = $('#slider_timeline_display_max_char_num').val();
maxChar = maxChar === undefined ? 64 : maxChar;
elem.content = elem.content.substring(0, maxChar) + (elem.content.length < maxChar ? "" : "[...]"); elem.content = elem.content.substring(0, maxChar) + (elem.content.length < maxChar ? "" : "[...]");
} }
@ -391,14 +392,16 @@ function reload_timeline() {
items_timeline.clear(); items_timeline.clear();
for (var item of data.items) { for (var item of data.items) {
item.className = item.group; item.className = item.group;
item.orig_id = item.id;
item.id = item.uuid;
set_spanned_time(item); set_spanned_time(item);
if (item.group == 'object') { if (item.group == 'object') {
for (var attr of item.Attribute) { for (var attr of item.Attribute) {
mapping_text_to_id.set(attr.contentType+': '+attr.content+' ('+item.id+')', item.id); mapping_text_to_id.set(attr.contentType+': '+attr.content+' ('+item.orig_id+')', item.id);
adjust_text_length(attr); adjust_text_length(attr);
} }
} else { } else {
mapping_text_to_id.set(item.content+' ('+item.id+')', item.id); mapping_text_to_id.set(item.content+' ('+item.orig_id+')', item.id);
adjust_text_length(item); adjust_text_length(item);
} }
} }
@ -450,14 +453,16 @@ function enable_timeline() {
for (var item of data.items) { for (var item of data.items) {
item.className = item.group; item.className = item.group;
item.orig_id = item.id;
item.id = item.uuid;
set_spanned_time(item); set_spanned_time(item);
if (item.group == 'object') { if (item.group == 'object') {
for (var attr of item.Attribute) { for (var attr of item.Attribute) {
mapping_text_to_id.set(attr.contentType+': '+attr.content+' ('+item.id+')', item.id); mapping_text_to_id.set(attr.contentType+': '+attr.content+' ('+item.orig_id+')', item.id);
adjust_text_length(attr); adjust_text_length(attr);
} }
} else { } else {
mapping_text_to_id.set(item.content+' ('+item.id+')', item.id); mapping_text_to_id.set(item.content+' ('+item.orig_id+')', item.id);
adjust_text_length(item); adjust_text_length(item);
} }
} }
@ -500,11 +505,12 @@ function handle_selection(data) {
} }
function edit_item(id, callback) { function edit_item(id, callback) {
var group = items_timeline.get(id).group; var item = items_timeline.get(id);
var group = item.group;
if (group == 'attribute') { if (group == 'attribute') {
simplePopup('/attributes/edit/'+id); simplePopup('/attributes/edit/'+item.orig_id);
} else if (group == 'object') { } else if (group == 'object') {
window.location = '/objects/edit/'+id; window.location = '/objects/edit/'+item.orig_id;
} }
} }