//우측 섹션 관련
let sttsData           = [];
let sttsTable          = null;

//좌측 섹션 관련
let sttsListTable      = null;
let sttsListData       = [];
let sttsStartDate      = null;
let sttsEndDate        = null;
let sttsStartTime      = null;
let sttsEndTime        = null;
let sttsSearchBtn      = null;
let dayTypeCd          = null;
/**
 * @TODO 일통계, 시간 통계 별 
 */
//공통
let commonUri        = '/api/rse/tb_rse_obu_clct_stat_';

const _pageName      = 'DSRC OBU 수집 통계';
const pageMsg        = 'DSRC 제어기'
const dayTypeCdData  = [
    {
        day_type : 'hh',
        day_type_desc : '시간 통계',
    },
    {
        day_type : 'dd',
        day_type_desc : '일 통계',
    },
]
getData('/api/rse/tb_rse_ctlr', sttsListData);

$(()=>{
    
    //검색시작일시 년월일
    sttsStartDate =  $('.strt-date').dxDateBox({
        type                : 'date',
        value               : new Date().setDate(new Date().getDate()-1),
        width               : 130,
        height              : '28px',
        stylingMode         : 'outlined',
        displayFormat       : 'yyyy-MM-dd',
        invalidDateMessage  : '형식에 맞게 입력해주세요. ex)0000-00-00',
    }).dxDateBox('instance');

    //검색 시작일시 시간
    sttsStartTime =  $('.strt-time').dxDateBox({
        type                : 'time',
        value               : firstSettingTime,
        width               : 75,
        interval            : 10,
        height              : '28px',
        stylingMode         : 'outlined',
        displayFormat       : 'HH:mm',
        invalidDateMessage  : '형식에 맞게 입력해주세요. ex)00:00',
    }).dxDateBox('instance');
    
    //검색종료일시 년월일
    sttsEndDate =  $('.end-date').dxDateBox({
        type                : 'date',
        value               : new Date().setDate(new Date().getDate()-1),
        width               : 130,
        height              : '28px',
        stylingMode         : 'outlined',
        displayFormat       : 'yyyy-MM-dd',
        invalidDateMessage  : '형식에 맞게 입력해주세요. ex)0000-00-00',
    }).dxDateBox('instance');
    
    //검색종료일시 시간
    sttsEndTime =  $('.end-time').dxDateBox({
        type                : 'time',
        value               : endSettingTime,
        width               : 75,
        interval            : 10,
        height              : '28px',
        stylingMode         : 'outlined',
        displayFormat       : 'HH:mm',
        invalidDateMessage  : '형식에 맞게 입력해주세요. ex)00:00',
    }).dxDateBox('instance');
    

    //상단 조회 버튼
    sttsSearchBtn = $('.traf-stts-search-btn').dxButton({
        stylingMode:'outlined',
        text:'조회',
        icon:'refresh',
        width: '80px',
        onClick(){
            hsEvent();
        }
    }).dxButton("instance")
   
    //상단 닫기 버튼
    $(".cancle-button").dxButton({
        text:'닫기',
        icon:'close',
        height:'30px',
        width: '80px',
        stylingMode:'outlined',
        onClick(){
            window.close();
        }
    }).dxButton("instance")
    dayTypeCd = new dxSelect($('.day-type'), 'outlined', 215, 28, 'day_type_desc', 'day_type', false);
    dayTypeCd.setDataSource(dayTypeCdData);
    dayTypeCd.setValue(dayTypeCdData[0].day_type);

     //소통정보 이력분석 테이블
     sttsListTable = $(".stts-list-talbe").width('100%').height('100%').dxDataGrid({
        dataSource              : sttsListData[0],
        allowColumnReordering   : true,
        showColumnLines         : true,
        showBorders             : true,
        allowColumnResizing     : true,
        rowAlternationEnabled   : true,
        columnAutoWidth         : true,
        focusedRowEnabled       : true,
        noDataText              : '표출할 정보가 없습니다.',
        headerFilter: {
            visible: true,
        },
        selection: {
            mode: 'multiple',
            showCheckBoxesMode:"onClick"
        },
        keyExpr : 'rse_ctlr_id',
        paging: {
            enabled: false,
            pageSize: 1000,
        },
        scrolling: {
            mode: 'standard',
        },
        columns:[
            {
                dataField    : "rse_ctlr_nmbr",
                caption      : "번호",
                alignment    : "center",
                sortIndex    : 0, 
                sortOrder    : "asc",
            },
            {
                dataField    : "rse_ctlr_id",
                caption      : "DSRC ID",
                alignment    : "center",
            },
            {
                dataField    : "rse_nm",
                caption      : "명칭",
                alignment    : "center",
                cellTemplate(c,e){
                    c.css('text-align','left');
                    c.text(e.displayValue)
                }
            },
        ],
      
        
    }).dxDataGrid("instance");

    sttsTable = $('.stts-table').width('100%').height('100%').dxDataGrid({
        dataSource              : null,
        allowColumnReordering   : true,
        showColumnLines         : true,
        showBorders             : true,
        allowColumnResizing     : true,
        rowAlternationEnabled   : true,
        columnAutoWidth         : true,
        focusedRowEnabled       : true,
        noDataText              : '표출할 정보가 없습니다.',
        keyExpr                 : 'rse_ctlr_nmbr',
        scrolling               : {
            mode : 'virtual',
        },
        headerFilter: {
            visible: true,
        },
        export:{
            enabled : true,
            texts   : {
                exportAll:"엑셀 파일",
            },
        },
        sorting: {
            showSortIndexes: false,
        },
        columns:[
            {
                dataField    : "rse_ctlr_nmbr",
                caption      : "ID",
                alignment    : "center",
                sortIndex    : 1, 
                sortOrder    : "asc",
            },
            
            {
                dataField    : "rse_ctlr_id",
                caption      : "제어기 ID",
                alignment    : "center",
                cellTemplate(c,e){
                    c.css('text-align','left');
                    c.text(e.displayValue)
                }
            },
            {
                dataField    : "istl_lctn_nm",
                caption      : "명칭",
                alignment    : "center",
            },
            {
                dataField    : "stat_dt",
                caption      : "통계 일시",
                alignment    : "center",
                sortIndex    : 2, 
                sortOrder    : "asc",
            },
            {
                dataField    : "day_type_desc",
                caption      : "요일 유형",
                alignment    : "center",
            },
            {
                dataField    : "clct_num",
                caption      : "수집개수",
                alignment    : "center",
            },
        ],
        onExporting(e){
            gridExcellExporting(e, _pageName);
        },
    }).dxDataGrid('instance');
})

 //구간별 데이터 세팅
 function hsEvent() {
     let TO_DT        = null;
     let FROM_DT      = null;
     let id           = "";
     const selectData = sttsListTable.getSelectedRowsData();
     let updateData = {};
     switch (true) {

         case selectData <= 0 :
            alertWarning( pageMsg + '가 선택 되지 않았습니다.<br>' + pageMsg + ' 목록에서 ' + pageMsg + '를 선택해주세요');
            return false;

         case !validationCheck( sttsStartDate, sttsEndDate, sttsStartTime, sttsEndTime ) :
            return false;

         case getDate( sttsStartDate.option('value'), sttsStartTime.option('value') ) > getDate( sttsEndDate.option('value'), sttsEndTime.option('value') ):
            sttsStartDate.focus();
            alertWarning('검색 시작 시각이 검색 종료 시각보다 큽니다.', null, sttsStartDate);
            return false;

         default:

            FROM_DT = getDate( sttsStartDate.option('value'), sttsStartTime.option('value') );
            TO_DT = getDate( sttsEndDate.option('value'), sttsEndTime.option('value') );
            for( idx in selectData){
                id += selectData[idx].rse_ctlr_nmbr + ",";
            }
            break;
     }
    
    updateData[ 'FROM_DT' ] = FROM_DT;
    updateData[ 'TO_DT' ]   = TO_DT;
    updateData[ 'id' ]      = id.slice(0,-1);

    sttsData = [];
    getDataAsync( commonUri + dayTypeCd.getValue(), (jsonData)=>{
        sttsData = jsonData;
        if ( sttsData.length > 0) {
            sttsData.map((item)=>{
                if(nullChecker(item.stat_dt) !== ""){
                    item.stat_dt = getParseDateTime(item.stat_dt)
                }
           });
        }

        sttsTable.option( 'dataSource', sttsData );
        selResultMsg(sttsData);
    }, null, updateData );
    
 }
