import { Component, OnInit } from '@angular/core'; import { IonBackButton, IonButtons, IonContent, IonHeader, IonIcon, IonItem, IonItemOption, IonItemOptions, IonItemSliding, IonLabel, IonList, IonThumbnail, IonTitle, IonToolbar, IonButton } from '@ionic/angular/standalone'; import { addIcons } from 'ionicons'; import { heart, heartOutline, trash, timeOutline, refresh } from 'ionicons/icons'; import { CloudObject, CloudQuery } from 'src/lib/ncloud'; import { NavController } from '@ionic/angular'; import { Router } from '@angular/router'; /** * 收藏项接口定义 * @interface CollectionItem * @description 定义收藏项的数据结构 */ interface CollectionItem { /** 收藏项ID */ id: number; /** 收藏项名称 */ name: string; /** 收藏项图片URL */ image: string; /** 收藏时间(可选) */ time?: Date; } /** * 收藏列表页面组件 * @Component 装饰器定义组件元数据 * @description 显示和管理用户收藏的食谱列表 */ @Component({ selector: 'app-page-collections', templateUrl: './page-collections.page.html', styleUrls: ['./page-collections.page.scss'], standalone: false }) export class PageCollectionsPage implements OnInit { /** * 收藏列表数据 * @type {CollectionItem[]} */ collections: CollectionItem[] = []; /** * 构造函数 * @param {NavController} navCtrl Ionic导航控制器 * @param {Router} router Angular路由服务 * * @description * 初始化时添加所需图标 */ constructor(private navCtrl: NavController, private router: Router) { addIcons({ heart, heartOutline, trash }); } /** * 组件初始化生命周期钩子 * @returns {void} */ ngOnInit(): void { this.loadRecipeFavoriteList(); } /** * 食谱收藏列表 * @type {CloudObject[]} */ recipeFavoriteList: CloudObject[] = []; /** * 食谱数据列表 * @type {any[]} */ recipeDataList: any[] = []; /** * 加载用户收藏的食谱列表 * @async * @returns {Promise} * * @description * 从云端查询用户收藏的食谱,并关联查询完整的食谱数据 */ async loadRecipeFavoriteList(): Promise { const query = new CloudQuery("RecipeFavorite"); query.include("recipe"); // 关联查询Recipe表 const favorites = await query.find(); console.log('favorites', favorites); this.recipeFavoriteList = favorites.map(fav => fav.get("recipe")); console.log("Recipe数据列表:", this.recipeFavoriteList); } /** * 移除收藏项 * @param {number} id 要移除的收藏项ID * @returns {void} * * @description * 从收藏列表中过滤掉指定ID的项 */ removeCollection(id: number): void { this.collections = this.collections.filter(item => item.id !== id); } /** * 导航到收藏详情页面 * @param {any} recipeId 食谱ID * @returns {void} */ goToDetail(recipeId: any): void { this.navCtrl.navigateForward(`/tabs/tab3/page-collections/page-collections-detail/${recipeId}`); console.log('Navigating to page-collections-detail'); } // 以下是预设数据(已注释) /** * @ignore * 加载模拟收藏数据 * @returns {void} */ /* loadCollections(): void { this.collections = [ { id: 1, name: '意大利肉酱面', image: 'https://images.unsplash.com/photo-1555949258-eb67b1ef0ceb', time: new Date('2023-05-15') }, // ...其他模拟数据 ]; } */ }