create item barebones

This commit is contained in:
2026-01-02 15:57:49 +01:00
parent 7708df3410
commit 69ba0ccf7c
3 changed files with 116 additions and 35 deletions

View File

@@ -200,6 +200,16 @@ export function HotelProvider({ accessToken, children, resClientId}) {
} }
async function createItem(item_name, item_amount){
const res = await fetch ( `${API_BASE}/inventory/add_item/${item_name}/${item_amount}`,
{
method:"POST",
headers: { Authorization: `Bearer ${accessTokenSingle}` }
});
}
async function fetchHotelUsers() { async function fetchHotelUsers() {
const res = await fetch(`${API_BASE}/chat/hotel_users`, { const res = await fetch(`${API_BASE}/chat/hotel_users`, {
method: "POST", method: "POST",
@@ -261,7 +271,8 @@ export function HotelProvider({ accessToken, children, resClientId}) {
addUserToConv, addUserToConv,
createConversation, createConversation,
fetchHotelInventory, fetchHotelInventory,
updateItemAmount updateItemAmount,
createItem
}} }}
> >
{children} {children}

View File

@@ -22,8 +22,8 @@ export default function InventoryWidget({}) {
}, []) }, [])
return ( return (
<div>
<div className="grid"> <div className="grid">
{items.map(item => ( {items.map(item => (
<ItemCard <ItemCard
key={item.id} key={item.id}
@@ -33,8 +33,13 @@ export default function InventoryWidget({}) {
/> />
))} ))}
</div> </div>
<div>
<CreateItemMenu/>
</div>
</div>
) )
} }
@@ -73,4 +78,37 @@ function ItemCard({id, name, amount}) {
</div> </div>
) )
} }
function CreateItemMenu() {
const [itemName, setItemName] = useState("");
const [itemAmount, setItemAmount] = useState(0);
const {createItem} = useHotel();
const handleSubmit = () => {
if (!itemName.trim() | !itemAmount.trim() ) return;
createItem(itemName, itemAmount);
}
return(
<div>
<input
type="text"
onChange={element => setItemName(element.target.value)}
placeholder="Nom de l'objet"
/>
<input
type="text"
onChange={element => setItemAmount(element.target.value)}
placeholder="Montant d'objet(s)"
/>
<button onClick={handleSubmit}>Creer</button>
</div>
)
}

View File

@@ -14,55 +14,87 @@ export default function RoomWidget({ roomlist }) {
status={room.status} status={room.status}
/> />
))} ))}
</div> </div>
); );
} }
function RoomCard({ number, status ,id}) { function RoomCard({ number, status ,id}) {
const { updateRoomStatus } = useHotel(); const { updateRoomStatus } = useHotel();
const [editing, setEditing] = useState(false); const [editingAmount, setEditingAmount] = useState(false);
const [value, SetValue] = useState(status); const [value, SetValue] = useState(status);
function submit() { function submit() {
updateRoomStatus(id,value); updateRoomStatus(id,value);
setEditing(false); setEditingAmount(false);
} }
return ( return (
<div className="card"> <div className="card">
<h3>Room {number}</h3> <h3>Room {number}</h3>
<h4>Id {id}</h4> <h4>Id {id}</h4>
{!editing ?( {!editingAmount ?(
<p onClick={() => setEditing(true)} style={{ cursor: "pointer" }}> <p onClick={() => setEditingAmount(true)} style={{ cursor: "pointer" }}>
Status: {status} Status: {status}
</p> </p>
): ( ): (
<div> <div>
<input <input
type="text" type="text"
value={value} value={value}
autoFocus autoFocus
onChange={e => SetValue(e.target.value)} onChange={e => SetValue(e.target.value)}
onKeyDown={e => e.key === "Enter" && submit()} onKeyDown={e => e.key === "Enter" && submit()}
/> />
</div>
)}
<div className="actions">
<button onClick={() => updateRoomStatus(id, "clean")}>
Mark Clean
</button>
<button onClick={() => updateRoomStatus(id, "dirty")}>
Mark Dirty
</button>
</div> </div>
)}
<div className="actions">
<button onClick={() => updateRoomStatus(id, "clean")}>
Mark Clean
</button>
<button onClick={() => updateRoomStatus(id, "dirty")}>
Mark Dirty
</button>
</div>
</div> </div>
); );
} }
function CreateItemMenu() {
const [itemName, setItemName] = useState("");
const [itemAmount, setItemAmount] = useState(0);
const {createItem} = useHotel();
const handleSubmit = () => {
if (!itemName.trim() | !itemAmount.trim() ) return;
createItem(itemName, itemAmount);
}
return(
<div>
<input
type="text"
onChange={element => setItemName(element.target.value)}
placeholder="Nom de l'objet"
/>
<input
type="text"
onChange={element => setItemAmount(element.target.value)}
placeholder="Montant d'objet(s)"
/>
<button onClick={handleSubmit}>Creer</button>
</div>
)
}
//export default roomWidget //export default roomWidget