home.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. const {
  2. DEFAULT_DEVICE_FILTER,
  3. getState: getHomeFeatureState,
  4. init: initHomeFeature,
  5. subscribeState: subscribeHomeState,
  6. ...homeService
  7. } = require('../../features/home/service.js')
  8. const {
  9. createPageToast
  10. } = require('../../utils/page-toast.js')
  11. Page({
  12. data: getHomeFeatureState(),
  13. noop() {},
  14. onLoad() {
  15. this.pageToast = createPageToast(this, this.data)
  16. initHomeFeature()
  17. this.unsubscribeHomeState = subscribeHomeState(() => this.data.deviceFilterMode, (nextState) => {
  18. this.setData(nextState)
  19. this.pageToast.showFromState(nextState)
  20. })
  21. },
  22. onShow() {
  23. if (this.pageToast) {
  24. this.pageToast.setActive(true)
  25. }
  26. },
  27. onHide() {
  28. if (this.pageToast) {
  29. this.pageToast.setActive(false)
  30. }
  31. },
  32. onUnload() {
  33. if (this.pageToast) {
  34. this.pageToast.destroy()
  35. this.pageToast = null
  36. }
  37. if (this.unsubscribeHomeState) {
  38. this.unsubscribeHomeState()
  39. this.unsubscribeHomeState = null
  40. }
  41. },
  42. onCommandChange(event) {
  43. homeService.setCommandIndex(event.detail.value)
  44. },
  45. onSlaveAddressInput(event) {
  46. homeService.setProtocolInput({
  47. slaveAddress: event.detail.value
  48. })
  49. },
  50. onRegisterAddressInput(event) {
  51. homeService.setProtocolInput({
  52. registerAddress: event.detail.value
  53. })
  54. },
  55. onCommandValueInput(event) {
  56. homeService.setProtocolInput({
  57. commandValue: event.detail.value
  58. })
  59. },
  60. onCommandRegisterQuantityInput(event) {
  61. homeService.setProtocolMultipleQuantity(event.detail.value)
  62. },
  63. openProtocolMultipleDialog() {
  64. homeService.openProtocolMultipleDialog()
  65. },
  66. closeProtocolMultipleDialog() {
  67. homeService.closeProtocolMultipleDialog()
  68. },
  69. onProtocolMultipleTypeChange(event) {
  70. homeService.setProtocolMultipleType(
  71. event.currentTarget.dataset.index,
  72. event.detail.value
  73. )
  74. },
  75. onProtocolMultipleTextLengthInput(event) {
  76. homeService.setProtocolMultipleTextLength(
  77. event.currentTarget.dataset.index,
  78. event.detail.value
  79. )
  80. },
  81. onProtocolMultipleValueInput(event) {
  82. homeService.setProtocolMultipleValue(
  83. event.currentTarget.dataset.index,
  84. event.detail.value
  85. )
  86. },
  87. onProtocolMultipleValueBlur(event) {
  88. try {
  89. homeService.validateProtocolMultipleValue(
  90. event.currentTarget.dataset.index,
  91. event.detail.value
  92. )
  93. } catch (error) {
  94. if (this.pageToast) this.pageToast.show(error.message || '输入值无效', 'error')
  95. }
  96. },
  97. onCoilValueChange(event) {
  98. homeService.setProtocolInput({
  99. coilEnabled: !!event.detail.value
  100. })
  101. },
  102. sendGeneratedFrame() {
  103. if (!this.data.connectedDevice || !this.data.generatedHex) return
  104. homeService.sendGeneratedFrame()
  105. },
  106. onHexInput(event) {
  107. homeService.setSendHex(event.detail.value)
  108. },
  109. clearInput() {
  110. homeService.clearInput()
  111. },
  112. sendHexFrame() {
  113. if (!this.data.connectedDevice) return
  114. homeService.sendHexFrame()
  115. },
  116. startScan() {
  117. if (!this.data.canStartScan) return
  118. homeService.toggleScan(this.data.isDiscovering)
  119. },
  120. syncRegisters() {
  121. if (!this.data.canSyncRegisters) return
  122. homeService.syncRegisters()
  123. },
  124. clearDevices() {
  125. if (!this.data.canClearDevices) return
  126. homeService.clearDevices()
  127. },
  128. onDeviceFilterTap(event) {
  129. const deviceFilterMode = event.currentTarget.dataset.filter || DEFAULT_DEVICE_FILTER
  130. this.setData(getHomeFeatureState(deviceFilterMode))
  131. },
  132. connectDevice(event) {
  133. homeService.connectDeviceById(event.currentTarget.dataset.deviceId)
  134. },
  135. disconnectDevice() {
  136. if (!this.data.canDisconnectDevice) return
  137. homeService.disconnectDevice()
  138. },
  139. clearLogs() {
  140. homeService.clearLogs()
  141. }
  142. })