"use-strict"
//시설물 종류 코드
const _code = "FMITS";

let strtDt;
let endDt;
let fcltType;

//상단 버튼 및 리스트
let closeBtn;
let _listTable;
let searchBtn;

$(()=>{

    //좌측 상단 시설물 종류
    fcltType = new dxSelect($('.fclt_type'), 'outlined', 150, 30, 'cmmn_cd_kor_nm', 'cmmn_cd', false, 'fclt_type', '시설물 종류');
    
    //우측 상단 닫기 버튼
    closeBtn   = new dxBtn($('.close-btn'), '닫기', 'close', 'outlined', null, null, false, true);
    searchBtn  = new dxBtn($('.search-btn'), '조회', 'refresh', 'outlined', null, null, false, true);
    closeBtn.onClick(()=>window.close());
    searchBtn.onClick(searchBtnClick);
    
    strtDt = new dxDate($('.strt-dt'), 'yyyy-MM-dd', '검색 조건 시작일', 160, 30, 'date', null, 'fromDt', null);
    strtDt.setValue(getBefAftDay(-7));
    endDt = new dxDate($('.end-dt'), 'yyyy-MM-dd', '검색 조건 종료일', 160, 30, 'date', null, 'toDt', null);
    endDt.setValue(getBefAftDay(0));
   
    //시설물 리스트 테이블
    _listTable = $('.grid').width('100%').height('100%').dxDataGrid({
        dataSource : [],
        allowColumnReordering   : true,
        showColumnLines         : true,
        showBorders             : true,
        allowColumnResizing     : true,
        rowAlternationEnabled   : true,
        columnAutoWidth         : true,
        focusedRowEnabled       : true,
        idDataText              : '표출할 정보가 없습니다.',
        headerFilter: {
            visible: true,
        },
        selection  : {
            mode :'single'
        },
        keyExpr : 'fail_no',
        paging: {
            enabled: false,
            pageSize: 1000,
        },
        scrolling: {
            mode: 'standard',
        },
        columns:[
            {
                dataField    : "fail_no",
                caption      : "장애 관리 번호",
                alignment    : "center",
            },
            {
                dataField    : "fclt_group",
                caption      : "대분류",
                alignment    : "center",
                cellTemplate(c, e){
                    alignTemplate(c, e, 'left');
                }
            },
            {
                dataField    : "serve_cd",
                caption      : "군분류",
                alignment    : "center",
                cellTemplate(c, e){
                    alignTemplate(c, e, 'left');
                }
            },
            {
                dataField    : "fclt_lctn",
                caption      : "시설물 위치",
                alignment    : "center",
                cellTemplate(c, e){
                    alignTemplate(c, e, 'left');
                }
            },
            {
                dataField    : "subj_nmbr",
                caption      : "품목명",
                alignment    : "center",
                lookup : {
                    dataSource  : [],
                    displayExpr : 'subj_nm',
                    valueExpr   : 'subj_nmbr',
                },
                cellTemplate(c, e){
                    alignTemplate(c, e, 'left');
                }
            },
            {   
                dataField   : "step_cd",
                caption     : "진행상태",
                alignment   : "center",
                lookup : {
                    dataSource  : [],
                    displayExpr : 'name',
                    valueExpr   : 'step_cd',
                },
                cellTemplate(c, e){
                    alignTemplate(c, e, 'left');
                }
            },
            {
                dataField   : "fail_reg_desc",
                caption     : "장애등록 구분",
                alignment   : "center",
                cellTemplate(c, e){
                    alignTemplate(c, e, 'left');
                }
            },
            {
                dataField   : "fail_ocrr_desc",
                caption     : "장애발생 구분",
                alignment   : "center",
                cellTemplate(c, e){
                    alignTemplate(c, e, 'left');
                }
            },
            {
                dataField   : "fail_levl_desc",
                caption     : "장애등급",
                alignment   : "center",
                cellTemplate(c, e){
                    alignTemplate(c, e, 'left');
                }
            },
            {
                dataField    : "str_dt",
                caption      : "장애발생일시",
                alignment    : "center",
                dataType     : 'datetime',
                format       : 'yyyy-MM-dd HH:mm:ss',
            },
            {
                dataField    : "end_dt",
                caption      : "장애종료일시",
                alignment    : "center",
                dataType     : 'datetime',
                format       : 'yyyy-MM-dd HH:mm:ss',
            },
            {
                dataField    : "fail_nm",
                caption      : "장애명",
                alignment    : "center",
                cellTemplate(c, e){
                    alignTemplate(c, e, 'left');
                }
            },
            {
                dataField    : "fail_desc",
                caption      : "장애 내용",
                alignment    : "center",
                cellTemplate(c, e){
                    alignTemplate(c, e, 'left');
                }
            },
            {
                dataField    : "bef_act_desc",
                caption      : "선조치 내용",
                alignment    : "center",
                cellTemplate(c, e){
                    alignTemplate(c, e, 'left');
                }
            },
            {
                dataField    : "reg_dt",
                caption      : "등록일시",
                alignment    : "center",
                dataType     : 'datetime',
                format       : 'yyyy-MM-dd HH:mm:ss',
            },
            {   
                dataField   : "wthr_desc",
                caption     : "날씨",
                alignment   : "center",
            },
            {   
                dataField   : "etc_rmk",
                caption     : "기타비고",
                alignment   : "center",
            },
        ],
        onRowClick(e){
            regListTableClick(e, setInputValue)
        },
    }).dxDataGrid("instance");
    
    fetchBaseData();
})

/**
 * 초기 수신 데이터(시설물 유형);
 */
function fetchBaseData(){
    getDataAsync('/api/database/code/cmmn-cd/'+ _code, recvTypeData);
}

/**
 * 시설물 유형 데이터 세팅 및 장애 내역 리스트 데이터 호출
 * @param {*} jsonData Api 시설물 유형 호출 데이터
 */
function recvTypeData(jsonData){
    fcltType.setDataSource(jsonData);
    if (jsonData.length > 0) {
        const value = jsonData[0][fcltType.valueExpr];
        fcltType.setValue(value);
        fetchListData(value, strtDt.getSendDateValue().substring(0,8), endDt.getSendDateValue().substring(0,8));
    }
}

/**
 * TODO 시설물 유형에 따른 장애 내역 Api 필요
 * @param {*} type 시설물 유형
 * @param {*} fromDt 시작일
 * @param {*} toDt 종료일
 */
function fetchListData(type, fromDt, toDt){
    console.log('시설물 유형',type, '검색 시작일',fromDt, '검색 종료일',toDt)
    //getDataAsync('/api/facility/stts-error/list/' + type + '/' + fromDt + '/' + toDt, recvListData);
}

function recvListData(jsonData, table){
    table.option('dataSource', jsonData);
    table.clearSelection();
    table.option('focusedRowIndex', -1);
}

function searchBtnClick(){
    const dateArr = [strtDt, endDt];
    if (fcltType.isNull()) return alertWarning('값을 입력해주세요. [' + fcltType.label + ']', null, fcltType);
    
    for (let date of dateArr) {
        const label = '['+date.label+']'
        if (date.isNull()){
            return alertWarning('값을 입력해주세요. ' + label, null, date);
        }
        else if (date.isValidation()) {
            return alertWarning('형식에 맞게 입력해주세요. ' + label, null, date);
        }
    }

    const type   = fcltType.getValue();
    const fromDt = strtDt.getSendDateValue().substring(0,8);
    const toDt   = endDt.getSendDateValue().substring(0,8);
    if (fromDt > toDt) {
        return alertWarning( strtDt.label +'이 ' + endDt.label +' 보다 큽니다.', null, endDt);
    }
    fetchListData(type, fromDt, toDt);
}