Skip to content
switch.component.ts 8.09 KiB
Newer Older
wangqinghua's avatar
wangqinghua committed
import {Component, OnInit} from '@angular/core';
import {CommonService} from '../../../shared/common/common.service';
wangqinghua's avatar
wangqinghua committed
import {ActivatedRoute} from '@angular/router';
import {NzMessageService} from 'ng-zorro-antd';
import {HostFlow, UnitList} from '../../../app.constants';
import {OverAllService} from '../../overAll.service';
wangqinghua's avatar
wangqinghua committed
import {timer} from 'rxjs/observable/timer';
wangqinghua's avatar
wangqinghua committed

@Component({
wangqinghua's avatar
wangqinghua committed
    selector: 'smart-switch',
    templateUrl: './switch.component.html',
    styles: []
wangqinghua's avatar
wangqinghua committed
})
export class SwitchComponent implements OnInit {

wangqinghua's avatar
wangqinghua committed
    hostId;  //主机ID
wangqinghua's avatar
wangqinghua committed
    switch;
wangqinghua's avatar
wangqinghua committed

    targetFlow = HostFlow;   //主机指标
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    timeList = [
wangqinghua's avatar
wangqinghua committed
        {'label': '最近一小时', value: '0'},
wangqinghua's avatar
wangqinghua committed
        {'label': '最近一天', value: '2'},
wangqinghua's avatar
wangqinghua committed
        {'label': '最近三天', value: '3'},
        {'label': '最近一周', value: '4'},
wangqinghua's avatar
wangqinghua committed
    ];
wangqinghua's avatar
wangqinghua committed
    timeTypeTrend = '0';
    timeTypeFLow = '0';
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    interfaceList = [];  //接口数组
wangqinghua's avatar
wangqinghua committed
    unitList = UnitList;  // 单位
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    isNetworkLoading = false;
    chartNetworkOption;

wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    isTrendLoading = false;
    chartTrendOption;

    netWorkdObj = {   //网卡图表参数
wangqinghua's avatar
wangqinghua committed
        itemName: null,
wangqinghua's avatar
wangqinghua committed
        unit: 'Mbps',
        startTime: '',
        endTime: '',
    };
wangqinghua's avatar
wangqinghua committed
    noData = false;
wangqinghua's avatar
wangqinghua committed

    trendObj = {
        type: 'total_flow',
        startTime: '',
        endTime: ''
    };

wangqinghua's avatar
wangqinghua committed
    hostObj = {
        disk: null,
        used: null,
        cpu: null,
        losed: null,
        response:null
    };

wangqinghua's avatar
wangqinghua committed
    constructor(private commonSer: CommonService, private routerInfo: ActivatedRoute,
                private message: NzMessageService, private overAllSer: OverAllService) {
        this.routerInfo.queryParams.subscribe(queryParams => {
            this.hostId = queryParams.hostId;
            this.overAllSer.findDetailed(this.hostId).subscribe(
                (res) => {
wangqinghua's avatar
wangqinghua committed
                    this.switch = res.data[0];
wangqinghua's avatar
wangqinghua committed
                }
            );
        });
wangqinghua's avatar
wangqinghua committed
    }

    ngOnInit() {
wangqinghua's avatar
wangqinghua committed
        this.overAllSer.findNetworkCard(this.hostId).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
wangqinghua's avatar
wangqinghua committed
                this.interfaceList = res.data;
wangqinghua's avatar
wangqinghua committed
                if(this.interfaceList && this.interfaceList.length > 0){
                    this.netWorkdObj.itemName = this.interfaceList[0];
                    this.changeTimeFlow('0');
wangqinghua's avatar
wangqinghua committed
                    this.noData = false;
                }else{
                    this.noData = true;
wangqinghua's avatar
wangqinghua committed
                }
wangqinghua's avatar
wangqinghua committed
            }
wangqinghua's avatar
wangqinghua committed
        );
        this.changeTimeTarget('0');
wangqinghua's avatar
wangqinghua committed
        this.getDetail();
    }

    getDetail() {
        const data = {
            hostId: this.hostId,
        };
        //内存使用率
        this.overAllSer.used(data).subscribe(
            (res) => {
wangqinghua's avatar
wangqinghua committed
                if(res.errCode == 10000){
                    if (res.data) {
                        this.hostObj.used = res.data.used;
                    } else {
                        this.hostObj.used = 0;
                    }
                }else{
                    this.message.error(res.errMsg);
wangqinghua's avatar
wangqinghua committed
                }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
            }
        );
        //cpu使用率
        this.overAllSer.cupUsed(data).subscribe(
            (res) => {
                if (res.data) {
                    this.hostObj.cpu = res.data.cpuUsed;
                } else {
                    this.hostObj.cpu = 0;
                }
            }
        );
        //丢包率
        this.overAllSer.losed(this.hostId).subscribe(
            (res) => {
                if (res.data) {
                    this.hostObj.losed = res.data.losed;
                } else {
                    this.hostObj.losed = 0;
                }
            }
        );
        //响应时间
        this.overAllSer.responseTime(this.hostId).subscribe(
            (res)=>{
                if (res.data) {
                    this.hostObj.response = res.data.response;
                } else {
                    this.hostObj.response = 0;
                }
            }
        )
wangqinghua's avatar
wangqinghua committed
    }

    //网卡流量
    findNetwork() {
        const data = {
wangqinghua's avatar
wangqinghua committed
            itemName: this.netWorkdObj.itemName,
            hostid: this.hostId,
            startTime: this.netWorkdObj.startTime,
            endTime: this.netWorkdObj.endTime,
            unit: this.netWorkdObj.unit
        };
wangqinghua's avatar
wangqinghua committed
        this.overAllSer.findNetworkFlow(data).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                this.setNetWorkChart(res.data);
wangqinghua's avatar
wangqinghua committed
            }
wangqinghua's avatar
wangqinghua committed
        );
    }

    //设置网卡流量
    setNetWorkChart(data) {
        let arr = [];
        const objSend = {
            name: '发送速率',
            stack: '网卡流量',
            type: 'line',
            itemStyle: {
                normal: {
                    lineStyle: {
                        color: '#2cfef7'
                    }
                }
            },
            data: [],
        };
        const objReceived = {
            name: '接受速率',
            stack: '网卡流量',
            type: 'line',
            itemStyle: {
                normal: {
                    lineStyle: {
                        color: '#b6d0f0'
                    }
                }
            },
            data: [],
        };
        data.forEach(e => {
            objSend.data.push(e.sentValue);
wangqinghua's avatar
wangqinghua committed
            objReceived.data.push(e.receivedValue);
wangqinghua's avatar
wangqinghua committed
        });
        arr.push(objSend, objReceived);
        this.chartNetworkOption = {
            xAxis: {
                type: 'category',
                axisLine: {
                    lineStyle: {
                        color: '#b6d0f0',
                    }
                },
                data: data.map(e => {
                    return e.time;
                })
            },
            yAxis: {
                axisLine: {
                    lineStyle: {
                        color: '#b6d0f0',
                    }
                },
                type: 'value'
            },
            series: arr,
        };
        this.isNetworkLoading = false;
wangqinghua's avatar
wangqinghua committed
    }

    //指标趋势
wangqinghua's avatar
wangqinghua committed
    findChart() {
wangqinghua's avatar
wangqinghua committed
        const data = {
wangqinghua's avatar
wangqinghua committed
            type: this.trendObj.type,
            hostid: this.hostId,
            startTime: this.trendObj.startTime,
            endTime: this.trendObj.endTime
        };
wangqinghua's avatar
wangqinghua committed
        this.overAllSer.findChartByKey(data).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                this.setTrendChart(res.data);
wangqinghua's avatar
wangqinghua committed
            }
wangqinghua's avatar
wangqinghua committed
        );
    }

    //设置指标趋势
    setTrendChart(data) {
        this.chartTrendOption = {
            xAxis: {
                type: 'category',
                axisLine: {
                    lineStyle: {
                        color: '#b6d0f0',
                    }
                },
                data: data.map(e => {
                    return e.time;
                })
            },
            yAxis: {
                axisLine: {
                    lineStyle: {
                        color: '#b6d0f0',
                    }
                },
                type: 'value'
            },
wangqinghua's avatar
wangqinghua committed
            series:[{
                name: '指标趋势',
                type: 'line',
                itemStyle: {
                    normal: {
                        lineStyle: {
                            color: '#b6d0f0'
                        }
                    }
                },
                data: data.map(e => {
                    return e.val;
                })
            },]
wangqinghua's avatar
wangqinghua committed
        };
        this.isTrendLoading= false;
wangqinghua's avatar
wangqinghua committed
    }

    /**********指标趋势**************/
wangqinghua's avatar
wangqinghua committed
    changeTimeTarget(e) {
        this.isTrendLoading = true;
wangqinghua's avatar
wangqinghua committed
        timer(500).subscribe(
            (res)=>{
                const timeObj = this.commonSer.getTimeByType(e);
                this.trendObj.startTime = timeObj.startTime;
                this.trendObj.endTime = timeObj.endTime;
                this.findChart();
            }
        )
wangqinghua's avatar
wangqinghua committed
    }

    /**********指标趋势**************/

    /**********网卡流量**************/
wangqinghua's avatar
wangqinghua committed
    changeTimeFlow(e) {
        this.isNetworkLoading = true;
wangqinghua's avatar
wangqinghua committed
        timer(500).subscribe(
            (res)=>{
                const timeObj = this.commonSer.getTimeByType(e);
                this.netWorkdObj.startTime = timeObj.startTime;
                this.netWorkdObj.endTime = timeObj.endTime;
                this.findNetwork();
            }
        )

wangqinghua's avatar
wangqinghua committed
    }
    /**********网卡流量**************/
wangqinghua's avatar
wangqinghua committed
}