BemsWebApplication.PlanConsumePrediction = function (params, viewInfo) {
    'use strict';
    var endpointSelector = "";
    if (BemsWebApplication.config.mode == "production") {
        endpointSelector = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints).config.db.production;
    } else {
        endpointSelector = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints).config.db.local;
    }
    ////// 전역 변수 설정 부
    var m3calValue;
    var applyonoff = false;
    var visiblePopup = ko.observable(false);
    var dailyvisiblePopup = ko.observable(false);
    var monthvisiblePopup = ko.observable(false);
    var pastvisiblePopup = ko.observable(false);
    var TodayAdd = new Date();
    var DailyData = [{ daily: "일" }, { daily: "월" }, { daily: "화" }, { daily: "수" }, { daily: "목" }, { daily: "금" }, { daily: "토" }, { daily: "합계" }];
    var DailyDataID = [{ id: 1, daily: "일" }, { id: 2, daily: "월" }, { id: 3, daily: "화" }, { id: 4, daily: "수" }, { id: 5, daily: "목" }, { id: 6, daily: "금" }, { id: 7, daily: "토" }];
    var MonthDataID = [{ id: 1, month: "1월" }, { id: 2, month: "2월" }, { id: 3, month: "3월" }, { id: 4, month: "4월" }, { id: 5, month: "5월" }, { id: 6, month: "6월" }, { id: 7, month: "7월" }, { id: 8, month: "8월" }, { id: 9, month: "9월" }, { id: 10, month: "10월" }, { id: 11, month: "11월" }, { id: 12, month: "12월" }];

    var FuelTypeArray = [{ FuelTypeId: 1, FacilityTypeId: 100, FormulaId: 1 }, { FuelTypeId: 2, FacilityTypeId: 101, FormulaId: 1 }, { FuelTypeId: 3, FacilityTypeId: 102, FormulaId: 1 }]
    var SiteId = BWA.UserInfo.SiteId();
    var temppaststart;
    var temppastend;
    var YearDayCnt;
    var resultarray;
    ////// 전역 변수 설정 부

    function GetGridData() {
        var gridData = new Array();
        var temp_search_day = $("#Search_Day").dxDateBox("instance").option('value');

        var GridSource = new DevExpress.data.DataSource({
            store: {
                type: "odata",
                url: endpointSelector + "/BemsEnergyDaily"
            },
            requireTotalCount: true,
            pageSize: 1100
        });

        GridSource.filter([
                ["SiteId", "=", SiteId], //사이트 아이디
                "and",
                ["ServiceTypeId", "=", 1], //사이트 아이디
                "and",
                ["CreatedDate", ">=", new Date(temp_search_day.getFullYear(), 0, 1, 0, 0, 0)],
                "and",
                ["CreatedDate", "<=", new Date(temp_search_day.getFullYear(), 11, 31, 23, 59, 59)]
        ]);
        GridSource.sort({ getter: "CreatedDate", desc: true }, { getter: "FuelTypeId", ASC: true });
        GridSource.load()
        .done(function (result) {
            if (result.length != 0) {
                var setData = {
                    "DateTime": null,
                    "week": null,
                    "PowerValue": null,
                    "GasValue": null,
                    "WaterValue": null
                };
                for (var i = 0; i < result.length; i++) {
                    if (result[i].FuelTypeId == 1) {
                        var tempday = DailyData[result[i].CreatedDate.getDay()].daily;
                        setData.week = tempday;
                        setData.DateTime = result[i].CreatedDate;
                        if (result[i].Prediction == null)
                            setData.PowerValue = 0;
                        else
                            setData.PowerValue = numberup(result[i].Prediction);
                    }
                    else if (result[i].FuelTypeId == 2) {
                        if (result[i].Prediction == null)
                            setData.GasValue = 0;
                        else
                            setData.GasValue = numberup(result[i].Prediction / m3calValue);
                    }
                    else {
                        if (result[i].Prediction == null)
                            setData.WaterValue = 0;
                        else
                            setData.WaterValue = numberup(result[i].Prediction);
                    }
                    if (setData.PowerValue != null && setData.GasValue != null && setData.WaterValue != null) {
                        gridData.push(setData);
                        setData = {
                            "DateTime": null,
                            "week": null,
                            "PowerValue": null,
                            "GasValue": null,
                            "WaterValue": null
                        };
                    }
                }
                $("#dataGrid").dxDataGrid("instance").option('dataSource', gridData);
                var dg = $("#dataGrid").dxDataGrid("instance");
                dg.refresh();
            }
            else {
                for (var i = 1; i < 13; i++) {
                    var lastDay = (new Date(temp_search_day.getFullYear(), i, 0)).getDate();
                    for (var j = 1; j <= lastDay; j++) {
                        var setData = {
                            "DateTime": new Date(temp_search_day.getFullYear(), i - 1, j, 0, 0, 0),
                            "PowerValue": 0,
                            "GasValue": 0,
                            "WaterValue": 0
                        };
                        gridData.push(setData);
                    }
                }
                $("#dataGrid").dxDataGrid("instance").option('dataSource', gridData);
                var dg = $("#dataGrid").dxDataGrid("instance");
                dg.refresh();
            }
        })
        .fail(function (error) {
            utils.toast.show(error);
        });
    }

    function MonthGetGridData() {
        var MonthgridData = new Array();
        $("#Search_Day_Month").dxSelectBox("instance").option('value', "");
        $("#Power_Month_txt").dxTextBox("instance").option('value', "");
        $("#Gas_Month_txt").dxTextBox("instance").option('value', "");
        $("#Water_Month_txt").dxTextBox("instance").option('value', "");

        var Month_Day = $("#Search_Month_Day").dxDateBox("instance").option('value');
        var MonthGridSource = new DevExpress.data.DataSource({
            store: {
                type: "odata",
                url: endpointSelector + "/BemsEnergyConfigPercentMonth"
            },
            requireTotalCount: true,
            pageSize: 12
        });

        MonthGridSource.filter([
                ["SiteId", "=", SiteId], //사이트 아이디
                "and",
                ["Year", "=", Month_Day.getFullYear()]
        ]);
        MonthGridSource.sort({ getter: "Month", asc: true });
        MonthGridSource.load()
        .done(function (result) {
            if (result.length != 0) {
                var tempower = 0, tempgas = 0, tempwater = 0;
                for (var i = 0; i < result.length; i++) {
                    tempower += result[i].Electricity;
                    tempgas += result[i].Gas;
                    tempwater += result[i].Water;
                    var MonthsetData =
                        {
                            "MonthDateTime": (i + 1),
                            "PowerMonthValue": result[i].Electricity,
                            "GasMonthValue": result[i].Gas,
                            "WaterMonthValue": result[i].Water
                        };
                    MonthgridData.push(MonthsetData);
                }
                var MonthsetData =
                       {
                           "MonthDateTime": "합계",
                           "PowerMonthValue": parseFloat(tempower.toFixed(2)),
                           "GasMonthValue": parseFloat(tempgas.toFixed(2)),
                           "WaterMonthValue": parseFloat(tempwater.toFixed(2))
                       };
                MonthgridData.push(MonthsetData);
                $("#MonthdataGrid").dxDataGrid("instance").option('dataSource', MonthgridData);
                var dg = $("#MonthdataGrid").dxDataGrid("instance");
                dg.refresh();
            }
            else {
                for (var i = 0; i < 12; i++) {
                    var MonthsetData =
                        {
                            "MonthDateTime": (i + 1),
                            "PowerMonthValue": 0,
                            "GasMonthValue": 0,
                            "WaterMonthValue": 0
                        };
                    MonthgridData.push(MonthsetData);
                }
                var MonthsetData =
                      {
                          "MonthDateTime": "합계",
                          "PowerMonthValue": 0,
                          "GasMonthValue": 0,
                          "WaterMonthValue": 0
                      };
                MonthgridData.push(MonthsetData);
                $("#MonthdataGrid").dxDataGrid("instance").option('dataSource', MonthgridData);
                var dg = $("#MonthdataGrid").dxDataGrid("instance");
                dg.refresh();
            }
        })
        .fail(function (error) {
            utils.toast.show(error);
        });
    }
    function numberup(num) {
        return Math.round(num * 100) / 100.0;
    }
    function DailyGetGridData() {
        var DailygridData = new Array();
        $("#Search_Day_Daily").dxSelectBox("instance").option('value', "");
        $("#Power_Daily_txt").dxTextBox("instance").option('value', "");
        $("#Gas_Daily_txt").dxTextBox("instance").option('value', "");
        $("#Water_Daily_txt").dxTextBox("instance").option('value', "");

        var Daily_Day = $("#Search_Daily_Day").dxDateBox("instance").option('value');
        var DailyGridSource = new DevExpress.data.DataSource({
            store: {
                type: "odata",
                url: endpointSelector + "/BemsEnergyConfigPercentWeek"
            },
            requireTotalCount: true,
            pageSize: 7
        });

        DailyGridSource.filter([
                ["SiteId", "=", SiteId], //사이트 아이디
                "and",
                ["Year", "=", Daily_Day.getFullYear()]
        ]);
        DailyGridSource.sort({ getter: "Week", asc: true });
        DailyGridSource.load()
        .done(function (result) {
            if (result.length != 0) {
                var tempower = 0, tempgas = 0, tempwater = 0;
                for (var i = 0; i < result.length; i++) {
                    tempower += result[i].Electricity;
                    tempgas += result[i].Gas;
                    tempwater += result[i].Water;
                    var DailysetData =
                        {
                            "DailyDateTime": DailyData[i].daily,
                            "PowerDailyValue": result[i].Electricity,
                            "GasDailyValue": result[i].Gas,
                            "WaterDailyValue": result[i].Water
                        };
                    DailygridData.push(DailysetData);
                }
                var DailysetData =
                       {
                           "DailyDateTime": "합계",
                           "PowerDailyValue": parseFloat(tempower.toFixed(2)),
                           "GasDailyValue": parseFloat(tempgas.toFixed(2)),
                           "WaterDailyValue": parseFloat(tempwater.toFixed(2))
                       };
                DailygridData.push(DailysetData);
                $("#DailydataGrid").dxDataGrid("instance").option('dataSource', DailygridData);
                var dg = $("#DailydataGrid").dxDataGrid("instance");
                dg.refresh();
            }
            else {
                for (var i = 0; i < 7; i++) {
                    var DailysetData =
                        {
                            "DailyDateTime": DailyData[i].daily, "PowerDailyValue": 0, "GasDailyValue": 0, "WaterDailyValue": 0
                        };
                    DailygridData.push(DailysetData);
                }
                var DailysetData =
                      {
                          "DailyDateTime": "합계", "PowerDailyValue": 0, "GasDailyValue": 0, "WaterDailyValue": 0
                      };
                DailygridData.push(DailysetData);
                $("#DailydataGrid").dxDataGrid("instance").option('dataSource', DailygridData);
                var dg = $("#DailydataGrid").dxDataGrid("instance");
            }
        })
        .fail(function (error) {
            utils.toast.show(error);
        });
    }

    function handleViewShowing() {
        var getTOEDataSource = new DevExpress.data.DataSource({
            store: {
                type: "odata",
                url: endpointSelector + "/BemsFactorToe"
            },
            requireTotalCount: true,
            pageSize: 3
        });
        getTOEDataSource.load()
        .done(function (Result) {
            var powertoe, gastoe;
            if (Result.length != 0) {
                for (var i = 0; i < Result.length; i++) {
                    if (Result[i].FuelTypeId == 1) {
                        powertoe = Result[i].TotalFactor;
                    }
                    if (Result[i].FuelTypeId == 2) {
                        gastoe = Result[i].TotalFactor;
                    }
                }
                if (powertoe != null && gastoe != null)
                    m3calValue = gastoe / powertoe;
            }
            else {
                utils.toast.show("[BemsFactorToe] 데이터가 없습니다.");
            }
        })
        .fail(function (error) {
            utils.toast.show("[BemsFactorToe] 데이터를 불러오는데 실패 하였습니다.");
        });
    }

    function handleViewShown() {
        $("#Search_Day").dxDateBox({
            value: TodayAdd,
            maxZoomLevel: 'decade',
            formatString: "yyyy년",
            onValueChanged: function () {
                GetGridData();
            }
        });
        $("#Prediction_Btn").dxButton({
            text: "사용량 예측 설정",
            onClick: function () {
                $("#Past_Btn").dxButton({
                    text: "조회",
                    onClick: function () {
                        applyonoff = false;
                        pastvisiblePopup(true);
                    }
                });
                $("#Month_Btn").dxButton({
                    text: "설정",
                    onClick: function () {
                        monthvisiblePopup(true);
                    }
                });
                $("#Day_Btn").dxButton({
                    text: "설정",
                    onClick: function () {
                        dailyvisiblePopup(true);
                    }
                });
                visiblePopup(true);
            }
        });
        $("#dataGrid").dxDataGrid({
            paging: {
                pageSize: 16
            }
        });
        GetGridData();
    }

    var searchViewOptions = {

    }
    function handleSearchInSearchView() {

    }
    function Get_Energy_Data(fueltypeid) {
        if (fueltypeid == 1) {
            var metaDataSource = new DevExpress.data.DataSource({
                store: {
                    type: "odata",
                    url: endpointSelector + "/BemsFormulaParameter"
                },
                map: function (itemData) {
                    return {
                        SiteId: itemData.SiteId,
                        FacilityTypeId: itemData.FacilityTypeId,
                        FormulaId: itemData.FormulaId,
                        ParameterFacilityCode: itemData.ParameterFacilityCode,
                        ParameterPropertyId: itemData.ParameterPropertyId
                    }
                },
                requireTotalCount: true,
                pageSize: 20
            });
            metaDataSource.filter([
                    ["SiteId", "=", SiteId],
                    "and",
                    ["FacilityTypeId", "=", FuelTypeArray[0].FacilityTypeId],
                    "and",
                    ["FormulaId", "=", FuelTypeArray[0].FormulaId]
            ]);
            metaDataSource.sort({ getter: "ParameterPropertyId", asc: true });
            metaDataSource.load()
            .done(function (metaResult) {
                var power = 0, total_cnt = 0, cnt = 0;
                if (metaResult.length != 0) {
                    for (var j = 0; j < metaResult.length; j++) {
                        var FuelDataSource = new DevExpress.data.DataSource({
                            store: {
                                type: "odata",
                                url: endpointSelector + "/BemsMonitoringPointHistoryDaily"
                            },
                            requireTotalCount: true,
                            pageSize: 366
                        });
                        FuelDataSource.filter([
                            ["SiteId", "=", SiteId],
                            "and",
                            ["FacilityCode", "=", metaResult[j].ParameterFacilityCode],
                            "and",
                            ["PropertyId", "=", metaResult[j].ParameterPropertyId],
                            "and",
                            ["CreatedDateTime", ">=", new Date(temppaststart.getFullYear(), temppaststart.getMonth(), temppaststart.getDate(), 0, 0, 0)],
                            "and",
                            ["CreatedDateTime", "<=", new Date(temppastend.getFullYear(), temppastend.getMonth(), temppastend.getDate(), 23, 59, 59)]
                        ]);
                        FuelDataSource.sort({ getter: "CreatedDateTime", asc: true });
                        FuelDataSource.load()
                        .done(function (result) {
                            total_cnt += result.length;
                            for (var k in result) {
                                power += result[k].DailyValue;
                                cnt++
                            }
                            if (total_cnt == cnt && total_cnt != 0)
                                $("#Power_txt").dxTextBox("instance").option('value', power.toFixed(0));
                        })
                        .fail(function (error) {
                            utils.toast.show("전력사용량 데이터를 불러오는데 실패 하였습니다.");
                        });
                    }
                }
                else {
                    utils.toast.show("전력사용량 데이터가 없습니다.");
                }
            })
        .fail(function (error) {
            utils.toast.show("메타 데이터를 불러오는데 실패 하였습니다.");
        });
        }
        else if (fueltypeid == 2) {
            var metaDataSource = new DevExpress.data.DataSource({
                store: {
                    type: "odata",
                    url: endpointSelector + "/BemsFormulaParameter"
                },
                map: function (itemData) {
                    return {
                        SiteId: itemData.SiteId,
                        FacilityTypeId: itemData.FacilityTypeId,
                        FormulaId: itemData.FormulaId,
                        ParameterFacilityCode: itemData.ParameterFacilityCode,
                        ParameterPropertyId: itemData.ParameterPropertyId
                    }
                },
                requireTotalCount: true,
                pageSize: 20
            });
            metaDataSource.filter([
                    ["SiteId", "=", SiteId],
                    "and",
                    ["FacilityTypeId", "=", FuelTypeArray[1].FacilityTypeId],
                    "and",
                    ["FormulaId", "=", FuelTypeArray[1].FormulaId]
            ]);
            metaDataSource.sort({ getter: "ParameterPropertyId", asc: true });
            metaDataSource.load()
            .done(function (metaResult) {
                var gas = 0, total_cnt = 0, cnt = 0;
                if (metaResult.length != 0) {
                    for (var j = 0; j < metaResult.length; j++) {
                        var FuelDataSource = new DevExpress.data.DataSource({
                            store: {
                                type: "odata",
                                url: endpointSelector + "/BemsMonitoringPointHistoryDaily"
                            },
                            requireTotalCount: true,
                            pageSize: 366
                        });
                        FuelDataSource.filter([
                            ["SiteId", "=", SiteId],
                            "and",
                            ["FacilityCode", "=", metaResult[j].ParameterFacilityCode],
                            "and",
                            ["PropertyId", "=", metaResult[j].ParameterPropertyId],
                            "and",
                            ["CreatedDateTime", ">=", new Date(temppaststart.getFullYear(), temppaststart.getMonth(), temppaststart.getDate(), 0, 0, 0)],
                            "and",
                            ["CreatedDateTime", "<=", new Date(temppastend.getFullYear(), temppastend.getMonth(), temppastend.getDate(), 23, 59, 59)]
                        ]);
                        FuelDataSource.sort({ getter: "CreatedDateTime", asc: true });
                        FuelDataSource.load()
                        .done(function (result) {
                            total_cnt += result.length;
                            for (var k in result) {
                                gas += result[k].DailyValue;
                                cnt++
                            }
                            if (total_cnt == cnt && total_cnt != 0)
                                $("#Gas_txt").dxTextBox("instance").option('value', gas.toFixed(0));
                        })
                        .fail(function (error) {
                            utils.toast.show("가스사용량 데이터를 불러오는데 실패 하였습니다.");
                        });
                    }
                }
                else {
                    utils.toast.show("가스사용량 데이터가 없습니다.");
                }
            })
        .fail(function (error) {
            utils.toast.show("메타 데이터를 불러오는데 실패 하였습니다.");
        });
        }
        else {
            var metaDataSource = new DevExpress.data.DataSource({
                store: {
                    type: "odata",
                    url: endpointSelector + "/BemsFormulaParameter"
                },
                map: function (itemData) {
                    return {
                        SiteId: itemData.SiteId,
                        FacilityTypeId: itemData.FacilityTypeId,
                        FormulaId: itemData.FormulaId,
                        ParameterFacilityCode: itemData.ParameterFacilityCode,
                        ParameterPropertyId: itemData.ParameterPropertyId
                    }
                },
                requireTotalCount: true,
                pageSize: 20
            });
            metaDataSource.filter([
                    ["SiteId", "=", SiteId],
                    "and",
                    ["FacilityTypeId", "=", FuelTypeArray[2].FacilityTypeId],
                    "and",
                    ["FormulaId", "=", FuelTypeArray[2].FormulaId]
            ]);
            metaDataSource.sort({ getter: "ParameterPropertyId", asc: true });
            metaDataSource.load()
            .done(function (metaResult) {
                var water = 0, total_cnt = 0, cnt = 0;
                if (metaResult.length != 0) {
                    for (var j = 0; j < metaResult.length; j++) {
                        var FuelDataSource = new DevExpress.data.DataSource({
                            store: {
                                type: "odata",
                                url: endpointSelector + "/BemsMonitoringPointHistoryDaily"
                            },
                            requireTotalCount: true,
                            pageSize: 366
                        });
                        FuelDataSource.filter([
                            ["SiteId", "=", SiteId],
                            "and",
                            ["FacilityCode", "=", metaResult[j].ParameterFacilityCode],
                            "and",
                            ["PropertyId", "=", metaResult[j].ParameterPropertyId],
                            "and",
                            ["CreatedDateTime", ">=", new Date(temppaststart.getFullYear(), temppaststart.getMonth(), temppaststart.getDate(), 0, 0, 0)],
                            "and",
                            ["CreatedDateTime", "<=", new Date(temppastend.getFullYear(), temppastend.getMonth(), temppastend.getDate(), 23, 59, 59)]
                        ]);
                        FuelDataSource.sort({ getter: "CreatedDateTime", asc: true });
                        FuelDataSource.load()
                        .done(function (result) {
                            total_cnt += result.length;
                            for (var k in result) {
                                water += result[k].DailyValue;
                                cnt++
                            }
                            if (total_cnt == cnt && total_cnt != 0)
                                $("#Water_txt").dxTextBox("instance").option('value', water.toFixed(0));
                        })
                        .fail(function (error) {
                            utils.toast.show("수도사용량 데이터를 불러오는데 실패 하였습니다.");
                        });
                    }
                }
                else {
                    utils.toast.show("수도사용량 데이터가 없습니다.");
                }
            })
        .fail(function (error) {
            utils.toast.show("메타 데이터를 불러오는데 실패 하였습니다.");
        });
        }
    }
    function numberWithCommas(x) {
        return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    }
    var viewModel = $.extend(BWA.CommonView.create(params, viewInfo, searchViewOptions, ko.observable(null), handleViewShown, null, handleSearchInSearchView),
    {
        viewShowing: handleViewShowing,
        dataGrid: utils.datagrid.defaultOptions({
            width: 1200,
            height: 610,
            columns: [
                {
                    dataField: 'DateTime',
                    width: '20%',
                    caption: "날짜",
                    alignment: 'center',
                    dataType: 'date',
                    format: 'yyyy-MM-dd',
                    sortOrder: 'asc',
                },
                {
                    dataField: 'week',
                    width: '5%',
                    caption: "요일",
                    alignment: 'center'
                },
                {
                    dataField: 'PowerValue',
                    width: '25%',
                    caption: "전기(kWh)",
                    alignment: 'center',
                    format: {
                        type: "fixedPoint",
                        precision: 2
                    },
                },
                {
                    dataField: 'GasValue',
                    width: '25%',
                    caption: "가스(m3)",
                    alignment: 'center',
                    format: {
                        type: "fixedPoint",
                        precision: 2
                    },
                },
                {
                    dataField: 'WaterValue',
                    width: '25%',
                    caption: "수도(m3)",
                    alignment: 'center',
                    format: {
                        type: "fixedPoint",
                        precision: 2
                    },
                }
            ]
        }),
        MonthdataGrid: utils.datagrid.defaultOptions({
            width: 640,
            height: 445,
            columns: [
                {
                    dataField: 'MonthDateTime',
                    width: '25%',
                    caption: "월",
                    alignment: 'center',
                },
                {
                    dataField: 'PowerMonthValue',
                    width: '25%',
                    caption: "전기(%)",
                    alignment: 'center',
                    format: {
                        type: "fixedPoint",
                        precision: 2
                    },
                },
                {
                    dataField: 'GasMonthValue',
                    width: '25%',
                    caption: "가스(%)",
                    alignment: 'center',
                    format: {
                        type: "fixedPoint",
                        precision: 2
                    },
                },
                {
                    dataField: 'WaterMonthValue',
                    width: '25%',
                    caption: "수도(%)",
                    alignment: 'center',
                    format: {
                        type: "fixedPoint",
                        precision: 2
                    },
                }
            ],
            pager: {
                visible: false
            }
        }),
        DailydataGrid: utils.datagrid.defaultOptions({
            width: 640,
            height: 290,
            columns: [
                {
                    dataField: 'DailyDateTime',
                    width: '25%',
                    caption: "날짜",
                    alignment: 'center',
                },
                {
                    dataField: 'PowerDailyValue',
                    width: '25%',
                    caption: "전기(%)",
                    alignment: 'center',
                    format: {
                        type: "fixedPoint",
                        precision: 2
                    },
                },
                {
                    dataField: 'GasDailyValue',
                    width: '25%',
                    caption: "가스(%)",
                    alignment: 'center',
                    format: {
                        type: "fixedPoint",
                        precision: 2
                    },
                },
                {
                    dataField: 'WaterDailyValue',
                    width: '25%',
                    caption: "수도(%)",
                    alignment: 'center',
                    format: {
                        type: "fixedPoint",
                        precision: 2
                    },
                }
            ],
            pager: {
                visible: false
            }
        })
    });
    viewModel.popupOptions = {
        width: 500,
        height: 200,
        visible: visiblePopup,
        dragEnabled: true,
        shading: true,
        closeOnOutsideClick: true,
        shadingColor: 'transparent',
        showTitle: true,
        title: "항목 선택",
        showCloseButton: true,
        onShowing: function () {
        },
        onShown: function (t, tt) {
            $("#Past_Btn").dxButton({
                text: "조회",
                onClick: function () {
                    pastvisiblePopup(true);
                    $("#Power_txt").dxTextBox("instance").option('value', null);
                    $("#Gas_txt").dxTextBox("instance").option('value', null);
                    $("#Water_txt").dxTextBox("instance").option('value', null);
                    $("#Power_db_txt").dxTextBox("instance").option('value', null);
                    $("#Gas_db_txt").dxTextBox("instance").option('value', null);
                    $("#Water_db_txt").dxTextBox("instance").option('value', null);
                }
            });
            $("#Month_Btn").dxButton({
                text: "설정",
                onClick: function () {
                    monthvisiblePopup(true);
                }
            });
            $("#Day_Btn").dxButton({
                text: "설정",
                onClick: function () {
                    dailyvisiblePopup(true);
                }
            });
        },
        onHidden: function () {
        }
    };
    viewModel.pastpopupOptions = {
        width: 630,
        height: 280,
        visible: pastvisiblePopup,
        dragEnabled: true,
        shading: true,
        closeOnOutsideClick: true,
        shadingColor: 'transparent',
        showTitle: true,
        title: "과거 사용량 조회 및 일별 사용량 예측",
        showCloseButton: true,
        onShowing: function () {
        },
        onShown: function (t, tt) {
            $("#Search_Day_Past_Start").dxDateBox({
                value: new Date(TodayAdd.getFullYear(), 0, 1)
            });
            $("#Search_Day_Past_End").dxDateBox({
                value: TodayAdd
            });
            $("#Search_Past_Btn").dxButton({
                text: "조회",
                onClick: function () {
                    temppaststart = $("#Search_Day_Past_Start").dxDateBox("instance").option('value');
                    temppastend = $("#Search_Day_Past_End").dxDateBox("instance").option('value');
                    for (var i = 1; i < 4; i++)
                        Get_Energy_Data(i);
                }
            });
            $("#Power_txt").dxTextBox({
                placeholder: "전력합산",
            });
            $("#Gas_txt").dxTextBox({
                placeholder: "가스합산"
            });
            $("#Water_txt").dxTextBox({
                placeholder: "수도합산"
            });
            $("#Search_Day_Past_Year").dxDateBox({
                value: TodayAdd,
                maxZoomLevel: 'decade',
                formatString: "yyyy년",
                onValueChanged: function (data) {
                    var tempdate = data.value;
                    if (tempdate.getFullYear() > (TodayAdd.getFullYear() + 1)) {
                        utils.toast.show("선택 연도가 내년보다 클 수 없습니다.");
                        $("#Search_Day_Past_Year").dxDateBox("instance").option('value', TodayAdd);
                    }
                }
            });
            $("#Power_db_txt").dxTextBox({
                placeholder: "전력합산"
            });
            $("#Gas_db_txt").dxTextBox({
                placeholder: "가스합산"
            });
            $("#Water_db_txt").dxTextBox({
                placeholder: "수도합산"
            });
            $("#LoadPanel_save").dxLoadPanel({
                message: '저장 중...',
                showIndicator: true,
                visible: false
            });
            $("#Apply_Btn").dxButton({
                text: "적용",
                onClick: function () {
                    var temp_Day = $("#Search_Day_Past_Year").dxDateBox("instance").option('value');
                    YearDayCnt = ((((((new Date(temp_Day.getFullYear() + 1, 0, 1).getTime()) - (new Date(temp_Day.getFullYear(), 0, 1).getTime())) / 1000) / 60) / 60) / 24);
                    resultarray = new Array(YearDayCnt);
                    var temp_Power = $("#Power_db_txt").dxTextBox("instance").option('value');
                    var temp_Gas = $("#Gas_db_txt").dxTextBox("instance").option('value');
                    temp_Gas = temp_Gas * m3calValue;
                    var temp_Water = $("#Water_db_txt").dxTextBox("instance").option('value');

                    if (temp_Power == "") {
                        utils.toast.show("전력 입력 정보가 잘못되었습니다.");
                        return;
                    }
                    if (temp_Gas == "") {
                        utils.toast.show("가스 입력 정보가 잘못되었습니다.");
                        return;
                    }
                    if (temp_Water == "") {
                        utils.toast.show("수도 입력 정보가 잘못되었습니다.");
                        return;
                    }

                    var temp_monthrate_array = new Array(12);
                    var temp_monthdata_array = new Array(12);

                    for (var i = 0; i < 12; i++) {
                        temp_monthrate_array[i] = new Array(3);
                        temp_monthdata_array[i] = new Array(3);
                    }

                    var MonthGridSource = new DevExpress.data.DataSource({
                        store: {
                            type: "odata",
                            url: endpointSelector + "/BemsEnergyConfigPercentMonth"
                        },
                        requireTotalCount: true,
                        pageSize: 12
                    });
                    MonthGridSource.filter([
                            ["SiteId", "=", SiteId], //사이트 아이디
                            "and",
                            ["Year", "=", temp_Day.getFullYear()]
                    ]);
                    MonthGridSource.sort({ getter: "Month", asc: true });
                    MonthGridSource.load()
                    .done(function (result) {
                        if (result.length != 0) {
                            for (var k = 0; k < result.length; k++) {
                                temp_monthrate_array[k][0] = result[k].Electricity;
                                temp_monthrate_array[k][1] = result[k].Gas;
                                temp_monthrate_array[k][2] = result[k].Water;
                            }
                            for (var k = 0; k < result.length; k++) {
                                temp_monthdata_array[k][0] = parseFloat(temp_Power) * temp_monthrate_array[k][0] / 100;
                                temp_monthdata_array[k][1] = parseFloat(temp_Gas) * temp_monthrate_array[k][1] / 100;
                                temp_monthdata_array[k][2] = parseFloat(temp_Water) * temp_monthrate_array[k][2] / 100;
                            }
                            for (var k = 0; k < result.length; k++) {
                                temp_monthdata_array[k][0] = parseFloat(temp_monthdata_array[k][0].toFixed(2));
                                temp_monthdata_array[k][1] = parseFloat(temp_monthdata_array[k][1].toFixed(2));
                                temp_monthdata_array[k][2] = parseFloat(temp_monthdata_array[k][2].toFixed(2));
                            }

                            temp_Power = 0, temp_Gas = 0, temp_Water = 0;
                            for (var k = 0; k < result.length; k++) {
                                temp_Power += temp_monthdata_array[k][0];
                                temp_Gas += temp_monthdata_array[k][1];
                                temp_Water += temp_monthdata_array[k][2];
                            }

                            //$("#Power_db_txt").dxTextBox("instance").option('value', temp_Power);
                            //$("#Gas_db_txt").dxTextBox("instance").option('value', temp_Gas / m3calValue);
                            //$("#Water_db_txt").dxTextBox("instance").option('value', temp_Water);

                            var temp_dailyrate_array = new Array(7);
                            var temp_dailydata_array = new Array(7);

                            for (var i = 0; i < 7; i++) {
                                temp_dailyrate_array[i] = new Array(3);
                                temp_dailydata_array[i] = new Array(3);
                            }

                            var DailyGridSource = new DevExpress.data.DataSource({
                                store: {
                                    type: "odata",
                                    url: endpointSelector + "/BemsEnergyConfigPercentWeek"
                                },
                                requireTotalCount: true,
                                pageSize: 7
                            });

                            DailyGridSource.filter([
                                    ["SiteId", "=", SiteId], //사이트 아이디
                                    "and",
                                    ["Year", "=", temp_Day.getFullYear()]
                            ]);
                            DailyGridSource.sort({ getter: "Week", asc: true });
                            DailyGridSource.load()
                            .done(function (result) {
                                if (result.length != 0) {
                                    var tempweek = new Array(12);
                                    for (var i = 0; i < 12; i++) {
                                        tempweek[i] = new Array(7);
                                    }
                                    for (var i = 0; i < 12; i++) {
                                        for (var j = 0; j < 7; j++) {
                                            tempweek[i][j] = 0;
                                        }
                                    }

                                    for (var t = 0; t < result.length; t++) {
                                        temp_dailyrate_array[t][0] = result[t].Electricity;
                                        temp_dailyrate_array[t][1] = result[t].Gas;
                                        temp_dailyrate_array[t][2] = result[t].Water;
                                    }
                                    for (var t = 0; t < 12; t++) {
                                        var lastDay = (new Date(temp_Day.getFullYear(), t + 1, 0));
                                        for (var h = 1; h <= lastDay.getDate() ; h++) {
                                            var searchDay = (new Date(temp_Day.getFullYear(), t, h));
                                            switch (searchDay.getDay()) {
                                                case 0: tempweek[t][0]++; break;
                                                case 1: tempweek[t][1]++; break;
                                                case 2: tempweek[t][2]++; break;
                                                case 3: tempweek[t][3]++; break;
                                                case 4: tempweek[t][4]++; break;
                                                case 5: tempweek[t][5]++; break;
                                                case 6: tempweek[t][6]++; break;
                                            }
                                        }
                                    }
                                    for (var t = 0; t < result.length; t++) {
                                        temp_dailyrate_array[t][0] = parseFloat(temp_dailyrate_array[t][0].toFixed(2));
                                        temp_dailyrate_array[t][1] = parseFloat(temp_dailyrate_array[t][1].toFixed(2));
                                        temp_dailyrate_array[t][2] = parseFloat(temp_dailyrate_array[t][2].toFixed(2));
                                    }
                                    var totalPower = 0, totalGas = 0, totalWater = 0;
                                    var cnt = 0;
                                    for (i = 0; i < YearDayCnt; i++) {
                                        resultarray[i] = {
                                            "DateTime": null,
                                            "PowerValue": null,
                                            "GasValue": null,
                                            "WaterValue": null
                                        };
                                    }
                                    // 2019.04.22 로직 수정
                                    for (var i = 0; i < 12; i++) {
                                        var lastDay = (new Date(temp_Day.getFullYear(), i + 1, 0));
                                        var DailyRateTotal_power = 0;
                                        var DailyRateTotal_gas = 0;
                                        var DailyRateTotal_water = 0;
                                        for (var j = 1; j <= lastDay.getDate() ; j++) {
                                            var date = new Date(temp_Day.getFullYear(), i, j, 0, 0, 0);
                                            var day = date.getDay();
                                            DailyRateTotal_power += temp_dailyrate_array[day][0];
                                            DailyRateTotal_gas += temp_dailyrate_array[day][1];
                                            DailyRateTotal_water += temp_dailyrate_array[day][2];
                                        }
                                        for (var j = 1; j <= lastDay.getDate() ; j++) {
                                            var date = new Date(temp_Day.getFullYear(), i, j, 0, 0, 0);
                                            var month = date.getMonth();
                                            var day = date.getDay();
                                            var week = date.getDay();
                                            //var power = (temp_Power * (temp_monthrate_array[month][0] / 100) * (temp_dailyrate_array[day][0] / 100)) / tempweek[i][week];
                                            //var gas = (temp_Gas * (temp_monthrate_array[month][1] / 100) * (temp_dailyrate_array[day][1] / 100)) / tempweek[i][week];
                                            //var water = (temp_Water * (temp_monthrate_array[month][2] / 100) * (temp_dailyrate_array[day][2] / 100)) / tempweek[i][week];
                                            /******************************************************************************************************************************/
                                            var alpha_power = (temp_Power * (temp_monthrate_array[month][0] / 100)) / (DailyRateTotal_power / 100);
                                            var power = alpha_power * (temp_dailyrate_array[day][0] / 100);
                                            var alpha_gas = (temp_Gas * (temp_monthrate_array[month][1] / 100)) / (DailyRateTotal_gas / 100);
                                            var gas = alpha_gas * (temp_dailyrate_array[day][1] / 100);
                                            var alpha_water = (temp_Water * (temp_monthrate_array[month][2] / 100)) / (DailyRateTotal_water / 100);
                                            var water = alpha_water * (temp_dailyrate_array[day][2] / 100);
                                            /******************************************************************************************************************************/
                                    // 2019.04.22 로직 수정
                                            var temppower = numberup(power);
                                            var tempgas = numberup(gas);
                                            var tempwater = numberup(water);

                                            resultarray[cnt] = {
                                                "DateTime": date,
                                                "PowerValue": temppower,
                                                "GasValue": tempgas,
                                                "WaterValue": tempwater
                                            };
                                            totalPower += temppower;
                                            totalGas += tempgas;
                                            totalWater += tempwater;
                                            cnt++;
                                        }
                                    }
                                    $("#Power_db_txt").dxTextBox("instance").option('value', totalPower.toFixed(2));
                                    $("#Gas_db_txt").dxTextBox("instance").option('value', (totalGas / m3calValue).toFixed(2));
                                    $("#Water_db_txt").dxTextBox("instance").option('value', totalWater.toFixed(2));
                                    applyonoff = true;
                                    utils.toast.show("일별 사용량 예측이 적용 되었습니다.");
                                }
                                else {
                                    utils.toast.show("요일별 비율 데이터가 없습니다.");
                                    return;
                                }
                            })
                            .fail(function (error) {
                                utils.toast.show(error);
                            });
                        }
                        else {
                            utils.toast.show("월별 비율 데이터가 없습니다.");
                            return;
                        }
                    })
                    .fail(function (error) {
                        utils.toast.show(error);
                    });
                }
            });
            $("#Save_Btn").dxButton({
                text: "저장",
                onClick: function () {
                    if (applyonoff == false) {
                        utils.toast.show("적용 버튼을 먼저 눌러주시기 바랍니다.");
                        return;
                    }
                    $("#LoadPanel_save").dxLoadPanel('instance').option('visible', true);
                    var temp_Day = $("#Search_Day_Past_Year").dxDateBox("instance").option('value');

                    var GridSource = new DevExpress.data.DataSource({
                        store: {
                            type: "odata",
                            url: endpointSelector + "/BemsEnergyDaily"
                        },
                        requireTotalCount: true,
                        pageSize: 1100
                    });

                    GridSource.filter([
                            ["SiteId", "=", SiteId], //사이트 아이디
                            "and",
                            ["ServiceTypeId", "=", 1],
                            "and",
                            ["CreatedDate", ">=", new Date(temp_Day.getFullYear(), 0, 1, 0, 0, 0)],
                            "and",
                            ["CreatedDate", "<=", new Date(temp_Day.getFullYear(), 11, 31, 23, 59, 59)]
                    ]);
                    GridSource.sort({ getter: "CreatedDate", asc: true }, { getter: "FuelTypeId", ASC: true });
                    GridSource.load()
                    .done(function (result) {
                        if (result.length != 0) {
                            var savecnt = 0;
                            for (var i = 0; i < YearDayCnt; i++) {// 
                                var temp_date = new Date(resultarray[i].DateTime);
                                var temp_UTC = Date.UTC(temp_date.getFullYear(), temp_date.getMonth(), temp_date.getDate(), 0, 0, 0);
                                var temp_date_UTC = new Date(temp_UTC);
                                for (var j = 1; j <= 3; j++) {
                                    var temp_fuel = 0;
                                    var temp_value = 0;
                                    switch (j) {
                                        case 1: //전기
                                            temp_fuel = 1;
                                            temp_value = resultarray[i].PowerValue;
                                            break;
                                        case 2://가스
                                            temp_fuel = 2;
                                            temp_value = resultarray[i].GasValue;
                                            break;
                                        case 3: //수도
                                            temp_fuel = 3;
                                            temp_value = resultarray[i].WaterValue;
                                            break;
                                    }
                                    BWA.api.post('BemsEnergyDaily/UpdatePart', { //UpdatePart
                                        SiteId: SiteId,
                                        BuildingId: 1,
                                        ServiceTypeId: 1,
                                        FuelTypeId: temp_fuel,
                                        CreatedDate: temp_date_UTC,
                                        Prediction: temp_value.toFixed(2)
                                    }).done(function () {
                                        savecnt++;
                                        if (savecnt == YearDayCnt * 3) {
                                            utils.toast.show("DB에 저장이 되었습니다.");
                                            applyonoff = false;
                                            $("#LoadPanel_save").dxLoadPanel('instance').option('visible', false);
                                            GetGridData();
                                        }
                                    }).fail(function (error) {
                                        $("#LoadPanel_save").dxLoadPanel('instance').option('visible', false);
                                        utils.toast.show("DB에 저장이 실패하였습니다.");
                                    });
                                }
                            }
                        }
                        else {
                            var savecnt = 0;
                            for (var i = 0; i < YearDayCnt; i++) {//YearDayCnt
                                var temp_date = new Date(resultarray[i].DateTime);
                                var temp_UTC = Date.UTC(temp_date.getFullYear(), temp_date.getMonth(), temp_date.getDate(), 0, 0, 0);
                                var temp_date_UTC = new Date(temp_UTC);
                                for (var j = 1; j <= 3; j++) {
                                    var temp_fuel = 0;
                                    var temp_value = 0;
                                    switch (j) {
                                        case 1: //전기
                                            temp_fuel = 1;
                                            temp_value = resultarray[i].PowerValue;
                                            break;
                                        case 2://가스
                                            temp_fuel = 2;
                                            temp_value = resultarray[i].GasValue;
                                            break;
                                        case 3: //수도
                                            temp_fuel = 3;
                                            temp_value = resultarray[i].WaterValue;
                                            break;
                                    }
                                    BWA.api.post('BemsEnergyDaily/InsertPart', {
                                        SiteId: SiteId,
                                        BuildingId: 1,
                                        ServiceTypeId: 1,
                                        FuelTypeId: temp_fuel,
                                        CreatedDate: temp_date_UTC,
                                        Prediction: temp_value.toFixed(2)
                                    }).done(function () {
                                        savecnt++;
                                        var temp = i;
                                        if (savecnt == YearDayCnt * 3) {
                                            utils.toast.show("DB에 저장이 되었습니다.");
                                            applyonoff = false;
                                            $("#LoadPanel_save").dxLoadPanel('instance').option('visible', false);
                                            GetGridData();
                                        }
                                    }).fail(function (error) {
                                        utils.toast.show("DB에 저장이 실패하였습니다.");
                                        $("#LoadPanel_save").dxLoadPanel('instance').option('visible', false);
                                    });
                                }
                            }
                        }
                    })
                    .fail(function (error) {
                        utils.toast.show(error);
                        $("#LoadPanel_save").dxLoadPanel('instance').option('visible', false);
                    });
                }
            });
        },
        onHidden: function () {
        }
    };
    viewModel.monthpopupOptions = {
        width: 690,
        height: 600,
        visible: monthvisiblePopup,
        dragEnabled: true,
        shading: true,
        closeOnOutsideClick: true,
        shadingColor: 'transparent',
        showTitle: true,
        title: "월별 비율 설정",
        showCloseButton: true,
        onShowing: function () {
        },
        onShown: function (t, tt) {
            $("#Search_Month_Day").dxDateBox({
                value: TodayAdd,
                maxZoomLevel: 'decade',
                formatString: "yyyy년",
                onValueChanged: function (data) {
                    //var tmpDate = data.value;
                    //if (tmpDate.getFullYear() > TodayAdd.getFullYear()) {
                    //    utils.toast.show("조회 연도가 올해보다 클 수 없습니다.");
                    //    $("#Search_Month_Day").dxDateBox("instance").option('value', TodayAdd);
                    //}
                }
            });
            $("#Apply_Month_Day").dxDateBox({
                value: TodayAdd,
                maxZoomLevel: 'decade',
                formatString: "yyyy년",
                onValueChanged: function (data) {
                    var tmpDate = data.value;
                    if (tmpDate.getFullYear() > TodayAdd.getFullYear() + 1) {
                        utils.toast.show("적용 연도가 내년보다 클 수 없습니다.");
                        $("#Apply_Month_Day").dxDateBox("instance").option('value', TodayAdd);
                    }
                    //if (tmpDate.getFullYear() < TodayAdd.getFullYear()) {
                    //    utils.toast.show("적용 연도가 올해보다 작을수 없습니다.");
                    //    $("#Apply_Month_Day").dxDateBox("instance").option('value', TodayAdd);
                    //}
                }
            });
            $("#Search_Month_Btn").dxButton({
                text: "조회",
                onClick: function () {
                    MonthGetGridData();
                }
            });
            $("#Apply_Month_Btn").dxButton({
                text: "전체 적용",
                onClick: function () {
                    var temp = $("#MonthdataGrid").dxDataGrid("instance").option('dataSource');
                    var Apply_Month = $("#Apply_Month_Day").dxDateBox("instance").option('value');

                    if (temp[12].PowerMonthValue != 100) {
                        utils.toast.show("전기 합계는 100이 되어야 합니다.");
                        return;
                    }
                    if (temp[12].GasMonthValue != 100) {
                        utils.toast.show("가스 합계는 100이 되어야 합니다.");
                        return;
                    }
                    if (temp[12].WaterMonthValue != 100) {
                        utils.toast.show("수도 합계는 100이 되어야 합니다.");
                        return;
                    }

                    var MonthGridSource = new DevExpress.data.DataSource({
                        store: {
                            type: "odata",
                            url: endpointSelector + "/BemsEnergyConfigPercentMonth"
                        },
                        requireTotalCount: true,
                        pageSize: 12
                    });

                    MonthGridSource.filter([
                            ["SiteId", "=", SiteId], //사이트 아이디
                            "and",
                            ["Year", "=", Apply_Month.getFullYear()]
                    ]);
                    MonthGridSource.sort({ getter: "Month", asc: true });
                    MonthGridSource.load()
                    .done(function (result) {
                        if (result.length != 0) {
                            var cnt = 0;
                            for (var i = 0; i < 12; i++) {
                                BWA.api.post('BemsEnergyConfigPercentMonth/Update', {
                                    SiteId: SiteId,
                                    Year: Apply_Month.getFullYear(),
                                    Month: temp[i].MonthDateTime,
                                    Electricity: (temp[i].PowerMonthValue),
                                    Gas: (temp[i].GasMonthValue),
                                    Water: (temp[i].WaterMonthValue)
                                }).done(function () {
                                    cnt++;
                                    if (cnt == 12)
                                        utils.toast.show("월별 비율 설정을 성공하였습니다.");
                                }).fail(function (error) {
                                    utils.toast.show("월별 비율 설정을 실패하였습니다.");
                                });
                            }
                        }
                        else {
                            var cnt = 0;
                            for (var i = 0; i < 12; i++) {
                                BWA.api.post('BemsEnergyConfigPercentMonth/Insert', {
                                    SiteId: SiteId,
                                    Year: Apply_Month.getFullYear(),
                                    Month: temp[i].MonthDateTime,
                                    Electricity: (temp[i].PowerMonthValue),
                                    Gas: (temp[i].GasMonthValue),
                                    Water: (temp[i].WaterMonthValue)
                                }).done(function () {
                                    cnt++;
                                    if (cnt == 12)
                                        utils.toast.show("월별 비율 설정을 성공하였습니다.");
                                }).fail(function (error) {
                                    utils.toast.show("월별 비율 설정을 실패하였습니다.");
                                });
                            }
                        }
                    })
                    .fail(function (error) {
                        utils.toast.show(error);
                    });
                }
            });
            $("#MonthdataGrid").dxDataGrid({

            });
            $("#Search_Day_Month").dxSelectBox({
                dataSource: MonthDataID,
                displayExpr: "month",
                valueExpr: "id",
            });
            $("#Power_Month_txt").dxTextBox({

            });
            $("#Gas_Month_txt").dxTextBox({

            });
            $("#Water_Month_txt").dxTextBox({

            });
            $("#Change_Month_Btn").dxButton({
                text: "비율변경",
                onClick: function () {
                    var afpower = 0, afgas = 0, afwater = 0;
                    var month = $("#Search_Day_Month").dxSelectBox("instance").option('value');
                    month = month - 1;
                    var expower = parseFloat($("#Power_Month_txt").dxTextBox("instance").option('value'));
                    var exgas = parseFloat($("#Gas_Month_txt").dxTextBox("instance").option('value'));
                    var exwater = parseFloat($("#Water_Month_txt").dxTextBox("instance").option('value'));
                    if (month == -1) {
                        utils.toast.show("월 선택이 없습니다.");
                        return;
                    }
                    if (expower > 100 || $("#Power_Month_txt").dxTextBox("instance").option('value') == "") {
                        utils.toast.show("전력 입력 정보가 잘못되었습니다.");
                        return;
                    }
                    if (exgas > 100 || $("#Gas_Month_txt").dxTextBox("instance").option('value') == "") {
                        utils.toast.show("가스 입력 정보가 잘못되었습니다.");
                        return;
                    }
                    if (exwater > 100 || $("#Water_Month_txt").dxTextBox("instance").option('value') == "") {
                        utils.toast.show("수도 입력 정보가 잘못되었습니다.");
                        return;
                    }

                    $("#Power_Month_txt").dxTextBox("instance").option('value', expower.toFixed(2));
                    $("#Gas_Month_txt").dxTextBox("instance").option('value', exgas.toFixed(2));
                    $("#Water_Month_txt").dxTextBox("instance").option('value', exwater.toFixed(2));

                    var temp = $("#MonthdataGrid").dxDataGrid("instance").option('dataSource');
                    temp[month].PowerMonthValue = parseFloat(expower.toFixed(2));
                    temp[month].GasMonthValue = parseFloat(exgas.toFixed(2));
                    temp[month].WaterMonthValue = parseFloat(exwater.toFixed(2));
                    for (var i = 0; i < 12; i++) {
                        afpower += (temp[i].PowerMonthValue);
                        afgas += (temp[i].GasMonthValue);
                        afwater += (temp[i].WaterMonthValue);
                    }
                    temp[12].PowerMonthValue = parseFloat(afpower.toFixed(2));
                    temp[12].GasMonthValue = parseFloat(afgas.toFixed(2));
                    temp[12].WaterMonthValue = parseFloat(afwater.toFixed(2));
                    $("#MonthdataGrid").dxDataGrid("instance").option('dataSource', temp);
                    var dg = $("#MonthdataGrid").dxDataGrid("instance");
                    dg.refresh();
                }
            });
            MonthGetGridData();
        },
        onHidden: function () {
        }
    };
    viewModel.dailypopupOptions = {
        width: 690,
        height: 450,
        visible: dailyvisiblePopup,
        dragEnabled: true,
        shading: true,
        closeOnOutsideClick: true,
        shadingColor: 'transparent',
        showTitle: true,
        title: "요일별 비율 설정",
        showCloseButton: true,
        onShowing: function () {
        },
        onShown: function (t, tt) {
            $("#Search_Daily_Day").dxDateBox({
                value: TodayAdd,
                maxZoomLevel: 'decade',
                formatString: "yyyy년",
                onValueChanged: function (data) {
                    //    var tmpDate = data.value;
                    //    if (tmpDate.getFullYear() > TodayAdd.getFullYear()) {
                    //        utils.toast.show("조회 연도가 올해보다 클 수 없습니다.");
                    //        $("#Search_Daily_Day").dxDateBox("instance").option('value', TodayAdd);
                    //    }
                }
            });
            $("#Apply_Daily_Day").dxDateBox({
                value: TodayAdd,
                maxZoomLevel: 'decade',
                formatString: "yyyy년",
                onValueChanged: function (data) {
                    var tmpDate = data.value;
                    if (tmpDate.getFullYear() > TodayAdd.getFullYear() + 1) {
                        utils.toast.show("적용 연도가 내년보다 클 수 없습니다.");
                        $("#Apply_Daily_Day").dxDateBox("instance").option('value', TodayAdd);
                    }
                    //if (tmpDate.getFullYear() < TodayAdd.getFullYear()) {
                    //    utils.toast.show("적용 연도가 올해보다 작을수 없습니다.");
                    //    $("#Apply_Daily_Day").dxDateBox("instance").option('value', TodayAdd);
                    //}
                }
            });
            $("#Search_Daily_Btn").dxButton({
                text: "조회",
                onClick: function () {
                    DailyGetGridData();
                }
            });
            $("#Apply_Daily_Btn").dxButton({
                text: "전체 적용",
                onClick: function () {
                    var temp = $("#DailydataGrid").dxDataGrid("instance").option('dataSource');
                    var Apply_Daily = $("#Apply_Daily_Day").dxDateBox("instance").option('value');

                    if (temp[7].PowerDailyValue != 100) {
                        utils.toast.show("전기 합계는 100이 되어야 합니다.");
                        return;
                    }
                    if (temp[7].GasDailyValue != 100) {
                        utils.toast.show("가스 합계는 100이 되어야 합니다.");
                        return;
                    }
                    if (temp[7].WaterDailyValue != 100) {
                        utils.toast.show("수도 합계는 100이 되어야 합니다.");
                        return;
                    }

                    var DailyGridSource = new DevExpress.data.DataSource({
                        store: {
                            type: "odata",
                            url: endpointSelector + "/BemsEnergyConfigPercentWeek"
                        },
                        requireTotalCount: true,
                        pageSize: 7
                    });

                    DailyGridSource.filter([
                            ["SiteId", "=", SiteId], //사이트 아이디
                            "and",
                            ["Year", "=", Apply_Daily.getFullYear()]
                    ]);
                    DailyGridSource.sort({ getter: "Week", asc: true });
                    DailyGridSource.load()
                    .done(function (result) {
                        if (result.length != 0) {
                            var cnt = 0;
                            for (var i = 0; i < 7; i++) {
                                BWA.api.post('BemsEnergyConfigPercentWeek/Update', {
                                    SiteId: SiteId,
                                    Year: Apply_Daily.getFullYear(),
                                    Week: i,
                                    Electricity: temp[i].PowerDailyValue,
                                    Gas: temp[i].GasDailyValue,
                                    Water: temp[i].WaterDailyValue
                                }).done(function () {
                                    cnt++;
                                    if (cnt == 7)
                                        utils.toast.show("요일별 비율 설정을 성공하였습니다.");
                                }).fail(function (error) {
                                    utils.toast.show("요일별 비율 설정을 실패하였습니다.");
                                });
                            }
                        }
                        else {
                            var cnt = 0;
                            for (var i = 0; i < 7; i++) {
                                BWA.api.post('BemsEnergyConfigPercentWeek/Insert', {
                                    SiteId: SiteId,
                                    Year: Apply_Daily.getFullYear(),
                                    Week: i,
                                    Electricity: temp[i].PowerDailyValue,
                                    Gas: temp[i].GasDailyValue,
                                    Water: temp[i].WaterDailyValue
                                }).done(function () {
                                    cnt++;
                                    if (cnt == 7)
                                        utils.toast.show("요일별 비율 설정을 성공하였습니다.");
                                }).fail(function (error) {
                                    utils.toast.show("요일별 비율 설정을 실패하였습니다.");
                                });
                            }
                        }
                    })
                    .fail(function (error) {
                        utils.toast.show(error);
                    });
                }
            });
            $("#DailydataGrid").dxDataGrid({

            });
            $("#Search_Day_Daily").dxSelectBox({
                dataSource: DailyDataID,
                displayExpr: "daily",
                valueExpr: "id",
                onValueChanged: function () {

                }
            });

            $("#Power_Daily_txt").dxTextBox({

            });
            $("#Gas_Daily_txt").dxTextBox({

            });
            $("#Water_Daily_txt").dxTextBox({

            });
            $("#Change_Daily_Btn").dxButton({
                text: "비율변경",
                onClick: function () {
                    var afpower = 0, afgas = 0, afwater = 0;
                    var daily = $("#Search_Day_Daily").dxSelectBox("instance").option('value');
                    daily = daily - 1;
                    var expower = parseFloat($("#Power_Daily_txt").dxTextBox("instance").option('value'));
                    var exgas = parseFloat($("#Gas_Daily_txt").dxTextBox("instance").option('value'));
                    var exwater = parseFloat($("#Water_Daily_txt").dxTextBox("instance").option('value'));
                    if (daily == -1) {
                        utils.toast.show("요일 선택이 없습니다.");
                        return;
                    }
                    if (expower > 100 || $("#Power_Daily_txt").dxTextBox("instance").option('value') == "") {
                        utils.toast.show("전력 입력 정보가 잘못되었습니다.");
                        return;
                    }
                    if (exgas > 100 || $("#Gas_Daily_txt").dxTextBox("instance").option('value') == "") {
                        utils.toast.show("가스 입력 정보가 잘못되었습니다.");
                        return;
                    }
                    if (exwater > 100 || $("#Water_Daily_txt").dxTextBox("instance").option('value') == "") {
                        utils.toast.show("수도 입력 정보가 잘못되었습니다.");
                        return;
                    }

                    $("#Power_Daily_txt").dxTextBox("instance").option('value', expower.toFixed(2));
                    $("#Gas_Daily_txt").dxTextBox("instance").option('value', exgas.toFixed(2));
                    $("#Water_Daily_txt").dxTextBox("instance").option('value', exwater.toFixed(2));

                    var temp = $("#DailydataGrid").dxDataGrid("instance").option('dataSource');
                    temp[daily].PowerDailyValue = parseFloat(expower.toFixed(2));
                    temp[daily].GasDailyValue = parseFloat(exgas.toFixed(2));
                    temp[daily].WaterDailyValue = parseFloat(exwater.toFixed(2));
                    for (var i = 0; i < 7; i++) {
                        afpower += (temp[i].PowerDailyValue);
                        afgas += (temp[i].GasDailyValue);
                        afwater += (temp[i].WaterDailyValue);
                    }
                    temp[7].PowerDailyValue = parseFloat(afpower.toFixed(2));
                    temp[7].GasDailyValue = parseFloat(afgas.toFixed(2));
                    temp[7].WaterDailyValue = parseFloat(afwater.toFixed(2));
                    $("#DailydataGrid").dxDataGrid("instance").option('dataSource', temp);
                    var dg = $("#DailydataGrid").dxDataGrid("instance");
                    dg.refresh();
                }
            });
            DailyGetGridData();
        },
        onHidden: function () {
        }
    };
    return viewModel;
};