|
|
|
@ -3,6 +3,7 @@ angular.module('kibana.parallelcoordinates', []) |
|
|
|
|
|
|
|
|
|
console.log("controller"); |
|
|
|
|
|
|
|
|
|
$scope.activeDocs = []; |
|
|
|
|
|
|
|
|
|
// Set and populate defaults
|
|
|
|
|
var _d = { |
|
|
|
@ -127,7 +128,6 @@ angular.module('kibana.parallelcoordinates', []) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
// I really don't like this function, too much dom manip. Break out into directive?
|
|
|
|
@ -145,6 +145,11 @@ angular.module('kibana.parallelcoordinates', []) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$scope.$watch('activeDocs', function(v) { |
|
|
|
|
//console.log("Watch", $scope.activeDocs);
|
|
|
|
|
eventBus.broadcast($scope.$id,$scope.panel.group,"table_documents", |
|
|
|
|
{query:$scope.panel.query,docs:$scope.activeDocs}); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
}) |
|
|
|
|
.directive('parallelcoordinates', function () { |
|
|
|
@ -153,8 +158,7 @@ angular.module('kibana.parallelcoordinates', []) |
|
|
|
|
link: function (scope, elem, attrs) { |
|
|
|
|
|
|
|
|
|
console.log("directive"); |
|
|
|
|
|
|
|
|
|
//elem.html('')
|
|
|
|
|
|
|
|
|
|
scope.initializing = false; |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -257,12 +261,25 @@ angular.module('kibana.parallelcoordinates', []) |
|
|
|
|
var actives = scope.panel.fields.filter(function(p) { return !scope.y[p].brush.empty(); }), |
|
|
|
|
extents = actives.map(function(p) { return scope.y[p].brush.extent(); }); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
scope.foregroundLines.classed("fade", function(d) { |
|
|
|
|
return !actives.every(function(p, i) { |
|
|
|
|
return extents[i][0] <= d[p] && d[p] <= extents[i][1]; |
|
|
|
|
var inside = extents[i][0] <= d[p] && d[p] <= extents[i][1]; |
|
|
|
|
return inside; |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
var activeDocs = _.filter(scope.data, function(v) { |
|
|
|
|
return actives.every(function(p,i) { |
|
|
|
|
var inside = extents[i][0] <= v[p] && v[p] <= extents[i][1]; |
|
|
|
|
return inside; |
|
|
|
|
}); |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
scope.$apply(function() { |
|
|
|
|
scope.activeDocs = activeDocs; |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function dragstart(d) { |
|
|
|
@ -441,54 +458,7 @@ angular.module('kibana.parallelcoordinates', []) |
|
|
|
|
dragend(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Add a brush for each axis.
|
|
|
|
|
scope.brushes = scope.g.append("svg:g") |
|
|
|
|
.attr("class", "brush"); |
|
|
|
|
|
|
|
|
|
scope.axisLines = scope.g.append("svg:g") |
|
|
|
|
.attr("class", "axis"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Draw the brushes
|
|
|
|
|
//If the field is no longer in the list of actives,
|
|
|
|
|
//remove the element. Sorta like a poor-man's enter() / exit()
|
|
|
|
|
scope.brushes |
|
|
|
|
.each(function(d) { |
|
|
|
|
if (typeof scope.y[d] !== 'undefined') { |
|
|
|
|
console.log("brushes.each", d); |
|
|
|
|
d3.select(this).attr("style", "display").call(scope.y[d].brush); |
|
|
|
|
} else { |
|
|
|
|
console.log("none"); |
|
|
|
|
d3.select(this).attr("style", "display:none"); |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
.selectAll("rect") |
|
|
|
|
.attr("x", -8) |
|
|
|
|
.attr("width", 16); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//Draw the axis lines
|
|
|
|
|
//If the field is no longer in the list of actives,
|
|
|
|
|
//remove the element. Sorta like a poor-man's enter() / exit()
|
|
|
|
|
scope.axisLines |
|
|
|
|
.each(function(d) { |
|
|
|
|
if (typeof scope.y[d] !== 'undefined') { |
|
|
|
|
d3.select(this).attr("style", "display").call(scope.axis.scale(scope.y[d])); |
|
|
|
|
} else { |
|
|
|
|
d3.select(this).attr("style", "display:none"); |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
.append("svg:text") |
|
|
|
|
.attr("text-anchor", "middle") |
|
|
|
|
.attr("y", -9) |
|
|
|
|
.text(String) |
|
|
|
|
.call(dragend); //call dragend so that the axis reshuffle.
|
|
|
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|