diff --git a/app/Model/DecayingModelsFormulas/Base.php b/app/Model/DecayingModelsFormulas/Base.php index ca30b24fb..dc76f87ea 100644 --- a/app/Model/DecayingModelsFormulas/Base.php +++ b/app/Model/DecayingModelsFormulas/Base.php @@ -46,24 +46,30 @@ abstract class DecayingModelBase foreach ($attribute['EventTag'] as $i => $tag) { $tags[] = $tag; $namespace_predicate = explode('=', $tag['Tag']['name'])[0]; - $temp_mapping[$namespace_predicate] = $i; + $temp_mapping[$namespace_predicate][] = $i; } } if (isset($attribute['AttributeTag'])) { foreach ($attribute['AttributeTag'] as $tag) { $namespace_predicate = explode('=', $tag['Tag']['name'])[0]; - if (isset($temp_mapping[$namespace_predicate])) { // need to override event tag - $overridden_tags[] = array( - 'EventTag' => $tags[$temp_mapping[$namespace_predicate]], - 'AttributeTag' => $tag - ); - $tags[$temp_mapping[$namespace_predicate]] = $tag; + if (!empty($temp_mapping[$namespace_predicate])) { // need to override event tag + foreach ($temp_mapping[$namespace_predicate] as $i => $eventtag_index) { + $overridden_tags[] = array( + 'EventTag' => $tags[$eventtag_index], + 'AttributeTag' => $tag + ); + if ($i === 0) { // override first one + $tags[$eventtag_index] = $tag; + } else { // remove remaining overriden + unset($tags[$eventtag_index]); + } + } } else { $tags[] = $tag; } } } - return array('tags' => $tags, 'overridden' => $overridden_tags); + return array('tags' => array_values($tags), 'overridden' => $overridden_tags); } public function computeBasescore($model, $attribute) diff --git a/app/webroot/js/decayingModelSimulation.js b/app/webroot/js/decayingModelSimulation.js index 802f3fd41..1a77d8cab 100644 --- a/app/webroot/js/decayingModelSimulation.js +++ b/app/webroot/js/decayingModelSimulation.js @@ -513,13 +513,13 @@ this.overriddenTags.forEach(function(entry) { var cur_namespace_predicate = entry.AttributeTag.Tag.name.split('=')[0]; if (namespace_predicate == cur_namespace_predicate) { - overridden_html += '
' + that._create_tag_html(entry.EventTag) + '
'; + overridden_html += '
' + that._create_tag_html(entry.EventTag) + '
'; } }); if (overridden_html !== '') { return '
' + overridden_html - + '
' + html_tag + '
' + + '
' + html_tag + '
' + '
'; } else { return html_tag; @@ -616,11 +616,12 @@ }, _generateOverridenExplanationPopoverHTML: function($div) { - var $tags = $div.find('.tag'); - var $tag_event = $tags.eq(0); - var $tag_attribute = $tags.eq(1); + var $tags_event = $div.find('.overriden_tag_wrapper .tag'); + var $tag_attribute = $div.find('.attribute_tag_wrapper .tag'); var html = '
'; - html += '
' + $tag_event[0].outerHTML + '
' + $tags_event.each(function() { + html += '
' + $(this)[0].outerHTML + '
' + }); html += '
' html += '
' + $tag_attribute[0].outerHTML + '
' html += '
';