mirror of https://github.com/MISP/MISP
fix: [distributionGraph] restaured filtering capabilities.
Broken since the new event filtering toolpull/4076/head
parent
093b24f6aa
commit
213b8f994e
|
@ -1050,7 +1050,11 @@ class EventsController extends AppController
|
|||
$this->__applyQueryString($event, $temp, 'distribution');
|
||||
}
|
||||
if (isset($filters['searchFor']) && $filters['searchFor'] !== '') {
|
||||
$this->__applyQueryString($event, $filters['searchFor']);
|
||||
if (isset($filters['filterColumnsOverwrite'])) {
|
||||
$this->__applyQueryString($event, $filters['searchFor'], $filters['filterColumnsOverwrite']);
|
||||
} else {
|
||||
$this->__applyQueryString($event, $filters['searchFor']);
|
||||
}
|
||||
$this->set('passedArgsArray', array('all' => $filters['searchFor']));
|
||||
}
|
||||
$emptyEvent = (empty($event['Object']) && empty($event['Attribute']));
|
||||
|
@ -1616,7 +1620,7 @@ class EventsController extends AppController
|
|||
);
|
||||
$activeRules = 0;
|
||||
foreach ($filters as $k => $v) {
|
||||
if ($defaultRules[$k] != $v) {
|
||||
if (isset($defaultRules[$k]) && $defaultRules[$k] != $v) {
|
||||
$activeRules++;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -354,27 +354,6 @@ function triggerEventFilteringTool(clicked) {
|
|||
|
||||
updateURL();
|
||||
|
||||
function recursiveInject(result, rules) {
|
||||
if (rules.rules === undefined) { // add to result
|
||||
var field = rules.field;
|
||||
var value = rules.value;
|
||||
if (result.hasOwnProperty(field)) {
|
||||
if (Array.isArray(result[field])) {
|
||||
result[field].push(value);
|
||||
} else {
|
||||
result[field] = [result[field], value];
|
||||
}
|
||||
} else {
|
||||
result[field] = value;
|
||||
}
|
||||
}
|
||||
else if (Array.isArray(rules.rules)) {
|
||||
rules.rules.forEach(function(subrules) {
|
||||
recursiveInject(result, subrules) ;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function updateURL() {
|
||||
var rules = querybuilderTool.getRules({ skip_empty: true, allow_invalid: true });
|
||||
var res = cleanRules(rules);
|
||||
|
@ -395,42 +374,61 @@ function triggerEventFilteringTool(clicked) {
|
|||
return url;
|
||||
}
|
||||
|
||||
function cleanRules(rules) {
|
||||
var res = {};
|
||||
recursiveInject(res, rules);
|
||||
// clean up invalid and unset
|
||||
Object.keys(res).forEach(function(k) {
|
||||
var v = res[k];
|
||||
if (v === undefined || v === '') {
|
||||
delete res[k];
|
||||
}
|
||||
|
||||
function recursiveInject(result, rules) {
|
||||
if (rules.rules === undefined) { // add to result
|
||||
var field = rules.field;
|
||||
var value = rules.value;
|
||||
if (result.hasOwnProperty(field)) {
|
||||
if (Array.isArray(result[field])) {
|
||||
result[field].push(value);
|
||||
} else {
|
||||
result[field] = [result[field], value];
|
||||
}
|
||||
} else {
|
||||
result[field] = value;
|
||||
}
|
||||
}
|
||||
else if (Array.isArray(rules.rules)) {
|
||||
rules.rules.forEach(function(subrules) {
|
||||
recursiveInject(result, subrules) ;
|
||||
});
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
function performQuery(rules) {
|
||||
var res = cleanRules(rules);
|
||||
|
||||
var url = "/events/viewEventAttributes/<?php echo h($event['Event']['id']); ?>";
|
||||
|
||||
$.ajax({
|
||||
type:"post",
|
||||
url: url,
|
||||
data: res,
|
||||
beforeSend: function (XMLHttpRequest) {
|
||||
$(".loading").show();
|
||||
},
|
||||
success:function (data) {
|
||||
$("#attributes_div").html(data);
|
||||
$(".loading").hide();
|
||||
},
|
||||
error:function() {
|
||||
showMessage('fail', 'Something went wrong - could not fetch attributes.');
|
||||
}
|
||||
});
|
||||
}
|
||||
function cleanRules(rules) {
|
||||
var res = {};
|
||||
recursiveInject(res, rules);
|
||||
// clean up invalid and unset
|
||||
Object.keys(res).forEach(function(k) {
|
||||
var v = res[k];
|
||||
if (v === undefined || v === '') {
|
||||
delete res[k];
|
||||
}
|
||||
});
|
||||
return res;
|
||||
}
|
||||
|
||||
function performQuery(rules) {
|
||||
var res = cleanRules(rules);
|
||||
|
||||
var url = "/events/viewEventAttributes/<?php echo h($event['Event']['id']); ?>";
|
||||
$.ajax({
|
||||
type:"post",
|
||||
url: url,
|
||||
data: res,
|
||||
beforeSend: function (XMLHttpRequest) {
|
||||
$(".loading").show();
|
||||
},
|
||||
success:function (data) {
|
||||
$("#attributes_div").html(data);
|
||||
$(".loading").hide();
|
||||
},
|
||||
error:function() {
|
||||
showMessage('fail', 'Something went wrong - could not fetch attributes.');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function copyToClipboard(element) {
|
||||
|
|
|
@ -17,8 +17,17 @@ function clickHandlerGraph(evt) {
|
|||
distribution_id = distribution_chart.data.distribution[firstPoint._index].value;
|
||||
var value_to_set = String(distribution_id);
|
||||
value_to_set += distribution_id == event_distribution ? '|' + '5' : '';
|
||||
document.getElementById('attributesFilterField').value = value_to_set;
|
||||
filterAttributes('distribution', scope_id);
|
||||
value_to_set = value_to_set.split('|');
|
||||
var rules = {
|
||||
condition: 'AND',
|
||||
rules: [
|
||||
{
|
||||
field: 'distribution',
|
||||
value: value_to_set
|
||||
}
|
||||
]
|
||||
};
|
||||
performQuery(rules);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -43,14 +52,31 @@ function generate_additional_info(info) {
|
|||
function clickHandlerPbText(evt) {
|
||||
var distribution_id = evt.target.dataset.distribution;
|
||||
var value_to_set = String(distribution_id);
|
||||
document.getElementById('attributesFilterField').value = value_to_set;
|
||||
filterAttributes('distribution', scope_id);
|
||||
var rules = {
|
||||
condition: 'AND',
|
||||
rules: [
|
||||
{
|
||||
field: 'distribution',
|
||||
value: [value_to_set]
|
||||
}
|
||||
]
|
||||
};
|
||||
performQuery(rules);
|
||||
}
|
||||
function clickHandlerPb(evt) {
|
||||
var distribution_id = $(evt.target).data('distribution');
|
||||
var value_to_set = String(distribution_id);
|
||||
document.getElementById('attributesFilterField').value = value_to_set;
|
||||
filterAttributes('distribution', scope_id);
|
||||
value_to_set = value_to_set.split('|')
|
||||
var rules = {
|
||||
condition: 'AND',
|
||||
rules: [
|
||||
{
|
||||
field: 'distribution',
|
||||
value: value_to_set
|
||||
}
|
||||
]
|
||||
};
|
||||
performQuery(rules);
|
||||
}
|
||||
|
||||
function fill_distri_for_search(start_distri, end_distri) {
|
||||
|
@ -156,7 +182,7 @@ function add_level_to_pb(distribution, additionalInfo, maxLevel) {
|
|||
}
|
||||
pb_container.appendChild(span);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
$(document).ready(function() {
|
||||
var pop = $('.distribution_graph').popover({
|
||||
|
@ -207,7 +233,7 @@ $(document).ready(function() {
|
|||
var event_dist, min_distri, max_distri;
|
||||
if (event_distribution == 4) { // if distribution is sharing group, overwrite default behavior
|
||||
var event_dist = 1;
|
||||
var min_distri = 0;
|
||||
var min_distri = 0;
|
||||
var max_distri = 0;
|
||||
} else {
|
||||
var event_dist = event_distribution+1; // +1 to reach the first level
|
||||
|
@ -278,7 +304,7 @@ $(document).ready(function() {
|
|||
hidden: false,
|
||||
backgroundColor: doughnutColors
|
||||
},
|
||||
|
||||
|
||||
];
|
||||
var ctx = document.getElementById("distribution_graph_canvas");
|
||||
ctx.onclick = function(evt) { clickHandlerGraph(evt); };
|
||||
|
|
|
@ -2965,7 +2965,6 @@ function filterAttributes(filter, id) {
|
|||
|
||||
function pivotObjectReferences(url, uuid) {
|
||||
url += '/focus:' + uuid;
|
||||
console.log(url);
|
||||
$.ajax({
|
||||
type:"get",
|
||||
url:url,
|
||||
|
|
Loading…
Reference in New Issue