|
@@ -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
|
|
|
}
|