From 55537aa02fb09a2ee78e4ae1a6cdb110c0244817 Mon Sep 17 00:00:00 2001 From: Yuriy Evdokimov Date: Fri, 13 Oct 2023 23:55:39 +0500 Subject: [PATCH] aaa --- src/App.tsx | 34 +++++++++++++++++----------------- src/Strings.ts | 3 ++- src/buttons.tsx | 9 +++++---- src/params.tsx | 7 +++---- src/store.tsx | 16 ++++++++++------ 5 files changed, 37 insertions(+), 32 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 8819e9f..50c4238 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -2,24 +2,20 @@ import { useState } from 'react' import './App.css' import { Badge, Button, ListGroup } from 'react-bootstrap'; import { initials, finales } from './data'; -import { BtnColor, Tone } from './types'; +import { BtnColor, Status, Tone } from './types'; import { strings } from './strings'; import { useStateContext } from './store'; import { Params } from './params'; import { ActionType, ToggleType } from './reducer'; import { ButtonSet } from './buttons'; -enum Status {params, plaing, plaied, showlist} - function App() { - + const { state, dispatch } = useStateContext(); -//---------------- to found state - const isFound = ():boolean => state.foundSyllables!.length > 0 const [plaingNo, setPlaingNo ] = useState(0) -const [ status, setStatus ] = useState(Status.params) +const setStatus = (status: Status) => { dispatch({ type: ActionType.setStatus, payload: status}) } const beginDictation = (): void => { dispatch({ type: ActionType.refreshPlayList }) @@ -36,7 +32,7 @@ const playDictation2 = (randomTones: Tone[]) => { if ( audios.length == 0 ) return for(let x=0; x setTimeout( () => { + audios[x].onended = () => setTimeout( () => { let pno = x+2 setPlaingNo(pno) audios[x+1].play() @@ -61,40 +57,44 @@ const refresh = () => { <>

Диктант pīnyīn

- +

{strings.selectInitiales}

- +

{strings.selectFinales}

- +

{strings.params}

- { status == Status.params && + { state.status == Status.params && <> Выбрано {state.initiales!.length} инициалей, {state.finales!.length} финалей, найдено {state.foundSyllables!.length} слогов, { state.foundTones!.length } тонов ,
- } { - status == Status.plaing && + state.status == Status.plaing &&

Воспроизводится...{plaingNo}

} { - status == Status.plaied && + state.status == Status.plaied && } { - status == Status.showlist && + state.status == Status.showlist && <>
{renderRandomTones2()}

diff --git a/src/Strings.ts b/src/Strings.ts index 567ebcd..abef630 100644 --- a/src/Strings.ts +++ b/src/Strings.ts @@ -3,5 +3,6 @@ export const strings = { selectFinales: 'Выберите финали', selectAll: 'Выбрать все', unselectAll: 'Снять все', - params: 'Параметры' + params: 'Параметры', + sylCount: 'Количество слогов' } \ No newline at end of file diff --git a/src/buttons.tsx b/src/buttons.tsx index c2dbe56..187f8ee 100644 --- a/src/buttons.tsx +++ b/src/buttons.tsx @@ -17,12 +17,13 @@ export const ButtonSet = (props: IBtnSerProps) => { return <> - { source.map( (part, i) =>