mirror of
https://github.com/genemecija/learn-morse-code.git
synced 2026-01-24 01:00:18 +01:00
Challenge mode functionality progress
This commit is contained in:
parent
f863d9cc05
commit
04f43d8038
|
|
@ -1,19 +1,17 @@
|
|||
import React from 'react';
|
||||
import '../css/App.css';
|
||||
import useTelegraph from '../hooks/useTelegraph';
|
||||
import ChallengeWord from '../components/ChallengeWord'
|
||||
import MorseBufferDisplay from '../components/MorseBufferDisplay'
|
||||
// import ChallengeWord from '../components/ChallengeWord'
|
||||
// import MorseBufferDisplay from '../components/MorseBufferDisplay'
|
||||
import ChallengeDisplay from '../components/ChallengeDisplay';
|
||||
|
||||
function ChallengeMode() {
|
||||
|
||||
const {morseCharBuffer} = useTelegraph('challenge')
|
||||
|
||||
console.log('ChallengeMode.js rendered')
|
||||
const {morseCharBuffer, setMorseCharBuffer} = useTelegraph('challenge')
|
||||
|
||||
return (
|
||||
<>
|
||||
<ChallengeWord word="challenge"/>
|
||||
<MorseBufferDisplay buffer={morseCharBuffer} /><br/>
|
||||
<ChallengeDisplay buffer={morseCharBuffer} word="Morse" setMorseCharBuffer={setMorseCharBuffer}/>
|
||||
</>
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import React, {useEffect} from 'react';
|
||||
import React from 'react';
|
||||
import '../css/App.css';
|
||||
import useTelegraph from '../hooks/useTelegraph';
|
||||
import MorseBufferDisplay from '../components/MorseBufferDisplay'
|
||||
|
|
@ -6,9 +6,7 @@ import MorseDisplay from '../components/MorseDisplay'
|
|||
|
||||
function PracticeMode() {
|
||||
|
||||
const {morseCharBuffer, morseWords, clearHistory} = useTelegraph()
|
||||
|
||||
console.log('PracticeMode.js rendered')
|
||||
const {morseCharBuffer, morseWords, clearHistory} = useTelegraph('practice')
|
||||
|
||||
return (
|
||||
<>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import MorseDisplay from '../components/MorseDisplay'
|
|||
|
||||
function TimedMode() {
|
||||
|
||||
const {morseCharBuffer, morseWords} = useTelegraph()
|
||||
const {morseCharBuffer, morseWords} = useTelegraph('timed')
|
||||
|
||||
console.log('TimedMode.js rendered')
|
||||
|
||||
|
|
|
|||
71
src/components/ChallengeDisplay.js
Normal file
71
src/components/ChallengeDisplay.js
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
import React from "react"
|
||||
// import DitDahDisplay from "./DitDahDisplay"
|
||||
import morseCode from '../data/morse-reverse.json'
|
||||
import MorseBufferDisplay from "./MorseBufferDisplay";
|
||||
// import ChallengeWord from "./ChallengeWord";
|
||||
|
||||
function ChallengeDisplay(props) {
|
||||
console.log('props.buffer:', props.buffer, '|END');
|
||||
let morseLetters = props.buffer.split(' ')
|
||||
console.log('morseLetters:', morseLetters, morseLetters.length);
|
||||
let challengeLetters = props.word.split('')
|
||||
let correctIndexes = []
|
||||
|
||||
morseLetters.forEach((morseLetter, index) => {
|
||||
let morseAlpha = morseCode[morseLetter]
|
||||
let challengeLetter = challengeLetters[index].toLowerCase()
|
||||
|
||||
if (morseAlpha === challengeLetter) {
|
||||
correctIndexes.push(index)
|
||||
console.log('MATCH', correctIndexes);
|
||||
} else {
|
||||
console.log('MISMATCH: should be', challengeLetter, 'instead of', morseAlpha);
|
||||
|
||||
}
|
||||
// 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(' '))
|
||||
// }
|
||||
// }
|
||||
|
||||
let spannedWord = challengeLetters.map((letter,index) => {
|
||||
// console.log('correctIndexes',correctIndexes);
|
||||
// console.log('index',index);
|
||||
let className = (correctIndexes.includes(index)) ? 'cLetter correct' : 'cLetter'
|
||||
return (
|
||||
<span key={index} className={className} id={"chal"+index}>{letter}</span>
|
||||
)
|
||||
})
|
||||
|
||||
|
||||
|
||||
return (
|
||||
<>
|
||||
<div id="challengeWord">{spannedWord}</div>
|
||||
<MorseBufferDisplay buffer={props.buffer.replace(/\//g, ' ')} />
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
export default React.memo(ChallengeDisplay)
|
||||
|
|
@ -1,9 +1,6 @@
|
|||
import React from "react"
|
||||
|
||||
function ChallengeWord(props) {
|
||||
console.log('ChallengeWord rendered');
|
||||
|
||||
let spannedWord = props.word.split('').map((letter,index) => <span key={index} className="cLetter" id={index}>{letter}</span>)
|
||||
|
||||
return (
|
||||
<div id="challengeWord">{spannedWord}</div>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
import React from "react"
|
||||
|
||||
function DitDahDisplay(props) {
|
||||
console.log('DitDahDisplay rendered');
|
||||
return (
|
||||
<div className='ditDah'>
|
||||
{props.dd}
|
||||
|
|
|
|||
|
|
@ -3,31 +3,38 @@ import DitDahDisplay from "./DitDahDisplay"
|
|||
import morseCode from '../data/morse-reverse.json'
|
||||
|
||||
function MorseBufferDisplay(props) {
|
||||
console.log('MorseBufferDisplay rendered');
|
||||
|
||||
let ditDahs = props.buffer.split('').map((ditdah,index) => <DitDahDisplay key={index} dd={ditdah} />)
|
||||
|
||||
let alphanumeric = ''
|
||||
if (props.buffer.includes(' ')) {
|
||||
let letters = props.buffer.split(' ')
|
||||
// if (props.buffer.includes(' ')) {
|
||||
|
||||
let letters = props.buffer.split(' ')
|
||||
|
||||
if (props.buffer === '') {}
|
||||
else {
|
||||
for (let i in letters) {
|
||||
if (letters[i] === ' ') {
|
||||
alphanumeric += ' '
|
||||
} else {
|
||||
if (morseCode[letters[i]] === undefined) {
|
||||
// alphanumeric += '[?]'
|
||||
alphanumeric += (letters[i] === '' ? '':'[?]')
|
||||
} else {
|
||||
alphanumeric += morseCode[letters[i]]
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (props.buffer !== '') {
|
||||
let letters = props.buffer
|
||||
if (morseCode[letters] === undefined) {
|
||||
alphanumeric += '[?]'
|
||||
} else {
|
||||
alphanumeric += morseCode[letters]
|
||||
}
|
||||
}
|
||||
|
||||
// } else if (props.buffer !== '') {
|
||||
// let letters = props.buffer
|
||||
// if (morseCode[letters] === undefined) {
|
||||
// alphanumeric += '[?]'
|
||||
// } else {
|
||||
// alphanumeric += morseCode[letters]
|
||||
// }
|
||||
// }
|
||||
|
||||
return (
|
||||
<div id="morseBufferDisplay">
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
import React from "react"
|
||||
|
||||
function MorseButton() {
|
||||
console.log('MorseButton rendered');
|
||||
return (
|
||||
<div id="morseButton"></div>
|
||||
)
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ import React from "react"
|
|||
import MorseCard from './MorseCard'
|
||||
|
||||
function MorseDisplay(props) {
|
||||
console.log('MorseDisplay rendered');
|
||||
let morseCards = props.morseWords.map((word,index) => <MorseCard key={index} morse={word} />)
|
||||
|
||||
return (
|
||||
|
|
|
|||
|
|
@ -171,6 +171,11 @@ html, body {
|
|||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.correct {
|
||||
background: rgba(0, 255, 0, 0.4);
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
#morseDisplay {
|
||||
/* border: 1px solid blue; */
|
||||
display: -webkit-box;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"version": 3,
|
||||
"mappings": "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",
|
||||
"mappings": "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",
|
||||
"sources": [
|
||||
"../scss/App.scss"
|
||||
],
|
||||
|
|
|
|||
|
|
@ -109,7 +109,9 @@ function useTelegraph(mode = 'practice') {
|
|||
|
||||
function checkGapBetweenInputs() {
|
||||
// Check Gap between letters
|
||||
if ((gapTime >= letterGapMinTime) && (gapTime < wordGapMaxTime)) {
|
||||
|
||||
if ((gapTime >= letterGapMinTime) &&
|
||||
((gapTime < wordGapMaxTime) || (mode === 'challenge'))) { // Practice mode || Challenge mode
|
||||
setMorseCharBuffer(prev => prev + ' ')
|
||||
clearInterval(gapTimer)
|
||||
gapTimer = 0
|
||||
|
|
@ -129,24 +131,29 @@ function useTelegraph(mode = 'practice') {
|
|||
return function cleanup() {
|
||||
document.removeEventListener('keydown', handleInputStart)
|
||||
document.removeEventListener('keyup', handleInputEnd)
|
||||
clearHistory()
|
||||
}
|
||||
// eslint-disable-next-line
|
||||
}, [])
|
||||
|
||||
useEffect(() => {
|
||||
if (morseCharBuffer.slice(-1) === '/') {
|
||||
// PRACTICE MODE
|
||||
if (morseCharBuffer.slice(-1) === '/' && mode === 'practice') {
|
||||
// Remove forward slash
|
||||
let val = morseCharBuffer.slice(0,morseCharBuffer.length-1)
|
||||
console.log('val: ', val);
|
||||
|
||||
setMorseWords(prev => [val, ...prev])
|
||||
|
||||
if (morseWords.length >= morseHistorySize) {
|
||||
setMorseWords(prev => prev.slice(0,prev.length-1))
|
||||
}
|
||||
|
||||
setMorseCharBuffer('')
|
||||
}
|
||||
|
||||
// CHALLENGE MODE: leave forward slash there; to be parsed by ChallengeDisplay.js
|
||||
// else if (morseCharBuffer.slice(-1) === '/' && mode === 'challenge') {
|
||||
|
||||
// }
|
||||
|
||||
// eslint-disable-next-line
|
||||
}, [morseCharBuffer])
|
||||
|
|
|
|||
|
|
@ -125,6 +125,11 @@ html, body {
|
|||
color: rgb(120, 0, 0);
|
||||
border-radius: 5px;
|
||||
}
|
||||
.correct {
|
||||
background: rgba(0,255,0,0.4);
|
||||
// color: rgb(120, 0, 0);
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
#morseDisplay {
|
||||
/* border: 1px solid blue; */
|
||||
|
|
|
|||
Loading…
Reference in a new issue