Ver código fonte

adjustments due to the database integration.

Tomi Cvetic 5 anos atrás
pai
commit
fea39ceaa3
2 arquivos alterados com 19 adições e 15 exclusões
  1. 2 2
      frontend/src/timer/components/Timer.tsx
  2. 17 13
      frontend/src/timer/utils.ts

+ 2 - 2
frontend/src/timer/components/Timer.tsx

@@ -1,6 +1,6 @@
 import { useState, useEffect, useRef } from 'react'
 
-import { ITraining } from '../../training/types'
+import { TTraining } from '../../training/types'
 import { getExerciseList, getTrainingTime, getPosition } from '../utils'
 
 import Countdown from './Countdown'
@@ -11,7 +11,7 @@ import { useVoice } from '../hooks/useVoice'
 import { useVideo } from '../hooks/useVideo'
 import theme from '../../styles/theme'
 
-const Timer = ({ training }: { training: ITraining }) => {
+const Timer = ({ training }: { training: TTraining }) => {
   const [time, timer] = useTimer({ tickPeriod: 100 })
   const voice = useVoice('rosie')
 

+ 17 - 13
frontend/src/timer/utils.ts

@@ -1,6 +1,6 @@
-import { IBlock } from '../training/types'
 import { calculateDuration } from '../training/utils'
 import { IExerciseItem } from './types'
+import { TBlock, TBlockInstance } from '../training/types'
 
 /**
  * Find the right exercise given a certain time.
@@ -36,16 +36,18 @@ export function getPosition(exerciseList: IExerciseItem[], time: number) {
  * @param initialOffset - used for recursive application
  */
 export function getExerciseList(
-  blocks: IBlock[],
+  blockInstances?: TBlockInstance[],
   initialOffset = 0,
   toplevelBlock: undefined | string = undefined
 ): IExerciseItem[] {
+  if (!blockInstances) return []
   let offset = initialOffset
-  return blocks
-    .map(block => {
+  return blockInstances
+    .map(blockInstance => {
+      const { block, rounds = 1 } = blockInstance
       if (block.blocks) {
         const blockArray = []
-        for (let i = 0; i < (block.repetitions || 1); i++) {
+        for (let i = 0; i < rounds; i++) {
           const subBlocks = getExerciseList(
             block.blocks,
             offset,
@@ -74,19 +76,21 @@ export function getExerciseList(
         const blockArray: IExerciseItem[] = []
         const newItem = {
           exercise: block.exercises
-            .map(exercise =>
-              exercise.repetitions > 1
-                ? `${exercise.repetitions}x ${exercise.name}`
-                : exercise.name
-            )
+            .map(exerciseInstance => {
+              const {
+                exercise: { name },
+                repetitions = 1
+              } = exerciseInstance
+              return repetitions > 1 ? `${repetitions}x ${name}` : name
+            })
             .join(' - '),
-          duration: calculateDuration(block),
-          video: block.video,
+          duration: calculateDuration(blockInstance),
+          videos: block.videos,
           description: block.description,
           toplevelBlock: toplevelBlock || block.title,
           offset
         }
-        for (let i = 0; i < (block.repetitions || 1); i++) {
+        for (let i = 0; i < rounds; i++) {
           blockArray.push({ ...newItem, offset })
           offset += newItem.duration
         }