|
|
|
@ -34,7 +34,7 @@ import { |
|
|
|
|
Add as AddIcon, Delete as DeleteIcon, ShoppingBasket as ShoppingBasketIcon, |
|
|
|
|
SoupKitchen as SoupKitchenIcon |
|
|
|
|
} from '@mui/icons-material'; |
|
|
|
|
import { ToBuy, Stuff, Stock } from '../types/types'; |
|
|
|
|
import { ToBuy, Stuff, /*Stock*/ } from '../types/types'; |
|
|
|
|
import { TOBUY_ERRORS } from '../constants/errorMessages'; |
|
|
|
|
//import { FaCarrot } from "react-icons/fa6"; //エラー起きる いったん保留
|
|
|
|
|
|
|
|
|
@ -73,6 +73,8 @@ const TaskListPage: React.FC = () => { |
|
|
|
|
|
|
|
|
|
const [newStock, setNewStock] = useState(EMPTY_STOCK); |
|
|
|
|
|
|
|
|
|
const [newPrice, setNewPrice] = useState("");//入力用の価格(文字列)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// コンポーネントマウント時にタスク一覧を取得
|
|
|
|
|
useEffect(() => { |
|
|
|
@ -133,7 +135,14 @@ const TaskListPage: React.FC = () => { |
|
|
|
|
const handleBuy = async (tobuyId: number) => { |
|
|
|
|
try { |
|
|
|
|
const today = new Date().toISOString().substring(0, 10); |
|
|
|
|
await toBuyApi.buy({tobuyId, ...newStock, lastUpdate: today}); |
|
|
|
|
const parsedPrice = parseInt(newPrice, 10);
|
|
|
|
|
if (!isNaN(parsedPrice)) { |
|
|
|
|
setNewStock({ ...newStock, price: parsedPrice }); |
|
|
|
|
}else{ |
|
|
|
|
alert('入力が無効です') |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
await toBuyApi.buy({ tobuyId, ...newStock, lastUpdate: today }); //データベースに送信
|
|
|
|
|
fetchTasks(); // 削除後の買うもの一覧を再取得
|
|
|
|
|
} catch (error) { |
|
|
|
|
console.error(`${TOBUY_ERRORS.BUY_FAILED}:`, error); |
|
|
|
@ -253,7 +262,8 @@ const TaskListPage: React.FC = () => { |
|
|
|
|
<Fab |
|
|
|
|
color="primary" |
|
|
|
|
sx={{ position: 'fixed', bottom: 16, left: '60%', transform: 'translateX(-50%)' }} |
|
|
|
|
onClick={() => {setOpenDialog(true); |
|
|
|
|
onClick={() => { |
|
|
|
|
setOpenDialog(true); |
|
|
|
|
//handleNavigate('/AddDishies1');
|
|
|
|
|
}} |
|
|
|
|
//selected={isSelected('/test')}
|
|
|
|
@ -360,8 +370,13 @@ const TaskListPage: React.FC = () => { |
|
|
|
|
margin="dense" |
|
|
|
|
label="価格" |
|
|
|
|
fullWidth |
|
|
|
|
value={newStock.price} |
|
|
|
|
onChange={(e) => setNewStock({...newStock, price: parseInt(e.target.value)})} |
|
|
|
|
value={newPrice} |
|
|
|
|
onChange={(e) => { |
|
|
|
|
const value = e.target.value; |
|
|
|
|
if (/^\d*$/.test(value)) { |
|
|
|
|
setNewPrice(value) |
|
|
|
|
} ; |
|
|
|
|
}} |
|
|
|
|
/> |
|
|
|
|
{/* 購入日入力フィールド */} |
|
|
|
|
<TextField |
|
|
|
@ -384,6 +399,8 @@ const TaskListPage: React.FC = () => { |
|
|
|
|
margin="dense" |
|
|
|
|
label="店舗" |
|
|
|
|
fullWidth |
|
|
|
|
value={newToBuy.shop} |
|
|
|
|
onChange={(e) => setNewToBuy({ ...newToBuy, shop: e.target.value })} |
|
|
|
|
/> |
|
|
|
|
</Box> |
|
|
|
|
</DialogContent> |
|
|
|
|