1
0

view-model.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. const settingsService = require('../../store/settings-store.js')
  2. const themeService = require('../../store/theme-store.js')
  3. const transport = require('../../transport/ble-core.js')
  4. const {
  5. toolNavigation
  6. } = require('../tools/index.js')
  7. const protocolImplementation = require('./protocol-implementation.js')
  8. function getSettingsPageState(
  9. settingsState = settingsService.getState(),
  10. themeState = themeService.getState(),
  11. transportState = transport.getState()
  12. ) {
  13. const nightModeEnabledSwitch = settingsState.nightModeFollowSystem
  14. ? themeState.themeMode === 'dark'
  15. : settingsState.nightModeEnabled
  16. const protocolMode = settingsState.protocolMode || settingsService.PROTOCOL_MODE.STORAGE_ACCESS
  17. const protocolOptions = settingsService.PROTOCOL_OPTIONS
  18. const protocolIndex = Math.max(0, protocolOptions.findIndex((option) => (
  19. option.key === protocolMode
  20. )))
  21. const protocol = protocolOptions[protocolIndex] || protocolOptions[0]
  22. const isNoProtocol = settingsService.isNoProtocol(protocol.key)
  23. const isModbusProtocol = settingsService.isModbusProtocol(protocol.key)
  24. const isStorageAccessProtocol = settingsService.isStorageAccessProtocol(protocol.key)
  25. const storageAccessDefaultEndian = settingsService.normalizeStorageAccessEndian(
  26. settingsState.storageAccessDefaultEndian
  27. )
  28. return {
  29. ...settingsState,
  30. ...themeState,
  31. connectedDevice: transportState.connectedDevice,
  32. isNoProtocol,
  33. isModbusProtocol,
  34. isStorageAccessProtocol,
  35. nightModeEnabledSwitch,
  36. statusPollMaxInterval: settingsService.STATUS_POLL_MAX_INTERVAL,
  37. statusPollMinInterval: settingsService.STATUS_POLL_MIN_INTERVAL,
  38. protocolIndex,
  39. storageProtocolImplementationEntryMeta: '从机实现与结构体定义参考',
  40. storageProtocolImplementationView: protocolImplementation.VIEW_ID,
  41. protocolOptions,
  42. storageAccessDefaultEndian,
  43. storageAccessDefaultEndianBigSwitch: storageAccessDefaultEndian === 'big',
  44. storageAccessDefaultEndianText: storageAccessDefaultEndian === 'big' ? '大端' : '小端',
  45. protocolText: protocol.label,
  46. toolEntries: toolNavigation.getToolEntries()
  47. }
  48. }
  49. module.exports = {
  50. getSettingsPageState
  51. }