1
0

crc.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. const {
  2. crcTool
  3. } = require('../../../tools/crc-hash/index.js')
  4. const {
  5. loadSelectedFile
  6. } = require('../../../repositories/file.js')
  7. const handlers = {
  8. onCrcPresetChange(event) {
  9. const presetIndex = Number(event.detail.value)
  10. this.setData({
  11. ...crcTool.createPresetState(presetIndex),
  12. crcErrorText: ''
  13. })
  14. },
  15. onCrcInputTypeChange(event) {
  16. this.setData({
  17. crcErrorText: '',
  18. crcInputTypeIndex: Number(event.detail.value)
  19. })
  20. },
  21. onCrcConfigInput(event) {
  22. const field = event.currentTarget.dataset.field
  23. if (!field) return
  24. const isCrcConfigField = crcTool.CRC_CONFIG_FIELDS.includes(field)
  25. const nextData = {
  26. [field]: event.detail.value,
  27. crcErrorText: ''
  28. }
  29. if (isCrcConfigField) {
  30. nextData.crcAlgorithmCollapsed = false
  31. nextData.crcPresetIndex = crcTool.getCustomPresetIndex()
  32. }
  33. this.setData(nextData)
  34. },
  35. onCrcReflectChange(event) {
  36. const field = event.currentTarget.dataset.field
  37. if (!field) return
  38. this.setData({
  39. [field]: !!event.detail.value,
  40. crcAlgorithmCollapsed: false,
  41. crcErrorText: '',
  42. crcPresetIndex: crcTool.getCustomPresetIndex()
  43. })
  44. },
  45. toggleCrcAlgorithmPanel() {
  46. this.setData({
  47. crcAlgorithmCollapsed: !this.data.crcAlgorithmCollapsed
  48. })
  49. },
  50. onCrcDataInput(event) {
  51. this.crcFileBytes = null
  52. this.setData({
  53. crcDataText: event.detail.value,
  54. crcErrorText: '',
  55. crcFileName: '',
  56. crcFileSizeText: ''
  57. })
  58. },
  59. calculateCrc() {
  60. try {
  61. this.setData(crcTool.calculateFromState(this.data, this.crcFileBytes))
  62. } catch (error) {
  63. const message = error && error.message ? error.message : '计算失败'
  64. this.setData({
  65. crcErrorText: message
  66. })
  67. if (this.pageToast) this.pageToast.show(message, 'error')
  68. }
  69. },
  70. async loadCrcFileFromMessage() {
  71. try {
  72. const file = await loadSelectedFile('message')
  73. this.crcFileBytes = file.bytes
  74. this.setData({
  75. crcDataLengthText: file.sizeText,
  76. crcDataText: '',
  77. crcErrorText: '',
  78. crcFileName: file.name,
  79. crcFileSizeText: file.sizeText
  80. })
  81. this.calculateCrc()
  82. } catch (error) {
  83. const message = error && (error.errMsg || error.message)
  84. ? (error.errMsg || error.message)
  85. : '读取文件失败'
  86. if (!/cancel/i.test(message) && this.pageToast) {
  87. this.pageToast.show(message, 'error')
  88. }
  89. }
  90. },
  91. clearCrcInput() {
  92. this.crcFileBytes = null
  93. this.setData({
  94. crcDataLengthText: '0 bytes',
  95. crcDataText: '',
  96. crcErrorText: '',
  97. crcFileName: '',
  98. crcFileSizeText: '',
  99. crcResultBase64: '--',
  100. crcResultBin: '--',
  101. crcResultBinLines: [
  102. {
  103. id: 'bin-line-0',
  104. text: '--'
  105. }
  106. ],
  107. crcResultHex: '--'
  108. })
  109. }
  110. }
  111. module.exports = {
  112. handlers
  113. }