diff --git a/public/glycemic-index/foods.json b/public/glycemic-index/foods.json new file mode 100644 index 00000000..3a6b15ff --- /dev/null +++ b/public/glycemic-index/foods.json @@ -0,0 +1,97 @@ +[ + {"name":"Cơm trắng","group":"tinh-bot","gi":73,"carbs":28,"serving":150,"alt":"Cơm gạo lứt"}, + {"name":"Cơm gạo lứt","group":"tinh-bot","gi":50,"carbs":24,"serving":150,"alt":""}, + {"name":"Bún","group":"tinh-bot","gi":46,"carbs":25,"serving":150,"alt":""}, + {"name":"Phở","group":"tinh-bot","gi":54,"carbs":30,"serving":200,"alt":"Bún"}, + {"name":"Mì tôm","group":"tinh-bot","gi":67,"carbs":48,"serving":75,"alt":"Mì gạo lứt"}, + {"name":"Mì gạo lứt","group":"tinh-bot","gi":42,"carbs":35,"serving":75,"alt":""}, + {"name":"Bánh mì trắng","group":"tinh-bot","gi":75,"carbs":49,"serving":100,"alt":"Bánh mì đen"}, + {"name":"Bánh mì đen","group":"tinh-bot","gi":50,"carbs":42,"serving":100,"alt":""}, + {"name":"Xôi","group":"tinh-bot","gi":87,"carbs":40,"serving":150,"alt":"Cơm gạo lứt"}, + {"name":"Cháo trắng","group":"tinh-bot","gi":89,"carbs":12,"serving":250,"alt":"Cháo yến mạch"}, + {"name":"Cháo yến mạch","group":"tinh-bot","gi":55,"carbs":14,"serving":250,"alt":""}, + {"name":"Yến mạch nguyên hạt","group":"tinh-bot","gi":55,"carbs":27,"serving":50,"alt":""}, + {"name":"Khoai lang","group":"tinh-bot","gi":54,"carbs":20,"serving":150,"alt":""}, + {"name":"Khoai tây luộc","group":"tinh-bot","gi":78,"carbs":18,"serving":150,"alt":"Khoai lang"}, + {"name":"Khoai tây chiên","group":"tinh-bot","gi":75,"carbs":33,"serving":150,"alt":"Khoai lang nướng"}, + {"name":"Khoai lang nướng","group":"tinh-bot","gi":46,"carbs":20,"serving":150,"alt":""}, + {"name":"Ngô luộc","group":"tinh-bot","gi":52,"carbs":19,"serving":150,"alt":""}, + {"name":"Bánh cuốn","group":"tinh-bot","gi":58,"carbs":22,"serving":150,"alt":""}, + {"name":"Miến dong","group":"tinh-bot","gi":39,"carbs":20,"serving":100,"alt":""}, + {"name":"Chuối","group":"trai-cay","gi":51,"carbs":23,"serving":120,"alt":""}, + {"name":"Xoài","group":"trai-cay","gi":51,"carbs":15,"serving":120,"alt":""}, + {"name":"Dưa hấu","group":"trai-cay","gi":76,"carbs":8,"serving":150,"alt":"Ổi"}, + {"name":"Ổi","group":"trai-cay","gi":12,"carbs":14,"serving":150,"alt":""}, + {"name":"Táo","group":"trai-cay","gi":36,"carbs":14,"serving":150,"alt":""}, + {"name":"Cam","group":"trai-cay","gi":43,"carbs":9,"serving":150,"alt":""}, + {"name":"Nho","group":"trai-cay","gi":46,"carbs":17,"serving":120,"alt":""}, + {"name":"Thanh long","group":"trai-cay","gi":48,"carbs":11,"serving":150,"alt":""}, + {"name":"Bưởi","group":"trai-cay","gi":25,"carbs":10,"serving":200,"alt":""}, + {"name":"Mít","group":"trai-cay","gi":50,"carbs":24,"serving":120,"alt":""}, + {"name":"Vải","group":"trai-cay","gi":57,"carbs":16,"serving":100,"alt":"Bưởi"}, + {"name":"Chôm chôm","group":"trai-cay","gi":59,"carbs":17,"serving":100,"alt":"Ổi"}, + {"name":"Sầu riêng","group":"trai-cay","gi":49,"carbs":27,"serving":120,"alt":""}, + {"name":"Đu đủ","group":"trai-cay","gi":59,"carbs":11,"serving":150,"alt":"Táo"}, + {"name":"Dứa (thơm)","group":"trai-cay","gi":59,"carbs":13,"serving":150,"alt":"Cam"}, + {"name":"Măng cụt","group":"trai-cay","gi":35,"carbs":15,"serving":100,"alt":""}, + {"name":"Bơ","group":"trai-cay","gi":15,"carbs":9,"serving":100,"alt":""}, + {"name":"Dâu tây","group":"trai-cay","gi":40,"carbs":6,"serving":150,"alt":""}, + {"name":"Kiwi","group":"trai-cay","gi":52,"carbs":15,"serving":150,"alt":""}, + {"name":"Bắp cải","group":"rau-cu","gi":10,"carbs":6,"serving":100,"alt":""}, + {"name":"Cải bó xôi","group":"rau-cu","gi":15,"carbs":4,"serving":100,"alt":""}, + {"name":"Bí đỏ","group":"rau-cu","gi":75,"carbs":7,"serving":100,"alt":"Bí xanh"}, + {"name":"Bí xanh","group":"rau-cu","gi":15,"carbs":3,"serving":100,"alt":""}, + {"name":"Cà rốt (nấu)","group":"rau-cu","gi":39,"carbs":7,"serving":80,"alt":""}, + {"name":"Cà chua","group":"rau-cu","gi":15,"carbs":4,"serving":100,"alt":""}, + {"name":"Dưa leo","group":"rau-cu","gi":15,"carbs":2,"serving":100,"alt":""}, + {"name":"Mướp đắng (khổ qua)","group":"rau-cu","gi":15,"carbs":4,"serving":100,"alt":""}, + {"name":"Rau muống","group":"rau-cu","gi":15,"carbs":3,"serving":100,"alt":""}, + {"name":"Đậu bắp","group":"rau-cu","gi":20,"carbs":7,"serving":100,"alt":""}, + {"name":"Giá đỗ","group":"rau-cu","gi":15,"carbs":5,"serving":100,"alt":""}, + {"name":"Nấm","group":"rau-cu","gi":10,"carbs":3,"serving":100,"alt":""}, + {"name":"Đậu lăng (nấu)","group":"dau-hat","gi":29,"carbs":20,"serving":150,"alt":""}, + {"name":"Đậu đen","group":"dau-hat","gi":30,"carbs":20,"serving":150,"alt":""}, + {"name":"Đậu xanh","group":"dau-hat","gi":31,"carbs":19,"serving":150,"alt":""}, + {"name":"Đậu đỏ","group":"dau-hat","gi":28,"carbs":22,"serving":150,"alt":""}, + {"name":"Đậu nành (nấu)","group":"dau-hat","gi":16,"carbs":10,"serving":150,"alt":""}, + {"name":"Đậu phộng","group":"dau-hat","gi":14,"carbs":16,"serving":50,"alt":""}, + {"name":"Hạt điều","group":"dau-hat","gi":22,"carbs":30,"serving":50,"alt":""}, + {"name":"Hạnh nhân","group":"dau-hat","gi":15,"carbs":22,"serving":50,"alt":""}, + {"name":"Hạt chia","group":"dau-hat","gi":1,"carbs":42,"serving":30,"alt":""}, + {"name":"Đậu hủ","group":"dau-hat","gi":15,"carbs":2,"serving":150,"alt":""}, + {"name":"Sữa tươi","group":"sua","gi":31,"carbs":5,"serving":250,"alt":""}, + {"name":"Sữa đặc","group":"sua","gi":61,"carbs":55,"serving":30,"alt":"Sữa tươi"}, + {"name":"Sữa đậu nành","group":"sua","gi":34,"carbs":6,"serving":250,"alt":""}, + {"name":"Sữa chua","group":"sua","gi":36,"carbs":12,"serving":200,"alt":""}, + {"name":"Sữa hạnh nhân","group":"sua","gi":25,"carbs":1,"serving":250,"alt":""}, + {"name":"Phô mai","group":"sua","gi":0,"carbs":1,"serving":30,"alt":""}, + {"name":"Nước ngọt (Coca)","group":"do-uong","gi":63,"carbs":39,"serving":330,"alt":"Trà xanh"}, + {"name":"Nước cam ép","group":"do-uong","gi":50,"carbs":10,"serving":250,"alt":"Cam nguyên quả"}, + {"name":"Trà xanh","group":"do-uong","gi":0,"carbs":0,"serving":250,"alt":""}, + {"name":"Cà phê đen","group":"do-uong","gi":0,"carbs":0,"serving":250,"alt":""}, + {"name":"Nước mía","group":"do-uong","gi":43,"carbs":13,"serving":250,"alt":"Trà xanh"}, + {"name":"Bia","group":"do-uong","gi":66,"carbs":5,"serving":330,"alt":"Trà xanh"}, + {"name":"Trà sữa","group":"do-uong","gi":53,"carbs":34,"serving":400,"alt":"Trà xanh"}, + {"name":"Nước dừa","group":"do-uong","gi":55,"carbs":4,"serving":250,"alt":""}, + {"name":"Sinh tố bơ","group":"do-uong","gi":25,"carbs":15,"serving":300,"alt":""}, + {"name":"Đường trắng","group":"gia-vi","gi":65,"carbs":100,"serving":10,"alt":"Đường dừa"}, + {"name":"Đường dừa","group":"gia-vi","gi":35,"carbs":100,"serving":10,"alt":""}, + {"name":"Mật ong","group":"gia-vi","gi":58,"carbs":82,"serving":20,"alt":""}, + {"name":"Nước mắm","group":"gia-vi","gi":0,"carbs":0,"serving":15,"alt":""}, + {"name":"Tương ớt","group":"gia-vi","gi":35,"carbs":29,"serving":15,"alt":""}, + {"name":"Bánh ngọt","group":"banh-keo","gi":67,"carbs":50,"serving":80,"alt":"Hoa quả tươi"}, + {"name":"Kẹo dẻo","group":"banh-keo","gi":78,"carbs":75,"serving":30,"alt":"Trái cây sấy"}, + {"name":"Socola đen 70%","group":"banh-keo","gi":23,"carbs":46,"serving":30,"alt":""}, + {"name":"Bánh quy","group":"banh-keo","gi":69,"carbs":64,"serving":50,"alt":"Socola đen 70%"}, + {"name":"Kem","group":"banh-keo","gi":51,"carbs":24,"serving":100,"alt":"Sữa chua"}, + {"name":"Bánh flan","group":"banh-keo","gi":43,"carbs":28,"serving":100,"alt":""}, + {"name":"Chè đậu xanh","group":"banh-keo","gi":42,"carbs":22,"serving":200,"alt":""}, + {"name":"Bò","group":"thit-ca","gi":0,"carbs":0,"serving":100,"alt":""}, + {"name":"Gà","group":"thit-ca","gi":0,"carbs":0,"serving":100,"alt":""}, + {"name":"Heo","group":"thit-ca","gi":0,"carbs":0,"serving":100,"alt":""}, + {"name":"Cá hồi","group":"thit-ca","gi":0,"carbs":0,"serving":100,"alt":""}, + {"name":"Tôm","group":"thit-ca","gi":0,"carbs":0,"serving":100,"alt":""}, + {"name":"Trứng gà","group":"thit-ca","gi":0,"carbs":1,"serving":50,"alt":""}, + {"name":"Cá ngừ","group":"thit-ca","gi":0,"carbs":0,"serving":100,"alt":""}, + {"name":"Mực","group":"thit-ca","gi":0,"carbs":1,"serving":100,"alt":""} +] diff --git a/src/views/glycemic-index/index.vue b/src/views/glycemic-index/index.vue new file mode 100644 index 00000000..a5a9a4f8 --- /dev/null +++ b/src/views/glycemic-index/index.vue @@ -0,0 +1,503 @@ + + + diff --git a/src/views/glycemic-index/meta.ts b/src/views/glycemic-index/meta.ts new file mode 100644 index 00000000..2464654e --- /dev/null +++ b/src/views/glycemic-index/meta.ts @@ -0,0 +1,12 @@ +import type { PageMeta } from '@/types/page' + +const meta: PageMeta = { + name: 'Chỉ Số Đường Huyết', + description: + 'Tra cứu chỉ số đường huyết (GI) thực phẩm — so sánh, tính Glycemic Load và gợi ý thay thế lành mạnh', + author: 'nmdung.dev', + facebook: 'https://www.facebook.com/nmdung.dev', + category: 'health', +} + +export default meta diff --git a/src/views/glycemic-index/types.ts b/src/views/glycemic-index/types.ts new file mode 100644 index 00000000..d207598b --- /dev/null +++ b/src/views/glycemic-index/types.ts @@ -0,0 +1,73 @@ +export interface FoodItem { + name: string + group: FoodGroup + gi: number + carbs: number // per serving + serving: number // gram + alt: string // alternative food name +} + +export type FoodGroup = + | 'tinh-bot' + | 'trai-cay' + | 'rau-cu' + | 'dau-hat' + | 'sua' + | 'do-uong' + | 'gia-vi' + | 'banh-keo' + | 'thit-ca' + +export interface FoodGroupInfo { + key: FoodGroup + label: string + icon: string +} + +export const FOOD_GROUPS: FoodGroupInfo[] = [ + { key: 'tinh-bot', label: 'Tinh bột', icon: 'lucide:wheat' }, + { key: 'trai-cay', label: 'Trái cây', icon: 'lucide:apple' }, + { key: 'rau-cu', label: 'Rau củ', icon: 'lucide:carrot' }, + { key: 'dau-hat', label: 'Đậu & Hạt', icon: 'lucide:bean' }, + { key: 'sua', label: 'Sữa', icon: 'lucide:milk' }, + { key: 'do-uong', label: 'Đồ uống', icon: 'lucide:cup-soda' }, + { key: 'gia-vi', label: 'Gia vị', icon: 'lucide:flame' }, + { key: 'banh-keo', label: 'Bánh kẹo', icon: 'lucide:cake-slice' }, + { key: 'thit-ca', label: 'Thịt & Cá', icon: 'lucide:drumstick' }, +] + +export type GILevel = 'low' | 'medium' | 'high' + +export function getGILevel(gi: number): GILevel { + if (gi <= 55) return 'low' + if (gi <= 69) return 'medium' + return 'high' +} + +export function getGIColor(gi: number): string { + if (gi <= 55) return '#22c55e' + if (gi <= 69) return '#FFB830' + return '#FF6B4A' +} + +export function getGILabel(gi: number): string { + if (gi <= 55) return 'Thấp' + if (gi <= 69) return 'Trung bình' + return 'Cao' +} + +export function calcGL(gi: number, carbsPerServing: number): number { + return Math.round((gi * carbsPerServing) / 100) +} + +export function getGLLabel(gl: number): string { + if (gl <= 10) return 'Thấp' + if (gl <= 19) return 'Trung bình' + return 'Cao' +} + +export function getGLColor(gl: number): string { + if (gl <= 10) return '#22c55e' + if (gl <= 19) return '#FFB830' + return '#FF6B4A' +}