1
0

index.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. const crcTool = require('../../tools/crc-hash/crc-tool.js')
  2. const filterCalculator = require('../../tools/filter/index.js')
  3. const smdCodeCalculator = require('../../tools/smd-code/index.js')
  4. const refrigerationCalculator = require('../../tools/refrigeration/index.js')
  5. const reactanceCalculator = require('../../tools/reactance/index.js')
  6. const threePhasePowerCalculator = require('../../tools/three-phase-power/index.js')
  7. const {
  8. getWxApi
  9. } = require('../../utils/base-utils.js')
  10. const crcHandlers = require('./handlers/crc.js')
  11. const filterHandlers = require('./handlers/filter.js')
  12. const reactanceHandlers = require('./handlers/reactance.js')
  13. const refrigerationHandlers = require('./handlers/refrigeration.js')
  14. const smdCodeHandlers = require('./handlers/smd-code.js')
  15. const threePhasePowerHandlers = require('./handlers/three-phase-power.js')
  16. const TOOL_ENTRIES = [
  17. { view: 'bootloader', label: 'BootLoader升级', icon: 'icon-chip', iconSrc: '/assets/icons/chip-white.png' },
  18. { view: 'crc', label: 'CRC与哈希计算', icon: 'icon-crc', iconSrc: '/assets/icons/hash-white.png' },
  19. { view: 'filter', label: '滤波器计算', icon: 'icon-filter', iconSrc: '/assets/icons/funnel-white.png' },
  20. { view: 'reactance', label: '电抗计算', icon: 'icon-reactance', iconSrc: '/assets/icons/audio-waveform-white.png' },
  21. { view: 'smdCode', label: '贴片电阻/容代码', icon: 'icon-smd', iconSrc: '/assets/icons/microchip-white.png' },
  22. { view: 'refrigeration', label: '制冷计算', icon: 'icon-snow', iconSrc: '/assets/icons/snowflake-white.png' },
  23. { view: 'threePhasePower', label: '三相功率计算', icon: 'icon-three-phase', iconSrc: '/assets/icons/zap-white.png' }
  24. ]
  25. function getToolEntries() {
  26. return TOOL_ENTRIES.map((item) => ({ ...item }))
  27. }
  28. function isToolView(view) {
  29. return TOOL_ENTRIES.some((item) => item.view === view)
  30. }
  31. function getToolEntry(view) {
  32. return TOOL_ENTRIES.find((item) => item.view === view) || null
  33. }
  34. function getToolTitle(view) {
  35. const entry = getToolEntry(view)
  36. return entry ? entry.label : ''
  37. }
  38. function createToolInitialState() {
  39. return {
  40. ...crcTool.createInitialState(),
  41. ...filterCalculator.createInitialState(),
  42. ...smdCodeCalculator.createInitialState(),
  43. ...refrigerationCalculator.createInitialState(),
  44. ...reactanceCalculator.createInitialState(),
  45. ...threePhasePowerCalculator.createInitialState()
  46. }
  47. }
  48. const toolNavigation = {
  49. getToolEntry,
  50. getToolEntries,
  51. getToolTitle,
  52. isToolView
  53. }
  54. const toolPageHandlers = {
  55. copyToolResult(event) {
  56. const value = event && event.currentTarget && event.currentTarget.dataset
  57. ? event.currentTarget.dataset.value
  58. : ''
  59. const text = String(value === undefined || value === null ? '' : value).trim()
  60. if (!text || text === '--') return
  61. const wxApi = getWxApi()
  62. if (typeof wxApi.setClipboardData !== 'function') {
  63. if (this.pageToast) this.pageToast.show('当前环境不支持复制', 'error')
  64. return
  65. }
  66. wxApi.setClipboardData({
  67. data: text,
  68. fail: () => {
  69. if (this.pageToast) this.pageToast.show('复制失败', 'error')
  70. },
  71. success: () => {
  72. if (this.pageToast) this.pageToast.show('已复制')
  73. }
  74. })
  75. },
  76. ...crcHandlers.handlers,
  77. ...filterHandlers.handlers,
  78. ...reactanceHandlers.handlers,
  79. ...smdCodeHandlers.handlers,
  80. ...refrigerationHandlers.handlers,
  81. ...threePhasePowerHandlers.handlers
  82. }
  83. module.exports = {
  84. createToolInitialState,
  85. toolNavigation,
  86. toolPageHandlers
  87. }