<!--
  PowerStation/index.vue
  电站设备管理系统主页面
  使用网格布局展示3D模型视图、数据图表和属性面板
-->
<template>
  <div
    class="w-full h-screen flex flex-col overflow-hidden bg-[#0B1120] font-sans powerstation-scrollbar"
  >
    <!-- ============================================================
         头部导航
         ============================================================ -->
    <HeaderNavigation />

    <!-- ============================================================
         主要内容区域
         ============================================================ -->
    <div class="flex-1 flex justify-start relative min-h-0">
      <!-- 左侧面板：模型结构树 -->
      <ModelTreePanel class="w-[280px] h-full z-50 self-stretch flex-shrink-0" />

      <!-- 右侧面板：主内容区 -->
      <div class="flex-1 transition-all duration-300">
        <div
          class="h-full bg-[#020617] p-2 gap-2 overflow-hidden grid transition-all duration-300 min-h-0"
          :class="[
            maximizedComponent
              ? 'grid-cols-1 grid-rows-1'
              : 'grid-cols-[1fr_30%] grid-rows-[70%_30%]',
          ]"
        >
          <!-- 3D视图 - 左上区域 -->
          <Model3DView
            class="bg-[#0b1120] border border-cyan-500/20 rounded shadow-[0_0_10px_rgba(6,182,212,0.05)] transition-all duration-300 min-h-0"
            :class="[
              maximizedComponent === '3d'
                ? 'col-span-full row-span-full'
                : maximizedComponent
                  ? 'hidden'
                  : 'col-start-1 row-start-1',
            ]"
            :is-maximized="maximizedComponent === '3d'"
            @toggle-maximize="toggleMaximize('3d')"
          />

          <!-- 数据图表 - 左下区域 -->
          <DataChartsSection
            class="bg-[#0b1120] border border-cyan-500/20 rounded shadow-[0_0_10px_rgba(6,182,212,0.05)] overflow-hidden transition-all duration-300 min-h-0"
            :class="[
              maximizedComponent === 'charts'
                ? 'col-span-full row-span-full'
                : maximizedComponent
                  ? 'hidden'
                  : 'col-start-1 row-start-2',
            ]"
            :is-maximized="maximizedComponent === 'charts'"
            @toggle-maximize="toggleMaximize('charts')"
          />

          <!-- 属性面板 - 右侧区域（跨两行） -->
          <ModelPropertiesPanel
            class="bg-[#0b1120] border border-cyan-500/20 rounded shadow-[0_0_10px_rgba(6,182,212,0.05)] overflow-hidden relative transition-all duration-300 border-l border-cyan-500/20"
            :class="[
              maximizedComponent === 'props'
                ? 'col-span-full row-span-full'
                : maximizedComponent
                  ? 'hidden'
                  : 'col-start-2 row-span-2',
            ]"
            :is-maximized="maximizedComponent === 'props'"
            @toggle-maximize="toggleMaximize('props')"
          />
        </div>
      </div>
    </div>
  </div>
</template>

<script setup lang="ts">
/**
 * PowerStation 主页面
 * 电站设备管理系统的核心页面
 * 集成3D视图、数据图表和属性面板
 */
import DataChartsSection from '~/components/PowerStation/DataChartsSection.vue'
import HeaderNavigation from '~/components/PowerStation/HeaderNavigation.vue'
import Model3DView from '~/components/PowerStation/Model3DView.vue'
import ModelPropertiesPanel from '~/components/PowerStation/ModelPropertiesPanel.vue'
import ModelTreePanel from '~/components/PowerStation/ModelTreePanel.vue'

// ============================================================
// 页面配置
// ============================================================

definePageMeta({
  layout: false, // 使用全屏自定义布局
})

// ============================================================
// 状态和引用
// ============================================================

const route = useRoute()
const store = usePowerStationStore()

/** 当前最大化的组件 */
const maximizedComponent = ref<string | null>(null)

// ============================================================
// 方法
// ============================================================

/**
 * 切换组件最大化状态
 * @param component - 组件标识（'3d' | 'charts' | 'props'）
 */
const toggleMaximize = (component: string) => {
  if (maximizedComponent.value === component) {
    maximizedComponent.value = null // 还原
  } else {
    maximizedComponent.value = component // 最大化指定组件
  }
}

// ============================================================
// 路由同步
// ============================================================

// 监听路由变化，确保store与路由参数同步
watch(
  () => route.query.currentNodeId,
  newId => {
    if (newId && typeof newId === 'string') {
      // 只在完整模式下同步
      if (store.loadMode && store.currentNodeId !== newId) {
        console.log('PowerStation页面：同步路由currentNodeId到store:', newId)
        store.currentNodeId = newId
      }
    }
  },
  { immediate: true }
)

// ============================================================
// 生命周期
// ============================================================

onMounted(() => {
  // 保留路由参数检查，供后续扩展使用
  const currentNodeId = route.query.currentNodeId as string
  if (currentNodeId) {
    // 节点选择逻辑由子组件处理
  }
})
</script>

<style>
/* ============================================================
   页面全局样式
   ============================================================ */

body {
  margin: 0;
  overflow: hidden;
}

/* ============================================================
   全局滚动条样式
   ============================================================ */

::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

::-webkit-scrollbar-track {
  background: rgba(15, 23, 42, 0.3);
  border-radius: 4px;
}

::-webkit-scrollbar-thumb {
  background: rgba(34, 211, 238, 0.3);
  border-radius: 4px;
  border: 1px solid rgba(34, 211, 238, 0.1);
}

::-webkit-scrollbar-thumb:hover {
  background: rgba(34, 211, 238, 0.5);
  box-shadow: 0 0 8px rgba(34, 211, 238, 0.3);
}

::-webkit-scrollbar-corner {
  background: rgba(15, 23, 42, 0.3);
}

/* Firefox滚动条样式 */
* {
  scrollbar-width: thin;
  scrollbar-color: rgba(34, 211, 238, 0.3) rgba(15, 23, 42, 0.3);
}

/* ============================================================
   PowerStation页面特殊滚动条样式
   ============================================================ */

.powerstation-scrollbar ::-webkit-scrollbar {
  width: 6px;
  height: 6px;
}

.powerstation-scrollbar ::-webkit-scrollbar-track {
  background: rgba(11, 17, 32, 0.5);
}

.powerstation-scrollbar ::-webkit-scrollbar-thumb {
  background: rgba(6, 182, 212, 0.4);
  border-radius: 3px;
}

.powerstation-scrollbar ::-webkit-scrollbar-thumb:hover {
  background: rgba(6, 182, 212, 0.6);
}
</style>
