import {Component, OnInit} from '@angular/core';
import {TopologyService} from '../../topology.service';
import {LocalStorageService} from 'ngx-webstorage';
import {NzFormatEmitEvent, NzMessageService, NzTreeNode} from 'ng-zorro-antd';

declare let editor: any;

@Component({
    selector: 'smart-node',
    templateUrl: './node.component.html',
    styles: []
})
export class NodeComponent implements OnInit {

    isNode = false;
    name;
    hostId;

    nodes;
    nodeList;
    selectList = [];

    constructor(private topologySer: TopologyService, private message: NzMessageService, private localStorage: LocalStorageService,) {
    }

    ngOnInit() {
    }

    showModal(nodeObj) {
        this.hostId = nodeObj.hostIds;  //主机id；
        this.name = nodeObj.name;  //主机名称；
        this.isNode = true;
        this.findTree();
    }

    //查询树--- 分组
    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;
                    });
                    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) {
        if (event.node.children.length > 0) {
            return false;
        }
        let type;
        if (event.node.level == 0) {
            type = 'host';   //主机
        }
        if (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;
                        res.isLeaf = true;
                    });
                    event.node.addChildren(dataSet);
                } else {
                    event.node.addChildren([]);
                    this.message.warning('该下级为空');
                }

            }
        );
    }

    //选择树节点
    selectItem(event, node) {
        if (node.isChecked) {
            this.selectList.push(node.origin.id);   //主机

        } else {
            const index = this.selectList.indexOf(node.origin.id);
            this.selectList.splice(index, 1);
        }
    }

    //节点
    handleNodeCancel() {
        this.isNode = false;
        this.selectList = [];
        localStorage.setItem('node', 'false');
    }

    handleNodeOk() {
        if (this.name) {
            const item = {
                name: this.name,
            };
            this.isNode = false;
            editor.utils.setNode(item);
        }
        this.isNode = false;
        localStorage.setItem("node",'false');
        // const data = {
        //     hostIds:this.selectList
        // };
        // this.topologySer.findByHostIdOrWeb(data).subscribe(
        //     (res)=>{
        //         this.selectList = [];
        //         const item = {
        //             name:this.name,
        //             img:res.data[0].url
        //         };
        //         this.isNode = false;
        //         editor.utils.setNode(item);
        //         localStorage.setItem("node",'false');
        //     }
        // )

    }

}
