BemsWebApplication.ConfigData = function (params, viewInfo) {
    "use strict";

    var BemsConfigDataDataSource = BemsWebApplication.db.createDataSource('BemsConfigData'),
        isEmptyData = true;
    var viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'BemsConfigData', {

        dataSourceOptions: {
            select: [
                'SiteId',
                'LoadDBIP',
                'LoadDBName ',
                'TargetDBIP',
                'TargetDBName'
            ],
            filter: [
                ['SiteId', '=', BWA.UserInfo.SiteId()]
            ],

            extendOptions: {
                forceOriginalField: true
            },
        },
        columns: [
            { dataField: 'SiteId', caption: '번호', width: '8%', alignment: 'center', sortOder: 'desc' },
            { dataField: 'LoadDBIP', caption: '데이터 로드 DB IP', width: '23%', alignment: 'center' },
            { dataField: 'LoadDBName', caption: '데이터 로드 DB명', width: '23%', alignment: 'center' },
            { dataField: 'TargetDBIP', caption: '결과 저장 DB IP', width: '23%', alignment: 'center' },
            { dataField: 'TargetDBName', caption: '결과 저장 DB명', width: '23%', alignment: 'center' }
        ],
        popupWidth: 500,

        NoSearchView: true,     // 2019.07.25 kgpark 검색버튼 삭제

        handleViewShowing: function () {
            BemsConfigDataDataSource.filter([
                ["SiteId", "=", BWA.UserInfo.SiteId()]
            ]);
            BemsConfigDataDataSource.load().done(function (BemsConfigData) {
                if (BemsConfigData.length == 0) {
                    isEmptyData = true;
                    $("#popupInsertButton").dxCommand("instance").option('disabled', false);
                }
                else {
                    isEmptyData = false;
                    $("#popupInsertButton").dxCommand("instance").option('disabled', true);
                }
            });
        },
        handleBeforeDelete: function () {
            isEmptyData = true;
            $("#popupInsertButton").dxCommand("instance").option('disabled', false);
        },

        // 열을 클릭했을 때 실행되는 함수
        handleDataGridRowClick: function () {
            viewModel.popupVisible(true);
        },

        // 팝업 항목에 데이터가 정상적으로 입력되지 않을 경우 예외처리
        beforeInsertingDataViewModel: function (dataModel, dbModelId) {
            var dfd = $.Deferred();

            if (dataModel.LoadDBIP() == null || dataModel.TargetDBIP() == null) {
                return dfd.resolve(false, '필수 항목이 입력되지 않았습니다!');
            }
            else {
                isEmptyData = ko.observable(false);
                $("#popupInsertButton").dxCommand("instance").option('disabled', true);
                return dfd.resolve(true);
            }
        },

        beforeUpdateDataViewModel: function (dataModel) {

            // if (_.isEmpty(dataModel.LoadDBIP()) || _.isEmpty(dataModel.TargetDBIP()) || _.isEmpty(dataModel.InitialDate())) {
            if (dataModel.LoadDBIP() == null || dataModel.TargetDBIP() == null) {
                utils.toast.show('필수 항목이 입력되지 않았습니다.', 'error');
                return 0;
            }
            else {
                return 2; // 2016 01 19 BaseClass 에서 update한다.
            }
        },
        // 팝업 항목에 데이터가 정상적으로 들어가지 않을 경우 예외처리

    });
    function InsertButtonClickAction() {
        if (!isEmptyData) {
            utils.toast.show('관리자 계정은 하나만 생성할 수 있습니다.', 'error');
        }
        else {
            viewModel.popupInsertView();
        }
    }
    viewModel.popupInsertButtonOptions = {
        icon: 'add',
        id: 'create',
        title: '등록',
        action: InsertButtonClickAction,
        disabled: !isEmptyData
    };

    return viewModel;
};