BemsWebApplication.PowerSavingCycle = function (params, viewInfo) { "use strict"; //전역 변수 선언 var endpointSelector = ""; var currentTabIndex = ko.observable(0); 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 initialized = false, inoutdoorinitialized = false, Etcinitialized = false; var SiteId = BWA.UserInfo.SiteId(); var today = new Date(); var searchday = new Date(); var eq = BWA.DataUtil.constructEqualFilter; var AIR_HANDLING = $Code.FacilityType.AIR_HANDLING; var timeIntervalType = $Code.TimeIntervalType.QUARTERMIN; var OUTDOOR = $Code.FacilityType.OUTDOOR; var temp_facility_DataSource = [{ Name: "", Nickname: "", FacilityUsage: "", FacilityCode: 0 }]; var facilityname = "", facilitynickname = "", facilityusage = "", facilitycode = 0; var ENTHALPY_CHECK = $Code.Formula[AIR_HANDLING].ENTHALPY_CHECK; var CO2 = $Code.Formula[AIR_HANDLING].CO2; var CO = $Code.Formula[AIR_HANDLING].CO; var DUST = $Code.Formula[AIR_HANDLING].DUST; var OZONE = $Code.Formula[AIR_HANDLING].OZONE; var S_VOLUME = $Code.Formula[AIR_HANDLING].S_VOLUME; var F_TEMP = $Code.Formula[AIR_HANDLING].F_TEMP; //환기 var F_HUMY = $Code.Formula[AIR_HANDLING].F_HUMY; var formulaGet = new BWA.Chart.FormulaGet(SiteId); var DUTYCYCLE_ONOFF = $Code.Formula[AIR_HANDLING].DUTYCYCLE_ONOFF; var ONOFF = $Code.Formula[AIR_HANDLING].ONOFF; //onoff var OUT_TEMPERATURE = $Code.Formula[OUTDOOR].TEMPERATURE; var OUT_HUMIDITY = $Code.Formula[OUTDOOR].HUMIDITY; var chartTempOnOFF = BWA.Chart.Instance('chartTempOnOFF', 'dxChart'); var chartFanLoad = BWA.Chart.Instance('chartFanLoad', 'dxChart'); var chartInOut = BWA.Chart.Instance('chartInOutdoor', 'dxChart'); var chartEtc = BWA.Chart.Instance('chartEtc', 'dxChart'); var chartLayout = new BWA.ChartLayout({ divs: [ { id: 'TempOnOFF', chartId: 'chartTempOnOFF' }, { id: 'InOutDoor', chartId: 'chartInOutdoor' }, , { id: 'FanLoad', chartId: 'chartFanLoad' } ], multiViewOptions: { viewIndex: currentTabIndex, viewCount: 1 } }); var IndoordataArray = [], IndoortemponoffdataArray = [], IndoorhumydataArray = [], IndooronoffdataArray = [], IndoorstempdataArray = [], IndoortempdataArray = [], finalIndoortemponoffdataArray = [], Indoortemp = false, Indoorhumy = false; var CodataArray = [], Co2dataArray = [], DustdataArray = [], OzonedataArray = [], EtcdataArray = []; var Codata = false, Co2data = false, Dustdata = false, Ozonedata = false; var outdoordataArray = [], outdoorhumydataArray = [], outdoortempdataArray = [], outdoortemp = false, outdoorhumy = false; var outdoorenthalpy = false, Indoorenthalpy = false; var QUARTERMIN = $Code.TimeType.QUARTERMIN; var visiblePopup = ko.observable(false); var InOutdoorDataGridPopup_Visible = ko.observable(false), EtcDataGridPopup_Visible = ko.observable(false); function facilitydataSourceAdd(cnt) { // 설비 개수만큼 추가 for (var i = 0; i < cnt ; i++) { temp_facility_DataSource.push({ Name: "", Nickname: "", FacilityUsage: "", FacilityCode: 0 }); } } function GetDataSource(FacilityCode, FormulaId) { // 설비 개수만큼 추가 var BemsTempFormulaDataSource = new DevExpress.data.DataSource({ // 실내온도 가져오기 store: { type: "odata", url: endpointSelector + "/BemsFormulaParameter" }, requireTotalCount: true, pageSize: 5 }); BemsTempFormulaDataSource.filter([ eq('SiteId', SiteId), 'and', eq('FacilityCode', FacilityCode), 'and', eq('FormulaId', FormulaId) ]); BemsTempFormulaDataSource.load() .done(function (BemsFormula) { if (BemsFormula.length != 0) { if (BemsFormula.length == 1) { var ParameterFacilityCode = BemsFormula[0].ParameterFacilityCode; var parameterpropertyId = BemsFormula[0].ParameterPropertyId; var BemsTempDataSource = new DevExpress.data.DataSource({ store: { type: "odata", url: endpointSelector + "/BemsMonitoringPointHistory15min" }, requireTotalCount: true, pageSize: 1440 }); BemsTempDataSource.filter([ ['CreatedDateTime', ">=", new Date(searchday.getFullYear(), searchday.getMonth(), searchday.getDate(), 0, 0, 0)], 'and', ['CreatedDateTime', "<", new Date(searchday.getFullYear(), searchday.getMonth(), searchday.getDate() + 1, 0, 0, 0)], 'and', ['SiteId', "=", SiteId], 'and', ['FacilityCode', "=", ParameterFacilityCode], 'and', ['PropertyId', "=", parameterpropertyId] ]); BemsTempDataSource.sort({ getter: "CreatedDateTime", desc: true }); BemsTempDataSource.load() .done(function (BemsTemp) { if (BemsTemp.length != 0) { var Temp = BemsTemp[0].CurrentValue; if (FormulaId == CO2) { Co2dataArray = []; var state; if (Temp <= 1000) { state = "(적정)"; } else { state = "(부적정)"; } $("#co2").dxTextBox("instance").option('value', Temp.toFixed(2) + "ppm" + state); for (var i = 0; i < BemsTemp.length; i++) { Co2dataArray.push({ DateTime: BemsTemp[i].CreatedDateTime, Co2: BemsTemp[i].CurrentValue }); } Co2data = true; } else if (FormulaId == CO) { CodataArray = []; var state; if (Temp <= 2) { state = "(좋음)"; } else if ((2 < Temp) && (Temp <= 9)) { state = "(보통)"; } else if ((9 < Temp) && (Temp <= 15)) { state = "(나쁨)"; } else { state = "(매우나쁨)"; } $("#co").dxTextBox("instance").option('value', Temp.toFixed(2) + "ppm" + state); for (var i = 0; i < BemsTemp.length; i++) { CodataArray.push({ DateTime: BemsTemp[i].CreatedDateTime, Co: BemsTemp[i].CurrentValue }); } Codata = true; } else if (FormulaId == DUST) { DustdataArray = []; var state; if (Temp <= 30) { state = "(좋음)"; } else if ((30 < Temp) && (Temp <= 80)) { state = "(보통)"; } else if ((80 < Temp) && (Temp <= 150)) { state = "(나쁨)"; } else { state = "(매우나쁨)"; } $("#dust").dxTextBox("instance").option('value', Temp.toFixed(2) + "㎍/㎥" + state); for (var i = 0; i < BemsTemp.length; i++) { DustdataArray.push({ DateTime: BemsTemp[i].CreatedDateTime, Dust: BemsTemp[i].CurrentValue }); } Dustdata = true; } else if (FormulaId == OZONE) { OzonedataArray = []; var state; if (Temp <= 0.03) { state = "(좋음)"; } else if ((0.03 < Temp) && (Temp <= 0.09)) { state = "(보통)"; } else if ((0.09 < Temp) && (Temp <= 0.150)) { state = "(나쁨)"; } else { state = "(매우나쁨)"; } $("#ozone").dxTextBox("instance").option('value', Temp.toFixed(2) + "ppm" + state); for (var i = 0; i < BemsTemp.length; i++) { OzonedataArray.push({ DateTime: BemsTemp[i].CreatedDateTime, Ozone: BemsTemp[i].CurrentValue }); } Ozonedata = true; } } else { utils.toast.show("[BemsMonitoringPointHistory15min] 정보가 없습니다."); } }); } } else { utils.toast.show("[BemsFormulaParameter] 실내외 정보가 없습니다."); } }); } function GetEnthalpyDataSource(FacilityCode, FormulaId, FormulaId2) { // 온도, 습도 var BemsTempFormulaDataSource = new DevExpress.data.DataSource({ // 실내온도 가져오기 store: { type: "odata", url: endpointSelector + "/BemsFormulaParameter" }, requireTotalCount: true, pageSize: 5 }); BemsTempFormulaDataSource.filter([ eq('SiteId', SiteId), 'and', eq('FacilityCode', FacilityCode), 'and', eq('FormulaId', FormulaId) ]); BemsTempFormulaDataSource.load() .done(function (BemsFormula) { if (BemsFormula.length != 0) { if (BemsFormula.length == 1) { var ParameterFacilityCode = BemsFormula[0].ParameterFacilityCode; var parameterpropertyId = BemsFormula[0].ParameterPropertyId; var BemsTempDataSource = new DevExpress.data.DataSource({ store: { type: "odata", url: endpointSelector + "/BemsMonitoringPointHistory15min" }, requireTotalCount: true, pageSize: 1440 }); BemsTempDataSource.filter([ ['CreatedDateTime', ">=", new Date(searchday.getFullYear(), searchday.getMonth(), searchday.getDate(), 0, 0, 0)], 'and', ['CreatedDateTime', "<", new Date(searchday.getFullYear(), searchday.getMonth(), searchday.getDate() + 1, 0, 0, 0)], 'and', ['SiteId', "=", SiteId], 'and', ['FacilityCode', "=", ParameterFacilityCode], 'and', ['PropertyId', "=", parameterpropertyId] ]); BemsTempDataSource.sort({ getter: "CreatedDateTime", desc: true }); BemsTempDataSource.load() .done(function (BemsTemp) { if (BemsTemp.length != 0) { var Temp = BemsTemp[0].CurrentValue; if (FormulaId == F_TEMP) { // 환기 온도 IndoortempdataArray = [], IndoorhumydataArray = [], IndoortemponoffdataArray = [], IndoordataArray = [], IndoorstempdataArray = [], IndooronoffdataArray = [], finalIndoortemponoffdataArray = []; $("#indoor_temp").dxTextBox("instance").option('value', Temp.toFixed(2) + "℃"); for (var i = 0; i < BemsTemp.length; i++) { IndoortempdataArray.push({ DateTime: BemsTemp[i].CreatedDateTime, IndoorTemp: BemsTemp[i].CurrentValue }); } var BemsTempFormulaDataSource = new DevExpress.data.DataSource({ // 실내온도 가져오기 store: { type: "odata", url: endpointSelector + "/BemsFormulaParameter" }, requireTotalCount: true, pageSize: 5 }); BemsTempFormulaDataSource.filter([ eq('SiteId', SiteId), 'and', eq('FacilityCode', FacilityCode), 'and', eq('FormulaId', FormulaId2) ]); BemsTempFormulaDataSource.load() .done(function (BemsFormula) { if (BemsFormula.length != 0) { if (BemsFormula.length == 1) { var ParameterFacilityCode = BemsFormula[0].ParameterFacilityCode; var parameterpropertyId = BemsFormula[0].ParameterPropertyId; var BemsTempDataSource = new DevExpress.data.DataSource({ store: { type: "odata", url: endpointSelector + "/BemsMonitoringPointHistory15min" }, requireTotalCount: true, pageSize: 1440 }); BemsTempDataSource.filter([ ['CreatedDateTime', ">=", new Date(searchday.getFullYear(), searchday.getMonth(), searchday.getDate(), 0, 0, 0)], 'and', ['CreatedDateTime', "<", new Date(searchday.getFullYear(), searchday.getMonth(), searchday.getDate() + 1, 0, 0, 0)], 'and', ['SiteId', "=", SiteId], 'and', ['FacilityCode', "=", ParameterFacilityCode], 'and', ['PropertyId', "=", parameterpropertyId] ]); BemsTempDataSource.sort({ getter: "CreatedDateTime", desc: true }); BemsTempDataSource.load() .done(function (BemsTemp) { if (BemsTemp.length != 0) { if (FormulaId2 == F_HUMY) { var Temp = BemsTemp[0].CurrentValue; $("#indoor_humy").dxTextBox("instance").option('value', Temp.toFixed(2) + "%"); //환기 습도 for (var i = 0; i < BemsTemp.length; i++) { IndoorhumydataArray.push({ DateTime: BemsTemp[i].CreatedDateTime, IndoorHumy: BemsTemp[i].CurrentValue }); } var array_length_size = Math.max(IndoortempdataArray.length, IndoorhumydataArray.length); if (IndoortempdataArray.length == IndoorhumydataArray.length) { for (var i = 0; i < array_length_size; i++) { IndoordataArray.push( { DateTime: IndoortempdataArray[i].DateTime, IndoorTemp: IndoortempdataArray[i].IndoorTemp, IndoorHumy: IndoorhumydataArray[i].IndoorHumy }); } } } else if (FormulaId2 == ONOFF) { for (var i = 0; i < BemsTemp.length; i++) { var temp; if (BemsTemp[i].CurrentValue == true) { temp = 1; } else { temp = 0; } IndooronoffdataArray.push({ DateTime: BemsTemp[i].CreatedDateTime, Indooronoff: temp }); } var array_length_size = Math.max(IndoortempdataArray.length, IndooronoffdataArray.length); if (IndoortempdataArray.length == IndooronoffdataArray.length) { for (var i = 0; i < array_length_size; i++) { IndoortemponoffdataArray.push( { DateTime: IndoortempdataArray[i].DateTime, IndoorTemp: IndoortempdataArray[i].IndoorTemp, Indooronoff: IndooronoffdataArray[i].Indooronoff }); } var BemsSTempDataSource = new DevExpress.data.DataSource({ store: { type: "odata", url: endpointSelector + "/BemsControlAHUTempConfig" }, requireTotalCount: true, pageSize: 1 }); BemsSTempDataSource.filter([ ['SiteId', "=", SiteId], 'and', ['FacilityCode', "=", ParameterFacilityCode] ]); BemsSTempDataSource.load() .done(function (STemp) { var Maxtemp, Mintemp; if (STemp.length == 0) { //utils.toast.show("공조기 기준온도가 없습니다."); finalIndoortemponoffdataArray = IndoortemponoffdataArray; } else { Maxtemp = STemp[0].MaxTemperature; Mintemp = STemp[0].MinTemperature; for (var i = 0; i < IndoortemponoffdataArray.length; i++) { finalIndoortemponoffdataArray.push( { DateTime: IndoortempdataArray[i].DateTime, IndoorTemp: IndoortempdataArray[i].IndoorTemp, Indooronoff: IndooronoffdataArray[i].Indooronoff, Maxtemp: Maxtemp, Mintemp: Mintemp }); } } var options = BWA.ChartOptions.PowerSavingCycle.getChartTempOnOFFOptions(QUARTERMIN); options.dataSource = finalIndoortemponoffdataArray; chartTempOnOFF().option(options); }); } } } }); } } }); } } else { utils.toast.show("[BemsMonitoringPointHistory15min] 정보가 없습니다."); } }); } } else { utils.toast.show("[BemsFormulaParameter] 실내외 정보가 없습니다."); } }); } function GetLoadDataSource() { //팬부하 가져오기 함수 var facilitycode = $("#Airconfitioner_select").dxSelectBox("instance").option('value').FacilityCode(); var formula = $Code.Formula[$Code.FacilityType.AIR_HANDLING]; var formulaIds = _.values(formula); var promises = []; _.each(formulaIds, function (formulaId) { var p = formulaGet.apiGet({ SiteId: SiteId, FacilityTypeId: AIR_HANDLING, FacilityCode: facilitycode, FormulaId: formulaId, TimeIntervalType: timeIntervalType, StartDate: new Date(searchday.getFullYear(), searchday.getMonth(), searchday.getDate(), 0, 0, 0), EndDate: new Date(searchday.getFullYear(), searchday.getMonth(), searchday.getDate() + 1, 0, 0, 0) }); promises.push(p); }); $.when.apply(this, promises) .done(function (A23, A24, DUTYCYCLE_CHECK) { A23 = A23[0];//급기팬 소비전력 A24 = A24[0];//환기팬 소비전력 DUTYCYCLE_CHECK = DUTYCYCLE_CHECK[0];//절전사이클 확인 var dataArray_Temp = []; var dataArray_Temp1 = []; var dataArray_Temp2 = []; var dataArray_Temp3 = []; var dataArray_Temp4 = []; var dataArray_Temp5 = []; _.each(A23, function (x) { dataArray_Temp.push({ DateTime: BWA.Chart.getCustermTimeArgumentAxisString(QUARTERMIN, moment(x.DateTime).toDate()), A23: x.Value }); }); _.each(A24, function (x) { dataArray_Temp1.push({ DateTime: BWA.Chart.getCustermTimeArgumentAxisString(QUARTERMIN, moment(x.DateTime).toDate()), A24: x.Value }); }); _.each(DUTYCYCLE_CHECK, function (x) { var temp; if (x.Value > 0) { temp = 1; } else { temp = 0 } dataArray_Temp2.push({ DateTime: BWA.Chart.getCustermTimeArgumentAxisString(QUARTERMIN, moment(x.DateTime).toDate()), DUTYCYCLE_CHECK: temp }); }); var array_length_size = Math.max(dataArray_Temp.length, dataArray_Temp1.length, dataArray_Temp2.length); if (dataArray_Temp.length == dataArray_Temp1.length && dataArray_Temp1.length == dataArray_Temp2.length) { var tempFANLoad = 0, tempSave = 0, count = 0, tempfanload = 0, save = 0; for (var i = 0; i < array_length_size; i++) { dataArray_Temp3.push( { DateTime: dataArray_Temp[i].DateTime, FANLoad: dataArray_Temp[i].A23 + dataArray_Temp1[i].A24, DUTYCYCLE_CHECK: dataArray_Temp2[i].DUTYCYCLE_CHECK }); } for (var i = 0; i < array_length_size; i++) { if (dataArray_Temp3[i].DUTYCYCLE_CHECK == 1) { if (count == 0) { tempFANLoad = 0; tempSave = dataArray_Temp4[i - 1].FANLoad; } else { tempFANLoad = 0; tempSave = dataArray_Temp4[i - 1].Save; } count++ } else { tempFANLoad = dataArray_Temp3[i].FANLoad; tempSave = 0; count = 0; } dataArray_Temp4.push( { DateTime: dataArray_Temp3[i].DateTime, FANLoad: tempFANLoad, Save: tempSave }); tempfanload += dataArray_Temp4[i].FANLoad; save += dataArray_Temp4[i].Save } $("#predfanload").dxTextBox("instance").option('value', parseFloat((tempfanload + save).toFixed(2)) + "Kwh"); $("#nowfanload").dxTextBox("instance").option('value', parseFloat(tempfanload.toFixed(2)) + "Kwh"); $("#totlareduction").dxTextBox("instance").option('value', parseFloat(save.toFixed(2)) + "Kwh"); } var dataArrayresult = dataArray_Temp4; var options = BWA.ChartOptions.PowerSavingCycle.getChartFanLoadOptions(QUARTERMIN); options.dataSource = dataArrayresult; chartFanLoad().option(options); }) .fail(function (error) { }); } function GetOutDataSource() { // 온도, 습도 var BemsTempFormulaDataSource = new DevExpress.data.DataSource({ // 실내온도 가져오기 store: { type: "odata", url: endpointSelector + "/BemsFormulaParameter" }, requireTotalCount: true, pageSize: 5 }); BemsTempFormulaDataSource.filter([ eq('SiteId', SiteId), 'and', eq('FacilityTypeId', OUTDOOR), 'and', eq('FormulaId', OUT_TEMPERATURE) ]); BemsTempFormulaDataSource.load() .done(function (BemsFormula) { if (BemsFormula.length != 0) { if (BemsFormula.length == 1) { var parameterpropertyId = BemsFormula[0].ParameterPropertyId; var FacilityCode = BemsFormula[0].ParameterFacilityCode; var BemsTempDataSource = new DevExpress.data.DataSource({ store: { type: "odata", url: endpointSelector + "/BemsMonitoringPointHistory15min" }, requireTotalCount: true, pageSize: 1440 }); BemsTempDataSource.filter([ ['CreatedDateTime', ">=", new Date(searchday.getFullYear(), searchday.getMonth(), searchday.getDate(), 0, 0, 0)], 'and', ['CreatedDateTime', "<", new Date(searchday.getFullYear(), searchday.getMonth(), searchday.getDate() + 1, 0, 0, 0)], 'and', ['SiteId', "=", SiteId], 'and', ['FacilityCode', "=", FacilityCode], 'and', ['PropertyId', "=", parameterpropertyId] ]); BemsTempDataSource.sort({ getter: "CreatedDateTime", desc: true }); BemsTempDataSource.load() .done(function (BemsTemp) { if (BemsTemp.length != 0) { var Temp = BemsTemp[0].CurrentValue; outdoortempdataArray = [], outdoorhumydataArray = [], outdoordataArray = [];; outdoortemp = true; $("#outdoor_temp").dxTextBox("instance").option('value', Temp.toFixed(2) + "℃"); for (var i = 0; i < BemsTemp.length; i++) { outdoortempdataArray.push({ DateTime: BemsTemp[i].CreatedDateTime, outdoorTemp: BemsTemp[i].CurrentValue }); } var BemsTempFormulaDataSource = new DevExpress.data.DataSource({ // 실내온도 가져오기 store: { type: "odata", url: endpointSelector + "/BemsFormulaParameter" }, requireTotalCount: true, pageSize: 5 }); BemsTempFormulaDataSource.filter([ eq('SiteId', SiteId), 'and', eq('FacilityTypeId', OUTDOOR), 'and', eq('FormulaId', OUT_HUMIDITY) ]); BemsTempFormulaDataSource.load() .done(function (BemsFormula) { if (BemsFormula.length != 0) { if (BemsFormula.length == 1) { var parameterpropertyId = BemsFormula[0].ParameterPropertyId; var FacilityCode = BemsFormula[0].ParameterFacilityCode; var BemsTempDataSource = new DevExpress.data.DataSource({ store: { type: "odata", url: endpointSelector + "/BemsMonitoringPointHistory15min" }, requireTotalCount: true, pageSize: 1440 }); BemsTempDataSource.filter([ ['CreatedDateTime', ">=", new Date(searchday.getFullYear(), searchday.getMonth(), searchday.getDate(), 0, 0, 0)], 'and', ['CreatedDateTime', "<", new Date(searchday.getFullYear(), searchday.getMonth(), searchday.getDate() + 1, 0, 0, 0)], 'and', ['SiteId', "=", SiteId], 'and', ['FacilityCode', "=", FacilityCode], 'and', ['PropertyId', "=", parameterpropertyId] ]); BemsTempDataSource.sort({ getter: "CreatedDateTime", desc: true }); BemsTempDataSource.load() .done(function (BemsTemp) { if (BemsTemp.length != 0) { var Temp = BemsTemp[0].CurrentValue; $("#outdoor_humy").dxTextBox("instance").option('value', Temp.toFixed(2) + "%"); for (var i = 0; i < BemsTemp.length; i++) { outdoorhumydataArray.push({ DateTime: BemsTemp[i].CreatedDateTime, outdoorHumy: BemsTemp[i].CurrentValue }); } var array_length_size = Math.max(outdoortempdataArray.length, outdoorhumydataArray.length); if (outdoortempdataArray.length == outdoorhumydataArray.length) { for (var i = 0; i < array_length_size; i++) { outdoordataArray.push( { DateTime: outdoortempdataArray[i].DateTime, outdoorTemp: outdoortempdataArray[i].outdoorTemp, outdoorHumy: outdoorhumydataArray[i].outdoorHumy }); } } } }); } } }); } else { utils.toast.show("[BemsMonitoringPointHistory15min] 정보가 없습니다."); } }); } } else { utils.toast.show("[BemsFormulaParameter] 실내외 정보가 없습니다."); } }); } function handleViewShown() { if (initialized === false) { var chartOption = BWA.ChartOptions.PowerSavingCycle; chartTempOnOFF = chartTempOnOFF(chartOption.getChartTempOnOFFOptions(QUARTERMIN)); chartFanLoad = chartFanLoad(chartOption.getChartFanLoadOptions(QUARTERMIN)); initialized = true; } $("#PowerSaving_onoff").dxSwitch({ value: false, onText: 'On', offText: 'Off' }); $("#PowerSaving_control").dxButton({ text: "제어", onClick: function () { var PowerSavingonoff = $("#PowerSaving_onoff").dxSwitch("instance").option('value'); if (PowerSavingonoff) PowerSavingonoff = 1; else PowerSavingonoff = 0; var FacilityTypeId = $("#Airconfitioner_select").dxSelectBox("instance").option('value').FacilityTypeId(); var FacilityCode = $("#Airconfitioner_select").dxSelectBox("instance").option('value').FacilityCode(); var param = { SiteId: SiteId, FacilityTypeId: FacilityTypeId, FacilityCode: FacilityCode, FormulaId: DUTYCYCLE_ONOFF, ControlValue: PowerSavingonoff, }; BWA.api.post('BemsFormula/ControlPoint', null, param).done(function () { utils.toast.show('절전 사이클 제어 완료'); }) .fail(function (error) { utils.toast.show('절전 사이클 제어를 실패하였습니다.'); }); } }); $("#S_Temp_Btn").dxButton({ text: "기준온도 설정", onClick: function () { if ($("#Set_Max_Temp").dxTextBox("instance") != null) $("#Set_Max_Temp").dxTextBox("instance").option('value', null); if ($("#Set_Min_Temp").dxTextBox("instance") != null) $("#Set_Min_Temp").dxTextBox("instance").option('value', null); visiblePopup(true); } }); $("#inoutdoor_inform").dxButton({ text: "차트", onClick: function () { InOutdoorDataGridPopup_Visible(true); } }); $("#etc_inform").dxButton({ text: "차트", onClick: function () { EtcDataGridPopup_Visible(true); } }); $("#Airconfitioner_date").dxDateBox({ displayFormat: "yyyy-MM-dd", value: today, max: today, onValueChanged: function (e) { if (e.value != null) { searchday = e.value; facilityname = $("#Airconfitioner_select").dxSelectBox("instance").option('value').Name(); facilitynickname = $("#Airconfitioner_select").dxSelectBox("instance").option('value').Nickname(); facilityusage = $("#Airconfitioner_select").dxSelectBox("instance").option('value').FacilityUsage(); facilitycode = $("#Airconfitioner_select").dxSelectBox("instance").option('value').FacilityCode(); $("#facilityname").dxTextBox("instance").option('value', facilityname); $("#facilitynickname").dxTextBox("instance").option('value', facilitynickname); $("#facilityusage").dxTextBox("instance").option('value', facilityusage); GetEnthalpyDataSource(facilitycode, F_TEMP, F_HUMY); GetEnthalpyDataSource(facilitycode, F_TEMP, ONOFF); GetOutDataSource(); GetLoadDataSource(); GetDataSource(facilitycode, CO2); GetDataSource(facilitycode, CO); GetDataSource(facilitycode, DUST); GetDataSource(facilitycode, OZONE); } } }); $("#Airconfitioner_select").dxSelectBox({ dataSource: temp_facility_DataSource, displayExpr: "Nickname", onValueChanged: function (e) { if (e.value != null) { facilityname = e.value.Name(); facilitynickname = e.value.Nickname(); facilityusage = e.value.FacilityUsage(); facilitycode = e.value.FacilityCode(); $("#facilityname").dxTextBox("instance").option('value', facilityname); $("#facilitynickname").dxTextBox("instance").option('value', facilitynickname); $("#facilityusage").dxTextBox("instance").option('value', facilityusage); GetEnthalpyDataSource(facilitycode, F_TEMP, F_HUMY); GetEnthalpyDataSource(facilitycode, F_TEMP, ONOFF); GetOutDataSource(); GetLoadDataSource(); GetDataSource(facilitycode, CO2); GetDataSource(facilitycode, CO); GetDataSource(facilitycode, DUST); GetDataSource(facilitycode, OZONE); } } }); $("#co").dxTextBox({ readOnly: true }); $("#co2").dxTextBox({ readOnly: true }); $("#dust").dxTextBox({ readOnly: true }); $("#ozone").dxTextBox({ readOnly: true }); $("#predfanload").dxTextBox({ readOnly: true }); $("#nowfanload").dxTextBox({ readOnly: true }); $("#totlareduction").dxTextBox({ readOnly: true }); $("#outdoor_humy").dxTextBox({ readOnly: true }); $("#outdoor_temp").dxTextBox({ readOnly: true }); $("#indoor_humy").dxTextBox({ readOnly: true }); $("#indoor_temp").dxTextBox({ readOnly: true }); $("#enthalpy_content").dxTextBox({ readOnly: true }); $("#facilityname").dxTextBox({ readOnly: true, }); $("#facilitynickname").dxTextBox({ readOnly: true, }); $("#facilityusage").dxTextBox({ readOnly: true, }); } function handleViewHidden() { var paging = BWA.ChartLayout.Paging; paging.sideOverlayVisible(false); } function handleViewShowing() { var facilityDataSource = BWA.db.createDataSource('CmFacility'); facilityDataSource.filter([ eq('SiteId', SiteId), 'and', eq('FacilityTypeId', AIR_HANDLING) ]); facilityDataSource.load().done(function (facilities) { var cnt = 0, k = 0; if (facilities.length != 0) { for (var i = 0; i < facilities.length; i++) { if ((facilities[i].Nickname().substring(0, 3) != "OHU") && (facilities[i].Nickname().substring(0, 3) != "OAU")) { cnt++; } } var tempfacilities = new Array(cnt); for (var i = 0; i < facilities.length; i++) { if ((facilities[i].Nickname().substring(0, 3) != "OHU") && (facilities[i].Nickname().substring(0, 3) != "OAU")) { tempfacilities[k] = facilities[i]; k++; } } if (tempfacilities.length > 1) { facilitydataSourceAdd(tempfacilities.length - 1); } temp_facility_DataSource = tempfacilities; $("#Airconfitioner_select").dxSelectBox({ dataSource: temp_facility_DataSource, displayExpr: "Nickname", }); $("#Airconfitioner_select").dxSelectBox("instance").option('value', temp_facility_DataSource[0]); } else { utils.toast.show("[CmFacility] 공조기 정보가 없습니다."); } }); } function InoutDoorhandlePopupShown() { if (inoutdoorinitialized === false) { var chartOption = BWA.ChartOptions.EnthalpyControl; chartInOut = chartInOut(chartOption.getChartInOutDoorOptions(QUARTERMIN)); inoutdoorinitialized = true; } var Array = []; var enthalpy_length_size = Math.max(IndoordataArray.length, outdoordataArray.length); if (IndoordataArray.length == outdoordataArray.length) { for (var i = 0; i < enthalpy_length_size; i++) { Array.push( { DateTime: IndoordataArray[i].DateTime, IndoorTemp: IndoortempdataArray[i].IndoorTemp, IndoorHumy: IndoorhumydataArray[i].IndoorHumy, outdoorTemp: outdoordataArray[i].outdoorTemp, outdoorHumy: outdoordataArray[i].outdoorHumy }); } var options = BWA.ChartOptions.EnthalpyControl.getChartInOutDoorOptions(QUARTERMIN); options.dataSource = Array; chartInOut().option(options); } } function isNumber(s) { s += ''; // 문자열로 변환 s = s.replace(/^\s*|\s*$/g, ''); // 좌우 공백 제거 if (s == '' || isNaN(s)) return false; return true; } function EtchandlePopupShown() { if (Etcinitialized === false) { var chartOption = BWA.ChartOptions.EnthalpyControl; chartEtc = chartEtc(chartOption.getChartEtcOptions(QUARTERMIN)); Etcinitialized = true; } if (Ozonedata && Dustdata && Codata && Co2data) { EtcdataArray = []; var array_length_size = Math.max(OzonedataArray.length, DustdataArray.length, CodataArray.length, Co2dataArray.length); if (OzonedataArray.length == DustdataArray.length && CodataArray.length == Co2dataArray.length && DustdataArray.length == CodataArray.length) { for (var i = 0; i < array_length_size; i++) { EtcdataArray.push( { DateTime: OzonedataArray[i].DateTime, Ozone: OzonedataArray[i].Ozone, Dust: DustdataArray[i].Dust, Co: CodataArray[i].Co, Co2: Co2dataArray[i].Co2 }); } } Ozonedata = false, Dustdata = false, Codata = false, Co2data = false; var options = BWA.ChartOptions.EnthalpyControl.getChartEtcOptions(QUARTERMIN); options.dataSource = EtcdataArray; chartEtc().option(options); } } function handleSearchInSearchView(filter, searchViewItems) { } var searchViewOptions = { } var viewModel = $.extend(BWA.CommonView.create(params, viewInfo, searchViewOptions, ko.observable(null), handleViewShown, null, handleSearchInSearchView, undefined, chartLayout), { viewHidden: handleViewHidden, viewShowing: handleViewShowing, onHidden: function () { }, }); viewModel.InoutDoorDataGridPopupOptions = { width: '1000px', height: '550px', contentTemplate: "content", showTitle: true, title: "차트", visible: InOutdoorDataGridPopup_Visible, dragEnabled: true, closeOnOutsideClick: true, shownAction: InoutDoorhandlePopupShown, animation: window.utils.popup.createAnimation() }; viewModel.EtcDataGridPopupOptions = { width: '1000px', height: '550px', contentTemplate: "content", showTitle: true, title: "차트", visible: EtcDataGridPopup_Visible, dragEnabled: true, closeOnOutsideClick: true, shownAction: EtchandlePopupShown, animation: window.utils.popup.createAnimation() }; viewModel.popupOptions = { width: 330, height: 200, visible: visiblePopup, dragEnabled: true, shading: true, closeOnOutsideClick: true, shadingColor: 'transparent', showTitle: true, title: "기준온도 설정", showCloseButton: true, onShowing: function () { }, onShown: function (t, tt) { $("#Save_Btn").dxButton({ text: "저장", onClick: function () { var tempfacilitycode = $("#Airconfitioner_select").dxSelectBox("instance").option('value').FacilityCode(); var tempMaxvalue = $("#Set_Max_Temp").dxTextBox("instance").option('value'); var tempMinvalue = $("#Set_Min_Temp").dxTextBox("instance").option('value'); if (!isNumber(tempMaxvalue) || !isNumber(tempMinvalue)) { utils.toast.show("숫자를 입력해주십시요."); } if (!(tempMaxvalue) >= tempMinvalue) { utils.toast.show("기준온도 최대값 , 최소값이 잘못 입력되었습니다."); return; } else { tempMaxvalue = parseFloat(parseFloat(tempMaxvalue).toFixed(2)); tempMinvalue = parseFloat(parseFloat(tempMinvalue).toFixed(2)); $("#Set_Max_Temp").dxTextBox("instance").option('value', tempMaxvalue); $("#Set_Min_Temp").dxTextBox("instance").option('value', tempMinvalue); var BemsSTempDataSource = new DevExpress.data.DataSource({ store: { type: "odata", url: endpointSelector + "/BemsControlAHUTempConfig" }, requireTotalCount: true, pageSize: 1 }); BemsSTempDataSource.filter([ ['SiteId', "=", SiteId], 'and', ['FacilityCode', "=", tempfacilitycode] ]); BemsSTempDataSource.load() .done(function (STemp) { if (STemp.length == 0) { BWA.api.post('BemsControlAHUTempConfig/Insert', { SiteId: SiteId, FacilityTypeId: AIR_HANDLING, FacilityCode: tempfacilitycode, MaxTemperature: tempMaxvalue, MinTemperature: tempMinvalue }).done(function () { var facilitycode = $("#Airconfitioner_select").dxSelectBox("instance").option('value').FacilityCode(); GetEnthalpyDataSource(facilitycode, F_TEMP, F_HUMY); GetEnthalpyDataSource(facilitycode, F_TEMP, ONOFF); utils.toast.show("공조기 기준온도를 설정하였습니다."); visiblePopup(false); }).fail(function (error) { utils.toast.show("공조기 기준온도 설정를 실패하였습니다."); }); } else { BWA.api.post('BemsControlAHUTempConfig/Update', { SiteId: SiteId, FacilityTypeId: AIR_HANDLING, FacilityCode: tempfacilitycode, MaxTemperature: tempMaxvalue, MinTemperature: tempMinvalue }).done(function () { var facilitycode = $("#Airconfitioner_select").dxSelectBox("instance").option('value').FacilityCode(); GetEnthalpyDataSource(facilitycode, F_TEMP, F_HUMY); GetEnthalpyDataSource(facilitycode, F_TEMP, ONOFF); utils.toast.show("공조기 기준온도를 설정하였습니다."); visiblePopup(false); }).fail(function (error) { utils.toast.show("공조기 기준온도 설정를 실패하였습니다."); }); } }); } } }); $("#Set_Max_Temp").dxTextBox({ placeholder: "기준온도 최대값 설정" }); $("#Set_Min_Temp").dxTextBox({ placeholder: "기준온도 최소값 설정" }); }, onHidden: function () { } }; viewModel.currentTabIndex = currentTabIndex; return viewModel; };