fix: [distributionGraph] restaured filtering capabilities.

Broken since the new event filtering tool
pull/4076/head
mokaddem 2019-02-04 16:19:11 +01:00
parent 093b24f6aa
commit 213b8f994e
4 changed files with 90 additions and 63 deletions

View File

@ -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++;
}
}

View File

@ -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) {

View File

@ -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); };

View File

@ -2965,7 +2965,6 @@ function filterAttributes(filter, id) {
function pivotObjectReferences(url, uuid) {
url += '/focus:' + uuid;
console.log(url);
$.ajax({
type:"get",
url:url,