@* For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860 *@ @{ Layout = null; } @model Applications.UniversalApi_WebConsole_App.Models.OnlineMonitor.OnlineMonitorInfo @{ int screenWidth = 1280; int mainviewHeight = 570; int maxNozzleNumberInOnePage = 12; int maxNozzlewidth = 176; int minNozzlewidth = 129; //including the right margin at the end of a row,current display 6 nozzles in one row int marginleft = (screenWidth - maxNozzlewidth * 6) / 7; int nozzleHeight = 259; int margintop = (mainviewHeight - nozzleHeight * 2) / 3; int textlableHeight = 34;//人民币未付款图标高度/宽度 int nozzleImagHeight = 123; int lableFontSize = 22; int imgPaidHeight = 25; int imgPaidWidth = 20; int alImgWidth = 44; int alImgHeight = 43; int headRightHeight = 44; int alLogoWidth = 61; int smartFuelLogoWidth = 43; int alLogoTop = 0; //int alLogoTop = headRightHeight + 10; string imgPrePath = "/images/onlineMonitor/nozzleView/"; } <script> var currentPage = 1; var oldPage = currentPage; var totalPage = 1; var currentView = "AL"; //var alLogoVisibility = currentView === "AL" ? "hidden" : "visible"; //var smartFuelLogoVisibility = currentView === "SmartFuel" ? "hidden" : "visible"; var alLogoVisibility = "hidden"; var smartFuelLogoVisibility = "hidden"; var warningNozzles = new Array(); var alarmNozzles = new Array(); //Generate AL nozzle view according messages got from mqtt function GenerateNozzleView(message) { var nozzlesDiv = document.getElementById("nozzles"); if (nozzlesDiv == null) { console.log("nozzles div is null"); return; } if (message == null || message.data == null) { console.log("Invalid message received for GenerateNozzleView"); return; } if (warningNozzles.length > 0) { warningNozzles.splice(0,warningNozzles.length); } if (alarmNozzles.length > 0) { alarmNozzles.splice(0,alarmNozzles.length); } totalPage = Math.ceil(message.data.length / @(maxNozzleNumberInOnePage));// +(message.data.length % (@maxNozzleNumberInOnePage) === 0 ? 0 : 1); if (currentPage > totalPage) { currentPage = totalPage; console.log("configuration changed???"); } message.data.forEach(function(d) { if (d.VrState === "WARNING") { warningNozzles.push(d.SiteLevelDispenserId); } else if (d.VrState === "ALARM") { alarmNozzles.push(d.SiteLevelDispenserId); } }); var dataLength = (message.data.length - @maxNozzleNumberInOnePage * (currentPage - 1)) > @maxNozzleNumberInOnePage ? @maxNozzleNumberInOnePage : (message.data.length - @maxNozzleNumberInOnePage * (currentPage - 1)); //test //var temp1 = message.data.slice(2,3); var temp = message.data.slice(@maxNozzleNumberInOnePage * (currentPage - 1), @maxNozzleNumberInOnePage * (currentPage - 1)+dataLength); temp.forEach(function(d) { var nozzleDiv = document.createElement("div"); nozzleDiv.id = "nozzle_" + d.SiteLevelNozzleId; nozzleDiv.style = "position:relative; float: left;margin-left:"+@marginleft+"px; margin-top:" +@(margintop)+"px; width:" +@(maxNozzlewidth)+"px; height:"+@(nozzleHeight)+"px;"; var nozzleIdDiv = document.createElement("div"); nozzleIdDiv.id = "nozzleId_" + d.SiteLevelNozzleId; nozzleIdDiv.style = "position: relative; float:left;width: 100%; height:"+@(textlableHeight)+"px; text-align: left; font-size: 22px;font-weight: bold"; nozzleIdDiv.innerHTML = d.SiteLevelNozzleId; var nozzleImgDiv = document.createElement("div"); nozzleImgDiv.id = "nozzleImg_" + d.SiteLevelNozzleId; nozzleImgDiv.style = "position: relative; float: left;width: 100%; height:" +@(nozzleImagHeight)+"px; text-align: center;"; var fuelingStatusIdleVisible = (d.FuelingStatus === "IDLE") ? "visible" : "hidden"; var fuelingStatusFuellingVisible = (d.FuelingStatus === "FUELING") ? "visible" : "hidden"; //对于油气回收来说目前只有两个状态IDLE,FUELLING var imgIdle = document.createElement("img"); imgIdle.id = "nozzleImage_Idle_" + d.SiteLevelNozzleId; imgIdle.style = "visibility:" + fuelingStatusIdleVisible; imgIdle.src = "@(imgPrePath)IDEL.png"; var imgFuelling = document.createElement("img"); imgFuelling.id = "nozzleImage_Fuelling_" + d.SiteLevelNozzleId; imgFuelling.style = "position: absolute; left: 0px;visibility:"+fuelingStatusFuellingVisible; imgFuelling.src = "@(imgPrePath)Fuelling.png"; var alImgNormalVisible = (d.FuelingStatus === "IDLE" && d.VrState === "NORMAL") ? "visible" : "hidden"; var alImgWarningVisible = (d.FuelingStatus === "IDLE" && d.VrState ==="WARNING")? "visible" : "hidden"; var alImgAlarmVisible = (d.FuelingStatus === "IDLE" && d.VrState ==="ALARM")? "visible" : "hidden"; var alImgDisconnectVisible = (d.FuelingStatus === "IDLE" && d.VrState ==="DISCONNETED")? "visible" : "hidden"; var imgAlNormal = document.createElement("img"); imgAlNormal.id = "nozzleALImage_Normal_" + d.SiteLevelNozzleId; imgAlNormal.style = "position: absolute; top:"+@(nozzleImagHeight-alImgHeight)+"px; left:"+@(maxNozzlewidth-alImgWidth)+"px;visibility:"+alImgNormalVisible+";"; imgAlNormal.src = "@(imgPrePath)NozzleALNormal.png"; var imgAlWarning = document.createElement("img"); imgAlWarning.id = "nozzleALImage_Warning_" + d.SiteLevelNozzleId; imgAlWarning.style = "position: absolute; top:"+@(nozzleImagHeight-alImgHeight)+"px; left:"+@(maxNozzlewidth-alImgWidth)+"px;visibility:"+alImgWarningVisible+";"; imgAlWarning.src = "@(imgPrePath)NozzleALWarning.png"; var imgAlAlarm = document.createElement("img"); imgAlAlarm.id = "nozzleALImage_Alarm_" + d.SiteLevelNozzleId; imgAlAlarm.style = "position: absolute; top:"+@(nozzleImagHeight-alImgHeight)+"px; left:"+@(maxNozzlewidth-alImgWidth)+"px;visibility:"+alImgAlarmVisible+";"; imgAlAlarm.src = "@(imgPrePath)NozzleALAlarm.png"; var imgAlDisconnect = document.createElement("img"); imgAlDisconnect.id = "nozzleALImage_Disconnect_" + d.SiteLevelNozzleId; imgAlDisconnect.style = "position: absolute; top:"+@(nozzleImagHeight-alImgHeight)+"px; left:"+@(maxNozzlewidth-alImgWidth)+"px;visibility:"+alImgDisconnectVisible+";"; imgAlDisconnect.src = "@(imgPrePath)NozzleALDisconnect.png"; nozzleImgDiv.appendChild(imgIdle); nozzleImgDiv.appendChild(imgFuelling); nozzleImgDiv.appendChild(imgAlNormal); nozzleImgDiv.appendChild(imgAlWarning); nozzleImgDiv.appendChild(imgAlAlarm); nozzleImgDiv.appendChild(imgAlDisconnect); //油气回收界面只有气(升)、液(加油升数)、汽液比值;现只添加三个div即可 var nozzleGasDiv = document.createElement("div"); nozzleGasDiv.id = "nozzleGas_" + d.SiteLevelNozzleId; nozzleGasDiv.style = "position: relative; float: left;width: 100%; height:" +@(textlableHeight)+"px; font-size:22px; font-weight: bold;"; nozzleGasDiv.innerHTML = "气:"+d.VaporVolume; var nozzleLiterDiv = document.createElement("div"); nozzleLiterDiv.id = "nozzleLiter_" + d.SiteLevelNozzleId; nozzleLiterDiv.style = "position: relative; float: left;width: 100%; height:" +@(textlableHeight)+"px; font-size:22px; font-weight: bold;"; nozzleLiterDiv.innerHTML = "升:"+d.LiquidVolume; var nozzleAlDiv = document.createElement("div"); nozzleAlDiv.id = "nozzleAL_" + d.SiteLevelNozzleId; nozzleAlDiv.style = "position: relative; float: left;width: 100%; height:" +@(textlableHeight)+"px; font-size:22px; font-weight: bold;"; nozzleAlDiv.innerHTML = "气液比 "+d.VaporLiquidRatio; nozzleDiv.appendChild(nozzleIdDiv); nozzleDiv.appendChild(nozzleImgDiv); nozzleDiv.appendChild(nozzleGasDiv); nozzleDiv.appendChild(nozzleLiterDiv); nozzleDiv.appendChild(nozzleAlDiv); nozzlesDiv.appendChild(nozzleDiv); }); UpdateHeadMessage(); UpdateFooterPage(); } function UpdateFooterPage() { if (document.getElementById("PumpsPage_Bottom_pages") != null) { for (var p = 1; p < 6; p++) { var imgCurrentPageIdStr = "PumpsPage_Bottom_pages_img_"+p; var imgCurrentPageNotShowedIdStr = "PumpsPage_Bottom_pages_notshowed_img_"+p; if (p > totalPage) { if (document.getElementById(imgCurrentPageIdStr) != null) document.getElementById(imgCurrentPageIdStr).style.visibility = "hidden"; if (document.getElementById(imgCurrentPageNotShowedIdStr) != null) document.getElementById(imgCurrentPageNotShowedIdStr).style.visibility = "hidden"; } else if (p === currentPage || (p === 5 && totalPage > p)) { if (document.getElementById(imgCurrentPageIdStr) != null) document.getElementById(imgCurrentPageIdStr).style.visibility = "visible"; if (document.getElementById(imgCurrentPageNotShowedIdStr) != null) document.getElementById(imgCurrentPageNotShowedIdStr).style.visibility = "hidden"; }else { if (document.getElementById(imgCurrentPageIdStr) != null) document.getElementById(imgCurrentPageIdStr).style.visibility = "hidden"; if (document.getElementById(imgCurrentPageNotShowedIdStr) != null) document.getElementById(imgCurrentPageNotShowedIdStr).style.visibility = "visible"; } } } } function ClearOldItems() { var nozzlesDiv = document.getElementById("nozzles"); if (nozzlesDiv != null) { for (var cl = 1; cl < @(maxNozzleNumberInOnePage+1); cl++) { var ocn = document.getElementById("nozzle_" + (cl+@(maxNozzleNumberInOnePage)*(currentPage-1))); if (ocn != null) nozzlesDiv.removeChild(ocn); } } } function UpdateVrState(message) { if (message != null && message.NozzleStatus != null && message.NozzleStatus.data != null) { message.NozzleStatus.data.forEach( function (d) { var nozzleId = d.SiteLevelNozzleId; if (!(warningNozzles.indexOf(nozzleId) < 0)) { if (d.VrState !== "WARNING") warningNozzles.splice(warningNozzles.indexOf(nozzleId), 1); } else if (!(alarmNozzles.indexOf(nozzleId) < 0)) { if (d.VrState !== "ALARM") alarmNozzles.splice(alarmNozzles.indexOf(nozzleId), 1); } if (d.VrState === "WARNING" && warningNozzles.indexOf(nozzleId)<0) warningNozzles.push(nozzleId); else if (d.VrState === "ALARM" && alarmNozzles.indexOf(nozzleId) < 0) alarmNozzles.push(nozzleId); var nozzleDiv = document.getElementById("nozzle_" + nozzleId); if (nozzleDiv != null) { var fuelingStatusIdleVisible = (d.FuelingStatus === "IDLE") ? "visible" : "hidden"; var fuelingStatusFuellingVisible = (d.FuelingStatus === "FUELING") ? "visible" : "hidden"; var nozzleImgIdle = document.getElementById("nozzleImage_Idle_" + d.SiteLevelNozzleId); var nozzleImgFulling = document.getElementById("nozzleImage_Fuelling_" + d.SiteLevelNozzleId); if (nozzleImgIdle != null) nozzleImgIdle.style.visibility = fuelingStatusIdleVisible; if (nozzleImgFulling != null) nozzleImgFulling.style.visibility = fuelingStatusFuellingVisible; var alImgNormalVisible = (d.FuelingStatus === "IDLE" && d.VrState === "NORMAL") ? "visible" : "hidden"; var alImgWarningVisible = (d.FuelingStatus === "IDLE" && d.VrState ==="WARNING")? "visible" : "hidden"; var alImgAlarmVisible = (d.FuelingStatus === "IDLE" && d.VrState ==="ALARM")? "visible" : "hidden"; var alImgDisconnectVisible = (d.FuelingStatus === "IDLE" && d.VrState === "DISCONNETED") ? "visible" : "hidden"; if(document.getElementById("nozzleALImage_Normal_"+d.SiteLevelNozzleId)!=null)document.getElementById("nozzleALImage_Normal_"+d.SiteLevelNozzleId).style.visibility=alImgNormalVisible; if (document.getElementById("nozzleALImage_Warning_"+d.SiteLevelNozzleId) != null) document.getElementById("nozzleALImage_Warning_"+d.SiteLevelNozzleId).style.visibility =alImgWarningVisible; if (document.getElementById("nozzleALImage_Alarm_"+d.SiteLevelNozzleId) != null) document.getElementById("nozzleALImage_Alarm_"+d.SiteLevelNozzleId).style.visibility =alImgAlarmVisible; if(document.getElementById("nozzleALImage_Disconnect_"+d.SiteLevelNozzleId)!=null)document.getElementById("nozzleALImage_Disconnect_"+d.SiteLevelNozzleId).style.visibility=alImgDisconnectVisible; if (document.getElementById("nozzleGas_" + d.SiteLevelNozzleId) != null) document.getElementById("nozzleGas_" + d.SiteLevelNozzleId).innerHTML = "气:" + d.VaporVolume; if (document.getElementById("nozzleLiter_" + d.SiteLevelNozzleId) != null) document.getElementById("nozzleLiter_" + d.SiteLevelNozzleId).innerHTML = "升:" + d.LiquidVolume; if (document.getElementById("nozzleAL_" + d.SiteLevelNozzleId) != null) document.getElementById("nozzleAL_" + d.SiteLevelNozzleId).innerHTML = "气液比 " + d.VaporLiquidRatio; } else { console.log("nozzle:"+nozzleId+" is not exist on web UI"); } }); UpdateHeadMessage(); } else { console.log("Invalid vr state change envent received"); } } //Generate nozzle view for smart fuel function GenerateSmartFuelNozzleView(message) { var nozzlesDiv = document.getElementById("nozzles"); @*for (var cl = 0; cl < @maxNozzleNumberInOnePage; cl++) { var ocn = document.getElementById("nozzle_" + (cl+@(maxNozzleNumberInOnePage)*(oldPage-1)+1)); if (ocn != null) nozzlesDiv.removeChild(ocn); }*@ if (nozzlesDiv == null) { console.log("nozzles div is null"); return; } if (message == null || message.data == null) { console.log("Invalid message received for GenerateNozzleView"); return; } totalPage = Math.ceil(message.data.length / @(maxNozzleNumberInOnePage));//message.data.length / @(maxNozzleNumberInOnePage)+(message.data.length % (@maxNozzleNumberInOnePage) === 0 ? 0 : 1); if (currentPage > totalPage) { currentPage = totalPage; console.log("configuration changed???"); } var dataLength = (message.data.length - @maxNozzleNumberInOnePage * (currentPage - 1)) > @maxNozzleNumberInOnePage ? @maxNozzleNumberInOnePage : (message.data.length - @maxNozzleNumberInOnePage * (currentPage - 1)); var temp = message.data.slice(@maxNozzleNumberInOnePage * (currentPage - 1), @maxNozzleNumberInOnePage * (currentPage - 1)+dataLength); temp.forEach(function (d) { var nozzleId = d.SiteLevelNozzleId; var nozzleDiv = document.createElement("div"); nozzleDiv.id = "nozzle_" + nozzleId; nozzleDiv.style = "position:relative; float: left;margin-left:"+@marginleft+"px; margin-top:" +@(margintop)+"px; width:" +@(maxNozzlewidth)+"px; height:"+@(nozzleHeight)+"px;"; var nozzleIdDiv = document.createElement("div"); nozzleIdDiv.id = "nozzleId_" + nozzleId; nozzleIdDiv.style = "position: relative; float:left;width: 100%; height:"+@(textlableHeight)+"px; text-align: left; font-size: 22px;font-weight: bold"; nozzleIdDiv.innerHTML = nozzleId; var nozzleImgDiv = document.createElement("div"); nozzleImgDiv.id = "nozzleImg_" + nozzleId; nozzleImgDiv.style = "position: relative; float: left;width: 100%; height:" +@(nozzleImagHeight)+"px; text-align: center;"; //油枪状态图 var fuelingStatusIdleVisible = (d.FuelingStatus === "IDLE") ? "visible" : "hidden"; var fuelingStatusFuellingVisible = (d.FuelingStatus === "FUELING") ? "visible" : "hidden"; var fuelingStatusCallingVisible = "hidden"; var fuelingStatusAuthrizedVisible = "hidden"; var fuelingStatusDisconnectVisible = "hidden"; var fuelingStatusClosedVisible = "hidden"; //IDLE,CALLING,AUTHORIZED,FUELLING,DISCONNECT,油枪未连接 var imgIdle = document.createElement("img"); imgIdle.id = "nozzleImage_Idle_" + nozzleId; imgIdle.style = "visibility:" + fuelingStatusIdleVisible; imgIdle.src = "@(imgPrePath)IDEL.png"; var imgCalling = document.createElement("img"); imgCalling.id = "nozzleImage_Calling_" + nozzleId; imgCalling.style = "position: absolute; top: 0px; left:"+@((maxNozzlewidth-minNozzlewidth)/2)+"px;visibility:" + fuelingStatusCallingVisible+";"; imgCalling.src ="@(imgPrePath)CALLING.png"; var imgAuthorized= document.createElement("img"); imgAuthorized.id = "nozzleImage_Authorized_" + nozzleId; imgAuthorized.style = "position: absolute; top: 0px; left:"+@((maxNozzlewidth-minNozzlewidth)/2)+"px;visibility:" + fuelingStatusAuthrizedVisible+";"; imgAuthorized.src = "@(imgPrePath)Authorize.png"; var imgFuelling = document.createElement("img"); imgFuelling.id = "nozzleImage_Fuelling_" + nozzleId; imgFuelling.style = "position: absolute; left: 0px;visibility:"+fuelingStatusFuellingVisible; imgFuelling.src ="@(imgPrePath)Fuelling.png"; var imgDisconnect= document.createElement("img"); imgDisconnect.id = "nozzleImage_Disconnect_" + nozzleId; imgDisconnect.style = "position: absolute; top: 0px; left:"+@((maxNozzlewidth-minNozzlewidth)/2)+"px;visibility:" + fuelingStatusDisconnectVisible+";"; imgDisconnect.src = "@(imgPrePath)Offline.png"; var imgClosed= document.createElement("img"); imgClosed.id = "nozzleImage_Closed_" + nozzleId; imgClosed.style = "position: absolute; top: 0px; left:"+@((maxNozzlewidth-minNozzlewidth)/2)+"px;visibility:" + fuelingStatusClosedVisible+";"; imgClosed.src = "@(imgPrePath)Closed.png"; //加油界面油气回收图标暂时都隐藏,之后根据油气回收的消息更新界面 var alImgNormalVisible = "hidden"; var alImgWarningVisible = "hidden"; var alImgAlarmVisible = "hidden"; var alImgDisconnectVisible = "hidden"; var imgAlNormal = document.createElement("img"); imgAlNormal.id = "nozzleALImage_Normal_" + nozzleId; imgAlNormal.style = "position: absolute; top:"+@(nozzleImagHeight-alImgHeight)+"px; left:"+@(maxNozzlewidth-alImgWidth)+"px;visibility:"+alImgNormalVisible+";"; imgAlNormal.src = "@(imgPrePath)NozzleALNormal.png"; var imgAlWarning = document.createElement("img"); imgAlWarning.id = "nozzleALImage_Warning_" + nozzleId; imgAlWarning.style = "position: absolute; top:"+@(nozzleImagHeight-alImgHeight)+"px; left:"+@(maxNozzlewidth-alImgWidth)+"px;visibility:"+alImgWarningVisible+";"; imgAlWarning.src ="@(imgPrePath)NozzleALWarning.png"; var imgAlAlarm = document.createElement("img"); imgAlAlarm.id = "nozzleALImage_Alarm_" + nozzleId; imgAlAlarm.style = "position: absolute; top:"+@(nozzleImagHeight-alImgHeight)+"px; left:"+@(maxNozzlewidth-alImgWidth)+"px;visibility:"+alImgAlarmVisible+";"; imgAlAlarm.src = "@(imgPrePath)NozzleALAlarm.png"; var imgAlDisconnect = document.createElement("img"); imgAlDisconnect.id = "nozzleALImage_Disconnect_" + nozzleId; imgAlDisconnect.style = "position: absolute; top:"+@(nozzleImagHeight-alImgHeight)+"px; left:"+@(maxNozzlewidth-alImgWidth)+"px;visibility:"+alImgDisconnectVisible+";"; imgAlDisconnect.src = "@(imgPrePath)NozzleALDisconnect.png"; nozzleImgDiv.appendChild(imgIdle); nozzleImgDiv.appendChild(imgCalling); nozzleImgDiv.appendChild(imgAuthorized); nozzleImgDiv.appendChild(imgFuelling); nozzleImgDiv.appendChild(imgDisconnect); nozzleImgDiv.appendChild(imgClosed); nozzleImgDiv.appendChild(imgAlNormal); nozzleImgDiv.appendChild(imgAlWarning); nozzleImgDiv.appendChild(imgAlAlarm); nozzleImgDiv.appendChild(imgAlDisconnect); var imgNotPaidVisible = "visible"; var imgPaidVisible = "visible"; var nozzleAmountDiv = document.createElement("div"); nozzleAmountDiv.id = "nozzleAmount_" + nozzleId; nozzleAmountDiv.style = "position: relative; float: left;width: 100%; height:" +@(textlableHeight)+"px;"; var nozzleAmountImgDiv = document.createElement("div"); nozzleAmountImgDiv.id = "nozzleAmount_img_"+nozzleId; nozzleAmountImgDiv.style = "position: relative;float: left;width:" +@(textlableHeight)+"px; height:100%;"; var nozzleAmountUnpaidImg = document.createElement("img"); nozzleAmountUnpaidImg.id = "nozzleAmount_img_Unpaid_" + nozzleId; nozzleAmountUnpaidImg.style = "visibility:"+imgNotPaidVisible; nozzleAmountUnpaidImg.src = "@(imgPrePath)Payable.png"; var nozzleAmountPaidImg = document.createElement("img"); nozzleAmountPaidImg.id = "nozzleAmount_img_Paid_" + nozzleId; nozzleAmountPaidImg.style = "position: absolute; top:"+@((textlableHeight-imgPaidHeight)/2)+"px; left:"+@((textlableHeight-imgPaidWidth)/2)+"px;visibility:"+imgPaidVisible+";"; nozzleAmountPaidImg.src = "@(imgPrePath)Paid.png"; nozzleAmountImgDiv.appendChild(nozzleAmountUnpaidImg); nozzleAmountImgDiv.appendChild(nozzleAmountPaidImg); var nozzleAmountValueDiv = document.createElement("div"); nozzleAmountValueDiv.id = "nozzleAmount_value_" + nozzleId; nozzleAmountValueDiv.style = "position: relative;float: left;width:" +@(maxNozzlewidth-textlableHeight)+"px; height:100%;"; nozzleAmountValueDiv.innerHTML = " :"+"12345.00"; nozzleAmountDiv.appendChild(nozzleAmountImgDiv); nozzleAmountDiv.appendChild(nozzleAmountValueDiv); var nozzleAccumulatorTextDiv = document.createElement("div"); nozzleAccumulatorTextDiv.id = "nozzleAccumulatorText_" + nozzleId; nozzleAccumulatorTextDiv.style = "position: relative; float: left;width: 100%; height:" +@(textlableHeight)+"px; font-size:22px; font-weight: bold;"; nozzleAccumulatorTextDiv.innerHTML = "累计数:"; var nozzleAccumulatorValueDiv = document.createElement("div"); nozzleAccumulatorValueDiv.id = "nozzleAccumulatorValue_" + nozzleId; nozzleAccumulatorValueDiv.style = "position: relative; float: left;width: 100%; height:" +@(textlableHeight)+"px; font-size:22px; font-weight: bold;"; nozzleAccumulatorValueDiv.innerHTML = "1234567.0000"; nozzleDiv.appendChild(nozzleIdDiv); nozzleDiv.appendChild(nozzleImgDiv); nozzleDiv.appendChild(nozzleAmountDiv); nozzleDiv.appendChild(nozzleAccumulatorTextDiv); nozzleDiv.appendChild(nozzleAmountValueDiv); nozzlesDiv.appendChild(nozzleDiv); }); UpdateFooterPage(); } //Update the message on header function UpdateHeadMessage() { var pumpsHead = document.getElementById("PumpsPage_Head"); var normalHead = document.getElementById("PumpsPage_Head_Status_normal"); var warningHead = document.getElementById("PumpsPage_Head_Status_warning"); var alarmHead = document.getElementById("PumpsPage_Head_Status_alarm"); var textSpan = document.getElementById("head_left_text"); if (pumpsHead == null || normalHead == null || warningHead == null || alarmHead == null || textSpan ==null) { return; } var message = ""; if (alarmNozzles.length > 0) { alarmNozzles.forEach(function(d) { message = message+d + ","; }); normalHead.style.visibility = "hidden"; warningHead.style.visibility = "hidden"; alarmHead.style.visibility = "visible"; message = message + "号枪处于报警状态"; textSpan.style.textAlign = "left"; textSpan.innerHTML = message; return; } if (warningNozzles.length > 0) { warningNozzles.forEach(function(d) { message = message+d + ","; }); normalHead.style.visibility = "hidden"; warningHead.style.visibility = "visible"; alarmHead.style.visibility = "hidden"; message = message + "号枪处于预警状态"; textSpan.style.textAlign = "left"; textSpan.innerHTML = message; return; } } </script> <div id="nozzles" style="position: relative; width:@(screenWidth)px; height:@(mainviewHeight)px;"> @*<div id="nozzles_1" style="position: relative; float: left;margin-left:@(marginleft)px; width:@(maxNozzlewidth)px; height:@(nozzleHeight)px; border: 1px solid #00bfff"> </div> <div id="nozzles_2" style="position: relative; float: left;margin-left:@(marginleft)px; width:@(maxNozzlewidth)px; height:@(nozzleHeight)px; border: 1px solid #00bfff"> </div>*@ @* <input type="button" onclick="GenerateView(12)" value="GenerateView" />*@ @*@for (int i = 0; i < 12; i++) { <div id="nozzles_@i" style="position:relative; float: left;margin-left:@(marginleft)px; margin-top: @(margintop)px; width: @(maxNozzlewidth)px; height: @(nozzleHeight)px;border: 1px solid #00bfff"> <div id="nozzleId_@i" style="position: relative; float:left;width: 100%; height: @(textlableHeight)px; text-align: left; font-size: 22px;font-weight: bold">@i</div> <div id="nozzleImg_@i" style="position: relative; float: left;width: 100%; height: @(nozzleImagHeight)px; text-align: center"> <img id="nozzleImage_Idle_@i" src="/image/online/油枪IDEL.png" style="visibility: visible" /> <img id="nozzleImage_Calling_@i" src="/image/online/油枪CALLING.png" style="position: absolute; top: 0px; left:@((maxNozzlewidth-minNozzlewidth)/2)px;visibility: visible" /> <img id="nozzleImage_Authorized_@i" src="/image/online/油枪授权.png" style="position: absolute; top: 0px; left:@((maxNozzlewidth-minNozzlewidth)/2)px;visibility: visible" /> <img id="nozzleImage_Fuelling_@i" src="/image/online/油枪加油中.png" style="position: absolute; left: 0px;visibility: visible" /> <img id="nozzleImage_Closed_@i" src="/image/online/油枪未连接.png" style="position: absolute; top: 0px; left:@((maxNozzlewidth-minNozzlewidth)/2)px;visibility: visible" /> <img id="nozzleImage_Disconnect_@i" src="/image/online/油枪断开.png" style="position: absolute; top: 0px; left:@((maxNozzlewidth-minNozzlewidth)/2)px;visibility: visible" /> <img id="nozzleALImage_Normal_@i" src="/image/online/normal.png" style="position: absolute; top:@(nozzleImagHeight-alImgWidth)px; left:@(maxNozzlewidth-alImgWidth)px;visibility: visible" /> <img id="nozzleALImage_Warning_@i" src="/image/online/warning.png" style="position: absolute; top:@(nozzleImagHeight-alImgWidth)px; left:@(maxNozzlewidth-alImgWidth)px;visibility: visible" /> <img id="nozzleALImage_Alarm_@i" src="/image/online/alarm.png" style="position: absolute; top:@(nozzleImagHeight-alImgWidth)px; left:@(maxNozzlewidth-alImgWidth)px;visibility: visible" /> </div> <div id="nozzleAmount_@i" style="position: relative; float: left;width: 100%; height:@(textlableHeight)px; border: 1px solid#00bfff;"> <div id="nozzleAmount_img_@i" style="position: relative;float: left;width:@(textlableHeight+5)px; height:100%;border: 1px solid#00bfff;"> <img id="nozzleAmount_img_notPaid_@i" src="/image/online/人民币标志NotPaid.png" /> <img id="nozzleAmount_img_Paid_@i" src="/image/online/人民币标志已付款.png" style="position: absolute; top:@((textlableHeight-imgPaidHeight)/2)px; left:@((textlableHeight-imgPaidWidth)/2)px;" /> <span style="position: absolute; left: @(textlableHeight)px; text-align: center;line-height: @(textlableHeight)px; font-size: @(lableFontSize)px; font-weight:bold;">:</span> </div> <div> </div> </div> <div id="nozzleLiter_@i" style="position: relative; float: left; width: 100%; height:@(textlableHeight)px;font-size: @(lableFontSize)px; font-weight: bold;border: 1px solid#00bfff;"> <div id="nozzleLiter_img_@i" style="position: relative;float:left;width:@(textlableHeight)px; height:100%;"> 升: </div> <div id="nozzleLiter_text_@i" style="position: relative; float: left;"> 1234.00 </div> </div> <div id="nozzleAL_@i" style="position: relative; float: left;width: 100%; height: @(textlableHeight)px; font-size: @(lableFontSize)px; font-weight: bold;border: 1px solid#00bfff;"> 汽液比 1.3 </div> </div> }*@ </div> <img id="ALLogo" src="@(imgPrePath)AL.png" onclick="LogonClicked(this.id)" style="position: absolute; left:@(screenWidth-alLogoWidth-10)px; top:@(alLogoTop)px;visibility:visible;" /> <img id="SmartFuelLogo" src="@(imgPrePath)SmartFuel.png" onclick="LogonClicked(this.id)" style="position: absolute; left:@(screenWidth-smartFuelLogoWidth-10)px; top:@(alLogoTop)px; visibility: hidden;" /> <script> if (document.getElementById("ALLogo") != null) document.getElementById("ALLogo").style.visibility = alLogoVisibility; if (document.getElementById("SmartFuelLogo") != null) document.getElementById("SmartFuelLogo").style.visibility = smartFuelLogoVisibility; </script> <script src="~/js/mqtt.min.js"></script> <script type="text/javascript"> var hostname = 'localhost', //'192.168.1.2', port = 8384, clientId = 'mqttjs_' + (Math.random() * 1000000).toString(), timeout = 5000, keepAlive = 100, cleanSession = false, mqttVersion = 3, ssl = false; //var client = new Paho.MQTT.Client(hostname, port, clientId); //client.onConnectionLost = onConnectionLost;//绑定连接断开事件 //client.onMessageArrived = onMessageArrived;// var options = { //mqtt客户端的id,这里面应该还可以加上其他参数,具体看官方文档 clientId: 'mqttjs_' + (Math.random() * 1000000).toString(), //invocationContext: { // host: hostname, // port: port, // //path: client.path, // mqttVersion:mqttVersion, // clientId: clientId //}, //mqttVersion:mqttVersion, timeout: timeout, //keepAliveInterval: keepAlive, //cleanSession: cleanSession, useSSL: false //onSuccess: onConnect, //onFailure: onError } //浏览器采用websocket协议,host主机地址为192.168.0.200,端口为9001,路径为/mqtt var client = mqtt.connect("@Model.mqttConnectionString", options); // you add a ws:// url here ////建立连接 client.on('connect', function () { var a = document.getElementById("testmqqt"); if (a != null) a.innerHTML = "connected"; client.subscribe('/sys/Vapor_Recovery_App/Application.VaporRecoveryApp.App/thing/service/GetNozzlesData_reply', function (err) { if (!err) { client.publish('/sys/Vapor_Recovery_App/Application.VaporRecoveryApp.App/thing/service/GetNozzlesData', "Hello mqtt"); }; }); client.subscribe('/sys/Vapor_Recovery_App/Application.VaporRecoveryApp.App/thing/event/OnVaporRecoveryStateChange/post', function (err) { if (!err) { console.log("subscribe vr state change event successfully"); } else { console.log("subscribe vr state change event failed" + err); } }); }); //如果连接错误,打印错误 client.on('error', function (err) { console.log("error happens, will close the client"); client.end(); }); //如果client订阅主题成功,那么这里就是当接收到自己订阅主题的处理逻辑 client.on('message', function (topic, message) { // message is Buffer,此处就是打印消息的具体内容 //console.log('-> ' + message.toString()); var a = document.getElementById("testmqqt"); if (a != null) a.innerHTML = topic; if (topic === "/sys/Vapor_Recovery_App/Application.VaporRecoveryApp.App/thing/service/GetConfigAsync_reply") { processConfigData(JSON.parse(message.toString())); return; } if (topic === "/sys/Vapor_Recovery_App/Application.VaporRecoveryApp.App/thing/service/GetNozzlesData_reply") { ClearOldItems(); GenerateNozzleView(JSON.parse(message.toString())); return; } if (topic === '/sys/Vapor_Recovery_App/Application.VaporRecoveryApp.App/thing/event/OnVaporRecoveryStateChange/post') { UpdateVrState(JSON.parse(message.toString())); return; } }); function processConfigData(message) { var WarningValueMin = message.onlineWatchConfig.WarningValueMin; var WarningValueMax = message.onlineWatchConfig.WarningValueMax; console.log(message); //var a = document.getElementById("testmqqt"); //if (a != null) a.innerHTML = WarningValueMin; } function processNozzlesData(message) { var data = message.data; var pumpMap = new Map(); var currentDispenserId = 0; var nozzlesArray = new Array(); data.forEach(function (d) { if (currentDispenserId === 0) { currentDispenserId = d.SiteLevelDispenserId; nozzlesArray.push(d); } else if (currentDispenserId !== d.SiteLevelDispenserId) { pumpMap.set(currentDispenserId, new Array().concat(nozzlesArray)); currentDispenserId = d.SiteLevelDispenserId; nozzlesArray.splice(0, nozzlesArray.length); nozzlesArray.push(d); } else { currentDispenserId = d.SiteLevelDispenserId; //nozzlesArray.clear(); nozzlesArray.push(d); } }); if (nozzlesArray.length > 0) { pumpMap.set(currentDispenserId, new Array().concat(nozzlesArray)); nozzlesArray.splice(0, nozzlesArray.length); } pumpMap.forEach(function (value, key) { var dispenserId = key; var nozzleCount = value.length; }); } function LogonClicked(id) { var logo = document.getElementById(id); if (logo != null) logo.style.visibility = "hidden"; ClearOldItems(); if (id === "ALLogo" && client != null) { currentView = "AL"; client.publish('/sys/Vapor_Recovery_App/Application.VaporRecoveryApp.App/thing/service/GetNozzlesData', "Hello mqtt"); if (document.getElementById("SmartFuelLogo") != null) document.getElementById("SmartFuelLogo").style.visibility = "visible"; } else if (id === "SmartFuelLogo" && client != null) { if (document.getElementById("ALLogo") != null) currentView = "SmartFuel"; document.getElementById("ALLogo").style.visibility = "visible"; } } //// 用户程序点击事件 function Onmqtttest() { message = "message from browser with websocket"; // 消息内容 //发布主题presence,消息内容为Hello mqtt,订阅与推送一样自发自收 client.publish('/sys/Vapor_Recovery_App/Application.VaporRecoveryApp.App/thing/service/GetConfigAsync', 'Hello mqtt ' + message); var a = document.getElementById("testmqqt"); if (a != null) a.innerHTML = message; } //显示前一页 function ShowPreviousPage() { if (currentPage === 1) { alert("已经是第一页!"); return; } ClearOldItems(); oldPage = currentPage; currentPage--; //如果当前油气回收页面则重新获取NozzlesData if (currentView === "AL" && client != null) { client.publish('/sys/Vapor_Recovery_App/Application.VaporRecoveryApp.App/thing/service/GetNozzlesData'); } } //显示下一页 function ShowNextPage() { if (currentPage === totalPage) { alert("已经是最后一页!"); return; } ClearOldItems(); oldPage = currentPage; currentPage++; //如果当前油气回收页面则重新获取NozzlesData if (currentView === "AL" && client != null) { client.publish('/sys/Vapor_Recovery_App/Application.VaporRecoveryApp.App/thing/service/GetNozzlesData'); } } </script>