settings.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. const settingsService = require('../../utils/settings-service')
  2. const themeService = require('../../utils/theme-service')
  3. const toolNavigation = require('../../utils/tool-navigation')
  4. const {
  5. createPageToast
  6. } = require('../../utils/page-toast')
  7. const {
  8. createToolInitialState,
  9. toolPageHandlers
  10. } = require('../../utils/tool-page')
  11. const {
  12. getSettingsPageState
  13. } = require('../../utils/settings-view-model')
  14. Page({
  15. data: {
  16. ...getSettingsPageState(),
  17. ...createToolInitialState(),
  18. activeSettingsTitle: '',
  19. activeSettingsView: ''
  20. },
  21. onLoad() {
  22. this.pageToast = createPageToast(this, this.data)
  23. this.crcFileBytes = null
  24. settingsService.init()
  25. themeService.init()
  26. this.unsubscribeSettings = settingsService.subscribe((settingsState) => {
  27. this.setData(getSettingsPageState(settingsState, themeService.getState()))
  28. })
  29. this.unsubscribeTheme = themeService.subscribe((themeState) => {
  30. this.setData(getSettingsPageState(settingsService.getState(), themeState))
  31. })
  32. },
  33. onTabItemTap() {
  34. this.backToSettingsHome()
  35. },
  36. onShow() {
  37. if (this.pageToast) {
  38. this.pageToast.setActive(true)
  39. }
  40. this.setData(getSettingsPageState())
  41. },
  42. onHide() {
  43. if (this.pageToast) {
  44. this.pageToast.setActive(false)
  45. }
  46. },
  47. onUnload() {
  48. if (this.pageToast) {
  49. this.pageToast.destroy()
  50. this.pageToast = null
  51. }
  52. if (this.unsubscribeSettings) {
  53. this.unsubscribeSettings()
  54. this.unsubscribeSettings = null
  55. }
  56. if (this.unsubscribeTheme) {
  57. this.unsubscribeTheme()
  58. this.unsubscribeTheme = null
  59. }
  60. },
  61. onNightModeEnabledChange(event) {
  62. settingsService.setNightModeEnabled(!!event.detail.value)
  63. },
  64. onNightModeFollowSystemChange(event) {
  65. settingsService.setNightModeFollowSystem(!!event.detail.value)
  66. },
  67. onModbusSlaveAddressBlur(event) {
  68. settingsService.setModbusSlaveAddress(event.detail.value)
  69. },
  70. onModbusProtocolChange(event) {
  71. const option = this.data.modbusProtocolOptions[Number(event.detail.value)]
  72. if (!option) return
  73. settingsService.setModbusProtocolFilter(option.key)
  74. },
  75. onGenericModbusAutoPollChange(event) {
  76. settingsService.setGenericModbusAutoPollEnabled(!!event.detail.value)
  77. },
  78. onGenericModbusPollIntervalBlur(event) {
  79. settingsService.setGenericModbusPollInterval(event.detail.value)
  80. },
  81. onGenericModbusMaxPacketLengthBlur(event) {
  82. settingsService.setGenericModbusMaxPacketLength(event.detail.value)
  83. },
  84. onUserStatusCountBlur(event) {
  85. settingsService.setUserStatusCount(event.detail.value, this.data.maxUserStatusCount)
  86. },
  87. onStatusPollIntervalBlur(event) {
  88. settingsService.setStatusPollInterval(event.detail.value)
  89. },
  90. openToolEntry(event) {
  91. const view = event.currentTarget.dataset.view
  92. if (!toolNavigation.isToolView(view)) return
  93. if (this.pageToast) this.pageToast.clear()
  94. this.setData({
  95. activeSettingsTitle: toolNavigation.getToolTitle(view),
  96. activeSettingsView: view
  97. })
  98. },
  99. backToSettingsHome() {
  100. if (this.pageToast) this.pageToast.clear()
  101. this.setData({
  102. activeSettingsTitle: '',
  103. activeSettingsView: ''
  104. })
  105. },
  106. ...toolPageHandlers
  107. })