/** * テストページコンポーネント * 白紙の状態で表示されるテスト用のページ */ import React, { useState, useEffect } from 'react'; import { stockApi } from '../services/api'; import { Stock } from '../types/types'; import { Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Paper } from "@mui/material"; import { Container, Typography, Dialog, DialogTitle, DialogContent, DialogActions, TextField, Button, Box, } from '@mui/material'; import { TASK_ERRORS } from '../constants/errorMessages'; import CategoryDropDown from "../components/CategoryDropDown"; const StockPage: React.FC = () => { const [stocks, setStocks] = useState([]); // 在庫編集ダイアログの表示状態 const [openDialog, setOpenDialog] = useState(false); // コンポーネントマウント時にタスク一覧を取得 useEffect(() => { fetchStocks(); }, []); /** * APIからタスク一覧を取得する関数 * 取得したタスクをstate(tasks)に設定 */ const fetchStocks = async () => { try { const stocks = await stockApi.getStocks(); setStocks(stocks.stock_array); } catch (error) { console.error(`${TASK_ERRORS.FETCH_FAILED}:`, error); } }; /** * 文字列(ISO 8601形式)をyyyy/MM/ddに変換する関数 */ const formatDate = (isoString: string): string => { const date = new Date(isoString); const year = date.getFullYear(); const month = (date.getMonth() + 1).toString().padStart(2, "0"); // 月は0始まりなので+1 const day = date.getDate().toString().padStart(2, "0"); return `${year}/${month}/${day}`; }; /* Date型をyyyy/MM/ddに変換する関数 const formatDate = (date: Date): string => { const year = date.getFullYear(); const month = (date.getMonth() + 1).toString().padStart(2, "0"); // 月は0始まりなので+1 const day = date.getDate().toString().padStart(2, "0"); return `${year}/${month}/${day}`; }; */ return ( 在庫一覧 {/* タスク編集ボタン */} {/* タスク削除ボタン */} 乳製品 {/* 乳製品一覧表示エリア - 青い背景のコンテナ */}
{/* 要素が無かったら表示しない */} {stocks.filter(stock => stock.category === "乳製品").length === 0 ? null : ( 食材名 数量 購入価格 賞味・消費期限 購入日 {stocks .filter(stock => stock.category == "乳製品") // 乳製品だけ抽出 .map(stock => ( {stock.stuff_name} {stock.amount} {stock.price} {formatDate(stock.exp_date)} {formatDate(stock.buy_date)} ))}
)}
肉・魚 {/* 肉・魚一覧表示エリア - 青い背景のコンテナ */}
{stocks.filter(stock => stock.category == "肉" || stock.category == "魚").length === 0 ? null : ( 食材名 数量 購入価格 賞味・消費期限 購入日 {stocks .filter(stock => stock.category == "肉" || stock.category == "魚") // 肉と魚だけ抽出 .map(stock => ( {stock.stuff_name} {stock.amount} {stock.price} {formatDate(stock.exp_date)} {formatDate(stock.buy_date)} ))}
)}
野菜 {/* 野菜一覧表示エリア - 青い背景のコンテナ */}
{stocks.filter(stock => stock.category === "野菜").length === 0 ? null : ( 食材名 数量 購入価格 賞味・消費期限 購入日 {stocks .filter(stock => stock.category == "野菜") // 野菜だけ抽出 .map(stock => ( {stock.stuff_name} {stock.amount} {stock.price} {formatDate(stock.exp_date)} {formatDate(stock.buy_date)} ))}
)}
調味料 {/* 調味料一覧表示エリア - 青い背景のコンテナ */}
{stocks.filter(stock => stock.category === "調味料").length === 0 ? null : ( 食材名 数量 購入価格 賞味・消費期限 購入日 {stocks .filter(stock => stock.category == "調味料") // 調味料だけ抽出 .map(stock => ( {stock.stuff_name} {stock.amount} {stock.price} {formatDate(stock.exp_date)} {formatDate(stock.buy_date)} ))}
)}
その他 {/* その他一覧表示エリア - 青い背景のコンテナ */}
{stocks.filter(stock => stock.category === "その他").length === 0 ? null : ( 食材名 数量 購入価格 賞味・消費期限 購入日 {stocks .filter(stock => stock.category == "その他") // その他だけ抽出 .map(stock => ( {stock.stuff_name} {stock.amount} {stock.price} {formatDate(stock.exp_date)} {formatDate(stock.buy_date)} ))}
)}
); }; export default StockPage;