Skip to content

Commit

Permalink
[ML] Fixes loading the influencers for Anomaly Explorer. (#22963)
Browse files Browse the repository at this point in the history
- This fixes a regression introduced in #22814. The influencer list wouldn't update if no cell in the swimlanes was selected.
- Renames getTopInfluencers to loadTopInfluencers to be in line with the other functions loadDataForCharts and loadAnomaliesTableData
- Changes the order of arguments for loadDataForCharts so they are the same like in loadTopInfluencers.
  • Loading branch information
walterra authored Sep 13, 2018
1 parent 041a475 commit e1e1485
Showing 1 changed file with 10 additions and 10 deletions.
20 changes: 10 additions & 10 deletions x-pack/plugins/ml/public/explorer/explorer_controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,9 @@ module.controller('MlExplorerController', function (
$scope.viewByLoadedForTimeFormatted = moment(timerange.earliestMs).format('MMMM Do YYYY, HH:mm');
}

loadDataForCharts(jobIds, influencers, timerange.earliestMs, timerange.latestMs);
// pass influencers on to loadDataForCharts(),
// it will take care of calling loadTopInfluencers() in this case.
loadDataForCharts(jobIds, timerange.earliestMs, timerange.latestMs, influencers);
loadAnomaliesTableData();
} else {
// Multiple cells are selected, all with a score of 0 - clear all anomalies.
Expand Down Expand Up @@ -503,7 +505,7 @@ module.controller('MlExplorerController', function (
// track the request to be able to ignore out of date requests
// and avoid race conditions ending up with the wrong charts.
let requestCount = 0;
function loadDataForCharts(jobIds, influencers, earliestMs, latestMs) {
function loadDataForCharts(jobIds, earliestMs, latestMs, influencers = []) {
// Just skip doing the request when this function is called without
// the minimum required data.
if ($scope.cellData === undefined && influencers.length === 0) {
Expand All @@ -513,11 +515,6 @@ module.controller('MlExplorerController', function (
const newRequestCount = ++requestCount;
requestCount = newRequestCount;

// Loads the data used to populate the anomaly charts and the Top Influencers List.
if (influencers.length === 0) {
getTopInfluencers(jobIds, earliestMs, latestMs);
}

// Load the top anomalies (by record_score) which will be displayed in the charts.
mlResultsService.getRecordsForInfluencer(
jobIds, influencers, 0, earliestMs, latestMs, 500
Expand Down Expand Up @@ -591,7 +588,7 @@ module.controller('MlExplorerController', function (
}
});

getTopInfluencers(jobIds, earliestMs, latestMs, filterInfluencers);
loadTopInfluencers(jobIds, earliestMs, latestMs, filterInfluencers);
}
});
}
Expand Down Expand Up @@ -758,7 +755,7 @@ module.controller('MlExplorerController', function (

}

function getTopInfluencers(selectedJobIds, earliestMs, latestMs, influencers = []) {
function loadTopInfluencers(selectedJobIds, earliestMs, latestMs, influencers = []) {
if ($scope.noInfluencersConfigured !== true) {
mlResultsService.getTopInfluencers(
selectedJobIds,
Expand Down Expand Up @@ -954,7 +951,10 @@ module.controller('MlExplorerController', function (
const earliestMs = bounds.min.valueOf();
const latestMs = bounds.max.valueOf();
mlExplorerDashboardService.anomalyDataChange.changed($scope.anomalyChartRecords, earliestMs, latestMs);
loadDataForCharts(jobIds, [], earliestMs, latestMs);
// Load all top influencers right away because the filtering
// done in loadDataForCharts() isn't neccessary here.
loadTopInfluencers(jobIds, earliestMs, latestMs);
loadDataForCharts(jobIds, earliestMs, latestMs);
loadAnomaliesTableData();
}

Expand Down

0 comments on commit e1e1485

Please sign in to comment.