Warn when weight loss is faster than 1% a week
This commit is contained in:
parent
f61109cea3
commit
a176036c33
|
@ -13,9 +13,11 @@ import { Button, IconButton } 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";
|
||||||
|
import { AppDataSource } from "./data-source";
|
||||||
import { getNow, settingsRepo, weightRepo } from "./db";
|
import { getNow, settingsRepo, weightRepo } from "./db";
|
||||||
import Settings from "./settings";
|
import Settings from "./settings";
|
||||||
import StackHeader from "./StackHeader";
|
import StackHeader from "./StackHeader";
|
||||||
|
import { toast } from "./toast";
|
||||||
import Weight from "./weight";
|
import Weight from "./weight";
|
||||||
import { WeightPageParams } from "./WeightPage";
|
import { WeightPageParams } from "./WeightPage";
|
||||||
|
|
||||||
|
@ -52,9 +54,31 @@ export default function EditWeight() {
|
||||||
else if (typeof weight.id !== "number") newWeight.created = await getNow();
|
else if (typeof weight.id !== "number") newWeight.created = await getNow();
|
||||||
|
|
||||||
await weightRepo.save(newWeight);
|
await weightRepo.save(newWeight);
|
||||||
|
if (settings.notify) await checkWeekly();
|
||||||
navigate("Weights");
|
navigate("Weights");
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const checkWeekly = async () => {
|
||||||
|
const select = `
|
||||||
|
WITH weekly_weights AS (
|
||||||
|
SELECT
|
||||||
|
strftime('%W', created) AS week_number,
|
||||||
|
AVG(value) AS weekly_average
|
||||||
|
FROM weights
|
||||||
|
WHERE strftime('%W', created) = strftime('%W', 'now')
|
||||||
|
GROUP BY week_number
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
((SELECT value FROM weights WHERE strftime('%W', created) = strftime('%W', 'now') ORDER BY created LIMIT 1) - weekly_weights.weekly_average) / (SELECT value FROM weights WHERE strftime('%W', created) = strftime('%W', 'now') ORDER BY created LIMIT 1) * 100 AS loss
|
||||||
|
FROM weekly_weights
|
||||||
|
WHERE week_number = strftime('%W', 'now')
|
||||||
|
`;
|
||||||
|
const result = await AppDataSource.manager.query(select);
|
||||||
|
console.log(`${EditWeight.name}.checkWeekly:`, result);
|
||||||
|
if (result.length && result[0].loss > 1)
|
||||||
|
toast("Weight loss should be <= 1% per week.");
|
||||||
|
};
|
||||||
|
|
||||||
const pickDate = useCallback(() => {
|
const pickDate = useCallback(() => {
|
||||||
DateTimePickerAndroid.open({
|
DateTimePickerAndroid.open({
|
||||||
value: created,
|
value: created,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user