From b211d15c4422b024282296e0324efdd1bc33e581 Mon Sep 17 00:00:00 2001 From: "Yuna.Suzuki" Date: Tue, 17 Jun 2025 14:46:07 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=BB=E8=A1=A8=E3=82=92=E4=B8=AD=E5=A4=AE?= =?UTF-8?q?=E3=81=9E=E3=82=8D=E3=81=88=E3=81=AB=E3=81=97=E3=81=BE=E3=81=97?= =?UTF-8?q?=E3=81=9F=E3=80=82=20=E3=83=BB=E8=BF=BD=E5=8A=A0=E3=83=9C?= =?UTF-8?q?=E3=82=BF=E3=83=B3=E3=82=92=E5=8F=B3=E4=B8=8B=E3=81=AB=E7=BD=AE?= =?UTF-8?q?=E3=81=8D=E3=81=BE=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/pages/StockPage.tsx | 435 ++++++++++++++++--------------- 1 file changed, 225 insertions(+), 210 deletions(-) diff --git a/frontend/src/pages/StockPage.tsx b/frontend/src/pages/StockPage.tsx index 93e5d9b..f97bd66 100644 --- a/frontend/src/pages/StockPage.tsx +++ b/frontend/src/pages/StockPage.tsx @@ -114,10 +114,10 @@ const StockPage: React.FC = () => { const expDateOnly = new Date(exp); expDateOnly.setHours(0, 0, 0, 0); - console.log("新規作成buy:", buy); - console.log("新規作成exp:", exp); - console.log("新規作成buyDateOnly:", buyDateOnly); - console.log("新規作成expDateOnly:", expDateOnly); + // console.log("新規作成buy:", buy); + // console.log("新規作成exp:", exp); + // console.log("新規作成buyDateOnly:", buyDateOnly); + // console.log("新規作成expDateOnly:", expDateOnly); if (buyDateOnly.getTime() > expDateOnly.getTime()) { alert("購入日は消費・賞味期限より前の日付を設定してください。"); @@ -238,10 +238,10 @@ const StockPage: React.FC = () => { buyDateOnly.setHours(0, 0, 0, 0); const expDateOnly = new Date(exp); expDateOnly.setHours(0, 0, 0, 0); - console.log("編集buy:", buy); - console.log("編集exp:", exp); - console.log("編集buyDateOnly:", buyDateOnly); - console.log("編集expDateOnly:", expDateOnly); + // console.log("編集buy:", buy); + // console.log("編集exp:", exp); + // console.log("編集buyDateOnly:", buyDateOnly); + // console.log("編集expDateOnly:", expDateOnly); if (buy > exp) { alert("購入日は消費・賞味期限より前の日付を設定してください。"); @@ -332,9 +332,9 @@ const StockPage: React.FC = () => { - 食材名 - 数量 - 消費・賞味期限 + 食材名 + 数量 + 消費・賞味期限 @@ -349,11 +349,11 @@ const StockPage: React.FC = () => { const timeDiff = expDateOnly.getTime() - todayDateOnly.getTime(); const daysLeft = Math.ceil(timeDiff / (1000 * 60 * 60 * 24)); - console.log("テーブルtoday:", today); - console.log("テーブルexp:", expDate); - console.log("テーブルtodayDateOnly:", todayDateOnly); - console.log("テーブルexpDateOnly:", expDateOnly); - console.log("日数差:", daysLeft); + // console.log("テーブルtoday:", today); + // console.log("テーブルexp:", expDate); + // console.log("テーブルtodayDateOnly:", todayDateOnly); + // console.log("テーブルexpDateOnly:", expDateOnly); + // console.log("日数差:", daysLeft); return ( { onClick={() => handleRowClick(stock)} style={{ backgroundColor: selectedRow?.stockId === stock.stockId ? "yellow" : "white", cursor: "pointer" }} > - {stock.stuffName} - {stock.amount} - {stock.stuffName} + {stock.amount} + {formatDate(stock.expDate)} @@ -528,12 +528,12 @@ const StockPage: React.FC = () => { return ( - + 在庫リスト {/* */} - { borderBottom: 'none', // ← これで線を消す boxShadow: 'none', // ← 影も消す }} - > + > */} + - {/* 在庫の食材追加ボタン */} - {/* */} - {/* */} - {/* + {/* 食材の追加 { > */} - - - 食材の追加 - - - - - + + + 食材の追加 + + + + + - {/* 新規タスク作成ダイアログ */} - - - - - 在庫に食材を追加 - - - - } - label="食材を新規追加" - checked={newStock.newAddition} - onChange={(e) => setNewStock({ ...newStock, newAddition: (e.target as HTMLInputElement).checked })} - /> - - - - - {/*材料カテゴリ選択 */} - - - カテゴリ - - - - {!newStock.newAddition && - 材料名(選択) - - } - - {/* タスクタイトル入力フィールド */} - {newStock.newAddition && setNewStock({ ...newStock, stuffName: e.target.value })} - sx={{ marginBottom: 2 }} - />} - {/* 数量入力フィールド */} - { - const value = e.target.value; - const parsedValue = parseInt(value, 10); // 数値に変換 - if (isNaN(parsedValue) || parsedValue >= 1) { // 入力欄をいったん空欄にできるようにする,ただし空欄でない場合は1以上のみOK - setNewStock({ ...newStock, amount: parsedValue }); // number型で保存 - } - }} - // sx={{ width: "50%" }} - type="number" - inputProps={{ inputMode: "numeric", pattern: "[0-9]*" }} // ここで整数のみ許可 - /> - {/* 購入価格入力フィールド */} - { - const value = e.target.value; - const parsedValue = parseInt(value, 10); // 数値に変換 - if (isNaN(parsedValue) || parsedValue >= 0) { // 入力欄をいったん空欄にできるようにする,ただし空欄でない場合は0以上のみOK - setNewStock({ ...newStock, price: parsedValue }); // number型で保存 - } - }} - // sx={{ width: "50%" }} - type="number" - inputProps={{ inputMode: "numeric", pattern: "[0-9]*" }} // ここで整数のみ許可 - /> - - {/* 購入日・消費期限を横並びに */} - - {/* 購入日入力フィールド */} - - setNewStock({ ...newStock, buyDate: date ? formatDateLocal(date) : '' }) - } - dateFormat="yyyy/MM/dd" - customInput={ - - } - isClearable - //withPortal // ← 他の文字との重なり対策 - /> - {/* 消費・賞味期限入力フィールド */} - - setNewStock({ ...newStock, expDate: date ? formatDateLocal(date) : '' }) - } - dateFormat="yyyy/MM/dd" - customInput={ - - } - isClearable - //withPortal + {/* 新規タスク作成ダイアログ */} + + + + + 在庫に食材を追加 + + + + } + label="食材を新規追加" + checked={newStock.newAddition} + onChange={(e) => setNewStock({ ...newStock, newAddition: (e.target as HTMLInputElement).checked })} /> - + - - - - - - + + + {/*材料カテゴリ選択 */} + + + カテゴリ + + + + {!newStock.newAddition && + 材料名(選択) + + } + + {/* タスクタイトル入力フィールド */} + {newStock.newAddition && setNewStock({ ...newStock, stuffName: e.target.value })} + sx={{ marginBottom: 2 }} + />} + {/* 数量入力フィールド */} + { + const value = e.target.value; + const parsedValue = parseInt(value, 10); // 数値に変換 + if (isNaN(parsedValue) || parsedValue >= 1) { // 入力欄をいったん空欄にできるようにする,ただし空欄でない場合は1以上のみOK + setNewStock({ ...newStock, amount: parsedValue }); // number型で保存 + } + }} + // sx={{ width: "50%" }} + type="number" + inputProps={{ inputMode: "numeric", pattern: "[0-9]*" }} // ここで整数のみ許可 + /> + {/* 購入価格入力フィールド */} + { + const value = e.target.value; + const parsedValue = parseInt(value, 10); // 数値に変換 + if (isNaN(parsedValue) || parsedValue >= 0) { // 入力欄をいったん空欄にできるようにする,ただし空欄でない場合は0以上のみOK + setNewStock({ ...newStock, price: parsedValue }); // number型で保存 + } + }} + // sx={{ width: "50%" }} + type="number" + inputProps={{ inputMode: "numeric", pattern: "[0-9]*" }} // ここで整数のみ許可 + /> - {/* 在庫の食材編集ボタン(全テーブル共通) + {/* 購入日・消費期限を横並びに */} + + {/* 購入日入力フィールド */} + + setNewStock({ ...newStock, buyDate: date ? formatDateLocal(date) : '' }) + } + dateFormat="yyyy/MM/dd" + customInput={ + + } + isClearable + //withPortal // ← 他の文字との重なり対策 + /> + {/* 消費・賞味期限入力フィールド */} + + setNewStock({ ...newStock, expDate: date ? formatDateLocal(date) : '' }) + } + dateFormat="yyyy/MM/dd" + customInput={ + + } + isClearable + //withPortal + /> + + + + + + + + + + {/* 在庫の食材編集ボタン(全テーブル共通) */} - {/* 在庫の食材削除ボタン (全テーブル共通) + {/* 在庫の食材削除ボタン (全テーブル共通) */} - - - {/* 在庫一覧リスト */} - {/* 乳製品 */} - 乳製品 -
- {StockTable(stocks, ["乳製品"])} -
- - {/* 肉・魚 */} - 魚・肉 -
- {StockTable(stocks, ["魚・肉"])} -
- - {/* 野菜 */} - 野菜 -
- {StockTable(stocks, ["野菜"])} -
- - {/* 調味料 */} - 調味料 -
- {StockTable(stocks, ["調味料"])} -
- - {/* その他 */} - その他 -
- {StockTable(stocks, ["その他"])} -
+
+ + {/* 在庫一覧リスト */} + {/* 乳製品 */} + 乳製品 +
+ {StockTable(stocks, ["乳製品"])} +
+ + {/* 肉・魚 */} + 魚・肉 +
+ {StockTable(stocks, ["魚・肉"])} +
+ + {/* 野菜 */} + 野菜 +
+ {StockTable(stocks, ["野菜"])} +
+ + {/* 調味料 */} + 調味料 +
+ {StockTable(stocks, ["調味料"])} +
+ + {/* その他 */} + その他 +
+ {StockTable(stocks, ["その他"])} +
+ {/* フッターの高さと同じくらいに調整 */}
); };