Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move out the topology refresh handling to a shared mixin #3087

Merged
merged 1 commit into from Dec 20, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
@@ -1,63 +1,27 @@
angular.module('ManageIQ').controller('cloudTopologyController', CloudTopologyCtrl);
CloudTopologyCtrl.$inject = ['$scope', '$http', '$interval', '$location', 'topologyService', 'miqService'];
CloudTopologyCtrl.$inject = ['$scope', '$interval', 'topologyService'];

function CloudTopologyCtrl($scope, $http, $interval, $location, topologyService, miqService) {
function CloudTopologyCtrl($scope, $interval, topologyService) {
var vm = this;

miqHideSearchClearButton();
vm.vs = null;
var icons = null;

vm.icons = null;
vm.dataUrl = '/cloud_topology/data';
var d3 = window.d3;
// NOTE: for search
vm.d3 = d3;

topologyService.mixinContextMenu(vm, vm);

ManageIQ.angular.rxSubject.subscribe(function(event) {
if (event.name === 'refreshTopology') {
vm.refresh();
}
});

vm.refresh = function() {
var id;
if ($location.absUrl().match('show/$') || $location.absUrl().match('show$')) {
id = '';
} else {
id = '/' + (/cloud_topology\/show\/(\d+)/.exec($location.absUrl())[1]);
}

var url = '/cloud_topology/data' + id;

$http.get(url)
.then(getCloudTopologyFormDataComplete)
.catch(miqService.handleFailure);
};

function getCloudTopologyFormDataComplete(response) {
var data = response.data;

var currentSelectedKinds = vm.kinds;

vm.items = data.data.items;
vm.relations = data.data.relations;
// NOTE: $scope.kind is required by kubernetes-topology-icon
vm.kinds = $scope.kinds = data.data.kinds;
icons = data.data.icons;

if (currentSelectedKinds && (Object.keys(currentSelectedKinds).length !== Object.keys(vm.kinds).length)) {
vm.kinds = currentSelectedKinds;
}
}

vm.checkboxModel = {
value: false,
};

vm.legendTooltip = __('Click here to show/hide entities of this type');

$('input#box_display_names').click(topologyService.showHideNames(vm));
topologyService.mixinRefresh(vm, $scope);
topologyService.mixinGetIcon(vm);
vm.refresh();
var promise = $interval(vm.refresh, 1000 * 60 * 3);
$scope.$on('$destroy', function() {
Expand Down Expand Up @@ -175,15 +139,6 @@ function CloudTopologyCtrl($scope, $http, $interval, $location, topologyService,
ev.preventDefault();
});

vm.getIcon = function getIcon(d) {
switch (d.item.kind) {
case 'CloudManager':
return icons[d.item.display_kind];
default:
return icons[d.item.kind];
}
};

vm.getDimensions = function getDimensions(d) {
var defaultDimensions = topologyService.defaultElementDimensions();
switch (d.item.kind) {
Expand Down
@@ -1,61 +1,39 @@
angular.module('ManageIQ').controller('containerTopologyController', ContainerTopologyCtrl);
ContainerTopologyCtrl.$inject = ['$scope', '$http', '$interval', 'topologyService', '$window', 'miqService'];
ContainerTopologyCtrl.$inject = ['$scope', '$interval', 'topologyService'];

function ContainerTopologyCtrl($scope, $http, $interval, topologyService, $window, miqService) {
function ContainerTopologyCtrl($scope, $interval, topologyService) {
ManageIQ.angular.scope = $scope;
miqHideSearchClearButton();
var vm = this;
vm.dataUrl = '/container_topology/data';
vm.detailUrl = '/container_project_topology/data';
vm.vs = null;
var icons = null;
vm.icons = null;

var d3 = window.d3;
vm.d3 = d3;

topologyService.mixinContextMenu(vm, vm);

ManageIQ.angular.rxSubject.subscribe(function(event) {
if (event.name === 'refreshTopology') {
vm.refresh();
}
});

vm.refresh = function() {
var id;
var type;
var arr;
var pathname = $window.location.pathname.replace(/\/$/, '');
if (pathname.match('/container_topology/show$')) {
// specifically the container_topology page - all container ems's
type = 'container_topology';
id = '';
} else if (pathname.match('/(.+)/show/([0-9]+)')) {
// any container entity except the ems
// search for pattern ^/<controller>/show/<id>$ in the pathname - /container_project/show/11
arr = pathname.match('/(.+)/show/([0-9]+)');
type = arr[1] + '_topology';
id = '/' + arr[2];
} else if (pathname.match('/(.+)/([0-9]+)')) {
// single entity topology of ems_container
// search for pattern ^/<controller>/<id>$ in the pathname - /ems_container/4
arr = pathname.match('/(.+)/([0-9]+)');
type = 'container_topology';
id = '/' + arr[2];
}

var url = '/' + type + '/data' + id;

$http.get(url)
.then(getContainerTopologyData)
.catch(miqService.handleFailure);
};

vm.checkboxModel = {
value: false
};

vm.legendTooltip = __("Click here to show/hide entities of this type");
vm.remove_hierarchy = [
'Container',
'ContainerGroup',
'ContainerReplicator',
'ContainerService',
'ContainerRoute',
'Host',
'Vm',
'ContainerNode',
'ContainerManager'
];

vm.legendTooltip = __("Click here to show/hide entities of this type");
$('input#box_display_names').click(topologyService.showHideNames(vm));
topologyService.mixinRefresh(vm, $scope);
vm.refresh();
var promise = $interval(vm.refresh, 1000 * 60 * 3);

Expand Down Expand Up @@ -174,7 +152,7 @@ function ContainerTopologyCtrl($scope, $http, $interval, topologyService, $windo
});

vm.getIcon = function getIcon(d) {
return d.item.kind === 'ContainerManager' ? icons[d.item.display_kind] : icons[d.item.kind];
return d.item.kind === 'ContainerManager' ? vm.icons[d.item.display_kind] : vm.icons[d.item.kind];
};

vm.getDimensions = function getDimensions(d) {
Expand All @@ -201,35 +179,5 @@ function ContainerTopologyCtrl($scope, $http, $interval, topologyService, $windo
}
};

function getContainerTopologyData(response) {
var data = response.data;

var currentSelectedKinds = vm.kinds;

vm.items = data.data.items;
vm.relations = data.data.relations;
// NOTE: $scope.kinds is required by kubernetes-topology-icon
vm.kinds = $scope.kinds = data.data.kinds;
icons = data.data.icons;

if (currentSelectedKinds && (Object.keys(currentSelectedKinds).length !== Object.keys(vm.kinds).length)) {
vm.kinds = currentSelectedKinds;
} else if (data.data.settings && data.data.settings.containers_max_items) {
var size_limit = data.data.settings.containers_max_items;
var remove_hierarchy = [
'Container',
'ContainerGroup',
'ContainerReplicator',
'ContainerService',
'ContainerRoute',
'Host',
'Vm',
'ContainerNode',
'ContainerManager'
];
vm.kinds = topologyService.reduce_kinds(vm.items, vm.kinds, size_limit, remove_hierarchy);
}
}

topologyService.mixinSearch(vm);
}
@@ -1,46 +1,27 @@
angular.module('ManageIQ').controller('infraTopologyController', InfraTopologyCtrl);
InfraTopologyCtrl.$inject = ['$scope', '$http', '$interval', '$location', 'topologyService', 'miqService'];
InfraTopologyCtrl.$inject = ['$scope', '$interval', 'topologyService'];

function InfraTopologyCtrl($scope, $http, $interval, $location, topologyService, miqService) {
function InfraTopologyCtrl($scope, $interval, topologyService) {
ManageIQ.angular.scope = $scope;
miqHideSearchClearButton();
var vm = this;
vm.dataUrl = '/infra_topology/data';
vm.vs = null;
var icons = null;
vm.icons = null;

var d3 = window.d3;
vm.d3 = d3;

topologyService.mixinContextMenu(vm, vm);

ManageIQ.angular.rxSubject.subscribe(function(event) {
if (event.name === 'refreshTopology') {
vm.refresh();
}
});

vm.refresh = function() {
var id;
if ($location.absUrl().match("show/$") || $location.absUrl().match("show$")) {
id = '';
} else {
id = '/' + (/infra_topology\/show\/(\d+)/.exec($location.absUrl())[1]);
}

var url = '/infra_topology/data' + id;

$http.get(url)
.then(getInfraTopologyData)
.catch(miqService.handleFailure);
};

vm.checkboxModel = {
value: false
};

vm.legendTooltip = __("Click here to show/hide entities of this type");

$('input#box_display_names').click(topologyService.showHideNames(vm));
topologyService.mixinRefresh(vm, $scope);
topologyService.mixinGetIcon(vm);
vm.refresh();
var promise = $interval(vm.refresh, 1000 * 60 * 3);

Expand Down Expand Up @@ -158,15 +139,6 @@ function InfraTopologyCtrl($scope, $http, $interval, $location, topologyService,
ev.preventDefault();
});

this.getIcon = function getIcon(d) {
switch(d.item.kind) {
case 'InfraManager':
return icons[d.item.display_kind];
default:
return icons[d.item.kind];
}
};

this.getDimensions = function getDimensions(d) {
var defaultDimensions = topologyService.defaultElementDimensions();
switch (d.item.kind) {
Expand All @@ -183,20 +155,5 @@ function InfraTopologyCtrl($scope, $http, $interval, $location, topologyService,
}
};

function getInfraTopologyData(response) {
var data = response.data;

var currentSelectedKinds = vm.kinds;

vm.items = data.data.items;
vm.relations = data.data.relations;
vm.kinds = $scope.kinds = data.data.kinds;
icons = data.data.icons;

if (currentSelectedKinds && (Object.keys(currentSelectedKinds).length !== Object.keys(vm.kinds).length)) {
vm.kinds = currentSelectedKinds;
}
}

topologyService.mixinSearch(vm);
}
@@ -1,42 +1,24 @@
angular.module('ManageIQ').controller('middlewareTopologyController', MiddlewareTopologyCtrl);
MiddlewareTopologyCtrl.$inject = ['$scope', '$http', '$interval', '$location', 'topologyService', 'miqService'];
MiddlewareTopologyCtrl.$inject = ['$scope', '$interval', 'topologyService'];

function MiddlewareTopologyCtrl($scope, $http, $interval, $location, topologyService, miqService) {
function MiddlewareTopologyCtrl($scope, $interval, topologyService) {
ManageIQ.angular.scope = $scope;
miqHideSearchClearButton();
var vm = this;
vm.vs = null;
var d3 = window.d3;
vm.d3 = d3;
var icons;
vm.dataUrl = '/middleware_topology/data';

topologyService.mixinContextMenu(vm, vm);

ManageIQ.angular.rxSubject.subscribe(function(event) {
if (event.name === 'refreshTopology') {
vm.refresh();
}
});

vm.refresh = function() {
var id;
if ($location.absUrl().match('show/$') || $location.absUrl().match('show$')) {
id = '';
} else {
id = '/' + (/middleware_topology\/show\/(\d+)/.exec($location.absUrl())[1]);
}
var url = '/middleware_topology/data' + id;
$http.get(url)
.then(getMiddlewareTopologyData)
.catch(miqService.handleFailure);
};

vm.checkboxModel = {
value: false,
};
vm.legendTooltip = 'Click here to show/hide entities of this type';

$('input#box_display_names').click(topologyService.showHideNames(vm));
topologyService.mixinRefresh(vm, $scope);
vm.refresh();
var promise = $interval(vm.refresh, 1000 * 60 * 3);

Expand Down Expand Up @@ -142,7 +124,7 @@ function MiddlewareTopologyCtrl($scope, $http, $interval, $location, topologySer
};
}

return icons[d.item.display_kind];
return vm.icons[d.item.display_kind];
};

vm.getCircleDimensions = function getCircleDimensions(d) {
Expand Down Expand Up @@ -182,19 +164,5 @@ function MiddlewareTopologyCtrl($scope, $http, $interval, $location, topologySer
};
}
};

function getMiddlewareTopologyData(response) {
var data = response.data;
var currentSelectedKinds = vm.kinds;

vm.items = data.data.items;
vm.relations = data.data.relations;
vm.kinds = $scope.kinds = data.data.kinds;
icons = data.data.icons;
if (currentSelectedKinds && (Object.keys(currentSelectedKinds).length !== Object.keys(vm.kinds).length)) {
vm.kinds = currentSelectedKinds;
}
}

topologyService.mixinSearch(vm);
}