Add increment/decrement buttons to reps/weight - 1.148

Closes brandon.presley/Massive#164
This commit is contained in:
Brandon Presley 2023-08-14 13:29:50 +12:00
parent 79cde3a219
commit 331597e3ee
5 changed files with 174 additions and 75 deletions

View File

@ -9,7 +9,7 @@ import { format } from "date-fns";
import { useCallback, useRef, useState } from "react"; import { useCallback, useRef, useState } from "react";
import { NativeModules, TextInput, View } from "react-native"; import { NativeModules, TextInput, View } from "react-native";
import DocumentPicker from "react-native-document-picker"; import DocumentPicker from "react-native-document-picker";
import { Button, Card, TouchableRipple } from "react-native-paper"; import { Button, Card, IconButton, TouchableRipple } from "react-native-paper";
import AppInput from "./AppInput"; import AppInput from "./AppInput";
import ConfirmDialog from "./ConfirmDialog"; import ConfirmDialog from "./ConfirmDialog";
import { MARGIN, PADDING } from "./constants"; import { MARGIN, PADDING } from "./constants";
@ -155,22 +155,44 @@ export default function EditSet() {
onSubmitEditing={() => repsRef.current?.focus()} onSubmitEditing={() => repsRef.current?.focus()}
/> />
<View style={{ flexDirection: "row" }}>
<AppInput <AppInput
style={{
flex: 1,
marginBottom: MARGIN,
}}
label="Reps" label="Reps"
keyboardType="numeric" keyboardType="numeric"
value={reps} value={reps}
onChangeText={(newReps) => { onChangeText={(newReps) => {
const fixed = fixNumeric(newReps); const fixed = fixNumeric(newReps);
setReps(fixed); setReps(fixed);
if (fixed.length !== newReps.length) toast("Reps must be a number"); if (fixed.length !== newReps.length)
toast("Reps must be a number");
}} }}
onSubmitEditing={() => weightRef.current?.focus()} onSubmitEditing={() => weightRef.current?.focus()}
selection={selection} selection={selection}
onSelectionChange={(e) => setSelection(e.nativeEvent.selection)} onSelectionChange={(e) => setSelection(e.nativeEvent.selection)}
innerRef={repsRef} innerRef={repsRef}
/> />
<IconButton
icon="add"
onPress={() => setReps((Number(reps) + 1).toString())}
/>
<IconButton
icon="remove"
onPress={() => setReps((Number(reps) - 1).toString())}
/>
</View>
<View
style={{
flexDirection: "row",
marginBottom: MARGIN,
}}
>
<AppInput <AppInput
style={{ flex: 1 }}
label="Weight" label="Weight"
keyboardType="numeric" keyboardType="numeric"
value={weight} value={weight}
@ -183,6 +205,15 @@ export default function EditSet() {
onSubmitEditing={handleSubmit} onSubmitEditing={handleSubmit}
innerRef={weightRef} innerRef={weightRef}
/> />
<IconButton
icon="add"
onPress={() => setWeight((Number(weight) + 2.5).toString())}
/>
<IconButton
icon="remove"
onPress={() => setWeight((Number(weight) - 2.5).toString())}
/>
</View>
{settings.showUnit && ( {settings.showUnit && (
<AppInput <AppInput

View File

@ -7,7 +7,7 @@ import {
import { useCallback, useState } from "react"; import { useCallback, useState } from "react";
import { View } from "react-native"; import { View } from "react-native";
import DocumentPicker from "react-native-document-picker"; import DocumentPicker from "react-native-document-picker";
import { Button, Card, TouchableRipple } from "react-native-paper"; import { Button, Card, IconButton, TouchableRipple } from "react-native-paper";
import { In } from "typeorm"; import { In } from "typeorm";
import AppInput from "./AppInput"; import AppInput from "./AppInput";
import ConfirmDialog from "./ConfirmDialog"; import ConfirmDialog from "./ConfirmDialog";
@ -89,7 +89,16 @@ export default function EditSets() {
autoFocus={!name} autoFocus={!name}
/> />
<View
style={{
flexDirection: "row",
marginBottom: MARGIN,
}}
>
<AppInput <AppInput
style={{
flex: 1,
}}
label={`Reps: ${oldReps}`} label={`Reps: ${oldReps}`}
keyboardType="numeric" keyboardType="numeric"
value={reps} value={reps}
@ -98,14 +107,39 @@ export default function EditSets() {
onSelectionChange={(e) => setSelection(e.nativeEvent.selection)} onSelectionChange={(e) => setSelection(e.nativeEvent.selection)}
autoFocus={!!name} autoFocus={!!name}
/> />
<IconButton
icon="add"
onPress={() => setReps((Number(reps) + 1).toString())}
/>
<IconButton
icon="remove"
onPress={() => setReps((Number(reps) - 1).toString())}
/>
</View>
<View
style={{
flexDirection: "row",
marginBottom: MARGIN,
}}
>
<AppInput <AppInput
style={{ flex: 1 }}
label={`Weights: ${weights}`} label={`Weights: ${weights}`}
keyboardType="numeric" keyboardType="numeric"
value={weight} value={weight}
onChangeText={setWeight} onChangeText={setWeight}
onSubmitEditing={handleSubmit} onSubmitEditing={handleSubmit}
/> />
<IconButton
icon="add"
onPress={() => setWeight((Number(weight) + 2.5).toString())}
/>
<IconButton
icon="remove"
onPress={() => setWeight((Number(weight) - 2.5).toString())}
/>
</View>
{settings.showUnit && ( {settings.showUnit && (
<AppInput <AppInput

View File

@ -10,7 +10,7 @@ import { FlatList, NativeModules, TextInput, View } from "react-native";
import { Button, IconButton, ProgressBar } from "react-native-paper"; import { Button, IconButton, ProgressBar } from "react-native-paper";
import AppInput from "./AppInput"; import AppInput from "./AppInput";
import { getBestSet } from "./best.service"; import { getBestSet } from "./best.service";
import { PADDING } from "./constants"; import { MARGIN, PADDING } from "./constants";
import CountMany from "./count-many"; import CountMany from "./count-many";
import { AppDataSource } from "./data-source"; import { AppDataSource } from "./data-source";
import { getNow, setRepo, settingsRepo } from "./db"; import { getNow, setRepo, settingsRepo } from "./db";
@ -126,8 +126,15 @@ export default function StartPlan() {
</StackHeader> </StackHeader>
<View style={{ padding: PADDING, flex: 1, flexDirection: "column" }}> <View style={{ padding: PADDING, flex: 1, flexDirection: "column" }}>
<View style={{ flex: 1 }}> <View style={{ flex: 1 }}>
<View
style={{
flexDirection: "row",
marginBottom: MARGIN,
}}
>
<AppInput <AppInput
label="Reps" label="Reps"
style={{ flex: 1 }}
keyboardType="numeric" keyboardType="numeric"
value={reps} value={reps}
onChangeText={(newReps) => { onChangeText={(newReps) => {
@ -141,8 +148,25 @@ export default function StartPlan() {
onSelectionChange={(e) => setSelection(e.nativeEvent.selection)} onSelectionChange={(e) => setSelection(e.nativeEvent.selection)}
innerRef={repsRef} innerRef={repsRef}
/> />
<IconButton
icon="add"
onPress={() => setReps((Number(reps) + 1).toString())}
/>
<IconButton
icon="remove"
onPress={() => setReps((Number(reps) - 1).toString())}
/>
</View>
<View
style={{
flexDirection: "row",
marginBottom: MARGIN,
}}
>
<AppInput <AppInput
label="Weight" label="Weight"
style={{ flex: 1 }}
keyboardType="numeric" keyboardType="numeric"
value={weight} value={weight}
onChangeText={(newWeight) => { onChangeText={(newWeight) => {
@ -155,6 +179,16 @@ export default function StartPlan() {
innerRef={weightRef} innerRef={weightRef}
blurOnSubmit blurOnSubmit
/> />
<IconButton
icon="add"
onPress={() => setWeight((Number(weight) + 2.5).toString())}
/>
<IconButton
icon="remove"
onPress={() => setWeight((Number(weight) - 2.5).toString())}
/>
</View>
{settings?.showUnit && ( {settings?.showUnit && (
<AppInput <AppInput
autoCapitalize="none" autoCapitalize="none"

View File

@ -85,8 +85,8 @@ android {
applicationId "com.massive" applicationId "com.massive"
minSdkVersion rootProject.ext.minSdkVersion minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 36173 versionCode 36174
versionName "1.147" versionName "1.148"
} }
signingConfigs { signingConfigs {
release { release {

View File

@ -1,6 +1,6 @@
{ {
"name": "massive", "name": "massive",
"version": "1.147", "version": "1.148",
"private": true, "private": true,
"license": "GPL-3.0-only", "license": "GPL-3.0-only",
"scripts": { "scripts": {