Merge branch 'master' of gitea.presley.nz:brandon.presley/Massive

This commit is contained in:
Brandon Presley 2022-11-21 18:15:55 +13:00
commit 71a1e69c7b
4 changed files with 62 additions and 56 deletions

View File

@ -1,5 +1,6 @@
import {NavigationProp, useNavigation} from '@react-navigation/native' import {NavigationProp, useNavigation} from '@react-navigation/native'
import {useCallback, useState} from 'react' import {useCallback, useState} from 'react'
import {Platform} from 'react-native'
import DocumentPicker from 'react-native-document-picker' import DocumentPicker from 'react-native-document-picker'
import {FileSystem} from 'react-native-file-access' import {FileSystem} from 'react-native-file-access'
import {Divider, IconButton, Menu} from 'react-native-paper' import {Divider, IconButton, Menu} from 'react-native-paper'
@ -153,8 +154,16 @@ export default function DrawerMenu({name}: {name: keyof DrawerParamList}) {
icon="more-vert" icon="more-vert"
/> />
}> }>
<Menu.Item icon="arrow-downward" onPress={download} title="Download" /> {Platform.OS === 'android' && (
<Menu.Item icon="arrow-upward" onPress={upload} title="Upload" /> <>
<Menu.Item
icon="arrow-downward"
onPress={download}
title="Download"
/>
<Menu.Item icon="arrow-upward" onPress={upload} title="Upload" />
</>
)}
<Divider /> <Divider />
<Menu.Item <Menu.Item
icon="delete" icon="delete"

View File

@ -102,29 +102,15 @@ export default function EditPlan() {
)) ))
)} )}
</ScrollView> </ScrollView>
{names.length === 0 ? (
<Button <Button
disabled={workouts.length === 0 && days.length === 0} disabled={workouts.length === 0 && days.length === 0}
mode="contained" style={styles.button}
onPress={() => { mode="contained"
navigation.goBack() icon="save"
navigation.navigate('Workouts', { onPress={save}>
screen: 'EditWorkout', Save
params: {value: {name: ''}}, </Button>
})
}}>
Add workout
</Button>
) : (
<Button
disabled={workouts.length === 0 && days.length === 0}
style={{marginTop: MARGIN}}
mode="contained"
icon="save"
onPress={save}>
Save
</Button>
)}
</View> </View>
</> </>
) )
@ -135,4 +121,7 @@ const styles = StyleSheet.create({
fontSize: 20, fontSize: 20,
marginBottom: MARGIN, marginBottom: MARGIN,
}, },
button: {
margin: MARGIN * 2,
},
}) })

View File

@ -1,5 +1,6 @@
import {createDrawerNavigator} from '@react-navigation/drawer' import {createDrawerNavigator} from '@react-navigation/drawer'
import {useMemo} from 'react' import {useMemo} from 'react'
import {Platform} from 'react-native'
import {IconButton} from 'react-native-paper' import {IconButton} from 'react-native-paper'
import BestPage from './BestPage' import BestPage from './BestPage'
import {DrawerParamList} from './drawer-param-list' import {DrawerParamList} from './drawer-param-list'
@ -35,16 +36,22 @@ export default function Routes() {
swipeEdgeWidth: 1000, swipeEdgeWidth: 1000,
headerShown: false, headerShown: false,
}}> }}>
{routes.map(route => ( {}
<Drawer.Screen {routes
key={route.name} .filter(route => {
name={route.name} if (Platform.OS === 'ios' && route.name === 'Timer') return false
component={route.component} return true
options={{ })
drawerIcon: () => <IconButton icon={route.icon} />, .map(route => (
}} <Drawer.Screen
/> key={route.name}
))} name={route.name}
component={route.component}
options={{
drawerIcon: () => <IconButton icon={route.icon} />,
}}
/>
))}
</Drawer.Navigator> </Drawer.Navigator>
) )
} }

View File

@ -1,4 +1,3 @@
import {Picker} from '@react-native-picker/picker'
import {RouteProp, useRoute} from '@react-navigation/native' import {RouteProp, useRoute} from '@react-navigation/native'
import {format} from 'date-fns' import {format} from 'date-fns'
import {useEffect, useState} from 'react' import {useEffect, useState} from 'react'
@ -10,13 +9,12 @@ import {setRepo} from './db'
import GymSet from './gym-set' import GymSet from './gym-set'
import {Metrics} from './metrics' import {Metrics} from './metrics'
import {Periods} from './periods' import {Periods} from './periods'
import Select from './Select'
import StackHeader from './StackHeader' import StackHeader from './StackHeader'
import useDark from './use-dark'
import Volume from './volume' import Volume from './volume'
export default function ViewBest() { export default function ViewBest() {
const {params} = useRoute<RouteProp<BestPageParams, 'ViewBest'>>() const {params} = useRoute<RouteProp<BestPageParams, 'ViewBest'>>()
const dark = useDark()
const [weights, setWeights] = useState<GymSet[]>([]) const [weights, setWeights] = useState<GymSet[]>([])
const [volumes, setVolumes] = useState<Volume[]>([]) const [volumes, setVolumes] = useState<Volume[]>([])
const [metric, setMetric] = useState(Metrics.Weight) const [metric, setMetric] = useState(Metrics.Weight)
@ -67,24 +65,27 @@ export default function ViewBest() {
<> <>
<StackHeader title={params.best.name} /> <StackHeader title={params.best.name} />
<View style={{padding: PADDING}}> <View style={{padding: PADDING}}>
<Picker <Select
style={{color: dark ? 'white' : 'black'}} items={[
dropdownIconColor={dark ? 'white' : 'black'} {value: Metrics.Volume, label: Metrics.Volume},
selectedValue={metric} {value: Metrics.OneRepMax, label: Metrics.OneRepMax},
onValueChange={value => setMetric(value)}> {
<Picker.Item value={Metrics.Volume} label={Metrics.Volume} /> label: Metrics.Weight,
<Picker.Item value={Metrics.Weight} label={Metrics.Weight} /> value: Metrics.Weight,
<Picker.Item value={Metrics.OneRepMax} label={Metrics.OneRepMax} /> },
</Picker> ]}
<Picker onChange={value => setMetric(value as Metrics)}
style={{color: dark ? 'white' : 'black'}} value={metric}
dropdownIconColor={dark ? 'white' : 'black'} />
selectedValue={period} <Select
onValueChange={value => setPeriod(value)}> items={[
<Picker.Item value={Periods.Weekly} label={Periods.Weekly} /> {value: Periods.Weekly, label: Periods.Weekly},
<Picker.Item value={Periods.Monthly} label={Periods.Monthly} /> {value: Periods.Monthly, label: Periods.Monthly},
<Picker.Item value={Periods.Yearly} label={Periods.Yearly} /> {value: Periods.Yearly, label: Periods.Yearly},
</Picker> ]}
onChange={value => setPeriod(value as Periods)}
value={period}
/>
{metric === Metrics.Volume ? ( {metric === Metrics.Volume ? (
<Chart <Chart
yData={volumes.map(v => v.value)} yData={volumes.map(v => v.value)}