BemsWebApplication.LCCView = 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('chartPieDayLCCView', 'dxPieChart'), chartBarDay = BWA.Chart.Instance('chartBarDayLCCView', 'dxChart'), chartPieMonth = BWA.Chart.Instance('chartPieMonthLCCView', 'dxPieChart'), chartBarMonth = BWA.Chart.Instance('chartBarMonthLCCView', '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 = []; //alert(serviceType[0].Name); chartPieDay().option('dataSource', pieDataArray); //loadDailyEnergyUsage(month); _.each(barDataArray, function (d) { if (d.DateTime == month) { for (var s = 0; s < budgetCodeClass.length; s++) { var fieldName = budgetCodeClass[s].Name(); //data[fieldName] = 0; pieDataArray.push({ FuelTypeName: budgetCodeClass[s].Name(), Value: d[fieldName] }) } chartPieDay().option('dataSource', pieDataArray); $('#st2').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.LCCView.MakeSeries(budgetCodeClass); chartPieDay = chartPieDay(BWA.ChartOptions.LCCView.getPieChartDayOptions()); chartBarDay = chartBarDay(BWA.ChartOptions.LCCView.getBarChartDayOptions(handleMonthBarPointClick)); chartPieMonth = chartPieMonth(BWA.ChartOptions.LCCView.getPieChartMonthOptions()); chartBarMonth = chartBarMonth(BWA.ChartOptions.LCCView.getBarChartMonthOptions()); handleSearchInSearchView(); }); initialized = true; } } function handleSearchInSearchView() { visiblePopup(true); InvestCostDataSource.load().done(function (Costs) { InvestCost = Costs; loadMonthlyEnergyUsage(); }); } function getChartDataFromDataSources(loadedDataSources, barDataArray, pieDataArray, timeFormat, presum, lastMonth) { var sums = new Array(budgetCodeClass.length); //var sums = new Array(8); for (var v = 0; v < sums.length; v++) sums[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); } } else return false; }); }); _.each(loadedDataSources, function (array, i) { _.each(array, function (x) { var fieldName = budgetCodeClass[i].Name(); _.each(Datas, function (d) { if (d.DateTime == moment(x.DateTime).format(timeFormat)) { d[fieldName] += x.Value; } }); sums[i] += x.Value; //barDataArray.push(data); }); }); //운영비종류별 누적분계산 for (var i=0; i