Can create new movement when performing mapping
This commit is contained in:
parent
7c1cd96691
commit
cc512e648c
@ -130,7 +130,7 @@ export function UpdateMovementDialog(p: {
|
|||||||
setMovement((m) => {
|
setMovement((m) => {
|
||||||
return {
|
return {
|
||||||
...m,
|
...m,
|
||||||
amount: m.amount,
|
amount: l,
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,15 @@
|
|||||||
import { ListItem, ListItemButton, Paper, Typography } from "@mui/material";
|
import AddIcon from "@mui/icons-material/Add";
|
||||||
|
import {
|
||||||
|
Fab,
|
||||||
|
ListItem,
|
||||||
|
ListItemButton,
|
||||||
|
Paper,
|
||||||
|
Tooltip,
|
||||||
|
Typography,
|
||||||
|
} from "@mui/material";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { Movement, MovementApi } from "../api/MovementsApi";
|
import { Movement, MovementApi } from "../api/MovementsApi";
|
||||||
|
import { UpdateMovementDialog } from "../dialogs/UpdateMovementDialog";
|
||||||
import { AsyncWidget } from "./AsyncWidget";
|
import { AsyncWidget } from "./AsyncWidget";
|
||||||
import { AccountInput } from "./forms/AccountInput";
|
import { AccountInput } from "./forms/AccountInput";
|
||||||
import { AmountInput } from "./forms/AmountInput";
|
import { AmountInput } from "./forms/AmountInput";
|
||||||
@ -18,6 +27,8 @@ export function SelectMovementWidget(p: {
|
|||||||
label?: string;
|
label?: string;
|
||||||
};
|
};
|
||||||
}): React.ReactElement {
|
}): React.ReactElement {
|
||||||
|
const loadKey = React.useRef(1);
|
||||||
|
|
||||||
const [amount, setAmount] = React.useState<number | undefined>(
|
const [amount, setAmount] = React.useState<number | undefined>(
|
||||||
p.initialValues?.amount
|
p.initialValues?.amount
|
||||||
);
|
);
|
||||||
@ -48,10 +59,42 @@ export function SelectMovementWidget(p: {
|
|||||||
else setList(undefined);
|
else setList(undefined);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const [creating, setCreating] = React.useState(false);
|
||||||
|
|
||||||
|
const handleStartCreateNewMovement = () => {
|
||||||
|
setCreating(true);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleCloseCreateNewMovement = () => {
|
||||||
|
setCreating(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleCreatedNewMovement = (m: Movement) => {
|
||||||
|
setAmount(m.amount);
|
||||||
|
setAccountId(m.account_id);
|
||||||
|
setTime(m.time);
|
||||||
|
setLabel(m.label);
|
||||||
|
p.onChange(m);
|
||||||
|
loadKey.current += 1;
|
||||||
|
setCreating(false);
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Paper style={{ padding: "10px", flex: 1 }}>
|
<>
|
||||||
|
<Paper
|
||||||
|
style={{
|
||||||
|
padding: "10px",
|
||||||
|
flex: 1,
|
||||||
|
display: "flex",
|
||||||
|
flexDirection: "column",
|
||||||
|
}}
|
||||||
|
>
|
||||||
<div
|
<div
|
||||||
style={{ display: "flex", flexDirection: "row", alignItems: "center" }}
|
style={{
|
||||||
|
display: "flex",
|
||||||
|
flexDirection: "row",
|
||||||
|
alignItems: "center",
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<AccountInput
|
<AccountInput
|
||||||
value={accountId}
|
value={accountId}
|
||||||
@ -88,8 +131,11 @@ export function SelectMovementWidget(p: {
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div style={{ flex: 1 }}>
|
||||||
<AsyncWidget
|
<AsyncWidget
|
||||||
loadKey={accountId + "/" + JSON.stringify(filters)}
|
loadKey={
|
||||||
|
loadKey.current + "/" + accountId + "/" + JSON.stringify(filters)
|
||||||
|
}
|
||||||
load={load}
|
load={load}
|
||||||
errMsg="Failed to load the list of movements!"
|
errMsg="Failed to load the list of movements!"
|
||||||
build={() => {
|
build={() => {
|
||||||
@ -122,6 +168,34 @@ export function SelectMovementWidget(p: {
|
|||||||
);
|
);
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style={{ textAlign: "right" }}>
|
||||||
|
<Tooltip title="Create a new movement">
|
||||||
|
<Fab
|
||||||
|
color="primary"
|
||||||
|
aria-label="Create a new movement"
|
||||||
|
onClick={handleStartCreateNewMovement}
|
||||||
|
>
|
||||||
|
<AddIcon />
|
||||||
|
</Fab>
|
||||||
|
</Tooltip>
|
||||||
|
</div>
|
||||||
</Paper>
|
</Paper>
|
||||||
|
{creating && accountId && (
|
||||||
|
<UpdateMovementDialog
|
||||||
|
open
|
||||||
|
initial={{
|
||||||
|
account_id: accountId,
|
||||||
|
amount: amount ?? 0,
|
||||||
|
checked: false,
|
||||||
|
label: label ?? "",
|
||||||
|
time: time ?? 0,
|
||||||
|
}}
|
||||||
|
onClose={handleCloseCreateNewMovement}
|
||||||
|
onFinished={handleCreatedNewMovement}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user