BemsWebApplication.DailyReport = function (params, viewInfo) { 'use strict'; var CmBusinessFieldDataSource = BemsWebApplication.db.createDataSource('CmBusinessField'); var CmUserDataSource = BemsWebApplication.db.createDataSource('CmUser'); var SiteId = BWA.UserInfo.SiteId(); var ELECTRICITY = $Code.FacilityType.ELECTRICITY; var GAS = $Code.FacilityType.GAS; var style = 'class="jh-width-2-10 jh-multi-line-item" style="width:231px;height:35px;text-align:right"'; var colorstyle = 'class="jh-width-2-10 jh-multi-line-item" style="width:231px;height:35px;background-color:#FFFFCC;text-align:right"'; var borderstyle = "1px solid #CCCCCC"; var endpointSelector = ""; if (BemsWebApplication.config.mode == "production") { endpointSelector = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints).config.db.production; } else { endpointSelector = new DevExpress.EndpointSelector(BemsWebApplication.config.endpoints).config.db.local; } var isVisibleApproalButton = ko.observable(false); var Datecnt = 0, changeDate = false; var WATER = $Code.FacilityType.WATER; var MainFormulaId = 1; var init; var temptotalcnt = 0, temptempcnt = 0; var fuelarray = new Array(ELECTRICITY, GAS, WATER); var fueltotalarray = new Array(3); var BemsFormulaDataSource = BemsWebApplication.db.createDataSource('BemsFormula'); var BemsFormulaParameterDataSource = BemsWebApplication.db.createDataSource('BemsFormulaParameter'); var BemsMonitoringPointDataSource = BemsWebApplication.db.createDataSource('BemsMonitoringPoint'); var click = false; var BusinessFieldArray; var MaterialCodeClassDataSource = BemsWebApplication.db.createDataSource('FmsMaterialCodeClass'); var materialClass = ko.observableArray(); var materialClassForSearch = ko.observableArray(); var week = new Array('일', '월', '화', '수', '목', '금', '토'); var eq = BWA.DataUtil.constructEqualFilter, and = BWA.DataUtil.andFilter; var popupGridInfo = { 'gridContainerCommon': 'workCommon', 'gridContainerMaterialUsage': 'fmsMaterial' }; var tempseq = BemsWebApplication.config.Report.BusinessFieldSeq.Value; var tempseqEnable = BemsWebApplication.config.Report.BusinessFieldSeq.Enable; var tempApprove = BemsWebApplication.config.Report.UserSeq.Value; var tempApproveEnable = BemsWebApplication.config.Report.UserSeq.Enable; var businessFieldId = BWA.UserInfo.BusinessFieldId(); var commonbusinessFieldId; var filter = [ eq('SiteId', SiteId), ]; var dataSourceOptions = { select: [ 'SiteId', 'DailyReportId', 'Name', 'Contents', 'RegisterUserId', 'AddDate', 'ApproverUserId', 'ApproveDate', 'ApproverUserId2', 'ApproveDate2', 'ApproverUserId3', 'ApproveDate3', 'ApproverUserId4', 'ApproveDate4', 'ApproverUserId5', 'ApproveDate5', 'CmUser/Name', // 등록자 'BusinessFieldId', 'CmBusinessField/Name', 'Datas', ], expand: [ 'CmUser', 'CmBusinessField' ], extendOptions: { forceOriginalField: true }, filter: filter }; var viewModel = self.viewModel = BWA.DataGrid.createViewWithDataGrid(params, viewInfo, 'FmsDailyReport', { dataSourceOptions: dataSourceOptions, columns: [ { dataField: 'DailyReportId', caption: '번호', width: '8%', alignment: 'center', allowFiltering: false }, { dataField: 'CmBusinessField/Name', caption: $G('businessFieldName'), width: '8%', alignment: 'center', visible: false }, { dataField: 'Name', caption: '제목', width: '52%', alignment: 'center' }, { dataField: 'CmUser/Name', caption: '등록자', width: '10%', alignment: 'center' }, { dataField: 'AddDate', caption: '보고일', width: '10%', alignment: 'center', sortOrder: 'desc', customizeText: function (cellInfo) { return $G.date(cellInfo.value); } }, { dataField: 'ApproverUserId', caption: '결재자', width: '10%', alignment: 'center', visible: false }, //{ // dataField: 'ApproveDate', caption: '결재일', width: '10%', alignment: 'center', visible: false, // customizeText: function (cellInfo) { // return $G.date(cellInfo.value); // } //}, { dataField: 'ApproverUserId2', caption: '결재자2', width: '10%', alignment: 'center', visible: false }, //{ // dataField: 'ApproveDate2', caption: '결재일2', width: '10%', alignment: 'center', visible: false, // customizeText: function (cellInfo) { // return $G.date(cellInfo.value); // } //}, { dataField: 'ApproverUserId3', caption: '결재자3', width: '10%', alignment: 'center', visible: false }, //{ // dataField: 'ApproveDate3', caption: '결재일3', width: '10%', alignment: 'center', visible: false, // customizeText: function (cellInfo) { // return $G.date(cellInfo.value); // } //}, { dataField: 'ApproverUserId4', caption: '결재자4', width: '10%', alignment: 'center', visible: false }, //{ // dataField: 'ApproveDate4', caption: '결재일4', width: '10%', alignment: 'center', visible: false, // customizeText: function (cellInfo) { // return $G.date(cellInfo.value); // } //}, { dataField: 'ApproverUserId5', caption: '결재자5', width: '10%', alignment: 'center', visible: false }, //{ // dataField: 'ApproveDate5', caption: '결재일5', width: '10%', alignment: 'center', visible: false, // customizeText: function (cellInfo) { // return $G.date(cellInfo.value); // } //} ], searchViewItems: [ { id: 'Name' }, { id: 'AddDate', type: 'dateRange', isOnlyDate: true }, ], handleAfterLoadingModelByKey: function (data, dataViewModel, isNewInPopup) { }, handleDataGridRowClick: function (id, dataGrid, clickRow, popupVisible) { click = true; dataGrid.clearSelection(); var data = clickRow.data; var dataModel = viewModel.dataModel; self.businessFieldId = data.BusinessFieldId(); dataModel.DailyReportId(data.DailyReportId()); popupVisible(true); if (tempApproveEnable) { var temp = tempApprove.split(';') for (var i = 0; i < temp.length; i++) { if (temp[i] == BWA.UserInfo.UserId()) { switch (i) { case 0: if (data.ApproverUserId() == null) { isVisibleApproalButton(true); viewModel.visibleEditButton(true); } else { isVisibleApproalButton(false); viewModel.visibleEditButton(false); } break; case 1: if (data.ApproverUserId2() == null) { isVisibleApproalButton(true); viewModel.visibleEditButton(true); } else { isVisibleApproalButton(false); viewModel.visibleEditButton(false); } break; case 2: if (data.ApproverUserId3() == null) { isVisibleApproalButton(true); viewModel.visibleEditButton(true); } else { isVisibleApproalButton(false); viewModel.visibleEditButton(false); } break; case 3: if (data.ApproverUserId4() == null) { isVisibleApproalButton(true); viewModel.visibleEditButton(true); } else { isVisibleApproalButton(false); viewModel.visibleEditButton(false); } break; case 4: if (data.ApproverUserId5() == null) { isVisibleApproalButton(true); viewModel.visibleEditButton(true); } else { isVisibleApproalButton(false); viewModel.visibleEditButton(false); } break; } break; } } } else { if (data.ApproverUserId() == null) { isVisibleApproalButton(true); viewModel.visibleEditButton(true); } else { isVisibleApproalButton(false); viewModel.visibleEditButton(false); } } }, handleViewShowing: function (dataModel) { for (var i = 0; i < 3; i++) { BemsFormulaDataSource.filter([ ['SiteId', '=', SiteId], 'and', ['FacilityTypeId', '=', fuelarray[i]], 'and', ['FormulaId', '=', MainFormulaId] ]); $.when( BemsFormulaDataSource.load() ).done(function (result) { var FacilityCode = result[0].FacilityCode(); BemsFormulaParameterDataSource.filter([ ['SiteId', '=', SiteId], 'and', ['FacilityCode', '=', FacilityCode], 'and', ['FormulaId', '=', MainFormulaId] ]); $.when( BemsFormulaParameterDataSource.load() ).done(function (result1) { for (var i = 0; i < fuelarray.length; i++) { if (fuelarray[i] == result1[0].FacilityTypeId()) { fueltotalarray[i] = new Array(result1.length); break; } } var ParameterResult = new Array(result1.length); for (var i = 0; i < result1.length; i++) { ParameterResult[i] = { ParameterFacilityCode: result1[i].ParameterFacilityCode(), ParameterPropertyId: result1[i].ParameterPropertyId() } } var cnt = 0; for (var i = 0; i < result1.length; i++) { BemsMonitoringPointDataSource.filter([ ['SiteId', '=', SiteId], 'and', ['FacilityCode', '=', ParameterResult[i].ParameterFacilityCode], 'and', ['PropertyId', '=', ParameterResult[i].ParameterPropertyId] ]); $.when( BemsMonitoringPointDataSource.load() ).done(function (result3) { fueltotalarray[result3[0].FuelTypeId() - 1][cnt] = { FacilityCode: result3[0].FacilityCode(), PropertyId: result3[0].PropertyId(), Name: result3[0].Name(), FuelTypeId: result3[0].FuelTypeId(), Today: 0, Daybefore: 0, Dailyusage: 0 } cnt++ }); } }); }); } CmBusinessFieldDataSource.filter([ ['SiteId', '=', SiteId], 'and', ['IsUse', '=', true] ]); $.when( CmBusinessFieldDataSource.load() ).done(function (result) { BusinessFieldArray = new Array(result.length); commonbusinessFieldId = result[0].BusinessFieldId(); if (tempseqEnable == false) { for (var i = 0; i < result.length; i++) { BusinessFieldArray[i] = { BusinessFieldId: result[i].BusinessFieldId, BusinessFieldName: result[i].Name } } } else { var tempseqsplit = tempseq.split(';'); for (var i = 0; i < tempseqsplit.length; i++) { for (var j = 0; j < result.length; j++) { if (parseInt(tempseqsplit[i]) == result[j].BusinessFieldId()) { BusinessFieldArray[i] = { BusinessFieldId: result[j].BusinessFieldId, BusinessFieldName: result[j].Name } break; } } } } }); MaterialCodeClassDataSource.filter([ ['SiteId', '=', SiteId] ]); $.when( MaterialCodeClassDataSource.load() ).done(function (Result) { materialClass = ko.observableArray(); var cnt = 0; for (var i = 0; i < Result.length; i++) { materialClass.push(Result[i]); } materialClassForSearch($SearchView.createArrayOfSelectBox('MaterialClassId', materialClass())); }); // 계속 push되는 현상을 막기위해 필터 초기화 //dataSourceOptions.filter.splice(0, dataSourceOptions.filter.length); //dataSourceOptions.filter.push([eq('SiteId', SiteId)]); }, handlePopupShowing: function (isNewInPopup, dataViewModel) { Datecnt = 0; var $BusinessDataCommon = $('#BusinessDataCommon'); // finds the element $('#BusinessDataCommon').empty(); for (var i = 1; i < BusinessFieldArray.length; i++) { var tempworkCommon = 'workCommon' + i; popupGridInfo['gridContainerCommon' + i] = tempworkCommon; $('
' + BusinessFieldArray[i].BusinessFieldName() + " 작업관리" + '
') .appendTo($BusinessDataCommon) } var $BusinessDataMaterial = $('#BusinessDataMaterial'); // finds the element $('#BusinessDataMaterial').empty(); for (var i = 1; i < BusinessFieldArray.length; i++) { var tempfmsMaterial = 'fmsMaterial' + i; popupGridInfo['gridContainerMaterialUsage' + i] = tempfmsMaterial; $('
' + BusinessFieldArray[i].BusinessFieldName() + " 자재사용내역" + '
') .appendTo($BusinessDataMaterial) } // 신규등록인 경우 init = isNewInPopup(); if (isNewInPopup()) { isVisibleApproalButton(false); self.businessFieldId = BWA.UserInfo.BusinessFieldId(); var urlHeader = BemsWebApplication.config.endpoints.api[BemsWebApplication.config.mode]; $.get(urlHeader + '/DailyReport/CurrentDate', function (date) { var day = new Date();//var day = new Date(date); dataViewModel.RegisterDate(day); day.setDate(day.getDate() - 1); dataViewModel.AddDate(day); dataViewModel.Name("[" + new Date(day).format("yyyy-MM-dd") + " " + week[day.getDay()] + "] 일간 보고서"); dataViewModel.RegisterUserId(BWA.UserInfo.UserId()); dataViewModel.ReportUrl(''); if (tempseqEnable) dataViewModel.dataseq(tempseq); if (tempApproveEnable) { dataViewModel.Approveseq(tempApprove); dataViewModel.ApproveCnt(tempApprove.split(';').length); } loadBasicInfos(); }); } else { EnergyTableCreate(); } }, handlePopupShown: function () { setReportLink(); if (!init) { setPopupGridViewAll(); } else { EnergyDataTable(); } handlePopupShowingExtra(); }, handleViewShown: function (dataViewModel, isEditModeInPopup) { if (tempApproveEnable) { var temp = tempApprove.split(';') for (var i = 2; i <= temp.length; i++) { $("#gridContainer").dxDataGrid("columnOption", "ApproverUserId" + i, "visible", true); } } $("#gridContainer").dxDataGrid("columnOption", "ApproverUserId", "visible", true); viewModel.refreshList(); }, handleCancelInPopup: function (dataModel) { for (var i = 1; i <= temptempcnt; i++) { for (var j = 1; j <= 5; j++) { document.getElementById("viewmode" + i + j).style.display = "inline-block"; } } for (var i = 1; i <= temptotalcnt; i++) { for (var j = 1; j <= 5; j++) { document.getElementById("vitotal" + i + j).style.display = "inline-block"; } } for (var i = 1; i <= temptempcnt; i++) { for (var j = 1; j <= 5; j++) { document.getElementById("editmode" + i + j).style.display = "none"; } } for (var i = 1; i <= temptotalcnt; i++) { for (var j = 1; j <= 5; j++) { document.getElementById("edtotal" + i + j).style.display = "none"; } } }, handlePopupButtonEdit: function (dataModel) { //document.getElementById("Viewdate").style.display = "inline-block"; //document.getElementById("Editdate").style.display = "none"; for (var i = 1; i <= temptempcnt; i++) { for (var j = 1; j <= 5; j++) { document.getElementById("viewmode" + i + j).style.display = "none"; } } for (var i = 1; i <= temptotalcnt; i++) { for (var j = 1; j <= 5; j++) { document.getElementById("vitotal" + i + j).style.display = "none"; } } for (var i = 1; i <= temptempcnt; i++) { for (var j = 1; j <= 5; j++) { document.getElementById("editmode" + i + j).style.display = "inline-block"; } } for (var i = 1; i <= temptotalcnt; i++) { for (var j = 1; j <= 5; j++) { document.getElementById("edtotal" + i + j).style.display = "inline-block"; } } }, getAddedToolbarItemsInPopup: function (e) { return [ { location: 'after', widget: 'button', options: { text: '결재', icon: 'add', type: 'success', visible: isVisibleApproalButton, clickAction: Approve } }]; }, popupWidth: '1200px' }); function Approve() { if (tempApproveEnable) { var temp = tempApprove.split(';') for (var i = 0; i < temp.length; i++) { if (temp[i] == BWA.UserInfo.UserId()) { switch (i) { case 0: viewModel.dataModel.ApproverUserId(BWA.UserInfo.Name()); viewModel.dataModel.ApproveDate(new Date()); break; case 1: if (viewModel.dataModel.ApproverUserId() == null) { utils.toast.show("결재가 실패하였습니다. 선행결재가 필요합니다.", "error"); return; } else { viewModel.dataModel.ApproverUserId2(BWA.UserInfo.Name()); viewModel.dataModel.ApproveDate2(new Date()); } break; case 2: if (viewModel.dataModel.ApproverUserId2() == null) { utils.toast.show("결재가 실패하였습니다. 선행결재가 필요합니다.", "error"); return; } else { viewModel.dataModel.ApproverUserId3(BWA.UserInfo.Name()); viewModel.dataModel.ApproveDate3(new Date()); } break; case 3: if (viewModel.dataModel.ApproverUserId3() == null) { utils.toast.show("결재가 실패하였습니다. 선행결재가 필요합니다.", "error"); return; } else { viewModel.dataModel.ApproverUserId4(BWA.UserInfo.Name()); viewModel.dataModel.ApproveDate4(new Date()); } break; case 4: if (viewModel.dataModel.ApproverUserId4() == null) { utils.toast.show("결재가 실패하였습니다. 선행결재가 필요합니다.", "error"); return; } else { viewModel.dataModel.ApproverUserId5(BWA.UserInfo.Name()); viewModel.dataModel.ApproveDate5(new Date()); } break; } var keys = BWA.db.extractKeysObject('FmsDailyReport', viewModel.dataModel); BWA.db.FmsDailyReport.update(keys, viewModel.dataModel.toJS()).done(function (res) { utils.toast.show("성공적으로 결재가 진행되었습니다."); viewModel.popupOptions.visible(false); viewModel.gridView().refresh(); }).fail(function (error) { utils.toast.show("결재가 실패하였습니다.", "error"); }); } } } else { viewModel.dataModel.ApproverUserId(BWA.UserInfo.Name()); viewModel.dataModel.ApproveDate(new Date()); var keys = BWA.db.extractKeysObject('FmsDailyReport', viewModel.dataModel); BWA.db.FmsDailyReport.update(keys, viewModel.dataModel.toJS()).done(function (res) { utils.toast.show("성공적으로 결재가 진행되었습니다."); viewModel.popupOptions.visible(false); viewModel.gridView().refresh(); }).fail(function (error) { utils.toast.show("결재가 실패하였습니다.", "error"); }); } } function DateChange(e) { if (e.value != null) { if (init) { if (Datecnt != 0) { changeDate = true; var $BusinessDataCommon = $('#BusinessDataCommon'); // finds the element $('#BusinessDataCommon').empty(); for (var i = 1; i < BusinessFieldArray.length; i++) { var tempworkCommon = 'workCommon' + i; popupGridInfo['gridContainerCommon' + i] = tempworkCommon; $('
' + BusinessFieldArray[i].BusinessFieldName() + " 작업관리" + '
') .appendTo($BusinessDataCommon) } var $BusinessDataMaterial = $('#BusinessDataMaterial'); // finds the element $('#BusinessDataMaterial').empty(); for (var i = 1; i < BusinessFieldArray.length; i++) { var tempfmsMaterial = 'fmsMaterial' + i; popupGridInfo['gridContainerMaterialUsage' + i] = tempfmsMaterial; $('
' + BusinessFieldArray[i].BusinessFieldName() + " 자재사용내역" + '
') .appendTo($BusinessDataMaterial) } self.businessFieldId = BWA.UserInfo.BusinessFieldId(); var urlHeader = BemsWebApplication.config.endpoints.api[BemsWebApplication.config.mode]; $.get(urlHeader + '/DailyReport/CurrentDate', function (date) { viewModel.dataModel.AddDate(new Date(e.value)); viewModel.dataModel.Name("[" + new Date(e.value).format("yyyy-MM-dd") + " " + week[e.value.getDay()] + "] 일간 보고서"); viewModel.dataModel.RegisterUserId(BWA.UserInfo.UserId()); viewModel.dataModel.ReportUrl(''); loadBasicInfos(); }); Datecnt = 0; } Datecnt++; } } } function EnergyTableCreate() { var totalcnt = 0, tempcnt = 0; var Name = "", FuelId = 0; var totaladd = false; var dataModel = viewModel.dataModel; for (var i = 0; i < 2; i++) { tempcnt += fueltotalarray[i].length; } var $EnergyData = $('#EnergyData'); $('#EnergyData').empty(); for (var i = 1; i <= tempcnt; i++) { if (i <= fueltotalarray[0].length) { var Name = fueltotalarray[0][i - 1].Name; var FuelId = fueltotalarray[0][i - 1].FuelTypeId; if (i == fueltotalarray[0].length) totaladd = true; } else { var Name = fueltotalarray[1][i - 3].Name; var FuelId = fueltotalarray[1][i - 3].FuelTypeId; if (i == fueltotalarray[0].length + fueltotalarray[1].length) totaladd = true; } var FuelName = ""; var UnitName = ""; switch (FuelId) { case 1: FuelName = "전력"; UnitName = "(kwh)"; break; case 2: FuelName = "가스"; UnitName = "(m3)"; break; case 3: FuelName = "상수도"; break; } //수정 창 $('
' + Name + '
' + //dataModel.resultEnergy' + i + '.Today '
' + //dataModel.resultEnergy' + i + '.Daybefore} '
' +// dataModel.resultEnergy' + i + '.Dailyusage '
')//dataModel.resultEnergy' + i + '.Monthusage .appendTo($EnergyData) //보는창 $('
' + Name + '
' + '
' + '
' + '
') .appendTo($EnergyData) dataModel['resultEnergy' + i + 'Name'](Name); dataModel['resultEnergy' + i + 'Today'](0); dataModel['resultEnergy' + i + 'Daybefore'](0); dataModel['resultEnergy' + i + 'Dailyusage'](0); dataModel['resultEnergy' + i + 'Monthusage'](0); if (i == tempcnt) { for (var j = tempcnt + 1; j <= 9; j++) { dataModel['resultEnergy' + j + 'Name'](""); dataModel['resultEnergy' + j + 'Today'](0); dataModel['resultEnergy' + j + 'Daybefore'](0); dataModel['resultEnergy' + j + 'Dailyusage'](0); dataModel['resultEnergy' + j + 'Monthusage'](0); } } if (totaladd == true) { totalcnt++; //수정창 $('
' + FuelName + " 합계" + UnitName + '
' + '
' + '
' + '
') .appendTo($EnergyData) //보는창 $('
' + FuelName + " 합계" + UnitName + '
' + '
' + '
' + '
') .appendTo($EnergyData) totaladd = false; dataModel['resultEnergytotal' + totalcnt + 'Name'](FuelName + " 합계" + UnitName); dataModel['resultEnergytotal' + totalcnt + 'Today'](0); dataModel['resultEnergytotal' + totalcnt + 'Daybefore'](0); dataModel['resultEnergytotal' + totalcnt + 'Dailyusage'](0); dataModel['resultEnergytotal' + totalcnt + 'Monthusage'](0); } if (i == tempcnt && fueltotalarray[2].length != 0) { totalcnt++; //수정창 $('
' + "상수도 합계(m3)" + '
' + '
' + '
' + '
') .appendTo($EnergyData) //보는창 $('
' + "상수도 합계(m3)" + '
' + '
' + '
' + '
') .appendTo($EnergyData) dataModel['resultEnergytotal' + totalcnt + 'Name']("상수도 합계(m3)"); dataModel['resultEnergytotal' + totalcnt + 'Today'](0); dataModel['resultEnergytotal' + totalcnt + 'Daybefore'](0); dataModel['resultEnergytotal' + totalcnt + 'Dailyusage'](0); dataModel['resultEnergytotal' + totalcnt + 'Monthusage'](0); } } temptempcnt = tempcnt; temptotalcnt = totalcnt; var cnt = tempcnt + totalcnt - 1; document.getElementById("EnergyDataup3").style.height = 109 + (cnt * 35) + "px"; document.getElementById("EnergyDataup2").style.height = 72 + (cnt * 35) + "px"; document.getElementById("EnergyDataup1").style.height = 36 + (cnt * 35) + "px"; document.getElementById("EnergyData").style.height = 36 + (cnt * 35) + "px"; for (var i = 1; i <= tempcnt; i++) { for (var j = 1; j <= 5; j++) { document.getElementById("editmode" + i + j).style.border = borderstyle; ko.applyBindings(viewModel, $("#editmode" + i + j)[0]); document.getElementById("viewmode" + i + j).style.border = borderstyle; ko.applyBindings(viewModel, $("#viewmode" + i + j)[0]); } } for (var i = 1; i <= totalcnt; i++) { for (var j = 1; j <= 5; j++) { document.getElementById("edtotal" + i + j).style.border = borderstyle; ko.applyBindings(viewModel, $("#edtotal" + i + j)[0]); document.getElementById("vitotal" + i + j).style.border = borderstyle; ko.applyBindings(viewModel, $("#vitotal" + i + j)[0]); } } if (click) { for (var i = 1; i <= temptempcnt; i++) { for (var j = 1; j <= 5; j++) { document.getElementById("editmode" + i + j).style.display = "none"; } } for (var i = 1; i <= totalcnt; i++) { for (var j = 1; j <= 5; j++) { document.getElementById("edtotal" + i + j).style.display = "none"; } } click = false; } else { for (var i = 1; i <= temptempcnt; i++) { for (var j = 1; j <= 5; j++) { document.getElementById("viewmode" + i + j).style.display = "none"; } } for (var i = 1; i <= totalcnt; i++) { for (var j = 1; j <= 5; j++) { document.getElementById("vitotal" + i + j).style.display = "none"; } } click = false; for (var i = 1; i < 4; i++) { dataModel['resultEnergytotal' + i + 'Today'](0); dataModel['resultEnergytotal' + i + 'Daybefore'](0); dataModel['resultEnergytotal' + i + 'Dailyusage'](0); dataModel['resultEnergytotal' + i + 'Monthusage'](0); } } if (changeDate) { setReportLink(); EnergyDataTable(); handlePopupShowingExtra(); changeDate = false; } } function setReportLink() { var addDate = $G.date(viewModel.dataModel.AddDate()); var urlHeader = BemsWebApplication.config.endpoints.service[BemsWebApplication.config.mode]; var reportUrl = urlHeader + '/Report/DailyReportView.aspx?SiteId=' + SiteId + '&AddDate=' + addDate + '&BusinessFieldId=' + self.businessFieldId; viewModel.dataModel.ReportUrl(reportUrl); } function handlePopupShowingExtra() { // 메뉴 접기 기능 $('.fold_btn').unbind('click'); $('.fold_btn').click(function () { $(this).siblings('.act_folding').slideToggle(); $(this).siblings().find('.act_folding').slideToggle(); }); // 마우스 휠 이벤트 $('.cw-wordwrap, .dx-popup-content').unbind('dxmousewheel'); $('.cw-wordwrap, .dx-popup-content').on("dxmousewheel", function (e) { e.stopPropagation(); }); } function initCap(str) { var str = str.substring(0, 1).toUpperCase() + str.substring(1, str.length); return str; } function makeUrl(SiteId, businessFieldId) { var AddDate = $G.date(viewModel.dataModel.AddDate()); var urlHeader = BemsWebApplication.config.endpoints.api[BemsWebApplication.config.mode]; var url = { workStatus: urlHeader + '/DailyReport/WorkStatus?&SiteId=' + SiteId + '&addDate=' + AddDate + '&BusinessFieldId=' + businessFieldId, workCommon: urlHeader + '/DailyReport/FmsWorkRequestForDailyReport?&SiteId=' + SiteId + '&addDate=' + AddDate + '&BusinessFieldId=' + businessFieldId, fmsMaterial: urlHeader + '/DailyReport/FmsMaterialForDailyReport?&SiteId=' + SiteId + '&addDate=' + AddDate + '&BusinessFieldId=' + businessFieldId, } for (var i = 1; i < BusinessFieldArray.length; i++) { url['workCommon' + i] = urlHeader + '/DailyReport/FmsWorkRequestForDailyReport?&SiteId=' + SiteId + '&addDate=' + AddDate + '&BusinessFieldId=' + BusinessFieldArray[i].BusinessFieldId(); url['fmsMaterial' + i] = urlHeader + '/DailyReport/FmsMaterialForDailyReport?&SiteId=' + SiteId + '&addDate=' + AddDate + '&BusinessFieldId=' + BusinessFieldArray[i].BusinessFieldId(); } return url; } function loadBasicInfos() { var init = true; var userId = BWA.UserInfo.UserId(); viewModel.dataModel.BusinessFieldId(commonbusinessFieldId); var urls = makeUrl(SiteId, commonbusinessFieldId); var cnt = 0; var dataModel = viewModel.dataModel; for (var i = 1; i < BusinessFieldArray.length; i++) { $.when($.get(urls['workCommon' + i]), $.get(urls['fmsMaterial' + i]) ).done(function (tempworkCommon, tempfmsMaterial) { if (init) { if (tempworkCommon[0].length == 0) { for (var i = 1; i < BusinessFieldArray.length; i++) { dataModel['resultWorkCommon' + i](tempworkCommon[0]); dataModel['resultFmsMaterial' + i](tempfmsMaterial[0]); } } else { var k = 0; for (var i = 0; i < BusinessFieldArray.length; i++) { if (BusinessFieldArray[i].BusinessFieldId() == tempworkCommon[0][0].BusinessFieldId) { break; } else { k++; } } dataModel['resultWorkCommon' + k](tempworkCommon[0]); for (var i = 0; i < tempfmsMaterial[0].length; i++) { for (var j = 1; j < materialClassForSearch().length; j++) { if (tempfmsMaterial[0][i].FirstClassId == materialClassForSearch()[j].MaterialClassId()) { tempfmsMaterial[0][i].StringFirstClassId = materialClassForSearch()[j].Name(); break; } } for (var j = 1; j < materialClassForSearch().length; j++) { if (tempfmsMaterial[0][i].SecondClassId == materialClassForSearch()[j].MaterialClassId()) { tempfmsMaterial[0][i].StringSecondClassId = materialClassForSearch()[j].Name(); break; } } for (var j = 1; j < materialClassForSearch().length; j++) { if (tempfmsMaterial[0][i].ThirdClassId == materialClassForSearch()[j].MaterialClassId()) { tempfmsMaterial[0][i].StringThirdClassId = materialClassForSearch()[j].Name(); break; } } } dataModel['resultFmsMaterial' + k](tempfmsMaterial[0]); } init = false; } else { if (tempworkCommon[0].length == 0) { for (var i = 1; i < BusinessFieldArray.length; i++) { if (dataModel['resultWorkCommon' + i]() == null) { dataModel['resultWorkCommon' + i](tempworkCommon[0]); dataModel['resultFmsMaterial' + i](tempfmsMaterial[0]); } } } else { var k = 0; for (var i = 0; i < BusinessFieldArray.length; i++) { if (BusinessFieldArray[i].BusinessFieldId() == tempworkCommon[0][0].BusinessFieldId) { break; } else { k++; } } dataModel['resultWorkCommon' + k](tempworkCommon[0]); for (var i = 0; i < tempfmsMaterial[0].length; i++) { for (var j = 1; j < materialClassForSearch().length; j++) { if (tempfmsMaterial[0][i].FirstClassId == materialClassForSearch()[j].MaterialClassId()) { tempfmsMaterial[0][i].StringFirstClassId = materialClassForSearch()[j].Name(); break; } } for (var j = 1; j < materialClassForSearch().length; j++) { if (tempfmsMaterial[0][i].SecondClassId == materialClassForSearch()[j].MaterialClassId()) { tempfmsMaterial[0][i].StringSecondClassId = materialClassForSearch()[j].Name(); break; } } for (var j = 1; j < materialClassForSearch().length; j++) { if (tempfmsMaterial[0][i].ThirdClassId == materialClassForSearch()[j].MaterialClassId()) { tempfmsMaterial[0][i].StringThirdClassId = materialClassForSearch()[j].Name(); break; } } } dataModel['resultFmsMaterial' + k](tempfmsMaterial[0]); } } cnt++; if (cnt == BusinessFieldArray.length - 1) { $.when($.get(urls.workStatus), $.get(urls.workCommon), $.get(urls.fmsMaterial) ).done(function (resultWorkStatus, resultWorkCommon, resultFmsMaterial) { dataModel.WorkStatusTypeOccasional(resultWorkStatus[0].WorkStatusTypeOccasional); dataModel.WorkStatusTypePeriodicInspection(resultWorkStatus[0].WorkStatusTypePeriodicInspection); dataModel.WorkStatusTypeForensicExamination(resultWorkStatus[0].WorkStatusTypeForensicExamination); dataModel.WorkStatusTypeEtc(resultWorkStatus[0].WorkStatusTypeEtc); dataModel.WorkStatusTypeTotal(resultWorkStatus[0].WorkStatusTypeTotal); dataModel.WorkStatusPending(resultWorkStatus[0].WorkStatusPending); dataModel.WorkStatusInProgress(resultWorkStatus[0].WorkStatusInProgress); dataModel.WorkStatusDeferred(resultWorkStatus[0].WorkStatusDeferred); dataModel.WorkStatusComplete(resultWorkStatus[0].WorkStatusComplete); dataModel.WorkStatusApproved(resultWorkStatus[0].WorkStatusApproved); dataModel.WorkStatusTotal(resultWorkStatus[0].WorkStatusTotal); dataModel.resultWorkCommon(resultWorkCommon[0]); for (var i = 0; i < resultFmsMaterial[0].length; i++) { for (var j = 1; j < materialClassForSearch().length; j++) { if (resultFmsMaterial[0][i].FirstClassId == materialClassForSearch()[j].MaterialClassId()) { resultFmsMaterial[0][i].StringFirstClassId = materialClassForSearch()[j].Name(); break; } } for (var j = 1; j < materialClassForSearch().length; j++) { if (resultFmsMaterial[0][i].SecondClassId == materialClassForSearch()[j].MaterialClassId()) { resultFmsMaterial[0][i].StringSecondClassId = materialClassForSearch()[j].Name(); break; } } for (var j = 1; j < materialClassForSearch().length; j++) { if (resultFmsMaterial[0][i].ThirdClassId == materialClassForSearch()[j].MaterialClassId()) { resultFmsMaterial[0][i].StringThirdClassId = materialClassForSearch()[j].Name(); break; } } } dataModel.resultFmsMaterial(resultFmsMaterial[0]); setPopupGridViewAll(); EnergyTableCreate(); }); } }); } } function setPopupGridViewAll() { for (var gridId in popupGridInfo) { setPopupGridView(gridId); } } function setPopupGridView(gridId) { if (gridId.substring(13, 19) == 'Common') { var grid = handleGridViewInPopup(gridId, { dataSource: getDataSource(gridId)(), columns: getColumns(gridId), onSelectionChanged: function (e) { e.component.collapseAll(-1); e.component.expandRow(e.currentSelectedRowKeys[0]); }, masterDetail: { enabled: true, autoExpandAll: false, template: function (container, options) { var checkitemData = options.data; var temptext = checkitemData.TextResult; var tempdate = checkitemData.TextResultDate; if (temptext != null) { for (var i = 0; i < temptext.length; i++) { var result = temptext[i].replace(/\n/gi, '

        '); result = result.replace(/\?-/g, " -"); container.append($('

' + new Date(tempdate[i]).format("yyyy-MM-dd") + " - " + result + '

')); //container.append($('

' + new Date(tempdate[i]).format("yyyy-MM-dd") + " - " + temptext[i] + '

')); } } } } }); } else { var grid = handleGridViewInPopup(gridId, { dataSource: getDataSource(gridId)(), columns: getColumns(gridId), }); } grid.refresh(); } function getColumns(gridId) { if (gridId.substring(13, 19) == 'Common') { return [ { dataField: 'No', caption: '번호', width: '5%', alignment: 'center' }, { dataField: 'WorkTypeId', caption: '작업구분', width: '7%', alignment: 'center' }, { dataField: 'RequestDate', caption: '민원접수일시', width: '20%', alignment: 'center', dataType: 'date', format: 'yyyy-MM-dd HH:mm', visible: false }, { dataField: 'WorkProgressId', caption: '작업상태', width: '8%', alignment: 'center' }, { dataField: 'Title', caption: '작업명', width: '80%', alignment: 'center' } ]; } else { return [ { dataField: 'No', caption: '번호', width: '5%', alignment: 'center', allowFiltering: false }, { dataField: 'ReleaseType', caption: '출고구분', width: '7%', alignment: 'center' }, { dataField: 'FirstClassId', caption: '자재(대)', width: '8%', alignment: 'center', customizeText: function (cellInfo) { for (var i = 1; i < materialClassForSearch().length; i++) { if (materialClassForSearch()[i].MaterialClassId() == cellInfo.value) { return materialClassForSearch()[i].Name(); } } } }, { dataField: 'SecondClassId', caption: '자재(중)', width: '8%', alignment: 'center', customizeText: function (cellInfo) { for (var i = 1; i < materialClassForSearch().length; i++) { if (materialClassForSearch()[i].MaterialClassId() == cellInfo.value) { return materialClassForSearch()[i].Name(); } } } }, { dataField: 'ThirdClassId', caption: '자재(소)', width: '8%', alignment: 'center', customizeText: function (cellInfo) { for (var i = 1; i < materialClassForSearch().length; i++) { if (materialClassForSearch()[i].MaterialClassId() == cellInfo.value) { return materialClassForSearch()[i].Name(); } } } }, { dataField: 'MaterialCode', caption: '자재코드', width: '17%', alignment: 'center', visible: false }, { dataField: 'MaterialName', caption: '자재명', width: '17%', alignment: 'center' }, { dataField: 'Standard', caption: '규격', width: '18%', alignment: 'center' }, { dataField: 'WorkName', caption: '작업명', width: '19%', alignment: 'center' }, { dataField: 'Unit', caption: '단위', width: '5%', alignment: 'center' }, { dataField: 'MaterialCount', caption: '수량', width: '5%', alignment: 'center', allowFiltering: false, format: 'currency' }, { dataField: 'WorkerName', caption: '작업자', width: '10%', alignment: 'center', allowFiltering: false, visible: false }, ]; } } function EnergyDataTable() { var TodayDate = new Date(viewModel.dataModel.AddDate()); var tempcnt = 0; var FacilityCode = 0, PropertyId = 0; var Today = 0, Daybefore = 0, Dailyusage = 0, Monthusage = 0; for (var i = 0; i < 3; i++) { tempcnt += fueltotalarray[i].length; } var datacnt = 0; var EnergtDate = new Array(tempcnt); for (var i = 0; i < tempcnt; i++) { if (i < fueltotalarray[0].length) { EnergtDate[i] = { Name: fueltotalarray[0][i].Name, Fuel: fueltotalarray[0][i].FuelTypeId, FacilityCode: fueltotalarray[0][i].FacilityCode, PropertyId: fueltotalarray[0][i].PropertyId, Today: 0, Daybefore: 0, Dailyusage: 0, Monthusage: 0 } } else if (i < fueltotalarray[0].length + fueltotalarray[1].length) { EnergtDate[i] = { Name: fueltotalarray[1][i - fueltotalarray[0].length].Name, Fuel: fueltotalarray[1][i - fueltotalarray[0].length].FuelTypeId, FacilityCode: fueltotalarray[1][i - fueltotalarray[0].length].FacilityCode, PropertyId: fueltotalarray[1][i - fueltotalarray[0].length].PropertyId, Today: 0, Daybefore: 0, Dailyusage: 0, Monthusage: 0 } } else { EnergtDate[i] = { Name: fueltotalarray[2][i - (fueltotalarray[0].length + fueltotalarray[1].length)].Name, Fuel: fueltotalarray[2][i - (fueltotalarray[0].length + fueltotalarray[1].length)].FuelTypeId, FacilityCode: fueltotalarray[2][i - (fueltotalarray[0].length + fueltotalarray[1].length)].FacilityCode, PropertyId: fueltotalarray[2][i - (fueltotalarray[0].length + fueltotalarray[1].length)].PropertyId, Today: 0, Daybefore: 0, Dailyusage: 0, Monthusage: 0 } } } for (var i = 0; i < EnergtDate.length; i++) { var dataSource = new DevExpress.data.DataSource({ //금일 store: new DevExpress.data.ODataStore({ url: endpointSelector + "/BemsMonitoringPointHistory15minRawData" }), requireTotalCount: true, pageSize: 1 }); dataSource.filter([ ["SiteId", "=", SiteId], "and", ["CreatedDateTime", ">=", new Date(TodayDate.getFullYear(), TodayDate.getMonth(), TodayDate.getDate(), 0, 0, 0)], "and", ["CreatedDateTime", "<=", new Date(TodayDate.getFullYear(), TodayDate.getMonth(), TodayDate.getDate(), 23, 59, 59)], "and", ["FacilityCode", "=", EnergtDate[i].FacilityCode], "and", ["PropertyId", "=", EnergtDate[i].PropertyId], ]); dataSource.sort({ getter: "CreatedDateTime", desc: true }); dataSource.load() .done(function (result) { if (result != null && result.length != 0) { for (var i = 0; i < EnergtDate.length; i++) { if (result[0].FacilityCode == EnergtDate[i].FacilityCode && result[0].PropertyId == EnergtDate[i].PropertyId) { EnergtDate[i].Today = result[0].CurrentValue; break; } } var dataSource1 = new DevExpress.data.DataSource({ //전일 store: new DevExpress.data.ODataStore({ url: endpointSelector + "/BemsMonitoringPointHistory15minRawData" }), requireTotalCount: true, pageSize: 1 }); dataSource1.filter([ ["SiteId", "=", SiteId], "and", ["CreatedDateTime", ">=", new Date(TodayDate.getFullYear(), TodayDate.getMonth(), TodayDate.getDate() - 1, 0, 0, 0)], "and", ["CreatedDateTime", "<=", new Date(TodayDate.getFullYear(), TodayDate.getMonth(), TodayDate.getDate() - 1, 23, 59, 59)], "and", ["FacilityCode", "=", EnergtDate[i].FacilityCode], "and", ["PropertyId", "=", EnergtDate[i].PropertyId], ]); dataSource1.sort({ getter: "CreatedDateTime", desc: true }); dataSource1.load() .done(function (result1) { if (result1 != null) { for (var i = 0; i < EnergtDate.length; i++) { if (result1[0].FacilityCode == EnergtDate[i].FacilityCode && result1[0].PropertyId == EnergtDate[i].PropertyId) { EnergtDate[i].Daybefore = result1[0].CurrentValue; EnergtDate[i].Dailyusage = EnergtDate[i].Today - result1[0].CurrentValue; break; } } var dataSource2 = new DevExpress.data.DataSource({ //월사용량 store: new DevExpress.data.ODataStore({ url: endpointSelector + "/BemsMonitoringPointHistoryDaily" }), requireTotalCount: true, pageSize: 31 }); dataSource2.filter([ ["SiteId", "=", SiteId], "and", ["CreatedDateTime", ">=", new Date(TodayDate.getFullYear(), TodayDate.getMonth(), 1, 0, 0, 0)], "and", ["CreatedDateTime", "<", new Date(TodayDate.getFullYear(), TodayDate.getMonth(), TodayDate.getDate() + 1, 0, 0, 0)], "and", ["FacilityCode", "=", EnergtDate[i].FacilityCode], "and", ["PropertyId", "=", EnergtDate[i].PropertyId], ]); dataSource2.sort({ getter: "CreatedDateTime", desc: true }); dataSource2.load() .done(function (result2) { var temp = 0; datacnt = datacnt + 1; if (result2 != null) { for (var j = 0; j < result2.length; j++) { temp += result2[j].DailyValue } for (var i = 0; i < EnergtDate.length; i++) { if (result2[0].FacilityCode == EnergtDate[i].FacilityCode && result2[0].PropertyId == EnergtDate[i].PropertyId) { EnergtDate[i].Monthusage = temp; break; } } } if (datacnt == EnergtDate.length) { var dataModel = viewModel.dataModel; var powerToday = 0, powerDaybefore = 0, powerDailyusage = 0, powerMonthusage = 0; var gasToday = 0, gasDaybefore = 0, gasDailyusage = 0, gasMonthusage = 0; var waterToday = 0, waterDaybefore = 0, waterDailyusage = 0, waterMonthusage = 0; var fuelcnt = 0; var power = 0, gas = 0, water = 0; for (var i = 0; i < EnergtDate.length; i++) { switch (EnergtDate[i].Fuel) { case 1: power++; break; case 2: gas++; break; case 3: water++; break; } if (EnergtDate[i].Fuel != 3) { var tempnum = i + 1; dataModel['resultEnergy' + tempnum + 'Today'](numberWithCommas(EnergtDate[i].Today.toFixed(2))); dataModel['resultEnergy' + tempnum + 'Daybefore'](numberWithCommas(EnergtDate[i].Daybefore.toFixed(2))); dataModel['resultEnergy' + tempnum + 'Dailyusage'](numberWithCommas(EnergtDate[i].Dailyusage.toFixed(2))); dataModel['resultEnergy' + tempnum + 'Monthusage'](numberWithCommas(EnergtDate[i].Monthusage.toFixed(2))); } else { waterToday += EnergtDate[i].Today; waterDaybefore += EnergtDate[i].Daybefore; waterDailyusage += EnergtDate[i].Dailyusage; waterMonthusage += EnergtDate[i].Monthusage; } } if (power != 0) { fuelcnt++; for (var j = 0; j < power; j++) { powerToday += EnergtDate[j].Today; powerDaybefore += EnergtDate[j].Daybefore; powerDailyusage += EnergtDate[j].Dailyusage; powerMonthusage += EnergtDate[j].Monthusage; } dataModel['resultEnergytotal' + fuelcnt + 'Today'](numberWithCommas(powerToday.toFixed(2))); dataModel['resultEnergytotal' + fuelcnt + 'Daybefore'](numberWithCommas(powerDaybefore.toFixed(2))); dataModel['resultEnergytotal' + fuelcnt + 'Dailyusage'](numberWithCommas(powerDailyusage.toFixed(2))); dataModel['resultEnergytotal' + fuelcnt + 'Monthusage'](numberWithCommas(powerMonthusage.toFixed(2))); } if (gas != 0) { fuelcnt++; for (var j = power; j < power + gas; j++) { gasToday += EnergtDate[j].Today; gasDaybefore += EnergtDate[j].Daybefore; gasDailyusage += EnergtDate[j].Dailyusage; gasMonthusage += EnergtDate[j].Monthusage; } dataModel['resultEnergytotal' + fuelcnt + 'Today'](numberWithCommas(gasToday.toFixed(2))); dataModel['resultEnergytotal' + fuelcnt + 'Daybefore'](numberWithCommas(gasDaybefore.toFixed(2))); dataModel['resultEnergytotal' + fuelcnt + 'Dailyusage'](numberWithCommas(gasDailyusage.toFixed(2))); dataModel['resultEnergytotal' + fuelcnt + 'Monthusage'](numberWithCommas(gasMonthusage.toFixed(2))); } if (water != 0) { fuelcnt++; dataModel['resultEnergytotal' + fuelcnt + 'Today'](numberWithCommas(waterToday.toFixed(2))); dataModel['resultEnergytotal' + fuelcnt + 'Daybefore'](numberWithCommas(waterDaybefore.toFixed(2))); dataModel['resultEnergytotal' + fuelcnt + 'Dailyusage'](numberWithCommas(waterDailyusage.toFixed(2))); dataModel['resultEnergytotal' + fuelcnt + 'Monthusage'](numberWithCommas(waterMonthusage.toFixed(2))); } } }).fail(function (error) { utils.toast.show("[BemsMonitoringPointHistoryDaily] 월 사용량 정보를 읽어올수 없습니다."); }); } }).fail(function (error) { utils.toast.show("[BemsMonitoringPointHistoryDaily] 전일 정보를 읽어올수 없습니다."); }); } }).fail(function (error) { utils.toast.show("[BemsMonitoringPointHistoryDaily] 금일 정보를 읽어올수 없습니다."); }); } } function numberWithCommas(x) { return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); } function getDataSource(gridId) { var urlId = popupGridInfo[gridId]; if (self.viewModel.dataModel['resultWorkCommon']() != null) { if (self.viewModel.dataModel['resultWorkCommon']().length == 0) { $("#componentcommon").hide(); } else { $("#componentcommon").show(); } if (self.viewModel.dataModel['resultFmsMaterial']().length == 0) { $("#componentmaterial").hide(); } else { $("#componentmaterial").show(); } } for (var i = 1; i < BusinessFieldArray.length; i++) { if (self.viewModel.dataModel['resultWorkCommon' + i]() != null) { if (self.viewModel.dataModel['resultWorkCommon' + i]().length == 0) { $("#componentcommon" + i).hide(); } else { $("#componentcommon" + i).show(); } } if (self.viewModel.dataModel['resultFmsMaterial' + i]() != null) { if (self.viewModel.dataModel['resultFmsMaterial' + i]().length == 0) { $("#componentmaterial" + i).hide(); } else { $("#componentmaterial" + i).show(); } } } return self.viewModel.dataModel['result' + initCap(urlId)]; } function handleGridViewInPopup(gridId, options) { var mode = 'single'; $.extend(options, { pager: { visible: false }, selection: { mode: mode } }); return $("#" + gridId).dxDataGrid(utils.datagrid.defaultOptions(options)).dxDataGrid("instance"); }; viewModel.dataModel.ReportUrl = ko.observable(); viewModel.DateChange = DateChange; return viewModel; };