import { Component } from '@angular/core';
import { Router } from '@angular/router';
import { IonHeader, IonToolbar, IonTitle, IonContent, ModalController, IonButton } from '@ionic/angular/standalone';
import { ExploreContainerComponent } from '../explore-container/explore-container.component';
import { ChatPanelOptions, FmChatModalInput, FmodeChat, FmodeChatMessage, openChatPanelModal } from 'fmode-ng';
// import { ModalAudioMessageComponent } from 'fmode-ng/lib/aigc/chat/chat-modal-input/modal-audio-message/modal-audio-message.component';
import Parse from "parse";
import { 
  IonCard,
  IonCardHeader,
  IonCardTitle,
  IonCardSubtitle,
  IonCardContent,
  IonGrid,
  IonRow,
  IonCol,
  IonIcon
} from '@ionic/angular/standalone';
@Component({
  selector: 'app-tab2',
  templateUrl: 'tab2.page.html',
  styleUrls: ['tab2.page.scss'],
  standalone: true,
  imports: [
    IonHeader, IonToolbar, IonTitle, IonContent, ExploreContainerComponent,
    IonButton,
    IonCard,
    IonCardHeader,
    IonCardTitle,
    IonCardSubtitle,
    IonCardContent,
    IonGrid,
    IonRow,
    IonCol,
    IonIcon,
    // ASR语音输入模块
    FmChatModalInput,
    // ModalAudioMessageComponent
  ]
})
export class Tab2Page {

  constructor(
    private modalCtrl:ModalController,
    private router:Router,
    ) {

  }
  title:string = "123"
  /** 示例：问诊ChatPanel面板 */
  openInquiry(){
    localStorage.setItem("company","E4KpGvTEto")
    let options:ChatPanelOptions = {
      roleId:"2DXJkRsjXK",
      onChatInit:(chat:FmodeChat)=>{
        console.log("onChatInit");
        console.log("预设角色",chat.role);
        // 角色名称
        chat.role.set("name","晓晓");
        // 角色称号
        chat.role.set("title","全科医生");
        // 角色描述
        chat.role.set("desc","一名亲切和蔼的门诊全科主任医生，晓晓，年龄36岁");
        // 角色标签
        chat.role.set("tags",["全科","门诊"]);
        // 角色头像
        chat.role.set("avatar","https://nova-cloud.obs.cn-south-1.myhuaweicloud.com/storage/aigc/imagine/Q4Zif7fTbK-0.png")
        // 角色提示词
        chat.role.set("prompt",`
# 角色设定
您是一名亲切和蔼的专业的全科医生，晓晓，年龄36岁，需要完成一次完整的门诊服务。

# 对话环节
0.导诊（根据用户基本情况，引导挂号合适的科室）
1.预设的问询方式（感冒问呼吸、肚子疼叩诊）
- 打招呼，以用户自述为主
- 当信息充足时候，确认用户症状对应的科室，并进入下一个环节
2.拓展的问询细节
例如：用户反映呼吸不畅，拓展出：是否咳嗽；是否感觉痛或者痒等其他需要的问题。
- 当问询细节补充完成后进入下一个环节
3.初步的诊断结果，并且同时列出检查检验项目
初步诊断：确定需要有哪些进一步检查
检查检验：获取医学客观数据
- 等待用户提交客观数据，进入下一阶段
4.给出诊断方案并给出处方
- 完成处方时，请在消息结尾附带: [完成]

# 开始话语
当您准备好了，可以以一个医生的身份，向来访的用户打招呼。`);
        // 对话灵感分类
        let promptCates = [
          {
            "img": "https://file-cloud.fmode.cn/UP2cStyjuk/20231211/r1ltv1023812146.png",
            "name": "外科"
          },
          {
            "img": "https://file-cloud.fmode.cn/UP2cStyjuk/20231211/fo81fg034154259.png",
            "name": "内科"
          },
          {
            "img": "https://file-cloud.fmode.cn/UP2cStyjuk/20231211/fc1nqi034201098.png",
            "name": "心理"
          }
        ]
        setTimeout(() => {
          chat.role.set("promptCates",promptCates)
        }, 500);
        // 对话灵感列表
        let promptList = [
          {
            cate:"外科",img:"https://file-cloud.fmode.cn/UP2cStyjuk/20231211/r1ltv1023812146.png",
            messageList:["局部疼痛或肿胀","伤口出血或感染","关节活动受限","体表肿块或结节","外伤后活动障碍","皮肤溃疡不愈合","异物刺入或嵌顿","术后并发症复查","肢体麻木或无力","运动损伤疼痛"]
          },
          {
            cate:"内科",img:"https://file-cloud.fmode.cn/UP2cStyjuk/20231211/fo81fg034154259.png",
            messageList:["反复发热或低热","持续咳嗽咳痰","胸闷气短心悸","慢性腹痛腹泻","头晕头痛乏力","体重骤增或骤减","食欲异常或消化不良","尿频尿急尿痛","睡眠障碍易醒","异常出汗或怕冷"]
          },
          {
            cate:"心理",img:"https://file-cloud.fmode.cn/UP2cStyjuk/20231211/fc1nqi034201098.png",
            messageList:["持续情绪低落","焦虑紧张不安","失眠或睡眠过多","注意力难以集中","社交恐惧回避","强迫思维或行为","记忆减退疑虑","躯体无器质性疼痛","自杀倾向念头","现实感丧失体验"]
          },
        ]
        let ChatPrompt = Parse.Object.extend("ChatPrompt");
        setTimeout(() => {
          chat.promptList = promptList.map(item=>{
            let prompt = new ChatPrompt();
            prompt.set(item);
            prompt.img = item.img;
            return prompt;
          })
        }, 500);

        // 功能按钮区域预设
        chat.leftButtons = [
          { // 提示 当角色配置预设提示词时 显示
           title:"话题灵感", // 按钮标题
           showTitle:true, // 是否显示标题文字
           icon:"color-wand-outline", // 标题icon图标
           onClick:()=>{ // 按钮点击事件
               chat.isPromptModalOpen = true
           },
           show:()=>{ // 按钮显示条件
             return chat?.promptList?.length // 存在话题提示词时显示
           }
         },
         { // 总结 结束并归档本次对话
            title:"门诊归档",
            showTitle:true,
            icon:"archive-outline",
            onClick:()=>{
                // 门诊归档，记录用户门诊咨询，并进行过程评价
                console.log(chat?.chatSession) // 本次会话内容数据
              },
            show:()=>{ 
              return true // 一直显示
            }
        }
      ]

      },
      onMessage:(chat:FmodeChat,message:FmodeChatMessage)=>{
        console.log("onMessage",message)
        let content:any = message?.content
        if(typeof content == "string"){
          if(content?.indexOf("[完成]")>-1){
            console.log("门诊已完成")
          }
        }
      },
      onChatSaved:(chat:FmodeChat)=>{
        // chat?.chatSession?.id 本次会话的 chatId
        console.log("onChatSaved",chat,chat?.chatSession,chat?.chatSession?.id)
      }
    }
    openChatPanelModal(this.modalCtrl,options)
  }

  /**
   * 开始聊天
   */
  openChat(){
    let options:ChatPanelOptions = {
      roleId:"2DXJkRsjXK",
      onChatSaved:(chat:FmodeChat)=>{
        // chat?.chatSession?.id 本次会话的 chatId
        console.log("onChatSaved",chat,chat?.chatSession,chat?.chatSession?.id)
      },
    }
    openChatPanelModal(this.modalCtrl,options)
  }
  /**
   * 恢复聊天
   * @chatId 从onChatSaved生命周期中，获取chat?.chatSession?.id
   */
  restoreChat(chatId:string){
    let options:ChatPanelOptions = {
      roleId:"2DXJkRsjXK",
      chatId:chatId
    }
    openChatPanelModal(this.modalCtrl,options)
  }

  goChat(){
    this.router.navigateByUrl("/chat/session/role/2DXJkRsjXK")
  }


  // audioModalHeightPoint:number = 0.35;
  // async startTalk(){
  //   // 根据手机兼容性，适配组件弹出高度
  //   let height = document.body.clientHeight || 960;
  //   this.audioModalHeightPoint = Number((165/height).toFixed(2));

  //   // 弹出组件
  //   let modal:any
  //   let chat:any
  //   modal = await this.modalCtrl.create({
  //     component:ModalAudioMessageComponent,
  //     componentProps:{
  //       chat:chat,
  //       modal:modal,
  //       onBreakPointSet:()=>{
  //         modal?.setCurrentBreakpoint(this.audioModalHeightPoint)
  //       }
  //     }
  //   })
  //   modal.present();
  // }

}

