Nozzles.cshtml 52 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901
  1. @model Applications.UniversalApi_WebConsole_App.Models.SmartFuel.SmartFuelViewInfo
  2. @*
  3. For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
  4. *@
  5. @{
  6. var screenWidth = 1280.00;
  7. var mainviewHeight = 501.00;
  8. int maxNozzleNumberInOnePage = 12;
  9. //int maxNozzlewidth = 176;
  10. var maxNozzlewidth = 183.00;
  11. int minNozzlewidth = 129;
  12. //including the right margin at the end of a row,current display 6 nozzles in one row
  13. var marginleft = (screenWidth - maxNozzlewidth * 6) / 7;
  14. int textlableHeight = 34;//人民币未付款图标高度/宽度
  15. //int nozzleImagHeight = 123;
  16. int nozzleImagHeight = 125;
  17. int nozzleHeight = nozzleImagHeight + textlableHeight * 3;//259;
  18. var margintop = (mainviewHeight - nozzleHeight * 2) / 3;
  19. //int margintop
  20. int lableFontSize = 22;
  21. int imgPaidHeight = 25;
  22. int imgPaidWidth = 20;
  23. int alImgWidth = 44;
  24. int alImgHeight = 43;
  25. int headRightHeight = 44;
  26. int alLogoWidth = 61;
  27. int smartFuelLogoWidth = 43;
  28. //int alLogoTop = headRightHeight + 10;
  29. }
  30. <script>
  31. var currentPage = 1;
  32. var oldPage = currentPage;
  33. var totalPage = 1;
  34. var currentView = "AL";
  35. var alLogoVisibility = currentView === "AL" ? "hidden" : "visible";
  36. var smartFuelLogoVisibility = currentView === "SmartFuel" ? "hidden" : "visible";
  37. var amountDecimalDigits = 2;
  38. var volumeDecimalDigits = 2;
  39. var intervalId;
  40. var warningNozzles = new Array();
  41. var alarmNozzles = new Array();
  42. function UpdateFooterPage() {
  43. if (document.getElementById("PumpsPage_Bottom_pages") != null) {
  44. for (var p = 1; p < 6; p++) {
  45. var imgCurrentPageIdStr = "PumpsPage_Bottom_pages_img_"+p;
  46. var imgCurrentPageNotShowedIdStr = "PumpsPage_Bottom_pages_notshowed_img_"+p;
  47. if (p > totalPage) {
  48. if (document.getElementById(imgCurrentPageIdStr) != null)
  49. document.getElementById(imgCurrentPageIdStr).style.visibility = "hidden";
  50. if (document.getElementById(imgCurrentPageNotShowedIdStr) != null)
  51. document.getElementById(imgCurrentPageNotShowedIdStr).style.visibility = "hidden";
  52. } else if (p === currentPage || (p === 5 && currentPage > p)) {
  53. if (document.getElementById(imgCurrentPageIdStr) != null)
  54. document.getElementById(imgCurrentPageIdStr).style.visibility = "visible";
  55. if (document.getElementById(imgCurrentPageNotShowedIdStr) != null)
  56. document.getElementById(imgCurrentPageNotShowedIdStr).style.visibility = "hidden";
  57. }else {
  58. if (document.getElementById(imgCurrentPageIdStr) != null)
  59. document.getElementById(imgCurrentPageIdStr).style.visibility = "hidden";
  60. if (document.getElementById(imgCurrentPageNotShowedIdStr) != null)
  61. document.getElementById(imgCurrentPageNotShowedIdStr).style.visibility = "visible";
  62. }
  63. }
  64. //update next page img position
  65. var nextPageImg = document.getElementById("PumpsPage_Bottom_pages_img_next_page");
  66. var previousPageImg = document.getElementById("PumpsPage_Bottom_pages_img_previous_page");
  67. if (previousPageImg != null) {
  68. previousPageImg.style.visibility = (totalPage===1||currentPage===1)?"hidden":"visible";
  69. }
  70. if (nextPageImg != null) {
  71. if (totalPage < 5)
  72. nextPageImg.style.left = (17.5 * totalPage).toString() + "%";
  73. nextPageImg.style.visibility = (totalPage===1||currentPage===totalPage)?"hidden":"visible";
  74. }
  75. }
  76. }
  77. function ClearOldItems() {
  78. var nozzlesDiv = document.getElementById("nozzles");
  79. if (nozzlesDiv != null) {
  80. @*for (var cl = 1; cl < @(maxNozzleNumberInOnePage+1); cl++) {
  81. var ocn = document.getElementById("nozzle_" + (cl+@(maxNozzleNumberInOnePage)*(currentPage-1)));
  82. if (ocn != null) nozzlesDiv.removeChild(ocn);
  83. }*@
  84. var nl = nozzlesDiv.childNodes.length;
  85. for (var cn = 0; cn < nl; cn++) {
  86. var c = nozzlesDiv.childNodes[0];
  87. nozzlesDiv.removeChild(c);
  88. }
  89. }
  90. }
  91. //Generate nozzle view for smart fuel
  92. function GenerateSmartFuelNozzleView(message) {
  93. var nozzlesDiv = document.getElementById("nozzles");
  94. @*for (var cl = 0; cl < @maxNozzleNumberInOnePage; cl++) {
  95. var ocn = document.getElementById("nozzle_" + (cl+@(maxNozzleNumberInOnePage)*(oldPage-1)+1));
  96. if (ocn != null) nozzlesDiv.removeChild(ocn);
  97. }*@
  98. if (nozzlesDiv == null) {
  99. console.log("nozzles div is null");
  100. return;
  101. }
  102. if (!Array.isArray(message))
  103. console.log("message is not a array:"+message);
  104. if (message == null || !Array.isArray(message)|| !(message.length > 0) ){
  105. console.log("Invalid message received for GenerateNozzleView");
  106. return;
  107. }
  108. //cast the pump array to an nozzle array
  109. var nozzlesArray = new Array();
  110. message.forEach(function(p) {
  111. if (p.Nozzles != null && p.Nozzles.length>0) {
  112. p.Nozzles.forEach(function (n) {
  113. n.PumpId = p.PumpId;
  114. nozzlesArray.push(n);
  115. });
  116. }
  117. });
  118. amountDecimalDigits = message[0].AmountDecimalDigits;
  119. volumeDecimalDigits = message[0].VolumeDecimalDigits;
  120. totalPage = Math.ceil(nozzlesArray.length / @(maxNozzleNumberInOnePage));//message.data.length / @(maxNozzleNumberInOnePage)+(message.data.length % (@maxNozzleNumberInOnePage) === 0 ? 0 : 1);
  121. if (currentPage > totalPage) {
  122. currentPage = totalPage;
  123. console.log("configuration changed???");
  124. }
  125. var dataLength =
  126. (nozzlesArray.length - @maxNozzleNumberInOnePage * (currentPage - 1)) > @maxNozzleNumberInOnePage
  127. ? @maxNozzleNumberInOnePage
  128. : (nozzlesArray.length - @maxNozzleNumberInOnePage * (currentPage - 1));
  129. var temp = nozzlesArray.slice(@maxNozzleNumberInOnePage * (currentPage - 1), @maxNozzleNumberInOnePage * (currentPage - 1)+dataLength);
  130. temp.forEach(function (d) {
  131. var nozzleId = d.LogicalId;
  132. var nozzleDiv = document.createElement("div");
  133. nozzleDiv.id = "pump"+d.PumpId+"_nozzle" + nozzleId;
  134. nozzleDiv.style =
  135. "position:relative; float: left;margin-left:"+@(marginleft*100/screenWidth)+"%; margin-top:" +@(margintop*100/screenWidth)+"%; width:" +@(maxNozzlewidth*100/screenWidth)+"%; height:"+@(nozzleHeight*100/mainviewHeight)+"%;";
  136. var nozzleIdDiv = document.createElement("div");
  137. nozzleIdDiv.id = "pump"+d.PumpId+"_nozzleId" + nozzleId;
  138. nozzleIdDiv.style =
  139. "position: absolute; left:0px; top:0px;width: 100%; height:" +@(textlableHeight*100/ nozzleHeight)+"%; text-align: left; font-size: 1.375rem;font-weight: bold;";
  140. nozzleIdDiv.innerHTML = d.SiteLevelNozzleId;
  141. var nozzleImgDiv = document.createElement("div");
  142. nozzleImgDiv.id = "pump"+d.PumpId+"_nozzleImg" + nozzleId;
  143. //nozzleImgDiv.style = "position: relative; float: left;width: 100%; height:" +@(nozzleImagHeight)+"px; text-align: center;border: 1px solid#00bfff;";
  144. nozzleImgDiv.style = "position: relative; float: left;width: 100%; height:" +@(nozzleImagHeight*100/nozzleHeight)+"%;";
  145. nozzleImgDiv.draggable = false;
  146. //油枪状态图
  147. //var fuelingStatusIdleVisible = (d.LogicalState === "IDLE") ? "hidden" : "visible";
  148. //var fuelingStatusFuellingVisible = (d.LogicalState === "FUELING") ? "visible" : "hidden";
  149. var fuelingStatusIdleVisible = "hidden";
  150. var fuelingStatusIdleStaticVisible = "visible";
  151. var fuelingStatusFuellingVisible = "hidden";
  152. var fuelingStatusCallingVisible = "hidden";
  153. var fuelingStatusAuthrizedVisible = "hidden";
  154. var fuelingStatusDisconnectVisible = "hidden";
  155. var fuelingStatusClosedVisible = "hidden";
  156. //IDLE,CALLING,AUTHORIZED,FUELLING,DISCONNECT,油枪未连接
  157. //var imgIdle = document.createElement("img");
  158. var imgIdle = document.createElement("img");
  159. imgIdle.id = "pump"+d.PumpId+"_nozzleImage_Idle_" + nozzleId;
  160. imgIdle.style = "visibility:" + fuelingStatusIdleVisible + ";width: 100%; height:100%;";
  161. imgIdle.draggable = false;
  162. //imgIdle.src = "/images/smartFuel/idle.gif?a=" + Math.random();
  163. imgIdle.src = "/images/smartFuel/idle.gif?a=" + d.PumpId+nozzleId;
  164. var imgIdleStatic = document.createElement("img");
  165. imgIdleStatic.id = "pump"+d.PumpId+"_nozzleImage_IdleStatic_" + nozzleId;
  166. imgIdleStatic.style = "position: absolute; top: 0px; left:0px;visibility:" + fuelingStatusIdleStaticVisible + ";width: 100%; height:100%;";
  167. imgIdleStatic.draggable = false;
  168. imgIdleStatic.src = "/images/smartFuel/idleStatic.png";
  169. var imgCalling = document.createElement("img");
  170. imgCalling.id = "pump"+d.PumpId+"_nozzleImage_Calling_" + nozzleId;
  171. //imgCalling.style = "position: absolute; top: 0px; left:" +@((maxNozzlewidth-minNozzlewidth)/2)+"px;visibility:" + fuelingStatusCallingVisible + ";";
  172. imgCalling.style = "position: absolute; top: 0px; left:0px;visibility:" + fuelingStatusCallingVisible + ";width: 100%; height:100%;";
  173. imgCalling.draggable = false;
  174. imgCalling.src = "/images/smartFuel/calling.png";
  175. var imgAuthorized= document.createElement("img");
  176. imgAuthorized.id = "pump"+d.PumpId+"_nozzleImage_Authorized_" + nozzleId;
  177. //imgAuthorized.style = "position: absolute; top: 0px; left:"+@((maxNozzlewidth-minNozzlewidth)/2)+"px;visibility:" + fuelingStatusAuthrizedVisible+";";
  178. imgAuthorized.style = "position: absolute; top: 0px; left:0px;visibility:" + fuelingStatusAuthrizedVisible +";width: 100%; height:100%;";
  179. imgAuthorized.draggable = false;
  180. imgAuthorized.src = "/images/smartFuel/authorize.png";
  181. var imgFuelling = document.createElement("img");
  182. imgFuelling.id = "pump" + d.PumpId + "_nozzleImage_Fuelling_" + nozzleId;
  183. imgFuelling.draggable = false;
  184. //imgFuelling.style = "position: absolute; left: 0px;top: 0px;visibility:" + fuelingStatusFuellingVisible + ";width: 100%; height:100%;";
  185. imgFuelling.style = "position: absolute; left: 0px;top: 0px;visibility:" + fuelingStatusFuellingVisible + ";width: 100%; height:100%;";
  186. //imgFuelling.src = "/images/smartFuel/fuelling.gif?a=" + Math.random();
  187. imgFuelling.src = "/images/smartFuel/fuelling.gif?a=" + d.PumpId+nozzleId;
  188. var imgDisconnect= document.createElement("img");
  189. imgDisconnect.id = "pump"+d.PumpId+"_nozzleImage_Disconnect_" + nozzleId;
  190. //imgDisconnect.style = "position: absolute; top: 0px; left:"+@((maxNozzlewidth-minNozzlewidth)/2)+"px;visibility:" + fuelingStatusDisconnectVisible+";";
  191. imgDisconnect.style = "position: absolute; top: 0px; left:0px;visibility:" + fuelingStatusDisconnectVisible +";width: 100%; height:100%;";
  192. imgDisconnect.draggable = false;
  193. imgDisconnect.src = "/images/smartFuel/disconnect.png";
  194. var imgClosed= document.createElement("img");
  195. imgClosed.id = "pump"+d.PumpId+"_nozzleImage_Closed_" + nozzleId;
  196. //imgClosed.style = "position: absolute; top: 0px; left:"+@((maxNozzlewidth-minNozzlewidth)/2)+"px;visibility:" + fuelingStatusClosedVisible+";";
  197. imgClosed.style = "position: absolute; top: 0px; left:0px;visibility:" + fuelingStatusClosedVisible +";width: 100%; height:100%;";
  198. imgClosed.draggable = false;
  199. imgClosed.src = "/images/smartFuel/closed.png";
  200. nozzleImgDiv.appendChild(imgIdle);
  201. nozzleImgDiv.appendChild(imgIdleStatic);
  202. nozzleImgDiv.appendChild(imgCalling);
  203. nozzleImgDiv.appendChild(imgAuthorized);
  204. nozzleImgDiv.appendChild(imgFuelling);
  205. nozzleImgDiv.appendChild(imgDisconnect);
  206. nozzleImgDiv.appendChild(imgClosed);
  207. var imgNotPaidVisible = "hidden";
  208. var imgPaidVisible = "visible";
  209. var nozzleAmountDiv = document.createElement("div");
  210. nozzleAmountDiv.id = "pump"+d.PumpId+"_nozzleAmount_" + nozzleId;
  211. nozzleAmountDiv.style = "position: relative; float: left;width: 100%; height:" +@(textlableHeight*100/nozzleHeight)+"%;";
  212. var nozzleAmountImgDiv = document.createElement("div");
  213. nozzleAmountImgDiv.id = "pump"+d.PumpId+"_nozzleAmount_img_"+nozzleId;
  214. nozzleAmountImgDiv.style = "position: relative;float: left;width:" +@(textlableHeight*100/ maxNozzlewidth)+"%; height:100%;";
  215. var nozzleAmountUnpaidImg = document.createElement("img");
  216. nozzleAmountUnpaidImg.id = "pump"+d.PumpId+"_nozzleAmount_img_Unpaid_" + nozzleId;
  217. nozzleAmountUnpaidImg.style = "width:100%; height:100%;"+"visibility:" + imgNotPaidVisible;
  218. nozzleAmountUnpaidImg.draggable = false;
  219. nozzleAmountUnpaidImg.src = "/images/smartFuel/payable.png";
  220. var nozzleAmountPaidImg = document.createElement("img");
  221. nozzleAmountPaidImg.id = "pump"+d.PumpId+"_nozzleAmount_img_Paid_" + nozzleId;
  222. nozzleAmountPaidImg.style = "position: absolute; width:" +@(imgPaidWidth*100/textlableHeight)+"%;height:"+@(imgPaidHeight*100/textlableHeight) +"%;top:"+@((textlableHeight-imgPaidHeight)*100/2/ textlableHeight)+"%; left:"+@((textlableHeight-imgPaidWidth)*100/2/ textlableHeight)+"%;visibility:"+imgPaidVisible+";";
  223. nozzleAmountPaidImg.draggable = false;
  224. nozzleAmountPaidImg.src = "/images/smartFuel/paid.png";
  225. nozzleAmountImgDiv.appendChild(nozzleAmountUnpaidImg);
  226. nozzleAmountImgDiv.appendChild(nozzleAmountPaidImg);
  227. var nozzleAmountColonDiv = document.createElement("div");
  228. nozzleAmountColonDiv.id = "pump" + d.PumpId + "_nozzleAmount_colon_" + nozzleId;
  229. nozzleAmountColonDiv.style = "position: relative;float: left;width:"+@(8*100/ maxNozzlewidth)+"%; height:100%;font-size:1.375rem; font-weight: bold;text-align: center;";
  230. nozzleAmountColonDiv.innerHTML = " :";
  231. var nozzleAmountValueDiv = document.createElement("div");
  232. nozzleAmountValueDiv.id = "pump"+d.PumpId+"_nozzleAmount_value_" + nozzleId;
  233. nozzleAmountValueDiv.style = "position: relative;float: left;width:" +@((maxNozzlewidth-textlableHeight-8)*100/maxNozzlewidth)+"%; height:100%;font-size:1.375rem; font-weight: bold;text-align: left;";
  234. nozzleAmountValueDiv.innerHTML = "0.00"; //(d.Amount!=null)?(d.Amount/Math.pow(10,amountDecimalDigits)).toFixed(2): "0.00";
  235. nozzleAmountDiv.appendChild(nozzleAmountImgDiv);
  236. nozzleAmountDiv.appendChild(nozzleAmountColonDiv);
  237. nozzleAmountDiv.appendChild(nozzleAmountValueDiv);
  238. var nozzleAccumulatorTextDiv = document.createElement("div");
  239. nozzleAccumulatorTextDiv.id = "pump"+d.PumpId+"_nozzleAccumulatorText_" + nozzleId;
  240. nozzleAccumulatorTextDiv.style = "position: relative; float: left;width: 100%; height:" +@(textlableHeight*100/nozzleHeight)+"%; font-size:1.375rem; font-weight: bold;";
  241. nozzleAccumulatorTextDiv.innerHTML = "累计数:";
  242. var nozzleAccumulatorValueDiv = document.createElement("div");
  243. nozzleAccumulatorValueDiv.id = "pump"+d.PumpId+"_nozzleAccumulatorValue_" + nozzleId;
  244. nozzleAccumulatorValueDiv.style = "position: relative; float: left;width: 100%; height:" +@(textlableHeight*100/nozzleHeight)+"%; font-size:1.375rem; font-weight: bold;";
  245. nozzleAccumulatorValueDiv.innerHTML = "0.00"; //(d.VolumeTotalizer!==null)?(d.VolumeTotalizer/Math.pow(10,volumeDecimalDigits)).toFixed(2):"0.00";
  246. nozzleDiv.appendChild(nozzleImgDiv);
  247. nozzleDiv.appendChild(nozzleIdDiv);
  248. nozzleDiv.appendChild(nozzleAmountDiv);
  249. nozzleDiv.appendChild(nozzleAccumulatorTextDiv);
  250. nozzleDiv.appendChild(nozzleAccumulatorValueDiv);
  251. nozzlesDiv.appendChild(nozzleDiv);
  252. });
  253. UpdateFooterPage();
  254. setTimeout(GetDeviceState,2,-1,-1);
  255. }
  256. function GetAvailableTransactions(pumpId, nozzleId) {
  257. var temp = {
  258. "Parameters": [
  259. {"Name": "PumpId", "Value": pumpId.toString() },
  260. {"Name": "NozzleId", "Value": nozzleId.toString()}
  261. ]
  262. };
  263. var message = JSON.stringify(temp);
  264. client.publish(apis.has("GetAvailableTransactions") ? apis.get("GetAvailableTransactions"):'/Applications.FDC.FdcServerHostApp/fdcServerApp/thing/service/GetAvailableTransactions/', message);
  265. }
  266. function GetDeviceState(pumpId, nozzleId) {
  267. var temp = {
  268. "Parameters": [
  269. {"Name": "PumpId", "Value": pumpId.toString() },
  270. {"Name": "NozzleId", "Value": nozzleId.toString()}
  271. ]
  272. };
  273. var message = JSON.stringify(temp);
  274. client.publish(apis.has("GetDeviceState")? apis.get("GetDeviceState") :'/Applications.FDC.FdcServerHostApp/fdcServerApp/thing/service/GetDeviceState/',message);
  275. }
  276. function UpdatePayableStatus(message) {
  277. if (message == null || !(message.length > 0)) {
  278. console.log("invalid/null message received for GetAvailableTransactions");
  279. return;
  280. }
  281. message.forEach(function(data) {
  282. var unpaidImg = document.getElementById("pump" + data.PumpId + "_nozzleAmount_img_Unpaid_" + data.LogicalNozzleId);
  283. var paidImg = document.getElementById("pump" + data.PumpId + "_nozzleAmount_img_Paid_" + data.LogicalNozzleId);
  284. if (unpaidImg == null || paidImg == null) {
  285. console.log("paid/unpaid image is not exist on UI");
  286. return;
  287. }
  288. unpaidImg.style.visibility = (data.hasPayableTransactions === true) ? "visible" : "hidden";
  289. paidImg.style.visibility = (data.hasPayableTransactions === false) ? "visible" : "hidden";
  290. });
  291. }
  292. function ProcessTransactionStateChange(message) {
  293. if (message == null || message.Transaction==null) {
  294. console.log("invalid/null message received for GetAvailableTransactions");
  295. return;
  296. }
  297. if (message.State === "Paid" || message.State==="Payable") {
  298. setTimeout(GetAvailableTransactions,1,message.Transaction.PumpId,message.Transaction.LogicalNozzleId);
  299. }
  300. }
  301. function ProcessCurrentFuellingStateChange(message) {
  302. if (message == null || message.Transaction == null || message.Transaction.Nozzle == null) {
  303. console.log("invalid/null message received for GetAvailableTransactions");
  304. return;
  305. }
  306. //update the nozzleState
  307. if (message.Transaction.Finished === false) {
  308. var commonId = "pump" + message.Transaction.Nozzle.PumpId + "_nozzleImage_";
  309. var commonFuellingId = commonId + "Fuelling_";
  310. var fuellingImg = document.getElementById(commonFuellingId + message.Transaction.Nozzle.LogicalId);
  311. if (fuellingImg != null && fuellingImg.style.visibility === "hidden") {
  312. var commonIdleId = commonId + "Idle_";
  313. var commonIdleStaticId = commonId + "IdleStatic_";
  314. var commonCallingId = commonId + "Calling_";
  315. var commonAuthId = commonId + "Authorized_";
  316. var commonDisconnectId = commonId + "Disconnect_";
  317. var commonClosedId = commonId + "Closed_";
  318. var authImg = document.getElementById(commonAuthId + message.Transaction.Nozzle.LogicalId);
  319. var idleImg = document.getElementById(commonIdleId + message.Transaction.Nozzle.LogicalId);
  320. var idleSaticImg = document.getElementById(commonIdleStaticId + message.Transaction.Nozzle.LogicalId);
  321. var callingImg = document.getElementById(commonCallingId + message.Transaction.Nozzle.LogicalId);
  322. var disconnectImg = document.getElementById(commonDisconnectId + message.Transaction.Nozzle.LogicalId);
  323. var closedImg = document.getElementById(commonClosedId + message.Transaction.Nozzle.LogicalId);
  324. var idleImgVisible = "hidden";
  325. var idleImgStaticVisible = "hidden";
  326. var callingImgVisible = "hidden";
  327. var authorizedImgVisible = "hidden";
  328. var fuellingImgVisible = "visible";
  329. var disconnectImgVisible = "hidden";
  330. if (idleImg != null) {idleImg.style.visibility = idleImgVisible;
  331. }
  332. if (idleSaticImg != null) idleSaticImg.style.visibility=idleImgStaticVisible;
  333. if (callingImg != null) callingImg.style.visibility = callingImgVisible;
  334. if (authImg != null) authImg.style.visibility = authorizedImgVisible;
  335. if (fuellingImg != null) {fuellingImg.style.visibility = fuellingImgVisible;
  336. fuellingImg.src = fuellingImg.src; //"/images/smartFuel/fuelling.gif?a=" + Math.random();
  337. }
  338. if (disconnectImg != null) disconnectImg.style.visibility = disconnectImgVisible;
  339. if (closedImg != null) closedImg.style.visibility = "hidden";
  340. }
  341. }
  342. var nozzleAmtDiv = document.getElementById("pump" + message.Transaction.Nozzle.PumpId + "_nozzleAmount_value_" + message.Transaction.Nozzle.LogicalId);
  343. if (nozzleAmtDiv == null) return;
  344. nozzleAmtDiv.innerHTML = message.Transaction.Amount!=null?(message.Transaction.Amount /Math.pow(10, amountDecimalDigits)).toFixed(amountDecimalDigits):"0.00";
  345. if (message.Transaction.Finished === true) {
  346. var nozzleAccumulatorValueDiv = document.getElementById("pump" + message.Transaction.Nozzle.PumpId + "_nozzleAccumulatorValue_" + message.Transaction.Nozzle.LogicalId);
  347. if (nozzleAccumulatorValueDiv == null) return;
  348. nozzleAccumulatorValueDiv.innerHTML = message.Transaction.VolumeTotalizer!=null?(message.Transaction.VolumeTotalizer /Math.pow(10, volumeDecimalDigits)).toFixed(volumeDecimalDigits):"0.00";
  349. //setTimeout(GetAvailableTransactions,1,message.Transaction.Nozzle.PumpId,message.Transaction.Nozzle.LogicalId);
  350. }
  351. }
  352. function ProcessFdcControllerStatusChange(message) {
  353. if (message == null || message.PumpId == null || message.PumpId === ""||message.logicalState ==="") {
  354. console.log("Invalid FDC Controller Status change");
  355. return;
  356. }
  357. //ignore the locked state
  358. if (message.logicalState === "FDC_LOCKED") {
  359. return;
  360. }
  361. var commonId = "pump" + message.PumpId + "_nozzleImage_";
  362. var commonAuthId = commonId + "Authorized_";
  363. var commonIdleId = commonId + "Idle_";
  364. var commonIdleStaticId = commonId + "IdleStatic_";
  365. var commonCallingId = commonId + "Calling_";
  366. var commonFuellingId = commonId + "Fuelling_";
  367. var commonDisconnectId = commonId + "Disconnect_";
  368. var commonclosedId = commonId + "Closed_";
  369. console.log("logicalState:" + message.logicalState);
  370. var idleImgVisible = message.logicalState === "FDC_READY" ? "visible" : "hidden";
  371. var idleImgStaticVisible = message.logicalState === "FDC_READY" ? "visible" : "hidden";
  372. var callingImgVisible = message.logicalState === "FDC_CALLING" ? "visible" : "hidden";
  373. var authorizedImgVisible = message.logicalState === "FDC_AUTHORISED" || message.logicalState === "FDC_STARTED"? "visible" : "hidden";
  374. var fuellingImgVisible = message.logicalState === "FDC_FUELLING" ? "visible" : "hidden";
  375. var disconnectImgVisible = message.logicalState === "FDC_OFFLINE"? "visible" : "hidden";
  376. var closedImgVisible = message.logicalState === "FDC_CLOSED" || message.logicalState === "FDC_ERRORSTATE" || message.logicalState ==="FDC_UNDEFINED"? "visible" : "hidden";
  377. if (message.logicalId === "") {
  378. var idleImgs = $("img[id^=" + commonIdleId);
  379. if (idleImgs != null) {
  380. idleImgs.each(function (index, element) {
  381. var tempIdleVisible = idleImgVisible;
  382. var tempFuellingImg = document.getElementById(commonFuellingId + element.id.substr(commonIdleId.length));
  383. if (tempFuellingImg != null && tempFuellingImg.style.visibility !== "visible") {
  384. tempIdleVisible = "hidden";
  385. }
  386. if (element.style.visibility !== tempIdleVisible) {
  387. element.style.visibility = tempIdleVisible;
  388. if (tempIdleVisible === "visible") {
  389. element.src = element.src;//"/images/smartFuel/idle.gif?a=" + Math.random();
  390. }
  391. }
  392. });
  393. }
  394. var idleStaticImgs = $("img[id^=" + commonIdleStaticId);
  395. if (idleStaticImgs != null) {
  396. idleStaticImgs.each(function (index, element) {
  397. var tempIdleStaticVisible = idleImgStaticVisible;
  398. var tempFuellingImg = document.getElementById(commonFuellingId + element.id.substr(commonIdleStaticId.length));
  399. if (tempFuellingImg != null && tempFuellingImg.style.visibility === "visible") {
  400. tempIdleStaticVisible = "hidden";
  401. }
  402. if (element.style.visibility !== tempIdleStaticVisible) {
  403. element.style.visibility = tempIdleStaticVisible;
  404. }
  405. });
  406. }
  407. var callingImgs = $("img[id^=" + commonCallingId);
  408. if (callingImgs != null) {
  409. callingImgs.each(function (index, element) {
  410. if (element.style.visibility !== callingImgVisible)
  411. element.style.visibility = callingImgVisible;
  412. });
  413. }
  414. var authorizedImgs = $("img[id^=" + commonAuthId);
  415. if (authorizedImgs != null) {
  416. authorizedImgs.each(function (index, element) {
  417. if (element.style.visibility !== authorizedImgVisible)
  418. element.style.visibility = authorizedImgVisible;
  419. });
  420. }
  421. var fuellingImgs = $("img[id^=" + commonFuellingId);
  422. if (fuellingImgs != null) {
  423. fuellingImgs.each(function (index, element) {
  424. if (element.style.visibility !== fuellingImgVisible) {
  425. element.style.visibility = fuellingImgVisible;
  426. if (fuellingImgVisible === "visible") {
  427. element.src = element.src; //"/images/smartFuel/fuelling.gif?a=" + Math.random();
  428. }
  429. }
  430. });
  431. }
  432. var offlineImgs = $("img[id^=" + commonDisconnectId);
  433. if (offlineImgs != null) {
  434. offlineImgs.each(function (index, element) {
  435. if (element.style.visibility !== disconnectImgVisible)
  436. element.style.visibility = disconnectImgVisible;
  437. });
  438. }
  439. var closedImgs = $("img[id^=" + commonclosedId);
  440. if (closedImgs != null) {
  441. closedImgs.each(function (index, element) {
  442. if (element.style.visibility !== closedImgVisible)
  443. element.style.visibility = closedImgVisible;
  444. });
  445. }
  446. } else {
  447. var idleImg = document.getElementById(commonIdleId + message.logicalId);
  448. var idleSaticImg = document.getElementById(commonIdleStaticId + message.logicalId);
  449. var callingImg = document.getElementById(commonCallingId + message.logicalId);
  450. var authImg = document.getElementById(commonAuthId + message.logicalId);
  451. var fuellingImg = document.getElementById(commonFuellingId + message.logicalId);
  452. var disconnectImg = document.getElementById(commonDisconnectId + message.logicalId);
  453. var closedImg = document.getElementById(commonclosedId + message.logicalId);
  454. if (fuellingImg != null && fuellingImg.style.visibility !== "visible" && (message.logicalState === "FDC_READY")) {
  455. idleImgVisible = "hidden";
  456. idleImgStaticVisible = "visible";
  457. }
  458. if (idleImg != null && idleImg.style.visibility !== idleImgVisible) {
  459. idleImg.style.visibility = idleImgVisible;
  460. if (idleImgVisible === "visible") {
  461. idleImg.src = idleImg.src; //"/images/smartFuel/idle.gif?a=" + Math.random();
  462. }
  463. }
  464. if (idleSaticImg != null && idleSaticImg.style.visibility !== idleImgVisible) {
  465. idleSaticImg.style.visibility = idleImgStaticVisible;
  466. }
  467. if (callingImg != null && callingImg.style.visibility !== callingImgVisible) callingImg.style.visibility = callingImgVisible;
  468. if (authImg != null && authImg.style.visibility!== authorizedImgVisible) authImg.style.visibility = authorizedImgVisible;
  469. if (fuellingImg != null && fuellingImg.style.visibility !== fuellingImgVisible) {
  470. fuellingImg.style.visibility = fuellingImgVisible;
  471. if (fuellingImgVisible === "visible") {
  472. fuellingImg.src = fuellingImg.src; //"/images/smartFuel/fuelling.gif?a=" + Math.random();
  473. }}
  474. if (disconnectImg != null && disconnectImg.style.visibility !== disconnectImgVisible) disconnectImg.style.visibility = disconnectImgVisible;
  475. if (closedImg != null && closedImg.style.visibility !== closedImgVisible) closedImg.style.visibility = closedImgVisible;
  476. if (message.logicalState === "FDC_FUELLING") {
  477. var authorizedImgs = $("img[id^=" + commonAuthId);
  478. if (authorizedImgs != null) {
  479. authorizedImgs.each(function(index,element) {
  480. if (element.id !== commonAuthId + message.logicalId && element.style.visibility === "visible") {
  481. element.style.visibility = "hidden";
  482. var tempNozzleId = element.id.toString().substr(commonAuthId.length);
  483. var tempIdleImg = document.getElementById(commonIdleStaticId + tempNozzleId);
  484. if (tempIdleImg != null) tempIdleImg.style.visibility = "visible";
  485. }
  486. });
  487. }
  488. }
  489. }
  490. //var r = document.getElementById("pump"+message.PumpId+"_nozzleImg"+"^");
  491. }
  492. function ProcessDeviceState(message) {
  493. if (message == null || !Array.isArray(message)|| !(message.length>0)) {
  494. console.log("Invalid device state");
  495. return;
  496. }
  497. console.log(message);
  498. message.forEach(function (device) {
  499. var commonId = "pump" + device.PumpId + "_nozzleImage_";
  500. var commonAuthId = commonId + "Authorized_";
  501. var commonIdleId = commonId + "Idle_";
  502. var commonIdleStaticId = commonId + "IdleStatic_";
  503. var commonCallingId = commonId + "Calling_";
  504. var commonFuellingId = commonId + "Fuelling_";
  505. var commonDisconnectId = commonId + "Disconnect_";
  506. var commonClosedId = commonId + "Closed_";
  507. if (device.Nozzles != null && device.Nozzles.length > 0) {
  508. device.Nozzles.forEach(function(n) {
  509. var idleImgStaticVisible = device.DeviceState === "FDC_READY" ? "visible" : "hidden";
  510. var idleImgVisible = "hidden";
  511. var callingImgVisible = device.DeviceState === "FDC_CALLING" ? "visible" : "hidden";
  512. var authorizedImgVisible = device.DeviceState === "FDC_AUTHORISED" || device.GetDeviceState ==="FDC_STARTED"? "visible" : "hidden";
  513. var fuellingImgVisible = device.DeviceState === "FDC_FUELLING" ? "visible" : "hidden";
  514. var disconnectImgVisible = device.DeviceState === "FDC_OFFLINE"? "visible" : "hidden";
  515. var closedImgVisible = device.DeviceState === "FDC_CLOSED" || device.DeviceState === "FDC_ERRORSTATE" || device.DeviceState === "FDC_UNDEFINED"? "visible" : "hidden";
  516. if (n.LogicalState == null &&
  517. (device.DeviceState === "FDC_CALLING" || device.DeviceState === "FDC_FUELLING")) {
  518. console.log(
  519. "Currently, don't update the view since don't know which one is in calling/fuelling state");
  520. } else {
  521. var idleImg = document.getElementById(commonIdleId + n.LogicalId);
  522. var idleStaticImg = document.getElementById(commonIdleStaticId + n.LogicalId);
  523. var callingImg = document.getElementById(commonCallingId + n.LogicalId);
  524. var authImg = document.getElementById(commonAuthId + n.LogicalId);
  525. var fuellingImg = document.getElementById(commonFuellingId + n.LogicalId);
  526. var disconnectImg = document.getElementById(commonDisconnectId + n.LogicalId);
  527. var closedImg = document.getElementById(commonClosedId + n.LogicalId);
  528. if (idleImg != null) idleImg.style.visibility = idleImgVisible;
  529. if (idleStaticImg != null) idleStaticImg.style.visibility = idleImgStaticVisible;
  530. if (callingImg != null) callingImg.style.visibility = callingImgVisible;
  531. if (authImg != null) authImg.style.visibility = authorizedImgVisible;
  532. if (fuellingImg != null) fuellingImg.style.visibility = fuellingImgVisible;
  533. if (disconnectImg != null) disconnectImg.style.visibility = disconnectImgVisible;
  534. if (closedImg != null) closedImg.style.visibility = closedImgVisible;
  535. }
  536. });
  537. }
  538. if (device.Nozzles != null && device.Nozzles.length > 0) {
  539. device.Nozzles.forEach(function (n) {
  540. var nozzleAccumulatorValueDiv = document.getElementById("pump" + device.PumpId + "_nozzleAccumulatorValue_" + n.LogicalId);
  541. if (nozzleAccumulatorValueDiv != null)
  542. nozzleAccumulatorValueDiv.innerHTML = n.VolumeTotalizer!= null?(n.VolumeTotalizer / Math.pow(10, volumeDecimalDigits)).toFixed(volumeDecimalDigits):"0.00";
  543. var nozzleAmtDiv = document.getElementById("pump" + device.PumpId + "_nozzleAmount_value_" + n.LogicalId);
  544. if (nozzleAmtDiv == null) return;
  545. nozzleAmtDiv.innerHTML =n.Amount!=null?(n.Amount /Math.pow(10, amountDecimalDigits)).toFixed(amountDecimalDigits):"0.00";
  546. });
  547. }
  548. });
  549. setTimeout(GetAvailableTransactions,2,-1,-1);
  550. }
  551. function UpdateNozzleState(pumpId,nozzleId,state) {
  552. }
  553. //Update the message on header
  554. function UpdateHeadMessage() {
  555. var pumpsHead = document.getElementById("PumpsPage_Head");
  556. var normalHead = document.getElementById("PumpsPage_Head_Status_normal");
  557. var warningHead = document.getElementById("PumpsPage_Head_Status_warning");
  558. var alarmHead = document.getElementById("PumpsPage_Head_Status_alarm");
  559. var textSpan = document.getElementById("head_left_text");
  560. if (pumpsHead == null || normalHead == null || warningHead == null || alarmHead == null || textSpan ==null) {
  561. return;
  562. }
  563. var message = "";
  564. }
  565. </script>
  566. <div id="nozzles" style="position: relative; width:100%; height:88.516%;">
  567. @*<div id="nozzles_1" style="position: relative; float: left;margin-left:@(marginleft)px; width:@(maxNozzlewidth)px; height:@(nozzleHeight)px; border: 1px solid #00bfff">
  568. </div>
  569. <div id="nozzles_2" style="position: relative; float: left;margin-left:@(marginleft)px; width:@(maxNozzlewidth)px; height:@(nozzleHeight)px; border: 1px solid #00bfff">
  570. </div>*@
  571. @* <input type="button" onclick="GenerateView(12)" value="GenerateView" />*@
  572. @*@for (int i = 0; i < 12; i++)
  573. {
  574. <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">
  575. <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>
  576. <div id="nozzleImg_@i" style="position: relative; float: left;width: 100%; height: @(nozzleImagHeight)px; text-align: center">
  577. <img id="nozzleImage_Idle_@i" src="/image/online/油枪IDEL.png" style="visibility: visible" />
  578. <img id="nozzleImage_Calling_@i" src="/image/online/油枪CALLING.png" style="position: absolute; top: 0px; left:@((maxNozzlewidth-minNozzlewidth)/2)px;visibility: visible" />
  579. <img id="nozzleImage_Authorized_@i" src="/image/online/油枪授权.png" style="position: absolute; top: 0px; left:@((maxNozzlewidth-minNozzlewidth)/2)px;visibility: visible" />
  580. <img id="nozzleImage_Fuelling_@i" src="/image/online/油枪加油中.png" style="position: absolute; left: 0px;visibility: visible" />
  581. <img id="nozzleImage_Closed_@i" src="/image/online/油枪未连接.png" style="position: absolute; top: 0px; left:@((maxNozzlewidth-minNozzlewidth)/2)px;visibility: visible" />
  582. <img id="nozzleImage_Disconnect_@i" src="/image/online/油枪断开.png" style="position: absolute; top: 0px; left:@((maxNozzlewidth-minNozzlewidth)/2)px;visibility: visible" />
  583. <img id="nozzleALImage_Normal_@i" src="/image/online/normal.png" style="position: absolute; top:@(nozzleImagHeight-alImgWidth)px; left:@(maxNozzlewidth-alImgWidth)px;visibility: visible" />
  584. <img id="nozzleALImage_Warning_@i" src="/image/online/warning.png" style="position: absolute; top:@(nozzleImagHeight-alImgWidth)px; left:@(maxNozzlewidth-alImgWidth)px;visibility: visible" />
  585. <img id="nozzleALImage_Alarm_@i" src="/image/online/alarm.png" style="position: absolute; top:@(nozzleImagHeight-alImgWidth)px; left:@(maxNozzlewidth-alImgWidth)px;visibility: visible" />
  586. </div>
  587. <div id="nozzleAmount_@i" style="position: relative; float: left;width: 100%; height:@(textlableHeight)px; border: 1px solid#00bfff;">
  588. <div id="nozzleAmount_img_@i" style="position: relative;float: left;width:@(textlableHeight+5)px; height:100%;border: 1px solid#00bfff;">
  589. <img id="nozzleAmount_img_notPaid_@i" src="/image/online/人民币标志NotPaid.png" />
  590. <img id="nozzleAmount_img_Paid_@i" src="/image/online/人民币标志已付款.png" style="position: absolute; top:@((textlableHeight-imgPaidHeight)/2)px; left:@((textlableHeight-imgPaidWidth)/2)px;" />
  591. <span style="position: absolute; left: @(textlableHeight)px; text-align: center;line-height: @(textlableHeight)px; font-size: @(lableFontSize)px; font-weight:bold;">:</span>
  592. </div>
  593. <div>
  594. </div>
  595. </div>
  596. <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;">
  597. <div id="nozzleLiter_img_@i" style="position: relative;float:left;width:@(textlableHeight)px; height:100%;">
  598. 升:
  599. </div>
  600. <div id="nozzleLiter_text_@i" style="position: relative; float: left;">
  601. 1234.00
  602. </div>
  603. </div>
  604. <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;">
  605. 汽液比 1.3
  606. </div>
  607. </div>
  608. }*@
  609. </div>
  610. <script src="~/js/mqtt.min.js"></script>
  611. <script src="~/js/jquery-3.4.1.min.js"></script>
  612. <script type="text/javascript">
  613. //will set ApiName as key,Path as value
  614. var apis = new Map();
  615. $(document).ready(function () {
  616. var requestData = ["localMqtt", ["IfsfFdcServer"]];
  617. var serviceUrl = "http://localhost:8384/u/?apitype=service&an=ShowMeApi&pn=ProcessorsDispatcher&en=Edge.Core.Processor.Dispatcher.DefaultDispatcher";
  618. $.ajax({
  619. url: serviceUrl,
  620. datatype: "application/json",
  621. type: 'post',
  622. contentType: "application/json;charset=utf-8;",
  623. data: JSON.stringify(requestData),
  624. beforeSend: function () {
  625. },
  626. success: function (data) {
  627. console.log(data);
  628. data.forEach(function (d) {
  629. if (apis.has(d.ApiName)) {
  630. apis.delete(d.ApiName);
  631. }
  632. apis.set(d.ApiName, d.Path.slice(d.Path.length - 1) === "+" ? d.Path.slice(0, d.Path.length-1) : d.Path);
  633. });
  634. subscribeEvents();
  635. },
  636. error: function (err) {
  637. console.log(err);
  638. }
  639. });
  640. });
  641. var options = {
  642. //mqtt客户端的id,这里面应该还可以加上其他参数,具体看官方文档
  643. clientId: 'mqttjs_' + (Math.random() * 1000000).toString(),
  644. timeout: 5000,
  645. useSSL: false
  646. }
  647. //浏览器采用websocket协议,host主机地址为192.168.0.200,端口为9001,路径为/mqtt
  648. var client = mqtt.connect("@Model.mqttConnectionString", options); // you add a ws:// url here
  649. function subscribeEvents()
  650. {
  651. if (!client.connected || apis.size === 0) {
  652. console.log("subscribeEvents:client is not connected or haven't got APIS");
  653. return;
  654. }
  655. client.subscribe(apis.has("GetPumpsLayout_Reply") ? apis.get("GetPumpsLayout_Reply"):'/Applications.FDC.FdcServerHostApp/fdcServerApp/thing/service/GetPumpsLayout_reply/',
  656. function (err) {
  657. if (!err) {
  658. var temp = {
  659. "parameters": [
  660. { "name": "pumpId", "value": "-1" }
  661. ]
  662. };
  663. var message = JSON.stringify(temp);
  664. client.publish(apis.has("GetPumpsLayout") ? apis.get("GetPumpsLayout") : '/Applications.FDC.FdcServerHostApp/fdcServerApp/thing/service/GetPumpsLayout/', message);
  665. //client.publish('/sys/fdcServerApp/Applications.FDC.FdcServerHostApp/thing/service/GetPumpsLayout', message);
  666. };
  667. });
  668. client.subscribe(apis.has("OnFdcControllerStateChange")?apis.get("OnFdcControllerStateChange"): '/Applications.FDC.FdcServerHostApp/fdcServerApp/thing/event/OnFdcControllerStateChange/post',
  669. function (err) {
  670. if (!err) {
  671. console.log("subscribe fdc controller state change event successfully");
  672. } else {
  673. console.log("subscribe fdc controller state change event failed" + err);
  674. }
  675. });
  676. client.subscribe(apis.has("OnCurrentFuellingStatusChange") ? apis.get("OnCurrentFuellingStatusChange") : '/Applications.FDC.FdcServerHostApp/fdcServerApp/thing/event/OnCurrentFuellingStatusChange/post',
  677. function (err) {
  678. if (!err) {
  679. console.log("subscribe current fuel status change event successfully");
  680. } else {
  681. console.log("subscribe current fuel status change event failed" + err);
  682. }
  683. });
  684. client.subscribe(apis.has("OnFdcFuelSaleTransactinStateChange") ? apis.get("OnFdcFuelSaleTransactinStateChange"):'/Applications.FDC.FdcServerHostApp/fdcServerApp/thing/event/OnFdcFuelSaleTransactinStateChange/post',
  685. function (err) {
  686. if (!err) {
  687. console.log("subscribe current fuel status change event successfully");
  688. } else {
  689. console.log("subscribe current fuel status change event failed" + err);
  690. }
  691. });
  692. client.subscribe(apis.has("GetAvailableTransactions_reply") ? apis.get("GetAvailableTransactions_reply") : '/Applications.FDC.FdcServerHostApp/fdcServerApp/thing/service/GetAvailableTransactions_reply/',
  693. function (err) {
  694. if (!err) {
  695. console.log("subscribe GetAvailableTransactions_reply successfully");
  696. };
  697. });
  698. client.subscribe(apis.has("GetDeviceState_reply") ? apis.get("GetDeviceState_reply"):'/Applications.FDC.FdcServerHostApp/fdcServerApp/thing/service/GetDeviceState_reply/',
  699. function (err) {
  700. if (!err) {
  701. console.log("subscribe GetDeviceState_reply successfully");
  702. };
  703. });
  704. }
  705. ////建立连接
  706. client.on('connect',
  707. function () {
  708. console.log("connected");
  709. subscribeEvents();
  710. //client.subscribe('/Applications.FDC.FdcServerHostApp/fdcServerApp/thing/service/GetPumpsLayout_reply/',
  711. // function (err) {
  712. // if (!err) {
  713. // var temp = {
  714. // "parameters": [
  715. // { "name": "pumpId", "value": "-1" }
  716. // ]
  717. // };
  718. // var message = JSON.stringify(temp);
  719. // client.publish('/Applications.FDC.FdcServerHostApp/fdcServerApp/thing/service/GetPumpsLayout/',message);
  720. // //client.publish('/sys/fdcServerApp/Applications.FDC.FdcServerHostApp/thing/service/GetPumpsLayout', message);
  721. // };
  722. // });
  723. //client.subscribe('/Applications.FDC.FdcServerHostApp/fdcServerApp/thing/event/OnFdcControllerStateChange/post',
  724. // function (err) {
  725. // if (!err) {
  726. // console.log("subscribe fdc controller state change event successfully");
  727. // } else {
  728. // console.log("subscribe fdc controller state change event failed" + err);
  729. // }
  730. // });
  731. //client.subscribe('/Applications.FDC.FdcServerHostApp/fdcServerApp/thing/event/OnCurrentFuellingStatusChange/post',
  732. // function (err) {
  733. // if (!err) {
  734. // console.log("subscribe current fuel status change event successfully");
  735. // } else {
  736. // console.log("subscribe current fuel status change event failed" + err);
  737. // }
  738. // });
  739. //client.subscribe('/Applications.FDC.FdcServerHostApp/fdcServerApp/thing/event/OnFdcFuelSaleTransactinStateChange/post',
  740. // function (err) {
  741. // if (!err) {
  742. // console.log("subscribe current fuel status change event successfully");
  743. // } else {
  744. // console.log("subscribe current fuel status change event failed" + err);
  745. // }
  746. // });
  747. //client.subscribe('/Applications.FDC.FdcServerHostApp/fdcServerApp/thing/service/GetAvailableTransactions_reply/',
  748. // function (err) {
  749. // if (!err) {
  750. // console.log("subscribe GetAvailableTransactions_reply successfully");
  751. // };
  752. // });
  753. //client.subscribe('/Applications.FDC.FdcServerHostApp/fdcServerApp/thing/service/GetDeviceState_reply/',
  754. // function (err) {
  755. // if (!err) {
  756. // console.log("subscribe GetDeviceState_reply successfully");
  757. // };
  758. // });
  759. });
  760. //如果连接错误,打印错误
  761. client.on('error',
  762. function (err) {
  763. console.log("error happens, will close the client");
  764. client.end();
  765. });
  766. //如果client订阅主题成功,那么这里就是当接收到自己订阅主题的处理逻辑
  767. client.on('message',
  768. function (topic, message) {
  769. // message is Buffer,此处就是打印消息的具体内容
  770. //console.log('-> ' + message.toString());
  771. var a = document.getElementById("testmqqt");
  772. if (a != null) a.innerHTML = topic;
  773. var temp = apis.has("GetPumpsLayout_Reply") ? apis.get("GetPumpsLayout_Reply") : "/Applications.FDC.FdcServerHostApp/fdcServerApp/thing/service/GetPumpsLayout_reply/";
  774. if (topic === temp) {
  775. ClearOldItems();
  776. GenerateSmartFuelNozzleView(JSON.parse(message.toString()));
  777. //get available transactions for all pumps, so there's no need to add parameter for this publish
  778. //client.publish("/sys/fdcServerApp/Applications.FDC.FdcServerHostApp/thing/service/GetAvailableTransactions");
  779. return;
  780. }
  781. temp = apis.has("OnCurrentFuellingStatusChange") ? apis.get("OnCurrentFuellingStatusChange") : "/Applications.FDC.FdcServerHostApp/fdcServerApp/thing/event/OnCurrentFuellingStatusChange/post";
  782. if (topic === temp) {
  783. ProcessCurrentFuellingStateChange(JSON.parse(message.toString()));
  784. return;
  785. }
  786. temp = apis.has("OnFdcFuelSaleTransactinStateChange") ? apis.get("OnFdcFuelSaleTransactinStateChange") : '/Applications.FDC.FdcServerHostApp/fdcServerApp/thing/event/OnFdcFuelSaleTransactinStateChange/post';
  787. if (topic === temp) {
  788. ProcessTransactionStateChange(JSON.parse(message.toString()));
  789. return;
  790. }
  791. temp = apis.has("OnFdcControllerStateChange") ? apis.get("OnFdcControllerStateChange") : '/Applications.FDC.FdcServerHostApp/fdcServerApp/thing/event/OnFdcControllerStateChange/post';
  792. if (topic === temp) {
  793. ProcessFdcControllerStatusChange(JSON.parse(message.toString()));
  794. return;
  795. }
  796. temp = apis.has("GetAvailableTransactions_Reply") ? apis.get("GetAvailableTransactions_Reply") : '/Applications.FDC.FdcServerHostApp/fdcServerApp/thing/service/GetAvailableTransactions_reply/';
  797. if (topic === temp) {
  798. UpdatePayableStatus(JSON.parse(message.toString()));
  799. return;
  800. }
  801. temp = apis.has("GetDeviceState_Reply") ? apis.get("GetDeviceState_Reply") : '/Applications.FDC.FdcServerHostApp/fdcServerApp/thing/service/GetDeviceState_reply/';
  802. if (topic === temp) {
  803. ProcessDeviceState(JSON.parse(message.toString()));
  804. return;
  805. }
  806. });
  807. //显示前一页
  808. function ShowPreviousPage() {
  809. if (currentPage === 1) {
  810. //alert("已经是第一页!");
  811. return;
  812. }
  813. ClearOldItems();
  814. oldPage = currentPage;
  815. currentPage--;
  816. var temp = {
  817. "parameters": [
  818. { "name": "pumpId", "value": "-1" }
  819. ]
  820. };
  821. //如果当前油气回收页面则重新获取NozzlesData
  822. if (client != null) {
  823. client.publish(apis.has("GetPumpsLayout") ? apis.get("GetPumpsLayout"):'/Applications.FDC.FdcServerHostApp/fdcServerApp/thing/service/GetPumpsLayout/', JSON.stringify(temp));
  824. }
  825. }
  826. //显示下一页
  827. function ShowNextPage() {
  828. if (currentPage === totalPage) {
  829. //alert("已经是最后一页!");
  830. return;
  831. }
  832. ClearOldItems();
  833. oldPage = currentPage;
  834. currentPage++;
  835. var temp = {
  836. "parameters": [
  837. { "name": "pumpId", "value": "-1" }
  838. ]
  839. };
  840. //如果当前油气回收页面则重新获取NozzlesData
  841. if (client != null) {
  842. client.publish(apis.has("GetPumpsLayout") ? apis.get("GetPumpsLayout") :'/Applications.FDC.FdcServerHostApp/fdcServerApp/thing/service/GetPumpsLayout/', JSON.stringify(temp));
  843. }
  844. }
  845. </script>