import { Component, OnInit, OnDestroy } from '@angular/core';
import { CommonModule } from '@angular/common';
import {
  IonHeader, IonToolbar, IonTitle, IonContent, IonSearchbar, IonIcon,
  IonTabButton, IonTabs, IonTabBar, IonLabel, IonNav, IonImg, IonSegmentView,
  IonSegment, IonSegmentButton, IonSegmentContent, IonThumbnail, IonButton, IonRippleEffect,
  IonBackButton, ModalController
} from '@ionic/angular/standalone';
import { ExploreContainerComponent } from '../explore-container/explore-container.component';
import { Router } from '@angular/router';
import { CloudUser } from 'src/lib/ncloud';
import { openUserLoginModal } from 'src/lib/user/model-user-login/model-user-login.component';
import { AlertController } from '@ionic/angular';

import { CategoryModalComponent } from 'src/app/category-modal/category-modal.component';

interface Slide {
  image: string;
  alt: string;
}

@Component({
  selector: 'app-tab1',
  templateUrl: 'tab1.page.html',
  styleUrls: ['tab1.page.scss'],
  standalone: true,
  imports: [
    CommonModule,
    IonHeader, IonToolbar, IonTitle, IonContent, ExploreContainerComponent,
    IonSearchbar, IonIcon, IonTabButton, IonTabs, IonTabBar, IonLabel, IonNav, IonImg,
    IonSegmentView, IonSegment, IonSegmentButton, IonSegmentContent, IonThumbnail, IonButton,
    IonRippleEffect, IonBackButton]
})
export class Tab1Page implements OnInit, OnDestroy {
  slides: Slide[] = [
    { image: 'assets/img/lunbo4.png', alt: '轮播图1' },
    { image: 'assets/img/lunbo1.png', alt: '轮播图2' },
    { image: 'assets/img/lunbo2.png', alt: '轮播图3' },
    { image: 'assets/img/lunbo3.png', alt: '轮播图4' },
    { image: 'assets/img/study.png', alt: '轮播图5' }
  ];

  currentIndex = 0;
  translateX = 0;
  private autoPlayInterval: any;
  private touchStartX = 0;
  private touchDeltaX = 0;
  private slideWidth = 0;

  // 添加分类数据
  categories = [
    {
      title: '艺术创作',
      items: ['绘画', '音乐', '舞蹈', '摄影', '手工艺', '书法', '设计']
    },
    {
      title: '运动健身',
      items: ['瑜伽', '健身', '游泳', '跑步', '球类运动', '户外运动', '武术']
    },
    {
      title: '文化学习',
      items: ['文学', '历史', '哲学', '外语', '写作', '戏剧', '诗歌']
    },
    {
      title: '科技创新',
      items: ['编程', '人工智能', '机器人', '电子制作', '3D打印', '虚拟现实']
    },
    {
      title: '生活技能',
      items: ['烹饪', '园艺', '美妆', '摄影', '旅行', '茶艺', '插花']
    },
    {
      title: '职业发展',
      items: ['商业', '金融', '管理', '营销', '创业', '职场技能']
    }
  ];

  // 添加控制分类弹窗显示的变量
  isCategoryModalOpen = false;

  constructor(
    private router: Router,
    private modalCtrl: ModalController,
    private alertCtrl: AlertController  // 注入 AlertController
  ) { }

  ngOnInit() {
    this.startAutoPlay();
    // 获取轮播图容器宽度
    setTimeout(() => {
      const container = document.querySelector('.banner-container');
      if (container) {
        this.slideWidth = container.clientWidth;
      }
    });
  }

  ngOnDestroy() {
    this.stopAutoPlay();
  }

  private startAutoPlay() {
    this.stopAutoPlay();
    this.autoPlayInterval = setInterval(() => {
      this.nextSlide();
    }, 3000); // 每3秒切换一次
  }

  private stopAutoPlay() {
    if (this.autoPlayInterval) {
      clearInterval(this.autoPlayInterval);
    }
  }

  nextSlide() {
    this.currentIndex = (this.currentIndex + 1) % this.slides.length;
    this.updateTranslateX();
  }

  prevSlide() {
    this.currentIndex = (this.currentIndex - 1 + this.slides.length) % this.slides.length;
    this.updateTranslateX();
  }

  goToSlide(index: number) {
    this.currentIndex = index;
    this.updateTranslateX();
  }

  private updateTranslateX() {
    this.translateX = -this.currentIndex * this.slideWidth;
  }

  // 触摸事件处理
  onTouchStart(event: TouchEvent) {
    this.stopAutoPlay();
    this.touchStartX = event.touches[0].clientX;
    this.touchDeltaX = 0;
  }

  onTouchMove(event: TouchEvent) {
    this.touchDeltaX = event.touches[0].clientX - this.touchStartX;
    const newTranslateX = -this.currentIndex * this.slideWidth + this.touchDeltaX;
    this.translateX = newTranslateX;
  }

  onTouchEnd() {
    const threshold = this.slideWidth / 3;
    if (Math.abs(this.touchDeltaX) > threshold) {
      if (this.touchDeltaX > 0) {
        this.prevSlide();
      } else {
        this.nextSlide();
      }
    } else {
      this.updateTranslateX();
    }
    this.startAutoPlay();
  }

  async checkLoginAndNavigate(path: string) {
    const currentUser = new CloudUser();
    if (!currentUser.id) {
      console.log("用户ID不存在");

      // 使用 AlertController 来创建和显示弹窗
      const alert = await this.alertCtrl.create({
        header: '需要登录',
        message: '请先登录后再使用此功能',
        buttons: [
          {
            text: '取消',
            role: 'cancel'
          },
          {
            text: '去登录',
            handler: async () => {
              const user = await openUserLoginModal(this.modalCtrl);
              if (user) {
                this.router.navigate([path]);
              }
            }
          }
        ]
      });

      console.log("显示弹窗");
      await alert.present();  // 弹窗显示
    } else {
      this.router.navigate([path]);
    }
  }

  goToInterestTest() {
    this.checkLoginAndNavigate('/tabs/interest-test');
  }

  goToViewAll() {
    this.router.navigate(['/tabs/view-all'])
  }

  goToInterestPicture() {
    this.router.navigate(['/tabs/interest-picture'])
  }

  goToInterestSearch() {
    this.checkLoginAndNavigate('/tabs/interest-search');
  }
  goTomailbox() {
    this.router.navigate(['/tabs/mailbox'])
  }
  goToAttendance() {
    this.router.navigate(['/tabs/attendance'])
  }
  goTodrawing() {
    this.router.navigate(['/tabs/drawing'])
  }

  // 添加打开分类弹窗的方法
  async openCategoryModal() {
    const modal = await this.modalCtrl.create({
      component: CategoryModalComponent,
      componentProps: {
        categories: this.categories
      },
      breakpoints: [0, 0.9],
      initialBreakpoint: 0.9,
      cssClass: 'category-modal'
    });

    await modal.present();
  }

}
