crc.js 2.6 KB

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