SensorDataDetails.cshtml 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. 
  2. <div id="PressureDiv" class="tank_table_div" ref="tanktableref">
  3. <div class="tank_meter_div" style="top: 8%; left: 2%; background-image: url(/WebConsole/images/device/sensor/tankprbackg.png);">
  4. <div class="tank_pointer_div" :style="pointerstyle[0]"></div>
  5. <div class="live_data_text">{{tankPressureObject.Pressure | numFilter}} {{pressureUnit}}</div>
  6. </div>
  7. <div class="tank_meter_div" style="top: 8%; left: 35.66%; background-image: url(/WebConsole/images/device/sensor/liquidprbackg.png);">
  8. <div class="tank_pointer_div" :style="pointerstyle[1]"></div>
  9. <div class="live_data_text">{{liquidPressureObject.Pressure | numFilter}} {{pressureUnit}}</div>
  10. </div>
  11. <div class="tank_meter_div" style="top: 8%; left: 69.32%; background-image: url(/WebConsole/images/device/sensor/gasconbackg.png);">
  12. <div class="tank_pointer_div" :style="pointerstyle[2]"></div>
  13. <div class="live_data_text">
  14. <label>{{gasConcentrationsObject.Concentration | numFilter}} g/m3</label>
  15. </div>
  16. </div>
  17. </div>
  18. <script type="text/javascript">
  19. var vm = new Vue({
  20. el: '#PressureDiv',
  21. data: {
  22. pressureUnit: 'Pa',
  23. pointerstyle: ['', '', ''],
  24. allObject: null,
  25. tankPressureObject: { DeviceAddress: 1, Pressure: null },
  26. liquidPressureObject: { DeviceAddress: 1, Pressure: null },
  27. gasConcentrationsObject: { DeviceAddress: 1, Concentration: null }
  28. },
  29. mounted() {
  30. let lang = (navigator.language || navigator.userLanguage || navigator.browserLanguage).toLowerCase();
  31. if (lang.indexOf('zh-tw') >= 0) {
  32. this.pressureUnit = 'inHg'
  33. }
  34. else if (lang.indexOf('zh-cn') >= 0) {
  35. this.pressureUnit = 'Pa'
  36. }
  37. },
  38. watch: {
  39. allObject: {
  40. handler(newValue, oldValue) {
  41. if (newValue.TankPressure) {
  42. this.tankPressureObject = newValue.TankPressure
  43. this.pointerstyle[0] = 'background-image: url(/WebConsole/images/device/sensor/' + this.tankPressureObject.CurrentPointer + '.png);'
  44. }
  45. if (newValue.LiquidPressure) {
  46. this.liquidPressureObject = newValue.LiquidPressure
  47. this.pointerstyle[1] = 'background-image: url(/WebConsole/images/device/sensor/' + this.liquidPressureObject.CurrentPointer + '.png);'
  48. }
  49. if (newValue.GasConcentrations) {
  50. this.gasConcentrationsObject = newValue.GasConcentrations
  51. this.pointerstyle[2] = 'background-image: url(/WebConsole/images/device/sensor/' + this.gasConcentrationsObject.CurrentPointer + '.png);'
  52. }
  53. this.$forceUpdate()
  54. },
  55. deep: true
  56. }
  57. },
  58. filters: {
  59. numFilter(value) {
  60. let realVal = ''
  61. if (!isNaN(value) && value !== '') {
  62. realVal = parseFloat(value).toFixed(2)
  63. } else {
  64. realVal = 'N/A'
  65. }
  66. return realVal
  67. }
  68. }
  69. })
  70. function OnReply(apis, topic, jsonObj) {
  71. let tankpressurepath = apis.has("GetPressureAsync_Reply") ? apis.get("GetPressureAsync_Reply") : '/sys/VeederRoot_ATG_Console_Tcp/VeederRoot_ATG_Console.Handler/thing/service/GetPressureAsync_Reply'
  72. if (topic === tankpressurepath) {
  73. vm.allObject = jsonObj
  74. }
  75. }
  76. </script>