| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856 | BemsWebApplication.MainDashboard = function(params, viewInfo) {    "use strict";    var        ELECTRICITY_DAY_MAX = 50000, // 전기금일목표        ELECTRICITY_MONTH_MAX = 1000000, //전기이달목표        ELECTRICITY_YEAR_MAX = 9000000,        ELECTRICITY_GOAL_YEAR = 101165200, // 백만kWh        GAS_DAY_MAX = 40000,        GAS_MONTH_MAX = 100000,        GAS_YEAR_MAX = 800000,        GAS_GOAL_YEAR = 3708099, //         WATER_DAY_MAX = 15000,        WATER_MONTH_MAX = 4000000,        WATER_YEAR_MAX = 5000000,        WATER_GOAL_YEAR = 682772;/*        ELECTRICITY_YEAR_MAX = ELECTRICITY_GOAL_YEAR + ELECTRICITY_GOAL_YEAR * 0.7,        GAS_YEAR_MAX = GAS_GOAL_YEAR + GAS_GOAL_YEAR * 0.7, //         WATER_YEAR_MAX = WATER_GOAL_YEAR + WATER_GOAL_YEAR * 0.7; // 10%를 최대값으로 */            var todayDayValue = ko.observableArray();//  시간데이터와 일 데이터가 계속 맞지 않아 에너지사용현황은 Daily에서 읽어오도록 수정 hcLee 2016 03 18    var timer;    var formulaGet = new BWA.Chart.FormulaGet(BWA.UserInfo.SiteId()),        energyUsageStatusGet = new BWA.Chart.EnergyUsageStatusGet(BWA.UserInfo.SiteId());    var chartOption = BWA.ChartOptions.MainDashBoard;    var factorCo2 = null,        factorToe = null;    var CODE = $Code,        FuelType = CODE.FuelType,        FT = CODE.FacilityType,        FC = CODE.FacilityCode,        F = CODE.Formula,        TIT = CODE.TimeIntervalType;    var gaugeDataOptions = {};    var DAY_ENERGY_USAGE    = 0,        DAY_CO2_USAGE       = 1,        MONTH_ENERGY_USAGE  = 2,        MONTH_CO2_USAGE     = 3,        YEAR_ENERGY_USAGE   = 4,        YEAR_CO2_USAGE      = 5;    var initialized = false,        shouldReload = false,        fuelTypesDataSourceMD = BemsWebApplication.db.createDataSource('BemsFuelType'),        factorCo2DataSource = BemsWebApplication.db.createDataSource('BemsFactorCo2'),        factorToeDataSource = BemsWebApplication.db.createDataSource('BemsFactorToe'),        //fuelTypesDataSource = BemsWebApplication.db.createDataSource('BemsFuelType'),        dailyDataSource = BemsWebApplication.db.createDataSource('BemsMonitoringPointHistoryDaily'),        hourlyDataSource = BemsWebApplication.db.createDataSource('BemsMonitoringPointHistoryHourly'),        todayCheck = ko.observable(true),        yesterdayCheck = ko.observable(true),        lastWeekCheck = ko.observable(false),        thisMonthCheck = ko.observable(true),        lastMonthCheck = ko.observable(true),        lastYearCheck = ko.observable(false),        todayValue = ko.observable(0),        yesterdayValue = ko.observable(0),        lastWeekValue = ko.observable(0),        thisMonthValue = ko.observable(0),        lastMonthValue = ko.observable(0),        lastYearValue = ko.observable(0),        // hcLee 2016 03 18        currentTemp = ko.observable(0),        currentHumi = ko.observable(0),        yearElectricityUsageValue = ko.observable(0),        yearGasUsageValue = ko.observable(0),        yearWaterUsageValue = ko.observable(0),        currentTabIndex = ko.observable(0),        dataSource;    var dayEnergyUsageChart         = BWA.Chart.Instance('dayEnergyUsageChart', 'dxChart'),        monthEnergyUsageChart       = BWA.Chart.Instance('monthEnergyUsageChart', 'dxChart'),        yearElectricityUsageGauge   = BWA.Chart.Instance('yearElectricityUsageGauge', 'dxCircularGauge'),        yearGasUsageGauge           = BWA.Chart.Instance('yearGasUsageGauge', 'dxCircularGauge'),        yearWaterUsageGauge         = BWA.Chart.Instance('yearWaterUsageGauge', 'dxCircularGauge'),        yearEnergyUsageGauge        = BWA.Chart.Instance('yearEnergyUsageGauge', 'dxCircularGauge'),        energyUsageRatioPieChart    = BWA.Chart.Instance('energyUsageRatioPieChart', 'dxPieChart'),                rateGauges = [];    var fuelTypes = ko.observableArray([]),        fuelTypeId = ko.observable(),                todayEnergyStatusArray = ko.observableArray(),        yesterdayEnergyStatusArray = ko.observableArray(),        lastWeekEnergyStatusArray = ko.observableArray(),        thisMonthEnergyStatusArray = ko.observableArray(),        lastMonthEnergyStatusArray = ko.observableArray(),        lastYearEnergyStatusArray = ko.observableArray()    ;    //    monthEnergyDataSource(dayEnergyDataSource());    var pieDataSource = ko.observableArray();    function handleCmBuildingModification() {        shouldReload = true;    }    var initialized = false;    function setGaugeValue(id, value, unit) {        var jq = $('#' + id);        jq.cwGauge('option', 'value', BWA.DataUtil.getNumberStringWithComma(value));        jq.cwGauge('option', 'unit', unit);        //jq.cwGauge2(BWA.DataUtil.getNumberStringWithComma(value), unit);    }    function handleViewShown() {        //window.$SearchView.isNotUse(true);         if (initialized === false) {            var gaugeOptions = [                { id: 'dayEnergyUsage', title: $G('dayEnergyUsgae'), unit: '(kWh)', colorType: 1, value: 0 },                { id: 'dayCo2Usage', title: $G('dayCo2Usgae'), unit: '(tCO2)', colorType: 1, value: 0 }, // 사용안함                { id: 'monthEnergyUsage', title: $G('monthEnergyUsgae'), unit: '(kWh)', colorType: 2, value: 0 },                { id: 'monthCo2Usage', title: $G('monthCo2Usgae'), unit: '(tCO2)', colorType: 2, value: 0 },                { id: 'yearEnergyUsage', title: $G('yearEnergyUsgae'), unit: '(kWh)', colorType: 3, value: 0 },                { id: 'yearCo2Usage', title: $G('yearCo2Usgae'), unit: '(tCO2)', colorType: 3, value: 0 }            ];            _.each(gaugeOptions, function(options, i) {                rateGauges[i] = new BWA.Chart.RateGauge.newInstance(_.extend(options, {                     height: '86px'                }));            });            //rateGauges[DAY_ENERGY_USAGE].setValue(4124);            //rateGauges[DAY_CO2_USAGE].setValue(4124);            //rateGauges[MONTH_ENERGY_USAGE].setValue(7124);            //rateGauges[MONTH_CO2_USAGE].setValue(6124);            //rateGauges[YEAR_ENERGY_USAGE].setValue(10124);            //rateGauges[YEAR_CO2_USAGE].setValue(10124);            dayEnergyUsageChart = dayEnergyUsageChart(chartOption.getTodayEnergyUsageStatusChartOptions());            monthEnergyUsageChart = monthEnergyUsageChart(chartOption.getMonthEnergyUsageStatusChartOptions());            yearElectricityUsageGauge = yearElectricityUsageGauge(chartOption.getYearElectricityUsageStatusChartOptions());              yearGasUsageGauge = yearGasUsageGauge(chartOption.getYearGasUsageStatusChartOptions());            yearWaterUsageGauge = yearWaterUsageGauge(chartOption.getYearWaterUsageStatusChartOptions());            yearEnergyUsageGauge = yearEnergyUsageGauge(chartOption.getYearTotalEnergyUsageStatusChartOptions());            //            yearElectricityUsageGauge().value(612772);            energyUsageRatioPieChart = energyUsageRatioPieChart(chartOption.getUsageRatioByEnergyChartOptions());            gaugeDataOptions[FT.ELECTRICITY] = {                gauge: yearElectricityUsageGauge,                max: ELECTRICITY_YEAR_MAX,                value: yearElectricityUsageValue            };             gaugeDataOptions[FT.GAS] = {                gauge: yearGasUsageGauge,                max: GAS_YEAR_MAX,                value: yearGasUsageValue            };            gaugeDataOptions[FT.WATER] = {                gauge: yearWaterUsageGauge,                max: WATER_YEAR_MAX,                value: yearWaterUsageValue            };            //setGaugeRangeContainer(yearElectricityUsageGauge, ELECTRICITY_GOAL_YEAR);            //setGaugeRangeContainer(yearGasUsageGauge, GAS_GOAL_YEAR);            //setGaugeRangeContainer(yearWaterUsageGauge, WATER_GOAL_YEAR);            var whenPromise = $.when(fuelTypesDataSourceMD.load(),                   factorCo2DataSource.load(),                   factorToeDataSource.load())            .then(function (dbfuelTypes, dbfactorsCo2, dbfactorsToe) {                factorCo2 = BWA.Bems.refineFactorCo2DataArray(dbfactorsCo2[0]);                factorToe = BWA.Bems.refineFactorToeDataArray(dbfactorsToe[0]);                fuelTypeId($Code.FuelType.ELECTRICITY);                fuelTypes(_.rest(dbfuelTypes[0]));                initialized = true;            });                   }        load();        if (shouldReload) {            //shouldReload = false;            //dataSource.pageIndex(0);            //dataSource.load();        }        $SideMenu.showSideMenuIfWill(params.view);        //sideOverlayVisible(true);        timer = setInterval(function () {            var now = new Date();            if ((now.getMinutes() % 15 == 0) && (now.getSeconds() == 59)) {                load();                /*                setupRateGaugeByFuelType(fuelTypeId());                setupTodayEnergyUsageStatusSeries();                setupMonthEnergyUsageStatusSeries();                loadTodayEnergyUsage(fuelTypeId());                loadMonthEnergyUsage(fuelTypeId());*/            }        }, 1000);        $('#sidemenubutton').hide(); // hcLee 2015 12 08    }    function handleViewDisposing() {    }    function handleViewHidden() {        clearInterval(timer); // hcLee 2015 06 12        $('#sidemenubutton').show(); // hcLee 2015 12 08    }    var eq = BWA.DataUtil.constructEqualFilter;    var and = BWA.DataUtil.andFilter;    var fcode = $Code.FacilityCode;    var selectedFacilityCode = fcode.ELECTRICITY;    function handleViewShowing() {     }    function setUsageStatusDataIntoList(sourceData, destlist, momentTimeField, valueField) {        _.each(sourceData, function(data) {            var item = {                DateTime: moment(data.DateTime)[momentTimeField](),            };            item[valueField] = data.Value;            destlist.push(item);        });    }    function getDayUsageStatusDataList() {        var list = [];        setUsageStatusDataIntoList(todayEnergyStatusArray(), list, 'hours', 'TodayValue');        setUsageStatusDataIntoList(yesterdayEnergyStatusArray(), list, 'hours', 'YesterdayValue');        setUsageStatusDataIntoList(lastWeekEnergyStatusArray(), list, 'hours', 'LastWeekValue');        return list;    }    function loadTodayEnergyUsage(fuelTypeId) {        var request = energyUsageStatusGet.requestGetForUsgaeStatus(fuelTypeId, TIT.HOUR);        //var requestd = energyUsageStatusGet.requestGetForUsgaeStatus(fuelTypeId, TIT.DAY);        var lastWeekMoment = moment().subtract(7, 'days');        var yesterdayMoment = moment().subtract(1, 'days');        var todayMoment = moment();        $.when(            request(lastWeekMoment.clone().startOf('day'), lastWeekMoment.endOf('day')),            request(yesterdayMoment.clone().startOf('day'), yesterdayMoment.endOf('day')),            request(todayMoment.clone().startOf('day'), todayMoment))            //requestd(todayMoment.clone().startOf('day'), todayMoment)) // 추가 todayDayData 추가 hcLee 2016 03 18        .done(function (lastWeekData, yesterdayData, todayData, todayDayData) { // todayDayData 추가 hcLee 2016 03 18            yesterdayEnergyStatusArray(yesterdayData[0]);            lastWeekEnergyStatusArray(lastWeekData[0]);            todayEnergyStatusArray(todayData[0]);            //todayDayValue(todayDayData[0]);  /// todayDayData 추가 hcLee 2016 03 18            // 2017 01 10 hcLee            if (fuelTypeId == FuelType.WATER)                dayEnergyUsageChart().option('valueAxis.label', { format: 'largeNumber', precision: 2 });            else                dayEnergyUsageChart().option('valueAxis.label', { format: 'largeNumber' });            dayEnergyUsageChart().option('dataSource', getDayUsageStatusDataList());        });    }    function loadMonthEnergyUsage(fuelTypeId) {        var request = energyUsageStatusGet.requestGetForUsgaeStatus(fuelTypeId, TIT.DAY);                var lastYearMoment = moment().subtract(1, 'years');        var lastMonthMoment = moment().subtract(1, 'months');        var thisMonthMoment = moment();        $.when(            request(lastYearMoment.clone().startOf('months'), lastYearMoment.endOf('months')),            request(lastMonthMoment.clone().startOf('months'), lastMonthMoment.endOf('months')),            request(thisMonthMoment.clone().startOf('months'), thisMonthMoment))        .done(function(lastYearData, lastMonthData, thisMonthData) {            lastYearEnergyStatusArray(lastYearData[0]);            lastMonthEnergyStatusArray(lastMonthData[0]);            thisMonthEnergyStatusArray(thisMonthData[0]);            var list = [];            setUsageStatusDataIntoList(thisMonthEnergyStatusArray(), list, 'date', 'ThisMonthValue');            setUsageStatusDataIntoList(lastMonthEnergyStatusArray(), list, 'date', 'LastMonthValue');            setUsageStatusDataIntoList(lastYearEnergyStatusArray(), list, 'date', 'LastYearValue');            // 2017 01 10 hcLee            if (fuelTypeId == FuelType.WATER)                monthEnergyUsageChart().option('valueAxis.label', { format: 'largeNumber', precision: 2 });            else                monthEnergyUsageChart().option('valueAxis.label', { format: 'largeNumber' });            monthEnergyUsageChart().option('dataSource', list);        });    }    function load() {        // 파라미터 값들을 로드                       var startDateInYear = moment().startOf('year'),                endDateInYear = moment();            var param =            {                SiteId: BWA.UserInfo.SiteId(),                BuildingId: 1, // 의미없음                FuelType:1, // 의미없음                StartDate: startDateInYear,// 의미없음                EndDate: endDateInYear // 의미없음            };            $.when(BWA.api.post('BemsMonitoringPointHistory/GetPrediction', param)) // 오늘,이달,금년 모두 한번에 온다            .done(function (goals)            {                ELECTRICITY_DAY_MAX = goals[0];                //2017 01  가스 목표량은 Kw 이다 해서 아래와 같이 처리한다 hcLee                //GAS_DAY_MAX = goals[1];                GAS_DAY_MAX = factorToe.calculate(goals[1], FuelType.ELECTRICITY) / factorToe[FuelType.GAS].pureFactor; ;                WATER_DAY_MAX = goals[2];                ELECTRICITY_MONTH_MAX = goals[3];                //2017 01  가스 목표량은 Kw 이다 해서 아래와 같이 처리한다 hcLee                //GAS_MONTH_MAX = goals[4];                GAS_MONTH_MAX = factorToe.calculate(goals[4], FuelType.ELECTRICITY) / factorToe[FuelType.GAS].pureFactor;;                WATER_MONTH_MAX = goals[5];                ELECTRICITY_YEAR_MAX = goals[6];                //2017 01  가스 목표량은 Kw 이다 해서 아래와 같이 처리한다 hcLee                //GAS_YEAR_MAX = goals[7];                GAS_YEAR_MAX = factorToe.calculate(goals[7], FuelType.ELECTRICITY) / factorToe[FuelType.GAS].pureFactor;;                WATER_YEAR_MAX = goals[8];                //                gaugeDataOptions[FT.ELECTRICITY].max = ELECTRICITY_YEAR_MAX;                gaugeDataOptions[FT.GAS].max = GAS_YEAR_MAX;                gaugeDataOptions[FT.WATER].max = WATER_YEAR_MAX;                //var promises = [whenPromise];                var promises = [];                _.each(BWA.Chart.EnergyUsageStatusGet.SearchConditions, function (x) {                    var gaugeDataOption = gaugeDataOptions[x.FacilityTypeId];                    var p = formulaGet.apiGet(_.extend(x, {                        TimeIntervalType: TIT.YEAR,                        StartDate: startDateInYear,                        EndDate: endDateInYear                    }))                    .then(getCircularChartValueFunc(gaugeDataOption));                    promises.push(p);                });                // 금년 목표 대비 에너지 사용 비율 모두 로드 한 후에 TOE 계산하여 적용                $.when.apply(null, promises).then(function () {                    var maxToe = factorToe.calculate(ELECTRICITY_YEAR_MAX, FuelType.ELECTRICITY) + factorToe.calculate(GAS_YEAR_MAX, FuelType.GAS) +                        factorToe.calculate(WATER_YEAR_MAX, FuelType.WATER);                    var toeElectricity = factorToe.calculate(yearElectricityUsageValue(), FuelType.ELECTRICITY);                    var toeGas = factorToe.calculate(yearGasUsageValue(), FuelType.GAS);                    var toeWater = factorToe.calculate(yearWaterUsageValue(), FuelType.WATER);                    var toe = toeElectricity + toeGas + toeWater;                    yearEnergyUsageGauge().value(toe / maxToe * 100);                    //yearEnergyUsageGauge().value(60);                    setupRateGaugeByFuelType(fuelTypeId());                    pieDataSource([                        { energy: "전기", value: toeElectricity },                        { energy: "가스", value: toeGas },                        { energy: "수도", value: toeWater },                    ]);                    loadTotalCo2ToDay();                    loadTotalCo2Month();                    loadTotalCo2Year();                    var promisesTH = [];                    var todayMoment = moment();                    var commonParameters = {                        TimeIntervalType: TIT.DAY,                        StartDate: todayMoment.clone().startOf('day'),                        EndDate: todayMoment                    };                    // 2016 06 29 추가                    var commonParametersForTH = {                        TimeIntervalType: TIT.QUARTERMIN,                        StartDate: todayMoment.clone().startOf('day'),                        EndDate: todayMoment                    };                    var temperatureParameters = {                        FacilityTypeId: FT.OUTDOOR,                        FacilityCode: FC.OUTDOOR,                        FormulaId: F[FT.OUTDOOR].TEMPERATURE,                    };                    var humidityParameters = _.extend({}, temperatureParameters, {                        FormulaId: F[FT.OUTDOOR].HUMIDITY,                    });                    promisesTH.push(formulaGet.apiGet(_.extend(temperatureParameters, commonParametersForTH)));                    promisesTH.push(formulaGet.apiGet(_.extend(humidityParameters, commonParametersForTH)));                    $.when.apply(this, promisesTH)                    .done(function (OUTtemperatures, humidities) {                        if (OUTtemperatures[0].length > 0)                            currentTemp(OUTtemperatures[0][OUTtemperatures[0].length-1].Value.toFixed(2) + " °C");                        if (humidities[0].length > 0)                            currentHumi(humidities[0][humidities[0].length - 1].Value.toFixed(2) + " %");                        setupTodayEnergyUsageStatusSeries();                        setupMonthEnergyUsageStatusSeries();                        loadTodayEnergyUsage(fuelTypeId());                        loadMonthEnergyUsage(fuelTypeId());                    })                });            });            //여기서 전체 Co2별도 계산 hcLee 2015 06 29            //rateGauges[DAY_CO2_USAGE].setValue(1.1);            //rateGauges[MONTH_CO2_USAGE].setValue(2.2);            //rateGauges[YEAR_CO2_USAGE].setValue(3.3);        //});    }    function loadTotalCo2ToDay() {        var now = new Date();        var startDate, endDate;        startDate = new Date(now.getFullYear(), now.getMonth(), now.getDate() , 0, 0, 0);        endDate = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59);        var promises = [];        _.each($Code.g_fuelTypes, function (x) {            //promises.push(energyUsageStatusGet.requestGetForUsgaeStatus(x.FuelTypeId(), TIT.HOUR)(startDate, endDate)); // 2015 06 08 수정 CO2과 똑같이             promises.push(energyUsageStatusGet.requestGetForUsgaeStatus(x.FuelTypeId(), TIT.DAY)(startDate, endDate)); // 2015 06 08 수정 CO2과 똑같이         });        $.when.apply(this, promises).done(function () {            var Esum = 0;            var TotalCO2 = 0;            _.each(arguments, function (array, i) {                var field = $Code.g_fuelTypes[i].Name();                                _.each(array[0], function (x) {                    Esum += x.Value;                });                TotalCO2 += factorCo2.calculate(Esum, $Code.g_fuelTypes[i].FuelTypeId());                Esum = 0;            });            //TotalCO2            rateGauges[DAY_CO2_USAGE].setValue(Math.round(TotalCO2 * 100) / 100);        });    }    function loadTotalCo2Month() {        var now = new Date();        var startDate, endDate;        var monthMoment;        monthMoment = moment().month(now.getMonth());        startDate = monthMoment.startOf('month');        endDate = monthMoment.clone().endOf('month');        //startDate = new Date(now.getFullYear(), now.getMonth(), 1, 0, 0, 0);        //endDate = new Date(now.getFullYear(), now.getMonth(), 31, 23, 59, 59);        var promises = [];        _.each($Code.g_fuelTypes, function (x) {            promises.push(energyUsageStatusGet.requestGetForUsgaeStatus(x.FuelTypeId(), TIT.DAY)(startDate, endDate)); // 2015 06 08 수정 CO2과 똑같이         });        $.when.apply(this, promises).done(function () {            var Esum = 0;            var TotalCO2 = 0;            _.each(arguments, function (array, i) {                var field = $Code.g_fuelTypes[i].Name();                _.each(array[0], function (x) {                    //sum += factorCo2.calculate(x.Value, $Code.g_fuelTypes[i].FuelTypeId());                    Esum += x.Value;                });                TotalCO2 += factorCo2.calculate(Esum, $Code.g_fuelTypes[i].FuelTypeId());                Esum = 0;            });            //rateGauges[MONTH_CO2_USAGE].setValue(Math.floor(TotalCO2 * 100) / 100);            rateGauges[MONTH_CO2_USAGE].setValue(Math.round(TotalCO2 * 100) / 100);        });    }    function loadTotalCo2Year() {        var now = new Date();        var startDate, endDate;        startDate = moment().startOf('year')        endDate = new Date(now.getFullYear(), now.getMonth(), 31, 23, 59, 59);        var promises = [];        _.each($Code.g_fuelTypes, function (x) {            promises.push(energyUsageStatusGet.requestGetForUsgaeStatus(x.FuelTypeId(), TIT.DAY)(startDate, endDate)); // 2015 06 08 수정 CO2과 똑같이         });        $.when.apply(this, promises).done(function () {            var Esum = 0;            var TotalCO2 = 0;            _.each(arguments, function (array, i) {                var field = $Code.g_fuelTypes[i].Name();                _.each(array[0], function (x) {                    Esum += x.Value;                });                TotalCO2 += factorCo2.calculate(Esum, $Code.g_fuelTypes[i].FuelTypeId());                Esum = 0;            });            var a = 1000;            a.toExponential()            //rateGauges[YEAR_CO2_USAGE].setValue($NumberFormat(Math.floor(TotalCO2 * 100) / 100));            rateGauges[YEAR_CO2_USAGE].setValue(Math.round(TotalCO2 * 100) / 100);        });    }    function getCircularChartValueFunc(gaugeDataOption) {        return function(dataArray) {            if (_.isEmpty(dataArray)) return;            var value = dataArray[0].Value;            gaugeDataOption.gauge().value(value / gaugeDataOption.max * 100);            gaugeDataOption.value(value); // 파이차트        };    }    function refreshList() {        //dataSource.pageIndex(0);        //dataSource.load();    }    var viewModel = $.extend(BWA.CommonView.create(        params, viewInfo, null, null, handleViewShown), {            refreshList: refreshList,            viewShowing: handleViewShowing,            viewShown: handleViewShown,            viewHidden: handleViewHidden,            viewDisposing: handleViewDisposing,        });    pieDataSource.subscribe(function(array) {        var chart = $('#energyUsageRatioPieChart').dxPieChart('instance');        if (chart) {            chart.option('dataSource', array);        }    });    fuelTypeId.subscribe(function(fuelTypeId) {        if (initialized === false) return;        load();        /*        setupRateGaugeByFuelType(fuelTypeId);        setupTodayEnergyUsageStatusSeries();        setupMonthEnergyUsageStatusSeries();        loadTodayEnergyUsage(fuelTypeId);        loadMonthEnergyUsage(fuelTypeId);*/            });    function setupRateGaugeByFuelType(fuelTypeId) {        var todayMax = 0;        var todayCo2Max = 0;        var thisMonthMax = 0;        var thisMonthCo2Max = 0;        var thisYearMax = 0;        var thisYearCo2Max = 0;        var unit;        var yearValue;//        return;        switch(fuelTypeId) {            case FuelType.ELECTRICITY:                unit = '(kWh)';                todayMax = ELECTRICITY_DAY_MAX;                thisMonthMax = ELECTRICITY_MONTH_MAX;                thisYearMax = ELECTRICITY_YEAR_MAX;                //todayCo2Max = factorCo2.calculate(ELECTRICITY_DAY_MAX, FuelType.ELECTRICITY);                //thisMonthCo2Max = factorCo2.calculate(ELECTRICITY_MONTH_MAX, FuelType.ELECTRICITY);                //thisYearCo2Max = factorCo2.calculate(ELECTRICITY_YEAR_MAX, FuelType.ELECTRICITY) + 8000;                                todayCo2Max = factorCo2.calculate(ELECTRICITY_DAY_MAX, FuelType.ELECTRICITY) + factorCo2.calculate(GAS_DAY_MAX, FuelType.GAS)                + factorCo2.calculate(WATER_DAY_MAX, FuelType.WATER);                thisMonthCo2Max = factorCo2.calculate(ELECTRICITY_MONTH_MAX, FuelType.ELECTRICITY) + factorCo2.calculate(GAS_MONTH_MAX, FuelType.GAS)                + factorCo2.calculate(WATER_MONTH_MAX, FuelType.WATER);                thisYearCo2Max = factorCo2.calculate(ELECTRICITY_YEAR_MAX, FuelType.ELECTRICITY) + factorCo2.calculate(GAS_YEAR_MAX, FuelType.GAS) + factorCo2.calculate(WATER_YEAR_MAX, FuelType.WATER);                yearValue = yearElectricityUsageValue();                gaugeDataOptions[FT.ELECTRICITY].max = ELECTRICITY_YEAR_MAX;                gaugeDataOptions[FT.ELECTRICITY].value = yearElectricityUsageValue;                break;            case FuelType.GAS:                //unit = '(㎥/h)';                unit = '(㎥)';                todayMax = GAS_DAY_MAX;                thisMonthMax = GAS_MONTH_MAX;                thisYearMax = GAS_YEAR_MAX;                //todayCo2Max = factorCo2.calculate(GAS_DAY_MAX, FuelType.GAS);                //thisMonthCo2Max = factorCo2.calculate(GAS_MONTH_MAX, FuelType.GAS);                //thisYearCo2Max = factorCo2.calculate(GAS_YEAR_MAX, FuelType.GAS) + 2000;                todayCo2Max = factorCo2.calculate(ELECTRICITY_DAY_MAX, FuelType.ELECTRICITY) + factorCo2.calculate(GAS_DAY_MAX, FuelType.GAS)                + factorCo2.calculate(WATER_DAY_MAX, FuelType.WATER);                thisMonthCo2Max = factorCo2.calculate(ELECTRICITY_MONTH_MAX, FuelType.ELECTRICITY) + factorCo2.calculate(GAS_MONTH_MAX, FuelType.GAS)                + factorCo2.calculate(WATER_MONTH_MAX, FuelType.WATER);                thisYearCo2Max = factorCo2.calculate(ELECTRICITY_YEAR_MAX, FuelType.ELECTRICITY) + factorCo2.calculate(GAS_YEAR_MAX, FuelType.GAS) + factorCo2.calculate(WATER_YEAR_MAX, FuelType.WATER);                 yearValue = yearGasUsageValue();                gaugeDataOptions[FT.GAS].max = GAS_YEAR_MAX;                gaugeDataOptions[FT.GAS].value = yearGasUsageValue;                break;            case FuelType.WATER:                unit = '(㎥)';                todayMax = WATER_DAY_MAX;                thisMonthMax = WATER_MONTH_MAX;                thisYearMax = WATER_YEAR_MAX;                //todayCo2Max = factorCo2.calculate(WATER_DAY_MAX, FuelType.WATER);                //thisMonthCo2Max = factorCo2.calculate(WATER_MONTH_MAX, FuelType.WATER);                //thisYearCo2Max = factorCo2.calculate(WATER_YEAR_MAX, FuelType.WATER);                todayCo2Max = factorCo2.calculate(ELECTRICITY_DAY_MAX, FuelType.ELECTRICITY) + factorCo2.calculate(GAS_DAY_MAX, FuelType.GAS)                    + factorCo2.calculate(WATER_DAY_MAX, FuelType.WATER);                thisMonthCo2Max = factorCo2.calculate(ELECTRICITY_MONTH_MAX, FuelType.ELECTRICITY) + factorCo2.calculate(GAS_MONTH_MAX, FuelType.GAS)                    + factorCo2.calculate(WATER_MONTH_MAX, FuelType.WATER);                thisYearCo2Max = factorCo2.calculate(ELECTRICITY_YEAR_MAX, FuelType.ELECTRICITY) + factorCo2.calculate(GAS_YEAR_MAX, FuelType.GAS) + factorCo2.calculate(WATER_YEAR_MAX, FuelType.WATER);                yearValue = yearWaterUsageValue();                gaugeDataOptions[FT.WATER].max = WATER_YEAR_MAX;                gaugeDataOptions[FT.WATER].value = yearWaterUsageValue;                break;        }        yearValue = Math.round(yearValue * 100) / 100;        rateGauges[DAY_ENERGY_USAGE].setUnit(unit);        //rateGauges[DAY_ENERGY_USAGE].setMaxValue(todayMax + todayMax / 2);        rateGauges[DAY_ENERGY_USAGE].setMaxValue(todayMax);        rateGauges[MONTH_ENERGY_USAGE].setUnit(unit);        //rateGauges[MONTH_ENERGY_USAGE].setMaxValue(thisMonthMax + thisMonthMax / 2);        rateGauges[MONTH_ENERGY_USAGE].setMaxValue(thisMonthMax);        rateGauges[YEAR_ENERGY_USAGE].setUnit(unit);        //rateGauges[YEAR_ENERGY_USAGE].setMaxValue(thisYearMax + thisYearMax / 2);        rateGauges[YEAR_ENERGY_USAGE].setMaxValue(thisYearMax);        // 2016 10 17 hcLee        /*if (fuelTypeId >= FuelType.WATER)            //rateGauges[YEAR_ENERGY_USAGE].setMaxValue(yearValue * 150);            rateGauges[YEAR_ENERGY_USAGE].setMaxValue(yearValue);*/        rateGauges[YEAR_ENERGY_USAGE].setValue(yearValue);/*        rateGauges[DAY_CO2_USAGE].setMaxValue(todayCo2Max + todayCo2Max / 2);        rateGauges[MONTH_CO2_USAGE].setMaxValue(thisMonthCo2Max + thisMonthCo2Max / 2);        rateGauges[YEAR_CO2_USAGE].setMaxValue(thisYearCo2Max + thisMonthCo2Max / 2);*/        rateGauges[DAY_CO2_USAGE].setMaxValue(todayCo2Max);        rateGauges[MONTH_CO2_USAGE].setMaxValue(thisMonthCo2Max);        rateGauges[YEAR_CO2_USAGE].setMaxValue(thisYearCo2Max);    }    function setupTodayEnergyUsageStatusSeries() {        var series = chartOption.getTodayEnergyUsageStatusSeriesOptions({            today: todayCheck(),            yesterday: yesterdayCheck(),            lastWeek: lastWeekCheck()        });        dayEnergyUsageChart().option('series', series);    }    function setupMonthEnergyUsageStatusSeries() {        var series = chartOption.getMonthEnergyUsageStatusSeriesOptions({            thisMonth: thisMonthCheck(),            lastMonth: lastMonthCheck(),            lastYear: lastYearCheck()        });        monthEnergyUsageChart().option('series', series);    }    function getFuelTypeUnit(fuelTypeId) {        switch (fuelTypeId) {            case FuelType.ELECTRICITY:                return 'kWh';                            case FuelType.GAS:                return '㎥';            case FuelType.WATER:                return '㎥';        }        return '';    }    function setValueFromSumFunc(koValue, handleValue) {        return function(array) {            var value = _.reduce(array, function(sum, item) {                return sum + item.Value;            }, 0);            if (_.isFunction(handleValue)) {                handleValue(value);            }            koValue(BWA.DataUtil.getNumberStringWithComma(Math.round(value)) + ' ' + getFuelTypeUnit(fuelTypeId()));        };    }    function setEnergyUsageCo2ValueFunc(energyGaugeId, co2GaugeId) {    }    todayCheck.subscribe(setupTodayEnergyUsageStatusSeries);    yesterdayCheck.subscribe(setupTodayEnergyUsageStatusSeries);    lastWeekCheck.subscribe(setupTodayEnergyUsageStatusSeries);    thisMonthCheck.subscribe(setupMonthEnergyUsageStatusSeries);    lastMonthCheck.subscribe(setupMonthEnergyUsageStatusSeries);    lastYearCheck.subscribe(setupMonthEnergyUsageStatusSeries);    todayEnergyStatusArray.subscribe(setValueFromSumFunc(todayValue, function(value) {        //value = Math.round(value);        // 2016 10 17 수도 이상은 목표값이 없으므로 현재값에서 넉넉하게 150배 하여 MAX를 설정한다 hcLee/*        if (fuelTypeId() >= FuelType.WATER)            rateGauges[DAY_ENERGY_USAGE].setMaxValue(value);*/        value = Math.round(value * 100) / 100;        rateGauges[DAY_ENERGY_USAGE].setValue(value);        //rateGauges[DAY_ENERGY_USAGE].setValue(value);  hcLee 2016 03 18    }));    yesterdayEnergyStatusArray.subscribe(setValueFromSumFunc(yesterdayValue));    lastWeekEnergyStatusArray.subscribe(setValueFromSumFunc(lastWeekValue));    thisMonthEnergyStatusArray.subscribe(setValueFromSumFunc(thisMonthValue, function (value) {        // 2016 10 17 수도 이상은 목표값이 없으므로 현재값에서 넉넉하게 150배 하여 MAX를 설정한다 hcLee/*        if (fuelTypeId() >= FuelType.WATER)            rateGauges[MONTH_ENERGY_USAGE].setMaxValue(value);*/        //value = Math.round(value);        value = Math.round(value * 100) / 100;        rateGauges[MONTH_ENERGY_USAGE].setValue(value);        //rateGauges[MONTH_CO2_USAGE].setValue(factorCo2.calculate(value, fuelTypeId()));    }));    lastMonthEnergyStatusArray.subscribe(setValueFromSumFunc(lastMonthValue));    lastYearEnergyStatusArray.subscribe(setValueFromSumFunc(lastYearValue));    viewModel.todayCheck = todayCheck;    viewModel.yesterdayCheck = yesterdayCheck;    viewModel.lastWeekCheck = lastWeekCheck;    viewModel.thisMonthCheck = thisMonthCheck;    viewModel.lastMonthCheck = lastMonthCheck;    viewModel.lastYearCheck = lastYearCheck;    viewModel.todayValue = todayValue;    viewModel.yesterdayValue = yesterdayValue;    viewModel.lastWeekValue = lastWeekValue;    viewModel.thisMonthValue = thisMonthValue;    viewModel.lastMonthValue = lastMonthValue;    viewModel.lastYearValue = lastYearValue;    viewModel.fuelTypes = fuelTypes;    viewModel.fuelTypeId = fuelTypeId;    viewModel.currentTemp = currentTemp;    viewModel.currentHumi = currentHumi;    return viewModel;};
 |