98 lines
2.8 KiB
JavaScript
98 lines
2.8 KiB
JavaScript
/*
|
|
* Copyright 2015-2018 Jeeva Kandasamy (jkandasa@gmail.com)
|
|
* and other contributors as indicated by the @author tags.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
myControllerModule.service('TopologyService', function($filter) {
|
|
|
|
this.tooltip = function tooltip(d) {
|
|
var status = [
|
|
$filter('translate')('NAME') + ': ' + d.item.name,
|
|
$filter('translate')('TYPE') + ': ' + $filter('translate')(d.item.type)
|
|
];
|
|
|
|
if(d.item.kind === "Node"){
|
|
status.push($filter('translate')('EUI') + ': ' + d.item.localId);
|
|
}
|
|
|
|
if(d.item.kind === "Sensor"){
|
|
status.push($filter('translate')('SENSOR_ID') + ': ' + d.item.localId);
|
|
}
|
|
|
|
if(d.item.kind === "Sensor" || d.item.kind === "SensorVariable"){
|
|
status.push($filter('translate')('SUB_TYPE') + ': ' + d.item.subType.locale);
|
|
}
|
|
|
|
if(d.item.kind === "Gateway" || d.item.kind === "Node"){
|
|
status.push($filter('translate')('STATUS') + ': ' + $filter('translate')(d.item.status.toUpperCase()));
|
|
}else if(d.item.kind === "SensorVariable"){
|
|
status.push($filter('translate')('STATUS') + ': ' + d.item.status);
|
|
}
|
|
return status;
|
|
};
|
|
|
|
this.addContextMenuOption = function(popup, text, data, callback) {
|
|
popup.append("p").text(text)
|
|
.on('click' , function() {callback(data);});
|
|
};
|
|
|
|
this.searchNode = function(svg, query) {
|
|
var nodes = svg.selectAll("g");
|
|
if (query != "") {
|
|
var selected = nodes.filter(function (d) {
|
|
return d.item.name != query;
|
|
});
|
|
selected.style("opacity", "0.2");
|
|
var links = svg.selectAll("line");
|
|
links.style("opacity", "0.2");
|
|
}
|
|
};
|
|
|
|
this.resetSearch = function(d3) {
|
|
// Display all topology nodes and links
|
|
d3.selectAll("g, line").transition()
|
|
.duration(2000)
|
|
.style("opacity", 1);
|
|
};
|
|
|
|
this.getSVG = function(d3) {
|
|
var graph = d3.select("kubernetes-topology-graph");
|
|
var svg = graph.select('svg');
|
|
return svg;
|
|
};
|
|
|
|
this.defaultElementDimensions = function() {
|
|
return { x: 0, y: 9, r: 17 };
|
|
};
|
|
|
|
this.getItemStatusClass = function(d) {
|
|
switch (d.item.status) {
|
|
case "Armed":
|
|
case "On":
|
|
case "ON":
|
|
case "Up":
|
|
case "Untripped":
|
|
return "success";
|
|
case "Armed":
|
|
case "OFF":
|
|
case "Off":
|
|
case "Tripped":
|
|
case "Down":
|
|
return "error";
|
|
}
|
|
};
|
|
|
|
|
|
});
|