diff --git a/src/app/components/exchange-rate-table.js b/src/app/components/exchange-rate-table.js index 7401378..88a1dc5 100644 --- a/src/app/components/exchange-rate-table.js +++ b/src/app/components/exchange-rate-table.js @@ -13,49 +13,69 @@ export function ComparisonTable({ results }) { ]; return ( -
- - - - {headers.map((h) => ( - - ))} - - - - {results.map((row, idx) => { - const cells = [ - { value: row.date, numeric: false }, - { value: row.currency, numeric: false }, - { value: row.bidvBuyTm, numeric: true }, - { value: row.bidvSell, numeric: true }, - { value: row.tcbBidTm, numeric: true }, - { value: row.tcbAsk, numeric: true }, - ]; - return ( - - {cells.map((cell, i) => ( - - ))} - - ); - })} - -
- {h.label} -
- {cell.value || "-"} -
-
+ <> + {/* Desktop table */} +
+ + + + {headers.map((h) => ( + + ))} + + + + {results.map((row, idx) => { + const cells = [ + { value: row.date, numeric: false }, + { value: row.currency, numeric: false }, + { value: row.bidvBuyTm, numeric: true }, + { value: row.bidvSell, numeric: true }, + { value: row.tcbBidTm, numeric: true }, + { value: row.tcbAsk, numeric: true }, + ]; + return ( + + {cells.map((cell, i) => ( + + ))} + + ); + })} + +
+ {h.label} +
+ {cell.value || "-"} +
+
+ {/* Mobile cards */} +
+ {results.map((row, idx) => ( +
+
+ {row.date} + {row.currency} +
+
+
BIDV Buy{row.bidvBuyTm || "-"}
+
TCB Bid{row.tcbBidTm || "-"}
+
BIDV Sell{row.bidvSell || "-"}
+
TCB Ask{row.tcbAsk || "-"}
+
+
+ ))} +
+ ); } @@ -106,42 +126,79 @@ export function RateTable({ results, selectedBank }) { ]; }; + const getMobileCard = (row) => { + if (selectedBank === "bidv") { + return { title: row.nameVI || row.nameEN, subtitle: `${row.currency} - ${row.date}`, fields: [ + { label: "Buy TM", value: row.muaTm }, { label: "Buy CK", value: row.muaCk }, { label: "Sell", value: row.ban }, + ]}; + } + return { title: row.label, subtitle: `${row.sourceCurrency} - ${row.date}`, fields: [ + { label: "Bid TM", value: row.bidRateTM }, { label: "Bid CK", value: row.bidRateCK }, + { label: "Ask", value: row.askRate }, { label: "Ask TM", value: row.askRateTM }, + ]}; + }; + return ( -
- - - - {headers.map((h) => ( - - ))} - - - - {results.map((row, idx) => { - const cells = getRowCells(row); - return ( - - {cells.map((cell, i) => ( - + <> + {/* Desktop table */} +
+
- {h.label} -
- {cell.value} -
+ + + {headers.map((h) => ( + + ))} + + + + {results.map((row, idx) => { + const cells = getRowCells(row); + return ( + + {cells.map((cell, i) => ( + + ))} + + ); + })} + +
+ {h.label} +
+ {cell.value} +
+
+ {/* Mobile cards */} +
+ {results.map((row, idx) => { + const card = getMobileCard(row); + return ( +
+
+ {card.title} + {card.subtitle} +
+
+ {card.fields.map((f, i) => ( +
+ {f.label} + {f.value || "-"} +
))} - - ); - })} - - -
+
+
+ ); + })} + + ); }