learn-morse-code/src/app-modes/ChallengeMode.js

68 lines
2.4 KiB
JavaScript
Raw Normal View History

2020-01-19 04:35:11 +01:00
import React, {useContext} from 'react';
2020-01-09 10:06:38 +01:00
import '../css/App.css';
import morseCode from '../data/morse-reverse.json'
2020-01-19 04:35:11 +01:00
import ChallengeWord from '../components/ChallengeWord'
2020-01-10 03:24:54 +01:00
// import MorseBufferDisplay from '../components/MorseBufferDisplay'
// import ChallengeDisplay from '../components/ChallengeDisplay';
import ChallengeBufferDisplay from '../components/ChallengeBufferDisplay';
2020-01-19 04:35:11 +01:00
import { MorseBufferContext } from '../contexts/morseBufferContext';
2020-01-09 10:06:38 +01:00
2020-01-19 19:26:55 +01:00
function ChallengeMode() {
console.log("ChallengeMode loaded");
2020-01-09 10:06:38 +01:00
let word = "morse"
2020-01-09 10:06:38 +01:00
2020-01-19 19:26:55 +01:00
const {morseCharBuffer, setMorseCharBuffer} = useContext(MorseBufferContext)
2020-01-19 04:35:11 +01:00
let challengeLetters = word.split('')
2020-01-19 19:26:55 +01:00
let morseLetters = morseCharBuffer.split('_').filter(l => l !== '')
let correctIndexes = []
let incorrectIndex = null
morseLetters.forEach((morseLetter, index) => {
let morseAlpha = morseCode[morseLetter]
let challengeLetter = challengeLetters[index].toLowerCase()
2020-01-19 04:35:11 +01:00
console.log('morseAlpha', morseAlpha);
console.log('morseLetter', morseLetter);
console.log('challengeLetter', challengeLetter);
if (morseAlpha === challengeLetter) {
correctIndexes.push(index)
// console.log('MATCH', correctIndexes);
}
else {
if (morseCharBuffer.slice(-1) === "_") {
incorrectIndex = index
// console.log('MISMATCH:', incorrectIndex, 'should be', challengeLetter, 'instead of', morseAlpha, '>', morseLetter);
// props.setMorseCharBuffer(morseLetters.slice(0,-1).join('_') + '_')
}
}
})
let spannedWord = challengeLetters.map((letter,index) => {
// console.log('correctIndexes',correctIndexes);
// console.log('index',index);
let className = 'cLetter'
className += (correctIndexes.includes(index)) ? ' correct' : ''
className += (incorrectIndex === index) ? ' morseError' : ''
return (
<span key={index} className={className} id={"chal"+index}>{letter}</span>
)
})
2020-01-09 10:06:38 +01:00
return (
<>
2020-01-19 04:35:11 +01:00
<ChallengeWord word={spannedWord} />
2020-01-19 19:26:55 +01:00
<ChallengeBufferDisplay incorrectIndex={incorrectIndex} morseLetters={morseLetters} setMorseCharBuffer={setMorseCharBuffer} />
2020-01-10 09:56:38 +01:00
<button onClick={() => console.log(morseCharBuffer)}>morseCharBuffer</button>
2020-01-09 10:06:38 +01:00
</>
);
}
export default React.memo(ChallengeMode);