Skip to content
ne-topology.component.ts 18.2 KiB
Newer Older
wangqinghua's avatar
wangqinghua committed
import {AfterViewChecked, AfterViewInit, Component, ElementRef, KeyValueDiffer, OnInit, ViewChild, KeyValueDiffers, DoCheck, OnDestroy, Renderer2} from '@angular/core';
wangqinghua's avatar
wangqinghua committed
import {TopologyService} from '../topology.service';
wangqinghua's avatar
wangqinghua committed
import {NzMessageService, NzModalService, UploadFile} from 'ng-zorro-antd';
wangqinghua's avatar
wangqinghua committed
import {DomSanitizer} from '@angular/platform-browser';
wangqinghua's avatar
wangqinghua committed
import {TopologyComponent} from '../model/topology/topology.component';
wangqinghua's avatar
wangqinghua committed
import {CheckComponent} from '../model/check/check.component';
wangqinghua's avatar
wangqinghua committed
import {LineComponent} from '../model/line/line.component';
import {NodeComponent} from '../model/node/node.component';
wangqinghua's avatar
wangqinghua committed
import {SelectRadioGroupComponent} from '../../modal/select-radio-group/select-radio-group.component';
wangqinghua's avatar
wangqinghua committed
import {timer} from 'rxjs/observable/timer';
wangqinghua's avatar
wangqinghua committed

declare let editor: any;
wangqinghua's avatar
wangqinghua committed

@Component({
    selector: 'smart-ne-topology',
    templateUrl: './ne-topology.component.html',
wangqinghua's avatar
wangqinghua committed
    styles: [
wangqinghua's avatar
wangqinghua committed
            `
            .layui-side-scroll {
                width: initial;
            }

            .layui-layout-right {
wangqinghua's avatar
wangqinghua committed
                color: #666666;
            }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
            .layui-header span {
wangqinghua's avatar
wangqinghua committed
                margin-right: 15px;
                cursor: pointer;
            }
wangqinghua's avatar
wangqinghua committed

            .header-bar {
wangqinghua's avatar
wangqinghua committed
                line-height: 60px;
                color: #6097b7;
                padding: 0 20px;
                background-color: #ddd;
            }
wangqinghua's avatar
wangqinghua committed

            .layui-layout-right {
wangqinghua's avatar
wangqinghua committed
                text-align: right;
                color: #6097b7
            }
wangqinghua's avatar
wangqinghua committed

            .layui-layout-right span {
wangqinghua's avatar
wangqinghua committed
                margin-right: 5px;
                cursor: pointer;
            }
wangqinghua's avatar
wangqinghua committed

            .tips {
wangqinghua's avatar
wangqinghua committed
                position: absolute;
                top: 10px;
                left: 20px;
                color: #ca0814;
                font-size: 20px;
            }
wangqinghua's avatar
wangqinghua committed

            .checkList {
wangqinghua's avatar
wangqinghua committed
                position: absolute;
                top: 10px;
                right: 20px;
                color: #666666;
                font-size: 20px;
            }
wangqinghua's avatar
wangqinghua committed

            .lineList {
wangqinghua's avatar
wangqinghua committed
                position: absolute;
                top: 5px;
wangqinghua's avatar
wangqinghua committed
                right: 20px;
                color: red;
wangqinghua's avatar
wangqinghua committed
                cursor: pointer;
            }
wangqinghua's avatar
wangqinghua committed

            .layui-form-label {
wangqinghua's avatar
wangqinghua committed
                width: 110px;
            }
wangqinghua's avatar
wangqinghua committed

            .loading {
wangqinghua's avatar
wangqinghua committed
                position: absolute;
                top: 30%;
                left: 49%;
            }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
            .minus {
wangqinghua's avatar
wangqinghua committed
                vertical-align: middle;
                color: red;
                font-size: 15px;
                margin-left: 12px;
                cursor: pointer;
            }
wangqinghua's avatar
wangqinghua committed

            .full-canvas {
                position: fixed;
                top: 0;
                bottom: 0;
                left: 0;
                right: 0;
                width: 100%;
                z-index: 9;
                background: rgb(61, 118, 171);
            }

            .canvas-topo {
                height: 100%;
            }

            .topo-container {
                height: calc(100% - 60px);
            }

            #topology-body, .topology-context {
                height: 100%;
            }
wangqinghua's avatar
wangqinghua committed
        `
    ]
wangqinghua's avatar
wangqinghua committed
})
wangqinghua's avatar
wangqinghua committed
export class NeTopologyComponent implements OnInit, DoCheck, AfterViewInit, OnDestroy {
wangqinghua's avatar
wangqinghua committed
    @ViewChild('topologyCanvas') topologyCanvas: ElementRef;
wangqinghua's avatar
wangqinghua committed
    @ViewChild('canvasTopo') canvasTopo: ElementRef;
wangqinghua's avatar
wangqinghua committed
    @ViewChild('topologyBody') topologyBody: ElementRef;
wangqinghua's avatar
wangqinghua committed
    @ViewChild('smartTopology') smartTopology: TopologyComponent;
    @ViewChild('smartCheck') smartCheck: CheckComponent;
wangqinghua's avatar
wangqinghua committed
    @ViewChild('smartSelectRadioGroup') smartSelectRadioGroup: SelectRadioGroupComponent;
wangqinghua's avatar
wangqinghua committed
    @ViewChild('smartLine') smartLine: LineComponent;
    @ViewChild('smartNode') smartNode: NodeComponent;
wangqinghua's avatar
wangqinghua committed

    dataSet;
    isVisible = false;
    image;
wangqinghua's avatar
wangqinghua committed
    isLoading = false;
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    topoId;
wangqinghua's avatar
wangqinghua committed
    name;
wangqinghua's avatar
wangqinghua committed
    refreshRete;
wangqinghua's avatar
wangqinghua committed
    options;
wangqinghua's avatar
wangqinghua committed
    lineType = '1';  //线条类型
    editType = '只读模式';   //拓扑图状态
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    backgroundColor;   //背景色

wangqinghua's avatar
wangqinghua committed
    checkJson = [];
wangqinghua's avatar
wangqinghua committed
    fileList: UploadFile[] = [];
wangqinghua's avatar
wangqinghua committed
    isDevice;
wangqinghua's avatar
wangqinghua committed
    isFull = false;
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    private customerDifferLink: KeyValueDiffer<string, any>;
    private customerDifferNode: KeyValueDiffer<string, any>;
    node = {
wangqinghua's avatar
wangqinghua committed
        value: ''
wangqinghua's avatar
wangqinghua committed
    };
    line = {
wangqinghua's avatar
wangqinghua committed
        value: ''
wangqinghua's avatar
wangqinghua committed
    };
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    constructor(private topologySer: TopologyService, private message: NzMessageService,
wangqinghua's avatar
wangqinghua committed
                private differs: KeyValueDiffers, private render: Renderer2,
wangqinghua's avatar
wangqinghua committed
                private sanitizer: DomSanitizer, private modalSer: NzModalService) {
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    }

    ngOnInit() {
wangqinghua's avatar
wangqinghua committed

        this.customerDifferLink = this.differs.find(this.line).create();
        this.customerDifferNode = this.differs.find(this.node).create();

wangqinghua's avatar
wangqinghua committed
        this.getList();
wangqinghua's avatar
wangqinghua committed
        this.getTypeList();
wangqinghua's avatar
wangqinghua committed
    }

    ngAfterViewInit() {
wangqinghua's avatar
wangqinghua committed
        timer(500).subscribe(
            ()=>{
                const canvasWidth = this.topologyBody.nativeElement.clientWidth;
                const canvasHeight = this.topologyBody.nativeElement.clientHeight;
                console.log(canvasWidth, canvasHeight);
                let myCanvas = this.topologyCanvas.nativeElement;
                let context = myCanvas.getContext('2d');
                let ratio = this.getPixelRatio(context);
                myCanvas.style.width = canvasWidth + 'px';
                myCanvas.style.height = canvasHeight + 'px';

                myCanvas.width = myCanvas.width * ratio;
                myCanvas.height = myCanvas.height * ratio;
                context.scale(ratio, ratio);

                editor.loadTopology('', '', 'img/backimg.png', canvasWidth, canvasHeight);
            }
        )
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    // 获取像素比
wangqinghua's avatar
wangqinghua committed
    getPixelRatio(context) {
wangqinghua's avatar
wangqinghua committed
        const backingStore = context.backingStorePixelRatio ||
            context.webkitBackingStorePixelRatio ||
            context.mozBackingStorePixelRatio ||
            context.msBackingStorePixelRatio ||
            context.oBackingStorePixelRatio ||
            context.backingStorePixelRatio || 1;
        return (window.devicePixelRatio || 1) / backingStore;
    }

wangqinghua's avatar
wangqinghua committed
    ngDoCheck() {
        this.node.value = localStorage.getItem('node');
        this.line.value = localStorage.getItem('line');
wangqinghua's avatar
wangqinghua committed
        const changesLine = this.customerDifferLink.diff(this.line);
        const changesNode = this.customerDifferNode.diff(this.node);
wangqinghua's avatar
wangqinghua committed
        if (changesLine && changesLine['_appendAfter'].currentValue == 'true') {
wangqinghua's avatar
wangqinghua committed
            const linkObj = localStorage.getItem('linkObj');
wangqinghua's avatar
wangqinghua committed
            this.smartLine.showModal(JSON.parse(linkObj));
wangqinghua's avatar
wangqinghua committed
        }
wangqinghua's avatar
wangqinghua committed
        if (changesNode && changesNode['_appendAfter'].currentValue == 'true') {
wangqinghua's avatar
wangqinghua committed
            const nodeObj = localStorage.getItem('nodeObj');
wangqinghua's avatar
wangqinghua committed
            this.smartNode.showModal(JSON.parse(nodeObj));
wangqinghua's avatar
wangqinghua committed
        }
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    ngOnDestroy() {
        localStorage.setItem('line', 'false');
        localStorage.setItem('node', 'false');
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    //选择线条类型
wangqinghua's avatar
wangqinghua committed
    changeLine(e) {
wangqinghua's avatar
wangqinghua committed
        switch (e) {
wangqinghua's avatar
wangqinghua committed
            case'1': {   //直线
                editor.lineType = 'line';
wangqinghua's avatar
wangqinghua committed
                break;
            }
wangqinghua's avatar
wangqinghua committed
            case'2': {   //折线(横向)
                editor.lineType = 'foldLine';
                editor.config.linkDirection = 'horizontal';
wangqinghua's avatar
wangqinghua committed
                break;
            }
wangqinghua's avatar
wangqinghua committed
            case'3': {  //折线(纵向)
                editor.lineType = 'foldLine';
                editor.config.linkDirection = 'vertical';
wangqinghua's avatar
wangqinghua committed
                break;
            }
wangqinghua's avatar
wangqinghua committed
            case'4': {   //二次折线(横向)
                editor.lineType = 'flexLine';
                editor.config.linkDirection = 'horizontal';
wangqinghua's avatar
wangqinghua committed
                break;
            }
wangqinghua's avatar
wangqinghua committed
            case'5': {   //二次折线(纵向)
                editor.lineType = 'flexLine';
                editor.config.linkDirection = 'vertical';
wangqinghua's avatar
wangqinghua committed
                break;
            }
        }
    }

wangqinghua's avatar
wangqinghua committed
    //改变模式
wangqinghua's avatar
wangqinghua committed
    changeEdit(type) {
        if (type == '编辑模式') {
            this.topologyCanvas.nativeElement.style.background = 'url(../neweb/javascript/jtopo/img/backimg.png)';
wangqinghua's avatar
wangqinghua committed
            editor.utils.editTopology();
wangqinghua's avatar
wangqinghua committed
        }
wangqinghua's avatar
wangqinghua committed
        if (type == '只读模式') {
            this.topologyCanvas.nativeElement.style.background = '';
            editor.utils.normalTopology();
wangqinghua's avatar
wangqinghua committed
        }
        this.editType = type;
    }

wangqinghua's avatar
wangqinghua committed
    //改变背景色
wangqinghua's avatar
wangqinghua committed
    changeColor() {
wangqinghua's avatar
wangqinghua committed
        this.topologyCanvas.nativeElement.style.background = this.backgroundColor;
wangqinghua's avatar
wangqinghua committed
        this.canvasTopo.nativeElement.style.background = this.backgroundColor;
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    //一级分类
wangqinghua's avatar
wangqinghua committed
    getTypeList() {
wangqinghua's avatar
wangqinghua committed
        this.topologySer.findTreeWithWeb().subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                if (res.errCode == 10000) {
wangqinghua's avatar
wangqinghua committed
                    this.options = res.data;
wangqinghua's avatar
wangqinghua committed
                } else {
wangqinghua's avatar
wangqinghua committed
                    this.message.error(res.errMSg);
                }
            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    //新增拓扑图
    addTopo() {
wangqinghua's avatar
wangqinghua committed
        this.smartTopology.showAddMOodal();
wangqinghua's avatar
wangqinghua committed
    }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //编辑拓扑图
    editTopo() {
wangqinghua's avatar
wangqinghua committed
        if (!this.topoId) {
            this.message.warning('请选择需要编辑的拓扑图');
wangqinghua's avatar
wangqinghua committed
            return false;
wangqinghua's avatar
wangqinghua committed
        }
wangqinghua's avatar
wangqinghua committed
        this.smartTopology.showEditModal(this.topoId);
wangqinghua's avatar
wangqinghua committed
    }

    //添加监测点
wangqinghua's avatar
wangqinghua committed
    addCheck() {
        if (!this.topoId) {
            this.message.warning('请选择需要编辑的拓扑图');
wangqinghua's avatar
wangqinghua committed
            return false;
        }
wangqinghua's avatar
wangqinghua committed
        this.smartCheck.showAddModal();
    }

    //添加设备
wangqinghua's avatar
wangqinghua committed
    addDevice() {
        if (!this.topoId) {
            this.message.warning('请选择需要编辑的拓扑图');
wangqinghua's avatar
wangqinghua committed
            return false;
        }
wangqinghua's avatar
wangqinghua committed
        this.smartSelectRadioGroup.showAddModal('添加设备');
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    setImg(e) {
wangqinghua's avatar
wangqinghua committed
        const data = {
wangqinghua's avatar
wangqinghua committed
            hostIds: [e]
        };
wangqinghua's avatar
wangqinghua committed
        this.topologySer.findByHostIdOrWeb(data).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                editor.utils.addNode(res.data[0].url, res.data[0].name, res.data[0].hostId);
wangqinghua's avatar
wangqinghua committed
            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    //获取列表
    getList() {
wangqinghua's avatar
wangqinghua committed
        this.topologySer.findAll().subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                if (res.errCode == 10000) {
                    this.dataSet = res.data;
                } else {
wangqinghua's avatar
wangqinghua committed
                    this.message.create('error', res.errMsg);
wangqinghua's avatar
wangqinghua committed
                }
            }
        );
    }

wangqinghua's avatar
wangqinghua committed
    //编辑
    update() {
wangqinghua's avatar
wangqinghua committed
        const json = {
wangqinghua's avatar
wangqinghua committed
            topology: editor.saveTopology(),
            check: this.checkJson
wangqinghua's avatar
wangqinghua committed
        };
wangqinghua's avatar
wangqinghua committed
        let data = {
            id: this.topoId,
wangqinghua's avatar
wangqinghua committed
            json: JSON.stringify(json),
wangqinghua's avatar
wangqinghua committed
            refreshRete: this.refreshRete,
            name: this.name
wangqinghua's avatar
wangqinghua committed
        };
        this.topologySer.update(data).subscribe(
            (res) => {
                if (res.errCode == 10000) {
wangqinghua's avatar
wangqinghua committed
                    this.message.success('编辑成功');
wangqinghua's avatar
wangqinghua committed
                    this.getList();
wangqinghua's avatar
wangqinghua committed
                    this.getDetail();
wangqinghua's avatar
wangqinghua committed
                } else {
wangqinghua's avatar
wangqinghua committed
                    this.message.error(res.errMsg);
wangqinghua's avatar
wangqinghua committed
                }
            }
        );
wangqinghua's avatar
wangqinghua committed
    }

    //查询单个
wangqinghua's avatar
wangqinghua committed
    getDetail() {
wangqinghua's avatar
wangqinghua committed
        this.isLoading = true;
wangqinghua's avatar
wangqinghua committed
        this.topologySer.findItem(this.topoId).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                if (res.errCode == 10000) {
wangqinghua's avatar
wangqinghua committed
                    if (res.data.json.length > 0) {
wangqinghua's avatar
wangqinghua committed
                        let json = JSON.parse(res.data.json);
wangqinghua's avatar
wangqinghua committed
                        if (json.topology) {
wangqinghua's avatar
wangqinghua committed
                            this.viewTopology(JSON.parse(json.topology));
wangqinghua's avatar
wangqinghua committed
                            this.checkJson = json.check;
wangqinghua's avatar
wangqinghua committed
                        } else {
wangqinghua's avatar
wangqinghua committed
                            this.isLoading = false;
wangqinghua's avatar
wangqinghua committed
                            editor.utils.clearTopology();
                            this.checkJson = [];
                        }
wangqinghua's avatar
wangqinghua committed
                    } else {
wangqinghua's avatar
wangqinghua committed
                        this.isLoading = false;
wangqinghua's avatar
wangqinghua committed
                        editor.utils.clearTopology();
                        this.checkJson = [];
wangqinghua's avatar
wangqinghua committed
                    }
wangqinghua's avatar
wangqinghua committed
                    this.name = res.data.name;
wangqinghua's avatar
wangqinghua committed
                    this.refreshRete = res.data.refreshRete;
wangqinghua's avatar
wangqinghua committed
                    this.topoId = res.data.id;
wangqinghua's avatar
wangqinghua committed
                    this.findItemStatus();
wangqinghua's avatar
wangqinghua committed
                }
            }
        );
    }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //回显拓扑图
wangqinghua's avatar
wangqinghua committed
    viewTopology(topologyJson) {
wangqinghua's avatar
wangqinghua committed
        const arr = topologyJson.childs[0].childs;
        const list = [];
wangqinghua's avatar
wangqinghua committed
        const hostIds = [];
wangqinghua's avatar
wangqinghua committed
        arr.forEach(e => {
            if (e.elementType == 'link' && e.itemId && e.itemId.length > 2) {
wangqinghua's avatar
wangqinghua committed
                const data = {
wangqinghua's avatar
wangqinghua committed
                    itemIdIn: e.itemId.split(',')[0],
                    itemIdOut: e.itemId.split(',')[1],
                    linkId: e.id
wangqinghua's avatar
wangqinghua committed
                };
                list.push(data);
            }
        });
wangqinghua's avatar
wangqinghua committed
        arr.forEach(e => {
            if (e.elementType == 'node' && e.hostId) {
wangqinghua's avatar
wangqinghua committed
                hostIds.push(e.hostId);
            }
        });
xiaowenjie's avatar
xiaowenjie committed
        //危险对象
        //故障对象
        const glist = [];
        //删除对象
        const dlist = [];
wangqinghua's avatar
wangqinghua committed
        if (hostIds.length > 0) {
wangqinghua's avatar
wangqinghua committed
            const res = {
wangqinghua's avatar
wangqinghua committed
                hostIds: hostIds
wangqinghua's avatar
wangqinghua committed
            };
            this.topologySer.findElementStatus(res).subscribe(
wangqinghua's avatar
wangqinghua committed
                (res) => {
xiaowenjie's avatar
xiaowenjie committed
                    //status -1=未监控, 0=正常, 1=危险, 2=故障, 3=未分类
wangqinghua's avatar
wangqinghua committed
                    const resData = res.data;
wangqinghua's avatar
wangqinghua committed
                    resData.forEach(e1 => {
                        arr.forEach(e2 => {
                            if (e1.elementId == e2.hostId) {
                                // if(e1.status == -2){
                                //     e2.alarm = "主机被删除,请及时清理";
                                //     e2.fontColor='0,0,0';
                                //     e2.alarmAlpha=0.9;
                                // }
wangqinghua's avatar
wangqinghua committed
                                if (e1.status == 1) {
                                    e2.alarm = '危险';
wangqinghua's avatar
wangqinghua committed
                                    // e2.fontColor='0,0,0';
wangqinghua's avatar
wangqinghua committed
                                    e2.alarmColor = '255,153,18';
                                    e2.alarmAlpha = 0.9;
wangqinghua's avatar
wangqinghua committed
                                }
wangqinghua's avatar
wangqinghua committed
                                if (e1.status == 2) {
                                    e2.alarm = '故障';
wangqinghua's avatar
wangqinghua committed
                                    // e2.fontColor='0,0,0';
wangqinghua's avatar
wangqinghua committed
                                    e2.alarmAlpha = 0.9;
wangqinghua's avatar
wangqinghua committed
                                }
                            }
wangqinghua's avatar
wangqinghua committed
                        });
wangqinghua's avatar
wangqinghua committed
                    });
                    editor.loadTopologyByJson(topologyJson, 'img/backimg.png');
wangqinghua's avatar
wangqinghua committed
                    this.isLoading = false;
wangqinghua's avatar
wangqinghua committed
                }
wangqinghua's avatar
wangqinghua committed
            );
wangqinghua's avatar
wangqinghua committed
        }

wangqinghua's avatar
wangqinghua committed
        //流量数据
wangqinghua's avatar
wangqinghua committed
        if (list.length > 0) {   //有流量监控-->查询流量监控
wangqinghua's avatar
wangqinghua committed
            const data = {
wangqinghua's avatar
wangqinghua committed
                'list': list
wangqinghua's avatar
wangqinghua committed
            };
            this.topologySer.findFlow(data).subscribe(
wangqinghua's avatar
wangqinghua committed
                (res) => {
wangqinghua's avatar
wangqinghua committed
                    const response = res.data;
wangqinghua's avatar
wangqinghua committed
                    response.forEach(e1 => {
                        arr.forEach(e2 => {
                            if (e1.linkId == e2.id) {
                                e2.text = 'In:' + e1.fullValueIn + ' Out:' + e1.fullValueOut;
wangqinghua's avatar
wangqinghua committed
                            }
wangqinghua's avatar
wangqinghua committed
                        });
wangqinghua's avatar
wangqinghua committed
                    });
wangqinghua's avatar
wangqinghua committed
                    this.isLoading = false;
wangqinghua's avatar
wangqinghua committed
                    editor.loadTopologyByJson(topologyJson, 'img/backimg.png');
                }
wangqinghua's avatar
wangqinghua committed
            );
        } else {   //无流量监控
wangqinghua's avatar
wangqinghua committed
            this.isLoading = false;
wangqinghua's avatar
wangqinghua committed
            editor.loadTopologyByJson(topologyJson, 'img/backimg.png');
wangqinghua's avatar
wangqinghua committed
        }
    }

wangqinghua's avatar
wangqinghua committed
    //查询监控点状态
wangqinghua's avatar
wangqinghua committed
    findItemStatus() {
wangqinghua's avatar
wangqinghua committed
        const data = {
wangqinghua's avatar
wangqinghua committed
            httpTestIds: this.checkJson.map(e => {
wangqinghua's avatar
wangqinghua committed
                return e.id;
            })
        };
        this.topologySer.findElementStatus(data).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
wangqinghua's avatar
wangqinghua committed

            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
    }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //删除拓扑图
    deleteTopo() {
wangqinghua's avatar
wangqinghua committed
        if (!this.topoId) {
wangqinghua's avatar
wangqinghua committed
            this.message.warning('请选择需要删除的拓扑图');
wangqinghua's avatar
wangqinghua committed
            return false;
        }
        this.modalSer.confirm({
                nzTitle: '删除',
                nzContent: '<b style="color: red;">确认删除该拓扑图吗?</b>',
                nzOkText: '确定',
                nzOkType: 'danger',
                nzOnOk: () => {
wangqinghua's avatar
wangqinghua committed
                    const data = {
wangqinghua's avatar
wangqinghua committed
                        id: this.topoId
                    };
wangqinghua's avatar
wangqinghua committed
                    this.topologySer.delete(data).subscribe(
wangqinghua's avatar
wangqinghua committed
                        (res) => {
                            if (res.errCode == 10000) {
                                this.topoId = null;
wangqinghua's avatar
wangqinghua committed
                                this.message.success('删除成功');
wangqinghua's avatar
wangqinghua committed
                                this.getList();
                            } else {
wangqinghua's avatar
wangqinghua committed
                                this.message.error(res.errMsg);
wangqinghua's avatar
wangqinghua committed
                            }
                        }
                    );
                },
                nzCancelText: '取消',
                nzOnCancel: () => console.log('Cancel')
wangqinghua's avatar
wangqinghua committed
            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    //设置监测点
wangqinghua's avatar
wangqinghua committed
    setCheckList(event) {
wangqinghua's avatar
wangqinghua committed
        this.checkJson.push(JSON.parse(event));
    }

wangqinghua's avatar
wangqinghua committed
    //删除监测点
wangqinghua's avatar
wangqinghua committed
    deleteCheck(index) {
        this.checkJson.splice(index, 1);
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    //添加图片-----start
wangqinghua's avatar
wangqinghua committed
    showAddImg() {
        if (!this.topoId) {
            this.message.warning('请选择需要编辑的拓扑图');
wangqinghua's avatar
wangqinghua committed
            return false;
        }
wangqinghua's avatar
wangqinghua committed
        this.isVisible = true;
    }

    beforeUpload = (file: UploadFile): boolean => {
wangqinghua's avatar
wangqinghua committed
        const isLt2M = file.size / 1024 < 300;
wangqinghua's avatar
wangqinghua committed
        if (!isLt2M) {
            this.message.error('图标必须小于300kb!');
wangqinghua's avatar
wangqinghua committed
        } else {
wangqinghua's avatar
wangqinghua committed
            this.fileList.push(file);
        }
        return false;
    };

wangqinghua's avatar
wangqinghua committed
    handleCancel() {
wangqinghua's avatar
wangqinghua committed
        this.isVisible = false;
wangqinghua's avatar
wangqinghua committed
        this.fileList = [];
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    handleOk() {
        if (this.fileList.length == 0) {
            this.message.warning('请选择图片');
wangqinghua's avatar
wangqinghua committed
            return false;
        }
        const formData = new FormData();
wangqinghua's avatar
wangqinghua committed
        this.fileList.forEach((file: any) => {
            formData.append('file', file);
wangqinghua's avatar
wangqinghua committed
        });
wangqinghua's avatar
wangqinghua committed
        this.topologySer.addPic(formData).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                if (res.errCode == 10000) {
wangqinghua's avatar
wangqinghua committed
                    this.isVisible = false;
wangqinghua's avatar
wangqinghua committed
                    editor.utils.addNode(res.data, 'text');
wangqinghua's avatar
wangqinghua committed
                    this.fileList = [];
wangqinghua's avatar
wangqinghua committed
                } else {
                    this.message.error('添加失败');
wangqinghua's avatar
wangqinghua committed
                }
            }
wangqinghua's avatar
wangqinghua committed
        );
wangqinghua's avatar
wangqinghua committed
    }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //全屏查看
    fullCanvas() {
        this.isFull = true;
        this.render.addClass(this.canvasTopo.nativeElement, 'full-canvas');
    }

    //退出全屏
    exitFull() {
        this.isFull = false;
        this.render.removeClass(this.canvasTopo.nativeElement, 'full-canvas');
    }

wangqinghua's avatar
wangqinghua committed
}