2022-07-09 04:38:57 +00:00
|
|
|
import React, {useState} from 'react';
|
2022-07-09 05:13:13 +00:00
|
|
|
import {ScrollView, StyleSheet} from 'react-native';
|
2022-07-09 04:38:57 +00:00
|
|
|
import DateTimePickerModal from 'react-native-modal-datetime-picker';
|
2022-07-07 02:18:38 +00:00
|
|
|
import {Button, Dialog, Portal, TextInput} from 'react-native-paper';
|
|
|
|
import Set from './set';
|
2022-07-09 04:38:57 +00:00
|
|
|
import {format} from './time';
|
2022-07-03 01:50:01 +00:00
|
|
|
|
|
|
|
export default function EditSet({
|
2022-07-07 02:18:38 +00:00
|
|
|
set,
|
2022-07-08 01:51:14 +00:00
|
|
|
setSet,
|
2022-07-09 03:57:58 +00:00
|
|
|
onSave,
|
|
|
|
title,
|
|
|
|
saveText,
|
2022-07-10 04:22:19 +00:00
|
|
|
show,
|
|
|
|
setShow,
|
2022-07-03 01:50:01 +00:00
|
|
|
}: {
|
2022-07-09 03:57:58 +00:00
|
|
|
onSave: () => void;
|
2022-07-07 02:18:38 +00:00
|
|
|
set?: Set;
|
2022-07-08 01:51:14 +00:00
|
|
|
setSet: (set?: Set) => void;
|
2022-07-09 03:57:58 +00:00
|
|
|
title: string;
|
|
|
|
saveText: string;
|
2022-07-10 04:22:19 +00:00
|
|
|
show: boolean;
|
|
|
|
setShow: (show: boolean) => void;
|
2022-07-03 01:50:01 +00:00
|
|
|
}) {
|
2022-07-10 04:22:19 +00:00
|
|
|
const [showDate, setShowDate] = useState(false);
|
2022-07-09 04:38:57 +00:00
|
|
|
|
|
|
|
const onConfirm = (created: Date) => {
|
|
|
|
setSet({...set, created: created.toISOString()});
|
2022-07-10 04:22:19 +00:00
|
|
|
setShowDate(false);
|
2022-07-09 04:38:57 +00:00
|
|
|
};
|
|
|
|
|
2022-07-03 01:50:01 +00:00
|
|
|
return (
|
2022-07-05 00:43:23 +00:00
|
|
|
<Portal>
|
2022-07-10 04:22:19 +00:00
|
|
|
<Dialog visible={show} onDismiss={() => setShow(false)}>
|
2022-07-09 03:57:58 +00:00
|
|
|
<Dialog.Title>{title}</Dialog.Title>
|
2022-07-09 05:13:13 +00:00
|
|
|
<Dialog.ScrollArea>
|
|
|
|
<ScrollView>
|
|
|
|
<TextInput
|
|
|
|
style={styles.text}
|
|
|
|
autoFocus
|
|
|
|
label="Name *"
|
|
|
|
value={set?.name}
|
|
|
|
onChangeText={name => setSet({...set, name})}
|
|
|
|
autoCorrect={false}
|
|
|
|
/>
|
|
|
|
<TextInput
|
|
|
|
style={styles.text}
|
|
|
|
label="Reps *"
|
|
|
|
keyboardType="numeric"
|
|
|
|
value={set?.reps?.toString() || ''}
|
|
|
|
onChangeText={reps => setSet({...set, reps})}
|
|
|
|
/>
|
|
|
|
<TextInput
|
|
|
|
style={styles.text}
|
|
|
|
label="Weight *"
|
|
|
|
keyboardType="numeric"
|
|
|
|
value={set?.weight?.toString() || ''}
|
|
|
|
onChangeText={weight => setSet({...set, weight})}
|
|
|
|
onSubmitEditing={onSave}
|
|
|
|
/>
|
|
|
|
<TextInput
|
|
|
|
style={styles.text}
|
|
|
|
label="Unit (kg)"
|
|
|
|
value={set?.unit}
|
|
|
|
onChangeText={unit => setSet({...set, unit})}
|
|
|
|
onSubmitEditing={onSave}
|
|
|
|
/>
|
|
|
|
{set?.created && (
|
|
|
|
<>
|
2022-07-10 04:22:19 +00:00
|
|
|
<Button
|
|
|
|
icon="calendar-outline"
|
|
|
|
onPress={() => setShowDate(true)}>
|
2022-07-09 05:13:13 +00:00
|
|
|
{format(set.created)}
|
|
|
|
</Button>
|
|
|
|
<DateTimePickerModal
|
2022-07-10 04:22:19 +00:00
|
|
|
isVisible={showDate}
|
2022-07-09 05:13:13 +00:00
|
|
|
mode="datetime"
|
|
|
|
onConfirm={onConfirm}
|
2022-07-10 04:22:19 +00:00
|
|
|
onCancel={() => setShowDate(false)}
|
2022-07-09 05:13:13 +00:00
|
|
|
date={new Date(set.created)}
|
|
|
|
/>
|
|
|
|
</>
|
|
|
|
)}
|
|
|
|
</ScrollView>
|
|
|
|
</Dialog.ScrollArea>
|
2022-07-06 09:03:56 +00:00
|
|
|
<Dialog.Actions>
|
2022-07-10 04:22:19 +00:00
|
|
|
<Button icon="close" onPress={() => setShow(false)}>
|
2022-07-05 00:43:23 +00:00
|
|
|
Cancel
|
|
|
|
</Button>
|
2022-07-09 03:57:58 +00:00
|
|
|
<Button mode="contained" icon="save" onPress={onSave}>
|
|
|
|
{saveText}
|
2022-07-06 09:03:56 +00:00
|
|
|
</Button>
|
|
|
|
</Dialog.Actions>
|
|
|
|
</Dialog>
|
2022-07-05 00:43:23 +00:00
|
|
|
</Portal>
|
2022-07-03 01:50:01 +00:00
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
const styles = StyleSheet.create({
|
2022-07-04 04:03:48 +00:00
|
|
|
text: {
|
|
|
|
marginBottom: 10,
|
|
|
|
},
|
2022-07-03 01:50:01 +00:00
|
|
|
});
|