2020-01-10 03:24:54 +01:00
|
|
|
import React from "react"
|
|
|
|
|
// import DitDahDisplay from "./DitDahDisplay"
|
|
|
|
|
import morseCode from '../data/morse-reverse.json'
|
2020-01-10 09:56:38 +01:00
|
|
|
import ChallengeBufferDisplay from "./ChallengeBufferDisplay";
|
2020-01-10 03:24:54 +01:00
|
|
|
// import ChallengeWord from "./ChallengeWord";
|
|
|
|
|
|
|
|
|
|
function ChallengeDisplay(props) {
|
2020-02-09 10:47:07 +01:00
|
|
|
|
2020-01-10 09:56:38 +01:00
|
|
|
let morseLetters = props.buffer.split('_').filter(l => l !== '')
|
2020-01-10 03:24:54 +01:00
|
|
|
let challengeLetters = props.word.split('')
|
|
|
|
|
let correctIndexes = []
|
2020-01-10 09:56:38 +01:00
|
|
|
let incorrectIndex = null
|
2020-01-10 03:24:54 +01:00
|
|
|
|
|
|
|
|
morseLetters.forEach((morseLetter, index) => {
|
|
|
|
|
let morseAlpha = morseCode[morseLetter]
|
|
|
|
|
let challengeLetter = challengeLetters[index].toLowerCase()
|
|
|
|
|
|
|
|
|
|
if (morseAlpha === challengeLetter) {
|
|
|
|
|
correctIndexes.push(index)
|
|
|
|
|
console.log('MATCH', correctIndexes);
|
|
|
|
|
} else {
|
2020-01-10 09:56:38 +01:00
|
|
|
if (props.buffer.slice(-1) === "_") {
|
|
|
|
|
incorrectIndex = index
|
|
|
|
|
console.log('MISMATCH:', incorrectIndex, 'should be', challengeLetter, 'instead of', morseAlpha, '>', morseLetter);
|
|
|
|
|
// props.setMorseCharBuffer(morseLetters.slice(0,-1).join('_') + '_')
|
|
|
|
|
}
|
|
|
|
|
|
2020-01-10 03:24:54 +01:00
|
|
|
}
|
|
|
|
|
// else {
|
|
|
|
|
// let onlyCorrectMorse = morseLetters.splice(0,index+1).join(' ')
|
|
|
|
|
// props.setMorseCharBuffer(onlyCorrectMorse)
|
|
|
|
|
// }
|
|
|
|
|
})
|
|
|
|
|
// for (let i in morseLetters) {
|
|
|
|
|
|
|
|
|
|
// let morseLetter = morseLetters[i].slice(-1) === '/' ?
|
|
|
|
|
// morseLetters[i].slice(0,morseLetters[i].length-1) : morseLetters[i]
|
|
|
|
|
// let challengeLetter = challengeLetters[i].toLowerCase()
|
|
|
|
|
// let endOfMorseLetter = morseLetter.includes('/')
|
|
|
|
|
// let morseAlpha = morseCode[morseLetter]
|
|
|
|
|
|
|
|
|
|
// if (challengeLetter === morseAlpha && endOfMorseLetter) {
|
|
|
|
|
// correctIndexes.push(i)
|
|
|
|
|
// console.log('CORRECT!!', `"${morseAlpha}"`);
|
|
|
|
|
// morseLetters[i] = morseLetters[i].slice(0,morseLetters[i].length-1)
|
|
|
|
|
// console.log(morseLetters);
|
|
|
|
|
// props.setMorseCharBuffer(morseLetters.join(' '))
|
|
|
|
|
// }
|
|
|
|
|
// else if (challengeLetter !== morseAlpha && endOfMorseLetter) {
|
|
|
|
|
// console.log('WRONG!!', `"${morseLetter}"`)
|
|
|
|
|
// // Rejoin morse characters except the last wrong character
|
|
|
|
|
// props.setMorseCharBuffer(morseLetters.slice(0,morseLetters.length-1).join(' '))
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
2020-01-10 09:56:38 +01:00
|
|
|
|
2020-01-10 03:24:54 +01:00
|
|
|
let spannedWord = challengeLetters.map((letter,index) => {
|
|
|
|
|
// console.log('correctIndexes',correctIndexes);
|
|
|
|
|
// console.log('index',index);
|
2020-01-10 09:56:38 +01:00
|
|
|
let className = 'cLetter'
|
|
|
|
|
className += (correctIndexes.includes(index)) ? ' correct' : ''
|
|
|
|
|
className += (incorrectIndex === index) ? ' morseError' : ''
|
2020-01-10 03:24:54 +01:00
|
|
|
return (
|
|
|
|
|
<span key={index} className={className} id={"chal"+index}>{letter}</span>
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<>
|
|
|
|
|
<div id="challengeWord">{spannedWord}</div>
|
2020-01-10 09:56:38 +01:00
|
|
|
<ChallengeBufferDisplay buffer={props.buffer.slice(0,-1).replace(/_/g, ' ')} incorrectIndex={incorrectIndex} />
|
2020-01-10 03:24:54 +01:00
|
|
|
</>
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default React.memo(ChallengeDisplay)
|