From a35aba7b9792b3fabca7388bad784fb6cc4a7998 Mon Sep 17 00:00:00 2001 From: Brandon Presley Date: Sat, 21 Oct 2023 12:24:31 +1300 Subject: [PATCH] =?UTF-8?q?Add=20select=20button=20to=20EditSet=20-=201.16?= =?UTF-8?q?2=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #173 --- EditSet.tsx | 130 +++++++++++++++++++++++++++------------ android/app/build.gradle | 4 +- package.json | 2 +- 3 files changed, 93 insertions(+), 43 deletions(-) diff --git a/EditSet.tsx b/EditSet.tsx index e45018f..53b0e2b 100644 --- a/EditSet.tsx +++ b/EditSet.tsx @@ -10,11 +10,19 @@ import { format } from "date-fns"; import { useCallback, useRef, useState } from "react"; import { NativeModules, TextInput, View } from "react-native"; import DocumentPicker from "react-native-document-picker"; -import { Button, Card, IconButton, TouchableRipple } from "react-native-paper"; +import { + Button, + Card, + IconButton, + Menu, + TouchableRipple, +} from "react-native-paper"; import AppInput from "./AppInput"; import ConfirmDialog from "./ConfirmDialog"; import { MARGIN, PADDING } from "./constants"; import { getNow, setRepo, settingsRepo } from "./db"; +import { emitter } from "./emitter"; +import { fixNumeric } from "./fix-numeric"; import GymSet, { GYM_SET_CREATED, GYM_SET_DELETED, @@ -24,8 +32,6 @@ import { HomePageParams } from "./home-page-params"; import Settings from "./settings"; import StackHeader from "./StackHeader"; import { toast } from "./toast"; -import { fixNumeric } from "./fix-numeric"; -import { emitter } from "./emitter"; export default function EditSet() { const { params } = useRoute>(); @@ -38,12 +44,14 @@ export default function EditSet() { const [newImage, setNewImage] = useState(set.image); const [unit, setUnit] = useState(set.unit); const [showDelete, setShowDelete] = useState(false); + const [showMenu, setShowMenu] = useState(false); const [created, setCreated] = useState( set.created ? new Date(set.created) : new Date() ); const [createdDirty, setCreatedDirty] = useState(false); const [showRemove, setShowRemove] = useState(false); const [removeImage, setRemoveImage] = useState(false); + const [sets, setSets] = useState([]); const weightRef = useRef(null); const repsRef = useRef(null); const unitRef = useRef(null); @@ -155,6 +163,30 @@ export default function EditSet() { navigate("Sets"); }; + const openMenu = async () => { + const latestSets = await setRepo + .createQueryBuilder() + .select() + .addSelect("MAX(created) as created") + .groupBy("name") + .getMany(); + setSets(latestSets); + setShowMenu(true); + }; + + const select = (setOption: GymSet) => { + setName(setOption.name); + setReps(setOption.reps.toString()); + setWeight(setOption.weight.toString()); + setNewImage(setOption.image); + setUnit(setOption.unit); + setSelection({ + start: 0, + end: setOption.reps.toString().length, + }); + setShowMenu(false); + }; + return ( <> @@ -172,21 +204,36 @@ export default function EditSet() { - repsRef.current?.focus()} - /> - - + + repsRef.current?.focus()} + /> + + setShowMenu(false)} + anchor={} + > + {sets.map((setOption) => ( + select(setOption)} + /> + ))} + + + + + setSelection(e.nativeEvent.selection)} innerRef={repsRef} /> - setReps((Number(reps) + 1).toString())} - /> - setReps((Number(reps) - 1).toString())} - /> + + setReps((Number(reps) + 1).toString())} + /> + setReps((Number(reps) - 1).toString())} + /> + - + - setWeight((Number(weight) + 2.5).toString())} - /> - setWeight((Number(weight) - 2.5).toString())} - /> + + + setWeight((Number(weight) + 2.5).toString())} + /> + setWeight((Number(weight) - 2.5).toString())} + /> + {settings.showUnit && ( diff --git a/android/app/build.gradle b/android/app/build.gradle index e01bf13..812e1db 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -85,8 +85,8 @@ android { applicationId "com.massive" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 36187 - versionName "1.161" + versionCode 36188 + versionName "1.162" } signingConfigs { release { diff --git a/package.json b/package.json index b062490..2f7932f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "massive", - "version": "1.161", + "version": "1.162", "private": true, "license": "GPL-3.0-only", "scripts": {