import { ChangeDetectorRef, Component } from '@angular/core';
import { IonHeader, IonToolbar, IonTitle, IonContent, IonItem, IonList, IonSelect, IonSelectOption, IonLabel, IonButton, IonTextarea, AlertController, IonSegment, IonSegmentButton, ModalController, IonAlert, IonButtons } from '@ionic/angular/standalone';
import { ExploreContainerComponent } from '../explore-container/explore-container.component';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms'; // 导入 FormsModule
/** 引用：从fmode-ng库引用FmodeChatCompletion类 */
import { ChatPanelOptions, FmChatModalInput, FmodeChat, FmodeChatCompletion, FmodeChatMessage, MarkdownPreviewModule, openChatPanelModal } from 'fmode-ng';
import { Router } from '@angular/router'; // 导入 Router
import { DalleOptions, ImagineWork } from 'fmode-ng';
import { PageAiChatComponent } from '../page-ai-chat/page-ai-chat.component';
//import { PageEvaluateComponent } from '../page-evaluate/page-evaluate.component';

import { CloudUser } from 'src/lib/ncloud';
import { openUserLoginModal } from 'src/lib/user/modal-user-login/modal-user-login.component';



@Component({
  selector: 'app-tab2',
  templateUrl: 'tab2.page.html',
  styleUrls: ['tab2.page.scss'],
  standalone: true,
  imports: [IonHeader, IonToolbar, IonTitle, IonContent, ExploreContainerComponent,IonItem,IonList,IonSelect,IonSelectOption,IonButton,CommonModule,IonTextarea,FormsModule,
    MarkdownPreviewModule,IonSegment,IonSegmentButton,IonLabel,// ASR语音输入模块
    FmChatModalInput,PageAiChatComponent,IonAlert,IonButtons],
})
export class Tab2Page {
  placeholderText: string = "职业：非必填\n喜好：非必填\n运动目标：非必填\n运动类型：非必填\n其他需求：";
  selectedSegment: string = 'ai-outfit'; // 默认选中的导航项
  selectedGender: string = ''; // 默认性别

 

  // 新增变量
  height: number | null = null; // 身高
  weight: number | null = null; // 体重
  age: number | null = null; // 年龄
  comments: string = ''; // 用户评论
    // 属性：组件内用于展示消息内容的变量
    responseMsg:any = ""
    // 用户输入提示词
    userPrompt:string = ''
    isComplete:boolean = false; // 定义完成状态属性，用来标记是否补全完成
    isGenerating: boolean = false; // 按钮状态
    imagineWork:ImagineWork|undefined
    countdownTimer: number = 0; // 计时器初始值
    timerInterval: any; // 用于存储定时器的引用
  images:Array<string> = []
    constructor(private alertController: AlertController,private modalCtrl:ModalController,
      private router:Router, private cdRef:ChangeDetectorRef) { }

  selectSegment(segment: string) {
    this.selectedSegment = segment; // 更新选中的导航项
  }

  isActivated(segment: string): boolean {
    return this.selectedSegment === segment; // 判断当前导航项是否被激活
  }

//AI穿搭
  selectGender(gender: string) {
    this.selectedGender = gender; // 更新选中的性别
  }
  async sendMessage(){
    //如果未登录弹出登录框
    let currentUser=new CloudUser()
    if(!currentUser.id){
      let user=await openUserLoginModal(this.modalCtrl)
      if(!user?.id) return; // 未登录则返回


    }

    // 如果正在生成，弹出警告框并返回
    if (this.isGenerating) {
      const alert = await this.alertController.create({
        header: '请等待AI回答完毕后再点击！',
        buttons: ['确定']
      });
      await alert.present();
      return; // 阻止继续执行
    }
    this.isComplete = false; // 重置完成状态
    this.isGenerating = true; // 开始生成时设置为 true
    this.countdownTimer = 0; // 重置计时器
    this.imagineWork=undefined;
    this.images = []; // 清空原来的图片数组

    this.userPrompt =`有一位${this.selectedGender}用户，该用户${this.age}岁，身高${this.height}cm，体重${this.weight}kg，该用户的补充说明是
    ${this.comments}，请你作为一名专业的运动教练并严格按照给定的例子格式，为用户给出适合的个性化运动建议,再给出具体运动方案时里面的1.目标设定 2. 运动类型选择 3. 训练频率 4. 训练强度 5. 训练时间 6. 训练顺序与分配 7. 休息与恢复 8. 营养与水分 9. 心理调节与动机 10. 安全与预防伤害 11. 调整与反馈 12. 个性化与灵活性一定要唯一，不要出现与健康无关的话题。
    例子：嘿，兄弟，我是Neon。想要变强是吗！这个我最擅长了，让我帮帮你。话不多说告诉我你的实力如何，接下来就是特训你可要听好了！

**一、计算BMI值**

BMI是衡量身体状况的重要指标，计算方法是体重（公斤）除以身高（米）的平方。假设你的体重是60KG，身高是175CM，那么计算结果为：BMI = 体重 ÷ 身高^² = 60KG ÷ (1.75^2)。你的BMI值挺正常的，还不错嘛！要继续保持良好的身体状态！接下来，我们来根据你的目标制定特训计划，让你在运动的路上更加顺利！💪

好的，下面是更加详细的个性化运动方案，包括每个部分的具体内容：

**个性化运动建议**

**一、目标设定**
- **短期目标**（1个月）：提高心肺耐力，能够连续慢跑30分钟；增加力量，能够完成10个标准俯卧撑和15个深蹲。
- **长期目标**（3个月）：体重减轻5公斤，增肌，提升整体体能水平，能够完成更高强度的训练。

**二、运动类型选择**
- **有氧运动**：慢跑、游泳、骑自行车、跳绳等，选择你喜欢的有氧运动方式，以提高心肺功能。
- **力量训练**：哑铃训练（卧推、深蹲、划船）、自重训练（俯卧撑、引体向上、平板支撑），以增强肌肉力量。

**三、训练频率**
- **每周5天训练**：
  - 3天力量训练（如周一、周三、周五）
  - 2天有氧运动（如周二、周四）
  - 周末休息或进行轻松的活动（如散步、瑜伽）

**四、训练强度**
- **力量训练**：采用中等强度，选择能完成8-12次的重量，保持在70%-80%最大力量。
- **有氧运动**：保持在中等强度，心率达到最大心率的60%-75%，可以通过谈话测试来判断。

**五、训练时间**
- **每次训练约60分钟**：
  - 热身：5-10分钟（动态拉伸或慢跑）
  - 力量训练：30-35分钟
  - 有氧运动：20分钟
  - 冷却与拉伸：5-10分钟

**六、训练顺序与分配**
- **力量训练顺序**：
  1. 热身（5-10分钟）
  2. 哑铃卧推：3组×8-12次
  3. 深蹲：3组×10-15次
  4. 划船：3组×8-12次
  5. 俯卧撑：3组×尽可能多的次数
  6. 平板支撑：3组×30-60秒
  7. 冷却与拉伸（5-10分钟）

- **有氧运动顺序**：
  - 慢跑或游泳：持续20-30分钟，保持中等强度。

**七、休息与恢复**
- **力量训练后**：确保每个肌肉群有48小时的恢复时间。
- **有氧运动后**：可以进行轻松活动，如散步，帮助身体恢复。
- **每周至少休息1-2天**，避免过度训练。

**八、营养与水分**
- **训练前**：1小时吃一小碗燕麦粥或香蕉，提供能量。
- **训练后**：补充高蛋白食物，如鸡胸肉、蛋白质奶昔，帮助肌肉恢复。
- **水分**：每天保持至少2升水，训练期间每20分钟补水150-250毫升。

**九、心理调节与动机**
- **设定小目标**：每周记录进展，设定本周的训练目标（如增加重量或次数）。
- **与朋友一起训练**：增加乐趣和动力，互相鼓励。

**十、安全与预防伤害**
- **热身**：每次训练前务必进行动态拉伸，准备身体。
- **技术**：确保使用正确的姿势和技术，必要时请教专业教练。
- **护具**：如有需要，佩戴护膝、护腕等保护装备。

**十一、调整与反馈**
- **每4周评估一次**：记录体重、力量和耐力的变化，分析训练效果。
- **根据反馈调整计划**：如果目标未达成，适当增加训练强度或频率。

**十二、个性化与灵活性**
- **根据身体状况调整**：如果感到疲惫，可以减少训练强度或增加休息日。
- **适应生活变化**：如有特殊情况，灵活调整训练计划，确保持续进步。

---

希望这个详细的运动方案能够帮助你实现你的健身目标！如果你有任何问题或需要进一步的调整，随时告诉我！
    `
    console.log("开始生成")
    let completion = new FmodeChatCompletion([
      {role:"system",content:""},
      {role:"user",content:this.userPrompt}
    ])
    completion.sendCompletion().subscribe((message: any) => {
      // 打印消息体
      console.log(message.content);
      // 赋值消息内容给组件内属性
      this.responseMsg = message.content;
      if (message?.complete) { // 判断message为完成状态，则设置isComplete为完成
        
          this.isComplete = true;
          
           // 图片生成
        this.startTimer(); // 启动计时器
        this.imagineWork = new ImagineWork();
        let PicturePrompt = `描述：${this.responseMsg}\n请你作为一名专业的运动教练，根据描述中的方案一描述严格生成对应的训练计划，格式要一致。`
        let options:DalleOptions = {prompt:PicturePrompt}
        this.imagineWork?.draw(options).subscribe(work=>{
            console.log("imagineWork",work?.toJSON())
            console.log("images",work?.get("images"))
            if(work?.get("images")?.length){
              this.images = work?.get("images");
              this.stopTimer(); // 停止计时器
              this.isGenerating = false; // 生成完成后设置为 false
            }
        })
      }
  });

}

// 启动计时器
startTimer() {
  this.timerInterval = setInterval(() => {
      this.countdownTimer++; // 每秒增加计时
  }, 1000);
}

// 停止计时器
stopTimer() {
  clearInterval(this.timerInterval); // 清除定时器
}



//测试
goBmipage() {
  this.router.navigate(['/tabs/bmi']); // 跳转到测试BMI页面
}





alertButtons = ['退出'];





}