import { Component, OnInit } from '@angular/core';
// 引用FmodeChatCompletion类
import { NavController } from '@ionic/angular';
import { TestRxjsChatCompletion, TestRxjsChatMessage } from '../agent-shige/class-rxjs-chat-completion';
import Parse from "parse";

@Component({
  selector: 'app-pocircle',
  templateUrl: './pocircle.page.html',
  styleUrls: ['./pocircle.page.scss'],
})
export class PocirclePage implements OnInit {
  // segment: string = 'discover'; // 默认显示发现板块


  // 假设这是用户发布的内容数组  
  userPosts: any[] = [
    { id: 1, username: '用户A', content: '这是一段诗的创作内容' },
    { id: 2, username: '用户B', content: '这是另一段创作' },
    // ... 可以添加更多用户内容  
  ];

  // 假设这是用户关注的对象数组  
  userFollows: any[] = [
    { id: 1, username: '关注者A', relatedContent: '相关创作A' },
    { id: 2, username: '关注者B', relatedContent: '相关创作B' },
    // ... 可以添加更多关注对象  
  ];
  selectedSegment: string = 'discover'; // 初始值  

  // 定义 segmentChanged 方法  
  segmentChanged(event: CustomEvent) {
    // event.detail 通常包含新选中的段的值  
    this.selectedSegment = event.detail.value;
    // 这里可以添加更多的逻辑，比如根据选中的段来过滤数据或执行其他操作  
  }


  // 初始化图标名称和颜色  
  favoriteIconName = 'heart'; // 默认图标名称  
  favoriteColor = 'white'; // 默认颜色  

  // 跟踪图标是否激活  
  isFavoriteActive = false;
  // 切换图标颜色的函数  
  toggleIconColor(iconName: string) {
    // 这里可以添加更多的逻辑来处理不同的图标  
    if (iconName === 'favorite') {
      this.isFavoriteActive = !this.isFavoriteActive;
      this.favoriteColor = this.isFavoriteActive ? 'red' : 'white';
    }
  }

  //搜索下拉框内容
  results: Parse.Object[] = []
  segment = 'tang';
  search(event: any) {
    console.log('Searching for:', event.detail.value);
    if (event?.detail?.value) {
      this.loadShigeList(event?.detail?.value)
    }
  }
  filteredAuthors: any[] = [];

  async loadShigeList(search: string) {
    let query = new Parse.Query("Shige");
    query.select("title");
    query.contains("title", search);
    query.limit(5);
    this.results = await query.find();
  }

  constructor(private navController: NavController) { }
  goToDetailPage(item: Parse.Object) {
    this.results = []
    this.navController.navigateForward('/detail/' + item.id);
  }

  //ai生成诗
  messageList: Array<TestRxjsChatMessage> = []
  shigeOptions: any = {
    content: "",
    type: "不限制",
    theme: "不限制",
  }
  themeList = ['羁旅思乡诗', '爱情闺怨诗', '咏史怀古诗', '咏物言志诗', '送别怀人诗', '边塞征战诗', '山水田园诗']


  ngOnInit() {
  }
  sendMessage() {
    /*
4. 风格：选择风格，例如“豪放”或“婉约”。
5. 情感：描述诗中应表达的情感，例如“喜悦”、“忧愁”、“思念”等。

    */
    let GuhiPromoptTemplate = `
你是一位中国的古代诗人，擅长文言文，和现代词汇转古词语经验和技巧，并且精通各类主题、格律的诗词。请根据以下要求创作一首诗：
1. 主题：${this.shigeOptions?.theme}。
2. 格律：${this.shigeOptions?.type}。
3. 关键词：${this.shigeOptions?.keywords}。
4. 创意灵感：${this.shigeOptions?.content}。
请根据以上要求创作一首古代诗词，并且格式要严格，有必要的情况下，可以牺牲一些关键词原意。

请开始创作，并按照以下格式返回
题目:
内容:
简介:
    `
    this.messageList.push({
      role: "user",
      content: GuhiPromoptTemplate
    })

    // messageList在competion内部，已经赋予了完整的message
    // 下方暴露出来的可订阅内容，主要是用于关键字过滤，或者其他开发逻辑的续写
    let resultStr = ""
    let testChatCompletion = new TestRxjsChatCompletion(this.messageList);
    testChatCompletion.createCompletionByStream({ model: "fmode-3.6-16k" }).subscribe({
      next: ({ content, cumulativeContent, done }) => {
        resultStr = cumulativeContent
        console.log(`Content: ${content}`);
        console.log(`Cumulative Content: ${cumulativeContent}`);
        if (done) {
          console.log('Stream completed');
        }
      },
      error: err => console.error(err),
      complete: () => {
        // 诗歌创建完成：正则表达式，匹配诗歌json内容
        console.log("原文", resultStr)

        let pattern = /题目:\s*(.*?)\s*内容:\s*(.*?)\s*简介:\s*(.*)/;
        let match = resultStr.match(pattern);

        if (match) {
          let gushi: any = {}
          gushi.title = match[1];
          gushi.content = match[2];
          gushi.intro = match[3];
          gushi.source = "AI创作";
          console.log(`题目: ${gushi.title}`);
          console.log(`内容: ${gushi.content}`);
          console.log(`简介: ${gushi.intro}`);
          console.log(gushi);
          let Shige = Parse.Object.extend("Shige");
          let sg = new Shige();
          sg.set(gushi);
          sg.save();
        } else {
          console.log("未能匹配到任何内容");
        }
      }
    });

  }
















}