
// 这个是  实时模式   端口统计使用的功能
$("#Chart_ChangeTime").hide();

let Chart_ChangeTime = Cookies.get('BLV_UdpDebugImg_Chart_ChangeTime') || 1;
$("#Chart_ChangeTime").val(Chart_ChangeTime);
// 这个是  实时模式   端口统计使用的功能  结束


// 点击收起之后 选择的时间 是否改变   选择的时间改变 =》 图也要改变
// 相对指定图是否改变
let showchangelist = [false, false, false, false];

// 通讯包数统计
let chart = null;
// 通讯字节流量统计收起

let chart1 = null;
// 端口数据使用情况

let chart2 = null;

// 处理耗时

let chart3 = null;


// 时间 起始 结束
let startDate, endDate;
//TX RX复选框默认值    ----------------------------------------- 当前页面用不到
let defauust = { RX: [1, 2, 3, 4], TX: [1, 2, 3, 4] };
//TX RX复选框当前选择值
let checkeddata = { RX: [1, 2, 3, 4], TX: [1, 2, 3, 4] };
//TX RX复选框事件
function checkbox_change(type_name, val) {
    var event = window.e || window.event;
    let checked = $(event.target).prop("checked");
    if (val == 0) {
        //全选/取消全选
        $("." + type_name).prop("checked", checked);
        checkeddata[type_name] = checked ? defauust[type_name] : [];
    }
    else {
        if (checked == true) {
            checkeddata[type_name].push(Number.parseInt(val));
            if ($("." + type_name + ":checked").length == $("." + type_name).length - 1 && !$("." + type_name).eq(0).prop("checked")) {
                $("." + type_name).eq(0).prop("checked", true);
            }
            return;
        }
        $("." + type_name).eq(0).prop("checked", false);
        // 过滤 
        checkeddata[type_name] = checkeddata[type_name].filter((x) => {
            return x != Number.parseInt(val);
        });
    }
}
//TX RX复选框默认值    ----------------------------------------- 当前页面用不到 结束

//渲染全部  或者渲染指定绘图 前提是元素没有隐藏 
function search_result(index = -1) {
    let data = { RX: checkeddata.RX, TX: checkeddata.TX, startDate, endDate };
    Cookies.set('BLV_UdpDebugImg_GetCHARTS', data, { expires: 7, path: window.location.pathname });
    if (!$('#lineChart').is(':hidden') && (index == -1 || index == 0)) {
        MyPost("/API/GetBLV_UdpDebugImg", { data, isSwal: endDate != null }, (RES) => {
            barChartdatashow(chart, RES, 'lineChart');
        });
    }
    if (!$('#barChart').is(':hidden') && (index == -1 || index == 1)) {
        MyPost("/API/GetBLV_UdpDebugImg_PIE", { data, isSwal: endDate != null }, (RES) => {
            barChartdatashow(chart1, RES, 'barChart');
        }
        );
    }
    if (!$('#Chart2').is(':hidden') && (index == -1 || index == 2)) {
        let newdata = JSON.parse(JSON.stringify(data));
        if (endDate == null) {
            let new_Chart_ChangeTime = Number.parseInt($("#Chart_ChangeTime").val());
            if (new_Chart_ChangeTime != Chart_ChangeTime) {
                Chart_ChangeTime = new_Chart_ChangeTime;

                Cookies.set('BLV_UdpDebugImg_Chart_ChangeTime', Chart_ChangeTime, { expires: 7, path: window.location.pathname });
            }
            newdata.startDate = moment().subtract(Chart_ChangeTime, 'minute').format('YYYY-MM-DD HH:mm:ss');
            newdata.endDate = moment().format('YYYY-MM-DD HH:mm:ss');
        }

        MyPost("/API/GetProt", { data: newdata, isSwal: endDate != null }, (RES) => {

            barChartdatashow(chart2, RES, "Chart2");
        }
        );
    }
    if (!$('#Chart3').is(':hidden') && (index == -1 || index == 3)) {
        MyPost("/API/GetPROCESSINGTIME", { data, isSwal: endDate != null }, (RES) => {
            barChartdatashow(chart3, RES, 'Chart3');
        }
        );
    }
}




$(function () {

    // 写入历史 历史只是隐藏的值
    let btnshow_item = Cookies.get('BLV_UdpDebugImg_btnshow_item') || null;
    btnshow_item = btnshow_item == null ? [] : JSON.parse(btnshow_item);
    console.log(btnshow_item)
    btnshow_item.forEach((item, index) => {
        $(".btnshow").eq(item.index).click();
    })

    let data = Cookies.get('BLV_UdpDebugImg_GetCHARTS') || null;
    let UDPINFO_ChangeTime = Cookies.get('BLV_UdpDebugImg_ChangeTime') || 1
    UDPINFO_ChangeTime = Number.parseInt(UDPINFO_ChangeTime);
    $("#UDPINFO_ChangeTime").val(UDPINFO_ChangeTime);
    data = data != null ? JSON.parse(Cookies.get('BLV_UdpDebugImg_GetCHARTS')) : [];
    checkeddata.RX = data["RX"] || defauust["RX"];
    checkeddata.TX = data["TX"] || defauust["TX"];
    //// 如果TX 不等于 .TX 长度减去1 那么久取消全选           ----------------------------------------- 当前页面用不到
    if ($(".TX").length != (checkeddata.TX.length + 1)) {
        $(".TX").prop("checked", false);
        for (var i of checkeddata.TX) {
            $(".TX").eq(i).prop("checked", true);
        }
    }
       //// 如果TX 不等于 .TX 长度减去1 那么久取消全选           ----------------------------------------- 当前页面用不到  结束
    //// 如果RX 不等于 .RX 长度减去1 那么久取消全选           ----------------------------------------- 当前页面用不到
    if ($(".RX").length != (checkeddata.RX.length + 1)) {
        $(".RX").prop("checked", false);
        for (var i of checkeddata.RX) {
            $(".RX").eq(i).prop("checked", true);
        }
    }
    //// 如果RX 不等于 .RX 长度减去1 那么久取消全选           ----------------------------------------- 当前页面用不到  结束

    // 时间选择  默认值
    startDate = data["startDate"] || moment().startOf("days").format('YYYY-MM-DD HH:mm:ss');
    endDate = data["endDate"] || moment().format('YYYY-MM-DD HH:mm:ss');


    // 带有时间选择的日期范围选择器
    $('#reservationtime').daterangepicker({
        startDate: startDate,
        endDate: endDate,
        timePicker: true,
        maxDate: new Date(),
        minDate: "2022-3-25 00:00:00",
        timePicker24Hour: true,
        timePickerSeconds: true,
        locale: {
            cancelLabel: 'Clear',
            format: 'YYYY-MM-DD HH:mm:SS'
        }
    }).on('apply.daterangepicker', function (ev, picker) {
        startDate = picker.startDate.format('YYYY-MM-DD HH:mm:ss');
        endDate = picker.endDate.format('YYYY-MM-DD HH:mm:ss');
        $('#UDPINFO_ChangeTime').val(8);
        ChangeTime()
    }).on('cancel.daterangepicker', function (ev, picker) {
        $('UDPINFO_ChangeTime').val(8);
        $(this).val('');
        startDate = null;
        endDate = null;
        ChangeTime()
    });
    // 更改时间  触发 加载
    ChangeTime();
});


//显示数据 
function barChartdatashow(chartinfo, RES, element) {
    try {
        // 取消正刷新标识
        is_NOW_SX--;
        if (chartinfo != null) {
            chartinfo.dispose();
        }
        chartinfo = echarts.init(document.getElementById(element));
        if (RES == null) {
            return;
        }
        chartinfo.setOption(RES);
    } catch (e) {
        console.log(e)
    }
}

// 实时数据的刷新器
let NOW_SX = null;
// 是否正在刷新
let is_NOW_SX = 0;

function ChangeTime() {
    let sel = Number.parseInt($("#UDPINFO_ChangeTime").val().replace(/\s*/g, ""));
    try {
        switch (sel) {
            case 1:
                startDate = moment().startOf("days").format('YYYY-MM-DD HH:mm:ss');
                endDate = moment().format('YYYY-MM-DD HH:mm:ss');
                break;
            case 2:
                startDate = moment().subtract(1, 'days').startOf("days").format('YYYY-MM-DD HH:mm:ss');
                endDate = moment().subtract(1, 'days').endOf("days").format('YYYY-MM-DD HH:mm:ss');
                break;
            case 3:
                startDate = moment().subtract(6, 'days').format('YYYY-MM-DD HH:mm:ss');
                endDate = moment().format('YYYY-MM-DD HH:mm:ss');
                break;
            case 4:
                startDate = moment().subtract(29, 'days').format('YYYY-MM-DD HH:mm:ss');
                endDate = moment().format('YYYY-MM-DD HH:mm:ss');
                break;
            case 5:
                startDate = moment().startOf('month').format('YYYY-MM-DD HH:mm:ss');
                endDate = moment().endOf('month').format('YYYY-MM-DD HH:mm:ss');
                break;
            case 6:
                startDate = moment().subtract(1, 'month').startOf('month').format('YYYY-MM-DD HH:mm:ss');
                endDate = moment().format('YYYY-MM-DD HH:mm:ss');
                break;
            case 7:
                startDate = moment().format('YYYY-MM-DD HH:mm:ss');
                endDate = null;
                break;
        }
    } catch (e) {
        console.log(e)
    }

    Cookies.set('BLV_UdpDebugImg_ChangeTime', sel, { expires: 7, path: window.location.pathname });


    $('#reservationtime').val(startDate + ' - ' + (endDate == null ? "" : endDate));

    //时间选择改变所有的度改变
    showchangelist = [true, true, true, true];

    if (endDate == null) {
        //显示 选择分钟事件
        $("#Chart_ChangeTime").show();

        // 第一次显示读取缓存
        if (Chart_ChangeTime == -1) {
            Chart_ChangeTime = Cookies.get('BLV_UdpDebugImg_Chart_ChangeTime') || 1;
            Chart_ChangeTime = Number.parseInt(Chart_ChangeTime);
            $("#Chart_ChangeTime").val(Chart_ChangeTime);
        }

        if (NOW_SX != null) {
            clearInterval(NOW_SX);
            NOW_SX = null;
            is_NOW_SX = 0;
        }
        NOW_SX = setInterval(function () {
            if (endDate != null) {
                if (NOW_SX != null) {
                    clearInterval(NOW_SX);
                }
                return;
            }
            if (is_NOW_SX <= 0) {
                // 没有隐藏的画布执行刷新  刷新成功后 is_NOW_SX -- 
                // is_NOW_SX == 0 表示所有画布没有隐藏度已经刷新
                let lengthnum = 0;
                for (let tump of $('.Chart')) {
                    if (!$(tump).is(':hidden')) {
                        lengthnum++;
                    }
                }
                is_NOW_SX = lengthnum;
                search_result();
            }
        }, 1000);
    }
    else {
        clearInterval(NOW_SX);
        $("#Chart_ChangeTime").hide();
    }
    search_result();
    return;
}
// 显示隐藏 面板
function btnshow(that, index) {

    let btntext = $(that).find("button").eq(0).text();
    let isshow = btntext.indexOf("收起") >= 0; //TRUE 标识 隐藏  
    $(that).find("button").eq(0).text(isshow ? btntext.replace("收起", "展开") : btntext.replace("展开", "收起"));
    $(that).next().toggle();
    // 重新显示并且 之前选择的时间范围数值已经改变
    if (!isshow && showchangelist[index]) {
        search_result(index);
    }

    showchangelist[index] = false;

    // 写入历史 历史只是隐藏的值
    let btnshow_item = Cookies.get('BLV_UdpDebugImg_btnshow_item') || null;
    btnshow_item = btnshow_item == null ? [] : JSON.parse(btnshow_item);
    if (!isshow) {
        //移除原有的 隐藏的值
        btnshow_item = btnshow_item.filter(x => {
            return x.index != index;
        })
    } else {
        let onok = true;
        btnshow_item.filter(x => {
            if (x.index == index) {
                onok = false;
            }
            return true;
        })
        //添加 隐藏的值
        if (onok) {
            btnshow_item.push({ index });
        }
    }
    // 写入缓存
    Cookies.set('BLV_UdpDebugImg_btnshow_item', btnshow_item, { expires: 7, path: window.location.pathname });

    Cookies.set('BLV_UdpDebugImg_Chart_ChangeTime', Chart_ChangeTime, { expires: 7, path: window.location.pathname });

}



 

 