import { Component, OnInit } from '@angular/core';
import { IonHeader, IonToolbar, IonTitle, IonContent } from '@ionic/angular/standalone';
import { IonTextarea, IonButton,IonInput } from "@ionic/angular/standalone";
import { DalleOptions, ImagineWork, FmodeChatCompletion } from 'fmode-ng';

@Component({
  selector: 'app-poem-picture',
  templateUrl: './poem-picture.component.html',
  styleUrls: ['./poem-picture.component.scss'],
  standalone: true,
  imports: [
    IonHeader, IonToolbar, IonTitle, IonContent, 
    IonButton,
    IonInput,
    IonTextarea
  ],
})

export class PoemPictureComponent  implements OnInit {
  /**
   * 用户输入的文本
   */
  userPrompt:string = ""
  promptInput(ev:any){
    console.log(ev.detail.value)
    if (ev.detail.value.length > 0){
      this.userPrompt = ev.detail.value;
    }
  }

  imagineWork:ImagineWork
  images:Array<string> = []
  constructor(
  ){
    // 示例任务，自己生成图片后请存储新的ID 
    this.imagineWork = new ImagineWork("");
    this.imagineWork.fetchTask().then(work=>{
      if(work){
        this.imagineWork.id = work.id
      }
      this.images = this.imagineWork?.images || '../../assets/image/头像示例.png';
    })
  }

  PictureDescResult:string = `` // 画面描述结果
  async createImage(){
    this.imagineWork = new ImagineWork();
    if (this.userPrompt.length > 0){
    // 文本生成
    let PromptTemplate = `您是一名专业的美术画家，擅长画各类型头像图，请您根据下面提供的需求内容，将其描述的画面、场景、人物、物品等用最简短的语言表达，直接写出画面，并且描述的画风为主
    需求如下：
    ${this.userPrompt}
    `
    let completion = new FmodeChatCompletion([
      {role:"system",content:""},
      {role:"user",content:PromptTemplate}
    ])
    completion.sendCompletion().subscribe((message:any)=>{
      // 打印消息体
      console.log(message.content)
      // 赋值消息内容给组件内属性
      this.PictureDescResult = message.content
      if(message?.complete){ // 判断message为完成状态，则设置isComplete为完成
        // 图片生成
        let PicturePrompt = `${this.PictureDescResult}\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");
          }
      })
      }
    })
  }
  else{
    this.userPrompt = "请提供您理想头像的组成内容，我将根据其意境为您创作一幅画面的简短描述。"
  }
    
  }
  ngOnInit() {}

}
