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