BemsWebApplication.FacilityOperationReport = function (params, viewInfo) { "use strict"; var initialized = false, shouldReload = false, datagrid = null, currentTabIndex = ko.observable(0), facilityViewModel = new BWA.CmFacilityViewModel(), dataSource; var m_Facility; var multiViewItems = [{ template: 'mainCharts' }, { template: 'subCharts' } ]; var searchDeferred = new $.Deferred(); var facilityClassDataSource = BemsWebApplication.db.createDataSource('FmsFacilityCodeClass'); var facilityTypeDataSource = BemsWebApplication.db.createDataSource('BemsFacilityType'); var facilityTypes = ko.observableArray(); var facilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()]; var defaultSearchClassArray = $SearchView.createDefaultArray('FacilityClassId'); var facilityDataSource = BWA.db.createDataSource('CmFacility'), facilitiesForSearch = ko.observableArray(), facilityCodeForSearch = ko.observable(0); //var deferredForSearch = new $.Deferred(); var searchFacilityClasses = [ko.observableArray(), ko.observableArray(), ko.observableArray()], searchFacilityClassValues = [ko.observable(), ko.observable(), ko.observable()], searchFacilityClassValuesLast = [ko.observable(), ko.observable(), ko.observable()]; var selectedFacilityDataInSearchParentPopup = ko.observable(); selectedFacilityDataInSearchParentPopup.subscribe(function (value) { viewModel.dataModel.ParentFacilityCode(value.FacilityCode); viewModel.dataModel.ParentFacilityName(value.Name); }); var visiblePopup = ko.observable(false); var dataCalorie = ko.observableArray(), dataAtfw = ko.observableArray(), dataTemperatureCalorie = ko.observableArray(), dataTemperatureElectricity = ko.observableArray() ; var runtimeGet = new BWA.Chart.PointHistory_RunTimeGet(BWA.UserInfo.SiteId()); var timeBoxForSearch = BWA.SearchView.createDateTimeBox($G.TimeTypesForMonthOnly, 'startThisYear'); var chartDay = BWA.Chart.Instance('chartDay', 'dxChart'); var chartMonth = BWA.Chart.Instance('chartMonth', 'dxChart'); var chartLayout = new BWA.ChartLayout({ divs: [{ id: 'day', chartId: 'chartDay' }, { id: 'month', chartId: 'chartMonth' } ], multiViewOptions: { viewIndex: currentTabIndex, viewCount: 1 } }); /* var m = moment(); dataCalorie([ { DateTime: new Date(m.year(), m.month(), 1), Value: 50 }, { DateTime: new Date(m.year(), m.month(), 2), Value: 50 }, { DateTime: new Date(m.year(), m.month(), 3), Value: 60 }, { DateTime: new Date(m.year(), m.month(), 4), Value: 80 }, { DateTime: new Date(m.year(), m.month(), 5), Value: 100 }, { DateTime: new Date(m.year(), m.month(), 6), Value: 40, }, { DateTime: new Date(m.year(), m.month(), 7), Value: 120 }, { DateTime: new Date(m.year(), m.month(), 31), Value: 120 } ]);*/ // 추가 2015 04 20 hcLee -> var CODE = $Code, FuelType = CODE.FuelType, FT = CODE.FacilityType, FC = CODE.FacilityCode, F = CODE.Formula, TIT = CODE.TimeIntervalType; // 추가 2015 04 20 hcLee <- //dataMonthForBar(dataDayForBar()); //dataDayForPie([ // { FuelTypeName: '전기', Value: 320 }, // { FuelTypeName: '가스', Value: 350 }, // { FuelTypeName: '수도', Value: 360 }, //]); //dataMonthForPie(dataDayForPie()); function handleMonthBarPointClick(clickedPoint) { var month = clickedPoint.originalArgument; //alert(month.length); var year = month.substr(0, 4); var month = (month.length == 11) ? month.substr(8, 2) : month.substr(8, 1); //alert(year); //alert(month); //return; loadDailyEnergyUsage(year,month); console.log(month); } function loadDailyEnergyUsage(year,month) { if (m_Facility == null) return; var f = m_Facility.toJS(); facilityViewModel.fromJS(f); visiblePopup(true); var startDate, endDate; var monthMoment; if (_.isUndefined(month)) { monthMoment = moment(year); } else { monthMoment = moment(year).month(month - 1); } startDate = monthMoment.startOf('month'); endDate = monthMoment.clone().endOf('month'); var promises = []; var p = runtimeGet.apiGet({ //FacilityTypeId: f.FacilityTypeId, FacilityCode: f.FacilityCode, TimeIntervalType: TIT.DAY, StartDate: startDate, EndDate: endDate }); promises.push(p); promises.push(BemsWebApplication.api.get('BemsMonitoringPointHistory/FacilityCostRunTime', { SiteId: BWA.UserInfo.SiteId(), FacilityCode: f.FacilityCode, TimeIntervalType: TIT.DAY, StartDate: $G.dateTime(startDate), // 중요 2016 04 26 EndDate: $G.dateTime(endDate) // 중요 2016 04 26 })); $.when.apply(this, promises).done(function (sw, cost) { var barDataArray = []; //var pieDataArray = []; //getChartDataFromDataSources(arguments, barDataArray, pieDataArray, 'D'); _.each(sw[0][0], function (x) { barDataArray.push({ DateTime: moment(x.DateTime).format('D'), rt: x.Value }); }); _.each(cost[0], function (x) { barDataArray.push({ DateTime: moment(x.DateTime).format('D'), cost: Math.round(x.Value) }); }); /* var remainDate = _.range(moment().date(), moment().endOf('month').date() + 1); _.each(remainDate, function (date) { barDataArray.push({ DateTime: date, rt : 0, }); });*/ //console.log(barDataArray); //2015 11 23 차트 다시 그리지 않는 문제 //chartDay().option('dataSource', barDataArray); 대신 아래3줄로 변경 var options = BWA.ChartOptions.FacilityRuntime.getChartDayOptions($Code.TimeType.DAY); options.dataSource = barDataArray; chartDay().option(options); $('#st1').text(year + '년 ' + month + '월 가동시간 ' + ' : ' + f.Name); $('#st2').text('월별 가동시간 ' + ' : ' + f.Name); /*$('#st1').text(monthMoment._d.getMonth() + 1 + '월 TOE환산 에너지 사용 현황'); $('#st2').text(monthMoment._d.getMonth() + 1 + '월 TOE환산 에너지 전체 사용량 비율'); $('#st3').text(monthMoment._d.getMonth() + 1 + '월 TOE환산 에너지 사용량'); $('#st4').text(new Date().getFullYear() + '년 TOE환산 에너지 사용 현황'); $('#st5').text(new Date().getFullYear() + '년 TOE환산 에너지 전체 사용량 비율'); $('#st6').text(new Date().getFullYear() + '년 TOE환산 에너지 사용량');*/ visiblePopup(false); }).fail(function (error) { //alert(error); visiblePopup(false); }); } function handleViewShown() { if (initialized === false) { var chartOption = BWA.ChartOptions.FacilityRuntime; chartDay = chartDay(chartOption.getChartDayOptions($Code.TimeType.DAY)); //chartMonth = chartMonth(chartOption.getChartMonthOptions($Code.TimeType.MONTH)); chartMonth = chartMonth(chartOption.getChartMonthOptions($Code.TimeType.MONTH, handleMonthBarPointClick)); initialized = true; } facilityClassDataSource.filter([ ['SiteId', '=', BWA.UserInfo.SiteId()], 'and', ['ParentFacilityClassId', '=', null] ]); facilityTypeDataSource.filter([ ['FacilityTypeId', '<', 99], //'and', //['ContractType', '>', 0] ]); // 빌딩 데이터 로드 시점 $.when(facilityClassDataSource.load(), //buildingDataSource.load(), facilityTypeDataSource.load() //).done(function (result1, result2, result3) { ).done(function (result1, result2) { facilityClasses[0](result1[0]); searchFacilityClasses[0](defaultSearchClassArray.slice(0).concat(result1[0])); searchFacilityClassValues[0](0); //searchFacilityClasses[0](defaultSearchClassArray.slice(0)); initializeSearchClasses(); //buildings(result2[0]); //searchBuildings(defaultSearchBuildingArray.slice(0).concat(result2[0])); //searchFloors(defaultSearchFloorArray.slice(0)); facilityTypes(result2[0]); searchDeferred.resolve(); }); /* var eq = BWA.DataUtil.constructEqualFilter; facilityDataSource.filter([ eq('SiteId', BWA.UserInfo.SiteId()), ]); facilityDataSource.load().done(function (facilities) { facilitiesForSearch(facilities); if (_.isEmpty(facilities) === false) { var f = facilities[0]; handleSelectedFacilityInSearchView(f); handleSearchInSearchView(); var datagrid = $('#FacilityDataGridViewInSearchView').dxDataGrid('instance'); if (_.has(datagrid, 'selectRows')) { datagrid.selectRows(f); } } });*/ } if (shouldReload) { //shouldReload = false; //dataSource.pageIndex(0); //dataSource.load(); } function handleViewHidden() { var paging = BWA.ChartLayout.Paging; paging.sideOverlayVisible(false); $SearchView.visibleObservable(false); // hcLee 2015 03 23 visiblePopup(false); } function handleViewShowing() { } function refreshList() { //dataSource.pageIndex(0); //dataSource.load(); } function ReSetSearchList() { if (searchFacilityClassValues[0]() == null || searchFacilityClassValues[1]() == null || searchFacilityClassValues[2]() == null) return; if (searchFacilityClassValuesLast[0]() == searchFacilityClassValues[0]() && searchFacilityClassValuesLast[1]() == searchFacilityClassValues[1]() && searchFacilityClassValuesLast[2]() == searchFacilityClassValues[2]()) return; searchFacilityClassValuesLast[0](searchFacilityClassValues[0]()); searchFacilityClassValuesLast[1](searchFacilityClassValues[1]()); searchFacilityClassValuesLast[2](searchFacilityClassValues[2]()); var filterA = []; var eq = BWA.DataUtil.constructEqualFilter; filterA.push(eq('SiteId', BWA.UserInfo.SiteId())); filterA.push(['ContractType', '>', 0]); if (searchFacilityClassValues[0]() != 0) { filterA.push(eq('FirstClassId', searchFacilityClassValues[0]())); } if (searchFacilityClassValues[1]() != 0) { filterA.push(eq('SecondClassId', searchFacilityClassValues[1]())); } if (searchFacilityClassValues[2]() != 0) { filterA.push(eq('ThirdClassId', searchFacilityClassValues[2]())); } facilityDataSource.filter(filterA); facilityDataSource.load().done(function (facilities) { facilitiesForSearch(facilities); if (_.isEmpty(facilities) === false) { var f = facilities[0]; handleSelectedFacilityInSearchView(f); handleSearchInSearchView(); var datagrid = $('#FacilityDataGridViewInSearchView').dxDataGrid('instance'); if (_.has(datagrid, 'selectRows')) { datagrid.selectRows(f); } } }); } var handleFirstClassChangedValueInSearchView = function (e) { if (e.value === 0) { initializeSearchClasses(); return; } BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, searchFacilityClasses[1], defaultSearchClassArray); searchFacilityClassValues[1](0); ReSetSearchList(); }; var handleSecondClassChangedValueInSearchView = function (e) { if (e.value === 0) { initializeSearchClasses(true); return; } BWA.DataUtil.setArrayDataSourceFilter(facilityClassDataSource, 'ParentFacilityClassId', e.value, searchFacilityClasses[2], defaultSearchClassArray); searchFacilityClassValues[2](0); ReSetSearchList(); }; var handleThirdClassChangedValueInSearchView = function (e) { /*if (e.value === 0) { return; }*/ ReSetSearchList(); }; function initializeSearchClasses(onlyThird) { if (onlyThird === undefined || onlyThird === false) { searchFacilityClasses[1](defaultSearchClassArray.slice(0)); searchFacilityClassValues[1](0); } searchFacilityClasses[2](defaultSearchClassArray.slice(0)); searchFacilityClassValues[2](0); ReSetSearchList(); } var searchViewOptions = { searchViewItems: [ { id: 'FirstClassId', ignoreValue: 0, defaultValue: 0, value: searchFacilityClassValues[0], dataSource: searchFacilityClasses[0], handleChangedValue: handleFirstClassChangedValueInSearchView }, { id: 'SecondClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: searchFacilityClassValues[1], dataSource: searchFacilityClasses[1], handleChangedValue: handleSecondClassChangedValueInSearchView }, { id: 'ThirdClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: searchFacilityClassValues[2], dataSource: searchFacilityClasses[2], handleChangedValue: handleThirdClassChangedValueInSearchView }, { id: 'FacilityCode', ignoreValue: 0, defaultValue: 0, value: facilityCodeForSearch, dataSource: facilitiesForSearch }, ], promiseDataInSearchView: searchDeferred.promise() }; function handleSelectedFacilityInSearchView(facility) { m_Facility = facility; return; } function handleSearchInSearchView(filter, searchViewItems) { if (m_Facility == null) return; //alert(m_Facility.Name()); var f = m_Facility.toJS(); facilityViewModel.fromJS(f); //var timeIntervalType = $Code.TimeIntervalType.QUARTERMIN; var timeIntervalType = timeBoxForSearch.type(); var formula = $Code.Formula[$Code.FacilityType.WATER_H]; var formulaIds = _.values(formula); var date = timeBoxForSearch.getDate(); //utils.toast.displayTime=1000000; //utils.toast.show('공조기 성능분석 중 입니다. 잠시만 기다려 주세요'); visiblePopup(true); // var startDate = moment(). var promises = []; var p = runtimeGet.apiGet({ //FacilityTypeId: f.FacilityTypeId, FacilityCode: f.FacilityCode, TimeIntervalType: timeIntervalType, StartDate: date.startDate, EndDate: date.endDate }); promises.push(p); promises.push(BemsWebApplication.api.get('BemsMonitoringPointHistory/FacilityCostRunTime', { SiteId:BWA.UserInfo.SiteId(), FacilityCode: f.FacilityCode, TimeIntervalType: timeIntervalType, StartDate: $G.dateTime(date.startDate), // 중요 2016 04 26 EndDate: $G.dateTime(date.endDate) // 중요 2016 04 26 })); //BemsWebApplication.api.get('AvailableDueDate/GetAvailableDueDate', commonParameters).done(function (values) { $.when.apply(this, promises).done(function (sw, cost) { //var sw = sw[0]; //var cost = cost[0]; var MonthDataArray = []; _.each(sw[0][0], function (x) { MonthDataArray.push({ DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()), //DateTime: moment(x.DateTime).format('M'), rt: x.Value }); }); _.each(cost[0], function (x) { MonthDataArray.push({ DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()), //DateTime: moment(x.DateTime).format('M'), cost: Math.round(x.Value) }); }); //var options = BWA.ChartOptions.FacilityRuntime.getChartMonthOptions(timeBoxForSearch.type(), handleMonthBarPointClick); //options.dataSource = MonthDataArray; //chartMonth().option(options); //2015 11 23 차트 다시 그리지 않는 문제 //chartMonth().option('dataSource', MonthDataArray); 대신 아래3줄로 변경 var options = BWA.ChartOptions.FacilityRuntime.getChartMonthOptions($Code.TimeType.MONTH, handleMonthBarPointClick); options.dataSource = MonthDataArray; chartMonth().option(options); loadDailyEnergyUsage(date.endDate.getFullYear().toString(), (date.endDate.getMonth() + 1).toString()); //loadDailyEnergyUsage("2015", "11"); //hw = hw[0]; // chart 1 /* var EffiDataArray = []; _.each(sw, function (x) { EffiDataArray.push({ DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()), sw: x.Value }); }); _.each(hw, function (x) { EffiDataArray.push({ DateTime: BWA.Chart.getCustermTimeArgumentAxisString(timeBoxForSearch.type(), moment(x.DateTime).toDate()), hw: x.Value }); }); var options = BWA.ChartOptions.WaterHAnalysis.getChartEffiOptions(timeBoxForSearch.type()); options.dataSource = EffiDataArray; chartEffi().option(options); */ //visiblePopup(false); }) .fail(function (error) { //alert(error); visiblePopup(false); }); } var viewModel = $.extend(BWA.CommonView.create( params, viewInfo, searchViewOptions, ko.observable(null), //params, viewInfo, null, ko.observable(null), handleViewShown, null, handleSearchInSearchView, undefined, chartLayout), { // facility: facilityViewModel, refreshList: refreshList, viewHidden: handleViewHidden, // hcLee 2015 06 03 viewShowing: handleViewShowing, /* searchViewItems: [ { id: 'FirstClassId', ignoreValue: 0, defaultValue: 0, value: searchFacilityClassValues[0], dataSource: searchFacilityClasses[0], handleChangedValue: handleFirstClassChangedValueInSearchView }, { id: 'SecondClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: searchFacilityClassValues[1], dataSource: searchFacilityClasses[1], handleChangedValue: handleSecondClassChangedValueInSearchView }, { id: 'ThirdClassId', ignoreValue: 0, defaultValue: 0, withCheckId: 'FirstClassId', value: searchFacilityClassValues[2], dataSource: searchFacilityClasses[2] }, { id: 'FacilityCode', ignoreValue: 0, defaultValue: 0, value: facilityCodeForSearch, dataSource: facilitiesForSearch }, ], promiseDataInSearchView: searchDeferred.promise(),*/ scrolling: { mode: 'infinite' }, FacilityDataGridOptions: { dataSource: facilitiesForSearch, columns: [ { dataField: 'Name', caption: $G('facilityName'), width: '100%', alignment: 'left' } ], filterRow: { visible: true, showOperationChooser: false }, selection: { mode: 'single' }, rowClick: function (clickRow) { handleSelectedFacilityInSearchView(clickRow.data); } }, contentReadyAction: function (e) { datagrid = e.component; } }); /* viewModel.popupOptions = { width: 300, height: 100, contentTemplate: "info", showTitle: false, title: "메세지", visible: visiblePopup, dragEnabled: false, shading: false, closeOnOutsideClick: false }; */ //viewModel.dataModel.MainContactorUserName = $KoSet(viewModel.dataModel.MainContactorUserName, ''); //viewModel.dataModel.SubContactorUserName = $KoSet(viewModel.dataModel.SubContactorUserName, ''); //viewModel.dataModel.ParentFacilityName = $KoSet(viewModel.dataModel.ParentFacilityName, ''); viewModel.facilityTypes = facilityTypes; //viewModel.dataModel.ClassName = ko.observable(); viewModel.facilityClasses = facilityClasses; viewModel.searchFacilityClasses = searchFacilityClasses; viewModel.facilitySearchPopup = BWA.Popup.Facility.create(viewModel, selectedFacilityDataInSearchParentPopup); viewModel.timeBoxForSearch = timeBoxForSearch; viewModel.currentTabIndex = currentTabIndex; viewModel.multiViewItems = [{ facility: facilityViewModel, template: 'mainCharts' }, { template: 'subCharts' } ]; $HourGlassPopup(viewModel, visiblePopup); return viewModel; };