| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406 | BemsWebApplication.BudgetExecuteView = function (params, viewInfo) {    "use strict";    var initialized = false,        shouldReload = false,        dataSource;    var CODE = $Code,        FuelType = CODE.FuelType,        FacilityType = CODE.FacilityType,        FacilityCode = CODE.FacilityCode,        F = CODE.Formula,        TIT = CODE.TimeIntervalType;    var visiblePopup = ko.observable(false);    var barDataArray = [];    var InvestCost = null;    var InvestCostDataSource = BemsWebApplication.db.createDataSource('FmsInvestmentCost');    var budgetCodeClass = null;    var budgetCodeClassDataSource = BemsWebApplication.db.createDataSource('FmsBudgetCodeClass'),        chartPieDay = BWA.Chart.Instance('chartPieDayBEV', 'dxPieChart'),        chartPieDay2 = BWA.Chart.Instance('chartPieDay2BEV', 'dxPieChart'),        chartBarDay = BWA.Chart.Instance('chartBarDayBEV', 'dxChart');        //chartPieMonth = BWA.Chart.Instance('chartPieMonth', 'dxPieChart'),        //chartBarMonth = BWA.Chart.Instance('chartBarMonth', 'dxChart');    var LCCViewGet = new BWA.Chart.PointHistory_LCCViewGet(BWA.UserInfo.SiteId());    var LCCViewPreSumGet = new BWA.Chart.PointHistory_LCCViewPreSumGet(BWA.UserInfo.SiteId());    var timeBoxForSearch = BWA.SearchView.createDateTimeBox($G.TimeTypesForMonthOnly);    var factorToe = null;    var Toe = $Code.FuelType.WATER + 1;    var fuelTypesDataSource = BemsWebApplication.db.createDataSource('BemsFuelType'),        fuelTypesForSearch = ko.observableArray(),        timeTypesForSearch = ko.observableArray(),        timeTypeIdForSearch = ko.observable(0),        fuelTypeIdForSearch = ko.observable(),        deferredForSearch = new $.Deferred();    var dataArray = ko.observableArray(),        dataDayForPie = ko.observableArray(),        dataMonthForPie = ko.observableArray(),        dataDayForBar = ko.observableArray(),        dataMonthForBar = ko.observableArray()    ;    var formulaGet = new BWA.Chart.FormulaGet(BWA.UserInfo.SiteId());    timeTypesForSearch($G.TimeTypes);    var m = moment();    /*dataDayForBar([        { DateTime: new Date(m.year(), m.month(), 1), PowerToe: 40, GasToe: 40, WaterToe: 40 },        { DateTime: new Date(m.year(), m.month(), 2), Value: 50, PowerToe: 40, GasToe: 40, WaterToe: 40 },        { DateTime: new Date(m.year(), m.month(), 3), Value: 60, PowerToe: 40, GasToe: 40, WaterToe: 40 },        { DateTime: new Date(m.year(), m.month(), 4), Value: 80, PowerToe: 40, GasToe: 40, WaterToe: 40 },        { DateTime: new Date(m.year(), m.month(), 5), Value: 100, PowerToe: 40, GasToe: 40, WaterToe: 40 },        { DateTime: new Date(m.year(), m.month(), 6), Value: 40, PowerToe: 40, GasToe: 40, WaterToe: 40 },        { DateTime: new Date(m.year(), m.month(), 7), Value: 120, PowerToe: 40, GasToe: 40, WaterToe: 40 },        { DateTime: new Date(m.year(), m.month(), 31), Value: 120, PowerToe: 40, GasToe: 40, WaterToe: 40 }    ]);    dataMonthForBar(dataDayForBar());    dataDayForPie([        { FuelTypeName: '전기', Value: 320 },        { FuelTypeName: '가스', Value: 350 },        { FuelTypeName: '수도', Value: 360 },    ]);    dataMonthForPie(dataDayForPie());    */    function handleMonthBarPointClick(clickedPoint) {        var month = clickedPoint.originalArgument;        MakeMonthClickChart(month);    }    function MakeMonthClickChart(month)    {        var pieDataArray = [];        var pieDataArray2 = [];        //alert(serviceType[0].Name);        chartPieDay().option('dataSource', pieDataArray);        chartPieDay2().option('dataSource', pieDataArray2);        //loadDailyEnergyUsage(month);        _.each(barDataArray, function (d) {            if (d.DateTime == month) {                for (var s = 0; s < budgetCodeClass.length; s++) {                    var fieldNameB = budgetCodeClass[s].Name() + "_B";                    pieDataArray.push({                        FuelTypeName: "예산 " + budgetCodeClass[s].Name(),                        Value: d[fieldNameB]                    })                    var fieldName = budgetCodeClass[s].Name();                    pieDataArray2.push({                        FuelTypeName: budgetCodeClass[s].Name(),                        Value: d[fieldName]                    })                }                chartPieDay().option('dataSource', pieDataArray);                chartPieDay2().option('dataSource', pieDataArray2);                $('#st2').text(month + '월 예산 비율');                $('#st4').text(month + '월 실적 비율');                return;            }        });    }    var searchViewOptions = {        searchViewItems: [            { id: 'TimeTypeId', defaultValue: 0, value: timeTypeIdForSearch, dataSource: timeTypesForSearch },            { id: 'FuelTypeId', ignoreValue: 0, defaultValue: 1, value: fuelTypeIdForSearch, dataSource: fuelTypesForSearch },            { id: 'DateForHour', type: 'dateRange', isOnlyDate: true },            { id: 'TimeForHour', type: 'dateRange', isOnlyDate: true },        ],        promiseDataInSearchView: deferredForSearch.promise()    };    function handleViewShown() {        if (initialized === false) {            //var chartOption = BWA.ChartOptions.LCCView;            budgetCodeClassDataSource.filter([                ['Depth', '=', 0],            ]);            budgetCodeClassDataSource.load().done(function (dbCode) {                budgetCodeClass = dbCode;                BWA.ChartOptions.BudgetExecuteView.MakeSeries(budgetCodeClass);                chartPieDay = chartPieDay(BWA.ChartOptions.BudgetExecuteView.getPieChartDayOptions());                chartPieDay2 = chartPieDay2(BWA.ChartOptions.BudgetExecuteView.getPieChartDayOptions());                chartBarDay = chartBarDay(BWA.ChartOptions.BudgetExecuteView.getBarChartDayOptions(handleMonthBarPointClick));                //chartPieMonth = chartPieMonth(BWA.ChartOptions.BudgetExecuteView.getPieChartMonthOptions());                //chartBarMonth = chartBarMonth(BWA.ChartOptions.BudgetExecuteView.getBarChartMonthOptions());                InvestCostDataSource.load().done(function (Costs) {                    InvestCost = Costs;                });                handleSearchInSearchView();                //loadMonthlyEnergyUsage();                //loadDailyEnergyUsage();            });            //$('#chartPieDay').dxPieChart(chartOption.getPieChartDayOptions(dataDayForPie));            //$('#chartBarDay').dxChart(chartOption.getBarChartDayOptions(dataDayForBar));            //$('#chartPieMonth').dxPieChart(chartOption.getPieChartMonthOptions(dataMonthForPie));            //$('#chartBarMonth').dxChart(chartOption.getBarChartMonthOptions(dataMonthForBar));            initialized = true;        }    }    function handleSearchInSearchView() {        visiblePopup(true);        $("#large-indicator").dxLoadIndicator({            height: 60,            width: 60        });        loadMonthlyEnergyUsage();    }    function getChartDataFromDataSources(loadedDataSources, barDataArray, pieDataArray, timeFormat, presum, lastMonth) {        var sums = new Array(budgetCodeClass.length);        var sums2 = new Array(budgetCodeClass.length);        //var sums = new Array(8);        for (var v = 0; v < sums.length; v++){            sums[v] = 0;            sums2[v] = 0;        }        //var  i = 0;        // 미리 준비한다.        var Datas = new Array();        _.each(loadedDataSources, function (array, i) {            _.each(array, function (x) {                if (i == 0) {                    var data = {                        DateTime: moment(x.DateTime).format(timeFormat),                    };                    var b = (function (data) {                        var ret;                        for (var d = 0; d < Datas.length; d++) {                            if (Datas[d].DateTime == data.DateTime) return false;                        }                        return true;                    })(data);                    if (b) {                        for (var s = 0; s < budgetCodeClass.length; s++) {                            var fieldName = budgetCodeClass[s].Name();                            data[fieldName] = 0;                            var fieldNameS = budgetCodeClass[s].Name() + "누적";                            data[fieldNameS] = 0;                        }                        Datas.push(data);                        var data2 = {                            DateTime: moment(x.DateTime).format(timeFormat),                        };                        for (var s = 0; s < budgetCodeClass.length; s++) {                            var fieldName = budgetCodeClass[s].Name() + "_B";                            data2[fieldName] = 0;                            var fieldNameS = budgetCodeClass[s].Name() + "_B누적";                            data2[fieldNameS] = 0;                        }                        Datas.push(data2);                    }                }                else                    return false;            });        });        _.each(loadedDataSources, function (array, i) {            _.each(array, function (x) {                var fieldName = budgetCodeClass[i].Name();                var fieldName2 = budgetCodeClass[i].Name() + "_B";                _.each(Datas, function (d) {                    if (d.DateTime == moment(x.DateTime).format(timeFormat)) {                        d[fieldName] += x.Value;                        d[fieldName2] += x.Value2;                    }                });                sums[i] += x.Value;                sums2[i] += x.Value2;                //barDataArray.push(data);            });        });/*        //운영비종류별 누적분계산        for (var i=0; i<Datas.length; i++)            CalcPreSum(Datas, i, presum);        var InvestTotal = 0;        _.each(InvestCost, function (c) {            InvestTotal += c.InsvestmentCost();        });        // 운영비합산 차트 준비        for (var i = 0; i < Datas.length; i++) {            Datas[i]["운영비합산"] = 0;            Datas[i]["InvestTotal"] = 0;            for (var s = 0; s < budgetCodeClass.length; s++) {                var fieldName = budgetCodeClass[s].Name();                Datas[i]["운영비합산"] += Datas[i][fieldName+"누적"];            }            Datas[i]["InvestTotal"] = InvestTotal;        }        _.each(Datas, function (x) {            barDataArray.push(x);            if (x.DateTime == lastMonth)            {                pieDataArray.push({                    FuelTypeName: "고정비",                    Value: x["InvestTotal"]                });                pieDataArray.push({                    FuelTypeName: "운영비",                    Value: x["운영비합산"]                });            }        });*/        _.each(Datas, function (x) {            barDataArray.push(x);        });    }    function CalcPreSum(Data, i, presum) {        for (var n=0; n <= i; n++)        {            for (var s = 0; s < budgetCodeClass.length; s++) {                var fieldName = budgetCodeClass[s].Name();                Data[i][fieldName + "누적"] += Data[n][fieldName];                Data[i][fieldName + "누적"] += presum[s];            }        }    }    var fuelTypes = [FuelType.ELECTRICITY, FuelType.GAS, FuelType.WATER];    function loadDailyEnergyUsage(month) {    }    function loadMonthlyEnergyUsage() {        visiblePopup(true);        $("#large-indicator").dxLoadIndicator({            height: 60,            width: 60        });        var date = timeBoxForSearch.getDate(),            timeType = timeBoxForSearch.type();        var promises = [];        var param = {            SiteId: BWA.UserInfo.SiteId(),            TimeIntervalType: timeType,            StartDate: date.startDate,            EndDate: date.endDate,        };/*        promises.push(LCCViewPreSumGet.apiGet(_.extend(param)));        $.when.apply(this, promises).done(function (predata) {            var promises2 = [];            promises2.push(LCCViewGet.apiGet(_.extend(param)));            $.when.apply(this, promises2).done(function (datas) {            var pieDataArray = [];            barDataArray = [];            getChartDataFromDataSources(datas, barDataArray, pieDataArray, 'M', predata, date.endDate.getMonth() + 1);            chartBarDay().option('dataSource', barDataArray);            MakeMonthClickChart(date.endDate.getMonth()+1);            visiblePopup(false);            }).fail(function (error) {                //alert(error);                visiblePopup(false);            });        }); */        var promises2 = [];        promises2.push(LCCViewGet.apiGet(_.extend(param)));        $.when.apply(this, promises2).done(function (datas) {            var pieDataArray = [];            barDataArray = [];            getChartDataFromDataSources(datas, barDataArray, pieDataArray, 'M', null, date.endDate.getMonth() + 1);            chartBarDay().option('dataSource', barDataArray);            MakeMonthClickChart(date.endDate.getMonth() + 1);            visiblePopup(false);        }).fail(function (error) {            //alert(error);            visiblePopup(false);        });    }    function handleViewHidden() {        visiblePopup(false);        $SearchView.visibleObservable(false); // hcLee 2015 03 23        //hideOverlay();        //    var dataGrid = $('#gridContainer').dxDataGrid('instance');        //    dataGrid.clearSelection();    }    function handleViewShowing() {    }    function refreshList() {        //dataSource.pageIndex(0);        //dataSource.load();    }    var viewModel = $.extend(BWA.CommonView.create(params, viewInfo, searchViewOptions, ko.observable(null), handleViewShown, null, handleSearchInSearchView), {        refreshList: refreshList,        viewShowing: handleViewShowing,    });    viewModel.timeBoxForSearch = timeBoxForSearch;    viewModel.popupOptions = {        width: 300,        height: 100,        contentTemplate: "info",        showTitle: false,        title: "메세지",        visible: visiblePopup,        dragEnabled: false,        shading: false,        closeOnOutsideClick: false    };    return viewModel;};
 |