1
0

settings.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. const settingsService = require('../../store/settings-store.js')
  2. const themeService = require('../../store/theme-store.js')
  3. const bootloaderService = require('../../features/bootloader/service.js')
  4. const transport = require('../../transport/ble-core.js')
  5. const {
  6. createPageToast
  7. } = require('../../utils/page-toast.js')
  8. const {
  9. createToolInitialState,
  10. toolNavigation,
  11. toolPageHandlers
  12. } = require('../../features/tools/index.js')
  13. const {
  14. getSettingsPageState
  15. } = require('../../features/settings/view-model.js')
  16. Page({
  17. data: {
  18. ...getSettingsPageState(),
  19. ...createToolInitialState(),
  20. activeSettingsTitle: '',
  21. activeSettingsView: ''
  22. },
  23. onLoad() {
  24. this.pageToast = createPageToast(this, this.data)
  25. this.crcFileBytes = null
  26. settingsService.init()
  27. themeService.init()
  28. bootloaderService.init()
  29. this.unsubscribeSettings = settingsService.subscribe((settingsState) => {
  30. this.setData(getSettingsPageState(settingsState, themeService.getState()))
  31. })
  32. this.unsubscribeTheme = themeService.subscribe((themeState) => {
  33. this.setData(getSettingsPageState(settingsService.getState(), themeState))
  34. })
  35. this.unsubscribeTransport = transport.subscribe((transportState) => {
  36. this.setData(getSettingsPageState(
  37. settingsService.getState(),
  38. themeService.getState(),
  39. transportState,
  40. bootloaderService.getState()
  41. ))
  42. })
  43. this.unsubscribeBootloader = bootloaderService.subscribe((bootloaderState) => {
  44. this.setData(getSettingsPageState(
  45. settingsService.getState(),
  46. themeService.getState(),
  47. transport.getState(),
  48. bootloaderState
  49. ))
  50. })
  51. },
  52. onTabItemTap() {
  53. this.backToSettingsHome()
  54. },
  55. onShow() {
  56. if (this.pageToast) {
  57. this.pageToast.setActive(true)
  58. }
  59. this.setData(getSettingsPageState())
  60. },
  61. onHide() {
  62. if (this.pageToast) {
  63. this.pageToast.setActive(false)
  64. }
  65. },
  66. onUnload() {
  67. if (this.pageToast) {
  68. this.pageToast.destroy()
  69. this.pageToast = null
  70. }
  71. if (this.unsubscribeSettings) {
  72. this.unsubscribeSettings()
  73. this.unsubscribeSettings = null
  74. }
  75. if (this.unsubscribeTheme) {
  76. this.unsubscribeTheme()
  77. this.unsubscribeTheme = null
  78. }
  79. if (this.unsubscribeTransport) {
  80. this.unsubscribeTransport()
  81. this.unsubscribeTransport = null
  82. }
  83. if (this.unsubscribeBootloader) {
  84. this.unsubscribeBootloader()
  85. this.unsubscribeBootloader = null
  86. }
  87. },
  88. onNightModeEnabledChange(event) {
  89. settingsService.setNightModeEnabled(!!event.detail.value)
  90. },
  91. onNightModeFollowSystemChange(event) {
  92. settingsService.setNightModeFollowSystem(!!event.detail.value)
  93. },
  94. onModbusSlaveAddressBlur(event) {
  95. settingsService.setModbusSlaveAddress(event.detail.value)
  96. },
  97. onProtocolModeChange(event) {
  98. const option = this.data.protocolOptions[Number(event.detail.value)]
  99. if (!option) return
  100. settingsService.setProtocolMode(option.key)
  101. },
  102. onParameterAutoPollChange(event) {
  103. settingsService.setParameterAutoPollEnabled(!!event.detail.value)
  104. },
  105. onParameterPollIntervalBlur(event) {
  106. settingsService.setParameterPollInterval(event.detail.value)
  107. },
  108. onParameterMaxPacketLengthBlur(event) {
  109. settingsService.setParameterMaxPacketLength(event.detail.value)
  110. },
  111. openToolEntry(event) {
  112. const view = event.currentTarget.dataset.view
  113. if (!toolNavigation.isToolView(view)) return
  114. if (this.pageToast) this.pageToast.clear()
  115. this.setData({
  116. activeSettingsTitle: toolNavigation.getToolTitle(view),
  117. activeSettingsView: view
  118. })
  119. },
  120. backToSettingsHome() {
  121. if (this.pageToast) this.pageToast.clear()
  122. this.setData({
  123. activeSettingsTitle: '',
  124. activeSettingsView: ''
  125. })
  126. },
  127. chooseFirmwareFile() {
  128. if (this.data.isBootloaderBusy) return
  129. bootloaderService.chooseFirmwareFile('message')
  130. },
  131. startFirmwareUpgrade() {
  132. if (!this.data.connectedDevice || !this.data.isFirmwareReady || this.data.isBootloaderBusy) return
  133. bootloaderService.startUpgrade()
  134. },
  135. readProgramChecksum() {
  136. if (!this.data.connectedDevice || this.data.isBootloaderBusy) return
  137. bootloaderService.readProgramChecksum()
  138. },
  139. handshakeBootloader() {
  140. if (!this.data.connectedDevice || this.data.isBootloaderBusy) return
  141. bootloaderService.sendHandshakeKeepAlive()
  142. },
  143. exitBootloader() {
  144. if (!this.data.connectedDevice || this.data.isBootloaderBusy) return
  145. bootloaderService.exitBootloader()
  146. },
  147. ...toolPageHandlers
  148. })