Newer
Older
import {Component, EventEmitter, OnInit, Output} from '@angular/core';
import {TopologyService} from '../../topology.service';
import {NzFormatEmitEvent, NzMessageService, NzTreeNode} from 'ng-zorro-antd';
selector: 'smart-device',
templateUrl: './device.component.html',
styles: [
``
]
nodes;
nodeList;
selectTreeList = {
hostIds:<any>[],
httpIds:<any>[]
};
constructor(private topologySer: TopologyService,
private message: NzMessageService) {
}
ngOnInit() {
this.initForm();
}
this.isValiaible = true;
this.initForm();
this.findTree();
}
initForm(){
this.nodes = null;
this.nodeList = [];
this.selectTreeList = {
hostIds:<any>[],
httpIds:<any>[]
};
}
findTree() {
const data = {
id: '',
type: 'group'
};
this.topologySer.findTree(data).subscribe(
(res) => {
if (res.errCode == 10000) {
let option = res.data;
option.forEach(res => {
res.title = res.name;
res.key = res.id;
res.disabled = true;
});
this.nodeList = option;
this.toNode(option);
} else {
this.message.info(res.errMsg);
}
}
);
}
toNode(data) {
this.nodes = data.map(res => {
return new NzTreeNode(res);
});
}
//获取下级
mouseAction(name: string, event: NzFormatEmitEvent) {
let type;
if(event.node.level == 0){
type = "host"; //主机
}
if(event.node.level == 1){
type = "item"; //监控项
}
if(this.title == "选择资源" && event.node.level == 1){
return false;
}
const index = <any>event.node.key - 1;
const data = {
'id': event.node.origin.id,
'type': type
};
this.topologySer.findTree(data).subscribe(
(res) => {
if (res.data) {
const dataSet = res.data;
dataSet.forEach(res => {
res.title = res.name;
res.key = res.id;
if(this.title == "选择资源"){
res.isLeaf = true;
}
if(res.inventoryExtends == 1){
res.disabled = true;
}
});
event.node.addChildren(dataSet);
this.nodeList[index].children = dataSet;
this.nodeList[index].expanded = true;
} else {
event.node.addChildren([]);
this.message.warning('该下级为空');
}
}
);
}
//选择树节点
/**
* inventoryExtends 1:有资产 0:无资产
* @param {NzFormatEmitEvent} event
*/
selectCheckTree(event: NzFormatEmitEvent) {
if (event.node.isChecked) {
if(event.node.level == 1){
this.selectTreeList.hostIds.push(event.node.origin.id); //主机
}
if(event.node.level == 2){
this.selectTreeList.httpIds.push(event.node.origin.id) //监控项
}
} else {
if(event.node.level == 1){
const index = this.selectTreeList.hostIds.indexOf(event.node.origin.id);
this.selectTreeList.hostIds.splice(index, 1);
}
if(event.node.level == 2){
const index = this.selectTreeList.httpIds.indexOf(event.node.origin.id);
this.selectTreeList.httpIds.splice(index, 1);
}
}
}
handEditleOk(){
if(this.title == "添加设备"){
this.topology();
}
if(this.title == "选择资源"){
this.select();
}
}
topology(){
this.topologySer.findDefaultIcon(this.selectTreeList).subscribe(
(res)=>{
if(res.data.length > 0){
this.done.emit(res.data);
this.isValiaible = false;
}else{
this.message.warning("该项无默认图标")
}
select(){
this.done.emit(this.selectTreeList);
this.isValiaible = false;
}
handleEditCancel(){
this.initForm();
this.isValiaible = false;
}