/*
 * objTable：存放表格对象
 * layerID:记录layer弹出框的ID
 */
var objTable = null;
var layerID = -1;
var layer = null;
$("#interval").val("月份");

$(document).ready(function () {
    initInfo();
});

function initInfo() {
    layui.use(['layer'], function () {
        layer = layui.layer;
        query();
    });
}

/*
 * 按钮查询事件
 */
$('#query').click(function () {
    query();
});

var it = null;

function startQuery() {
    it = setInterval('refreshQuery()', 100);
}

function refreshQuery() {
    var width = $("#tableId").width();
    if (width > 100) {
        location.reload();
        window.clearInterval(it)
    }
}

/*
 * 查询事件
 */
function query() {
    if (objTable != null) {
        objTable.clear(0); // 清空表中数据
    }

    var startTime = $("#startTime").val();
    var endTime = $("#endTime").val();
    queryEventsByTime(startTime, endTime);
}

/*
 * 根据时间查询数据
 */
var layerId = -1;

function queryEventsByTime(startTime, endTime) {
    layerId = SHOW_LOAD_LAYER(layer);

    $.ajax({
        type: 'POST',
        dataType: "json",
        data: {
            startTime: startTime,
            endTime: endTime
        },
        url: '/pqs9200/advanced/queryEventsByTime',
        success: function (data) {
            processData(data);
        },
        error: function () {
            layer.msg("暂降影响范围分析列表查询失败！");
            initTableBtn($('#tableId'), [], 4);
        }
    });
}

/*
 * 根据查询到的结果处理数据
 */
function processData(data) {
    if (data.code != 0) {
        initTableBtn($('#tableId'), data.object, 4);
        CLOSE_LOAD_LAYER(layer, layerId);
        return;
    }

    var tableData = '';
    var offset = 0;

    /*
     * 注意：添加行内按钮，初始化表格时，需要根据表格的表头来初始化数据 故将需要添加按钮的列置为''， 先初始化，再回调函数添加按钮
     */
    while (offset < data.object.length) {
        tableData += '["' + data.object[offset].indexEventAss + '","' + '","'
            + data.object[offset].strTime + '","'
            + data.object[offset].name + '","'
            + data.object[offset].describe + '","' + '' + '"],';

        offset++;
    }

    /*
     * 去除最右边',' string转json
     */
    tableData = tableData.substring(0, tableData.lastIndexOf(','));
    tableData = eval('[' + tableData + ']');

    objTable = initTableBtn($('#tableId'), tableData, 4);
    CLOSE_LOAD_LAYER(layer, layerId);
}

/*
 * 行内按钮 obj:表格对象 tableData:表格数据 nIndex:按钮添加的列 nameBtn:按钮名称
 */
function initTableBtn(obj, tableData, nIndex) {
    var $height = $("body").height() * 0.75;
    var height = $(window).height() - 155;
    var length = Math.floor(height / 28);
    if (length < 1) {
        length = 1;
    }
    var oTable = obj
        .DataTable({
            scrollX: true,
            data: tableData,
            lengthChange: false,
            bDestroy: true,
            'searching': true,
            dom: 'lrt<<"myStyle"i><"myStyle"p>>',
            ordering: true,
            order: [[2, 'desc']],
            scrollY: $height,
            scrollCollapse: true,
            columnDefs: [{
                targets: [0],
                visible: false
            }, {
                targets: [1, 3, 4, 5],
                orderable: false
            }],
            pageLength: length,
            language: {
                url: '/pqs9200/json/chine.json'
            },
            createdRow: function (row, data, index) {
                var $btnView = '', $btnDW;

                $btnDW = $('<input type="button" class="btn themeBGColor  btn-dw" value="暂降源定位"/>');

             //   if (data[4].indexOf("包含1个事件") == -1) {
                    switch (parseInt(data[1])) {
                        case 0:
                            $btnView = $('<input type="button" style="margin-left: 5px;" class="btn themeBGColor  btn-view" id="btn_'
                                + data[3] + '" value="范围查看"/>');
                            break;
                        case 1:
                            $btnView = $('<input type="button" style="margin-left: 5px;"  class="btn themeBGColor btn-range" id="btn_'
                                + data[3] + '" value="范围分析"/>');
                            break;
                        default:
                            $btnView = $('<input type="button" style="margin-left: 5px;" class="btn themeBGColor  btn-range" id="btn_'
                                + data[3] + '" value="范围分析"/>');
                            break;
                    }
            //    }

                $('td', row).eq(nIndex).append($btnDW, $btnView);
            },
            'fnDrawCallback': function (oTable) {
                $("#tableId_paginate")
                    .append(
                        "<div style='float:right;padding-top:4px;padding-left:10px'>到第 <input type='text' id='changePage' class='input-text' style='width:50px;height:28px;'> 页  <button class='btn btn-primary' id='dataTable-btn'>确定</button></div>");
                var table = $("#tableId").dataTable();
                $('#dataTable-btn')
                    .click(
                        function (e) {
                            if ($("#changePage").val()
                                && $("#changePage").val() > 0) {
                                var redirectpage = $("#changePage")
                                    .val() - 1;
                            } else {
                                var redirectpage = 0;
                            }
                            table.fnPageChange(redirectpage);
                        });
            }
        });

    new $.fn.dataTable.Buttons(oTable, {
        buttons: [{
            extend: 'csv',// 导出格式
            title: '影响范围分析表_' + time2String(),
            exportOptions: {
                columns: [2, 3, 4],// 导出需要的列
                format: {
                    body: function (data, rID, cID) {// 对导出内容的筛选 data 表格内容
                        // rid 行索引 cid 列索引
                        if (cID == 0 || cID == 1) {
                            return data.replace("0", "O");
                        } else {
                            return data;
                        }
                    }
                }
            }
        }]
    });

    oTable.buttons().container().css("display", "inline-block");
    oTable.buttons().container().css("float", "right");
    oTable.buttons().container().find("a").prepend(
        "<i class='glyphicon glyphicon-share'></i>");
    oTable.buttons().container().appendTo('.header');
    oTable.buttons().container().after($("#fliteData")[0]);
    oTable.on('draw.dt', function () {
        oTable.column(1, {
            draw: 'applied',
        }).nodes().each(function (cell, i) {
            cell.innerHTML = i + 1;
        });
    }).draw();

    return oTable;
}

/*
 * 点击查看结果按钮
 */
$('#tableId').on("click", ".btn-dw", function () {
    if (objTable != null) {
        var item = objTable.row($(this).closest('tr')).data();
        queryDetailEvents(item[0], item[3], item[2]);
    }
});

function queryDetailEvents(strGUID, name, time) {
    var layId = layer.open({
        type: 2,
        title: '暂降源定位',
        maxmin: false,
        shadeClose: true, // 点击遮罩关闭层
        area: ['100%', '100%'],
        content: 'rangewaveform',
        scrollbar: false,
        success: function (layero, index) {
            $(layero).find("iframe")[0].contentWindow.queryEventsByGUID(
                strGUID, name, time, layId);
        }
    });
}

$('#tableId').on("click", ".btn-view", function () {
    if (objTable != null) {
        var item = objTable.row($(this).closest('tr')).data();
        processRangeAnalysis(item[0], 0);
    }
});

/*
 * 点击范围分析按钮
 */
$('#tableId').on("click", ".btn-range", function () {
    if (objTable != null) {
        var item = objTable.row($(this).closest('tr')).data();
        processRangeAnalysis(item[0], 1);

        // 处理完成后更新按钮名称
        if (layerID != -1) {
            document.getElementById('btn_' + item[3]).value = '范围查看';
            $('#btn_' + item[3]).removeClass("btn-range");
            $('#btn_' + item[3]).addClass("btn-view");
        }
    }
});

/*
 * strGUID:事件的GUID bRange：是否已经进行归一化处理 1-未进行处理 0-已处理
 */
function processRangeAnalysis(strGUID, bRange) {
    if (bRange == 1) {

        layerID = layer.msg('范围分析<Br\>&nbsp&nbsp&nbsp正在处理.....', {
            icon: 16,
            shade: 0.01,
            time: 0
        }, function () {
            if (layerID != -1) {
                jumpRange(strGUID, bRange);
            }
        });

        rangeAnalysis(strGUID);
        console.log("=======+++==")
    } else if (bRange == 0) {
        jumpRange(strGUID, bRange);
    }
}

function rangeAnalysis(strGUID) {
    $.ajax({
        type: 'POST',
        async: false,
        data: {
            indexEventAss: strGUID
        },
        url: '/pqs9200/advanced/rangeAnalysis',
        success: function (data) {
            if (layerID != -1) {
                layer.close(layerID);
            }
        },
        error: function () {
            if (layerID != -1) {
                layer.close(layerID);
            }

            layerID = -1;
            layer.msg("暂降影响范围操作失败！");
        }
    });
}

/*
 * 范围分析页面跳转 bRange:0-查看结果 1-范围分析 strGUID:归一化事件的GUID
 * 如果是范围分析，范围分析的结果从redis中获取，如果是查看结果，范围分析的结果从数据库获取
 */
function jumpRange(strGUID, bRange) {
    layer.open({
        type: 2,
        title: '范围分析结果',
        maxmin: false,
        shadeClose: true, // 点击遮罩关闭层
        area: ['100%', '100%'],
        content: 'fwfx?eventass_index=' + strGUID,
        scrollbar: false
    });
}

//搜索框内容改变结果记录
function valueChange(value) {
    objTable.search(value).draw();
}
