Skip to content
flow-trend.component.ts 6.88 KiB
Newer Older
wangqinghua's avatar
wangqinghua committed
import {Component, ElementRef, OnDestroy, OnInit, ViewChild} from '@angular/core';
wangqinghua's avatar
wangqinghua committed
import {TopologyService} from '../topology.service';
import {OverAllService} from '../../overAll/overAll.service';
import {NzMessageService} from 'ng-zorro-antd';
import {pageSize} from '../../app.constants';
import {DatePipe} from '@angular/common';
wangqinghua's avatar
wangqinghua committed
import {setInterval, clearInterval} from 'timers';
wangqinghua's avatar
wangqinghua committed
import {NgxEchartsModule} from 'ngx-echarts';
wangqinghua's avatar
wangqinghua committed
import {CommonService} from '../../shared/common/common.service';
wangqinghua's avatar
wangqinghua committed

@Component({
wangqinghua's avatar
wangqinghua committed
    selector: 'smart-flow-trend',
    templateUrl: './flow-trend.component.html',
    styles: []
wangqinghua's avatar
wangqinghua committed
})
wangqinghua's avatar
wangqinghua committed
export class FlowTrendComponent implements OnInit, OnDestroy {
wangqinghua's avatar
wangqinghua committed
    checkList;
wangqinghua's avatar
wangqinghua committed
    hostList;
wangqinghua's avatar
wangqinghua committed
    isLoading;
wangqinghua's avatar
wangqinghua committed
    obj = {
        hostid: null,
wangqinghua's avatar
wangqinghua committed
        itemKey: null,
wangqinghua's avatar
wangqinghua committed
        startTime: '',
        endTime: ''
    };
wangqinghua's avatar
wangqinghua committed
    echartType = 'history';
    echartObj;  //echart对象
wangqinghua's avatar
wangqinghua committed

    //in
    inList = [];
    inPageNum = 1;
wangqinghua's avatar
wangqinghua committed
    inPageCount = '5';
wangqinghua's avatar
wangqinghua committed
    inTotalNum;
wangqinghua's avatar
wangqinghua committed
    inLoading;
wangqinghua's avatar
wangqinghua committed

    //out
    outList = [];
    outPageNum = 1;
wangqinghua's avatar
wangqinghua committed
    outPageCount = '5';
wangqinghua's avatar
wangqinghua committed
    outTotalNum;
wangqinghua's avatar
wangqinghua committed
    outLoading;

wangqinghua's avatar
wangqinghua committed
    timeType = '1';
wangqinghua's avatar
wangqinghua committed
    timeBegin;
    timeEnd;
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //历史图表
wangqinghua's avatar
wangqinghua committed
    chartOption;
wangqinghua's avatar
wangqinghua committed
    inEchartData;
    outEchartData;
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //实时图表
    nowChartOption;
    inNowEchartData = [];
    outNowEchartData = [];

wangqinghua's avatar
wangqinghua committed
    time_;

wangqinghua's avatar
wangqinghua committed
    data = {
wangqinghua's avatar
wangqinghua committed
        now: false,
        history: false
    };
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    constructor(private topologySer: TopologyService, private overAllSer: OverAllService,
wangqinghua's avatar
wangqinghua committed
                private message: NzMessageService, private datePipe: DatePipe,
wangqinghua's avatar
wangqinghua committed
                private commonSer: CommonService) {
wangqinghua's avatar
wangqinghua committed
    }

    ngOnInit() {
wangqinghua's avatar
wangqinghua committed
        this.obj.startTime = this.commonSer.getTimeByType('1').startTime;
        this.obj.endTime = this.commonSer.getTimeByType('1').endTime;
wangqinghua's avatar
wangqinghua committed
        this.getHost();
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    //获取流量
    getList() {
        this.outNowEchartData = [];
        this.inNowEchartData = [];
        this.obj.hostid = null;
    }

wangqinghua's avatar
wangqinghua committed
    onEchartInit(e) {
wangqinghua's avatar
wangqinghua committed
        this.echartObj = e;
    }

wangqinghua's avatar
wangqinghua committed
    //获取主机
    getHost() {
        const data = {
            pageNum: 1,
            pageCount: 1000,
        };
        this.overAllSer.findHostPageNew(data).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
                if (res.errCode == 10000) {
wangqinghua's avatar
wangqinghua committed
                    this.hostList = res.data.data;
                    this.obj.hostid = this.hostList[0].hostid + '';
                    this.getCheckList();
wangqinghua's avatar
wangqinghua committed
                }
            }
        );
    }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //切换图表类型
wangqinghua's avatar
wangqinghua committed
    changeEchartType(type) {
wangqinghua's avatar
wangqinghua committed
        this.echartType = type;
    }

wangqinghua's avatar
wangqinghua committed
    //监测点列表
    getCheckList() {
wangqinghua's avatar
wangqinghua committed
        const data = {
wangqinghua's avatar
wangqinghua committed
            pageNum: 1,
            pageCount: 10000,
            obj: {
                hostid: this.obj.hostid,
wangqinghua's avatar
wangqinghua committed
            }
        };
wangqinghua's avatar
wangqinghua committed
        this.overAllSer.findCheckByType(data).subscribe(
wangqinghua's avatar
wangqinghua committed
            (res) => {
wangqinghua's avatar
wangqinghua committed
                this.checkList = res.data.data;
wangqinghua's avatar
wangqinghua committed
                this.obj.itemKey = this.checkList[0].key;
wangqinghua's avatar
wangqinghua committed
                this.getEcharts();
wangqinghua's avatar
wangqinghua committed
            }
        );
    }
wangqinghua's avatar
wangqinghua committed

wangqinghua's avatar
wangqinghua committed
    //页面离开
wangqinghua's avatar
wangqinghua committed
    ngOnDestroy() {
wangqinghua's avatar
wangqinghua committed
        //销毁定时任务
wangqinghua's avatar
wangqinghua committed
        if (this.time_) {
wangqinghua's avatar
wangqinghua committed
            clearInterval(this.time_);
        }
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    //获取趋势数据
wangqinghua's avatar
wangqinghua committed
    getEcharts() {
wangqinghua's avatar
wangqinghua committed
        this.isLoading = true;
wangqinghua's avatar
wangqinghua committed
        const data = {
wangqinghua's avatar
wangqinghua committed
            key: this.obj.itemKey,
            endTime: (new Date(this.obj.endTime).getTime()) / 1000,
            startTime: (new Date(this.obj.startTime).getTime()) / 1000,
            hostId: this.obj.hostid,
wangqinghua's avatar
wangqinghua committed
        };
        this.topologySer.findTrendData(data).subscribe(
            (res) => {
wangqinghua's avatar
wangqinghua committed
                if (res.errCode == 10000) {
                    if (res.data.length > 0) {
wangqinghua's avatar
wangqinghua committed
                        this.data.history = false;
wangqinghua's avatar
wangqinghua committed
                        this.inEchartData = res.data.map(e => {
wangqinghua's avatar
wangqinghua committed
                            const a = {
wangqinghua's avatar
wangqinghua committed
                                clock: this.datePipe.transform(e.clock * 1000, 'yyyy/MM/dd HH:mm'),
wangqinghua's avatar
wangqinghua committed
                                value: e.avg,
                                unit: e.unit
wangqinghua's avatar
wangqinghua committed
                            };
wangqinghua's avatar
wangqinghua committed
                            return a;
                        });
wangqinghua's avatar
wangqinghua committed
                        this.setEacharts();
wangqinghua's avatar
wangqinghua committed
                    } else {
wangqinghua's avatar
wangqinghua committed
                        this.inEchartData = [];
wangqinghua's avatar
wangqinghua committed
                        this.isLoading = false;
wangqinghua's avatar
wangqinghua committed
                        this.data.history = true;
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
    //
wangqinghua's avatar
wangqinghua committed
    setEacharts() {
wangqinghua's avatar
wangqinghua committed
        let itemStyle = {
wangqinghua's avatar
wangqinghua committed
            normal: {},
wangqinghua's avatar
wangqinghua committed
            emphasis: {
                barBorderWidth: 1,
                shadowBlur: 10,
                shadowOffsetX: 0,
                shadowOffsetY: 0,
                shadowColor: 'rgba(0,0,0,0.5)'
            }
        };

wangqinghua's avatar
wangqinghua committed
        this.chartOption = {
wangqinghua's avatar
wangqinghua committed
            title: {
wangqinghua's avatar
wangqinghua committed
                text: this.obj.itemKey,
wangqinghua's avatar
wangqinghua committed
                left: 'center',
            },
wangqinghua's avatar
wangqinghua committed
            backgroundColor: '#eee',
wangqinghua's avatar
wangqinghua committed
            tooltip: {
                // trigger: 'axis',
wangqinghua's avatar
wangqinghua committed
                formatter: (params) => {
wangqinghua's avatar
wangqinghua committed
                    let res = '';
wangqinghua's avatar
wangqinghua committed
                    res += '<br/>时间:' + params.name;
wangqinghua's avatar
wangqinghua committed
                    params.unit = params.data.unit ? params.data.unit : '';
wangqinghua's avatar
wangqinghua committed
                    res += '<br/>数值:' + Number(params.value).toFixed(2) + '' + params.unit;
wangqinghua's avatar
wangqinghua committed
                    return res;
                }
            },
wangqinghua's avatar
wangqinghua committed
            xAxis: {
wangqinghua's avatar
wangqinghua committed
                data: this.inEchartData.map(e => {
wangqinghua's avatar
wangqinghua committed
                    return e.clock;
wangqinghua's avatar
wangqinghua committed
                }),
wangqinghua's avatar
wangqinghua committed
                name: '时间',
wangqinghua's avatar
wangqinghua committed
            },
wangqinghua's avatar
wangqinghua committed
            dataZoom: [{
                startValue: this.obj.startTime
            }, {
                type: 'inside'
            }],
wangqinghua's avatar
wangqinghua committed
            yAxis: {
wangqinghua's avatar
wangqinghua committed
                type: 'value',
                axisLabel: {   //Y轴数据
                    formatter: function(value) {
wangqinghua's avatar
wangqinghua committed
                        return Math.abs(value);   //负数取绝对值变正数
wangqinghua's avatar
wangqinghua committed
                    },
                    textStyle: {
                        color: '#666'
                    }
                },
wangqinghua's avatar
wangqinghua committed
            },
            grid: {
                left: 100
            },
            series: [
                {
wangqinghua's avatar
wangqinghua committed
                    type: 'line',
wangqinghua's avatar
wangqinghua committed
                    itemStyle: itemStyle,
wangqinghua's avatar
wangqinghua committed
                    data: this.inEchartData
wangqinghua's avatar
wangqinghua committed
                }
            ]
        };
wangqinghua's avatar
wangqinghua committed
        this.isLoading = false;
wangqinghua's avatar
wangqinghua committed
    }

    //in改变页数
wangqinghua's avatar
wangqinghua committed
    inChnagePage(e) {
wangqinghua's avatar
wangqinghua committed
        this.inPageNum = e;
    }

    //out改变页数
wangqinghua's avatar
wangqinghua committed
    outChnagePage(e) {
wangqinghua's avatar
wangqinghua committed
        this.outPageNum = e;
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
    //时间改变
wangqinghua's avatar
wangqinghua committed
    changeType() {
wangqinghua's avatar
wangqinghua committed
        if (this.timeType == '99') return;
wangqinghua's avatar
wangqinghua committed
        this.obj.startTime = this.commonSer.getTimeByType(this.timeType).startTime;
        this.obj.endTime = this.commonSer.getTimeByType(this.timeType).endTime;
wangqinghua's avatar
wangqinghua committed
    }

    //搜索
wangqinghua's avatar
wangqinghua committed
    search() {
wangqinghua's avatar
wangqinghua committed
        if (this.timeType == '99') {
wangqinghua's avatar
wangqinghua committed
            this.obj.startTime = this.datePipe.transform(this.timeBegin, 'yyyy/MM/dd') + ' 00:00:00';
wangqinghua's avatar
wangqinghua committed
            this.obj.endTime = this.datePipe.transform(this.timeEnd, 'yyyy/MM/dd') + ' 23:59:59';
wangqinghua's avatar
wangqinghua committed
        }
wangqinghua's avatar
wangqinghua committed
        console.log(this.obj);
wangqinghua's avatar
wangqinghua committed
        this.getEcharts();
wangqinghua's avatar
wangqinghua committed
    }

wangqinghua's avatar
wangqinghua committed
}