<template>
  <div class="layout-container">
    <div class="top-container"></div>
    <div class="content">
      <div class="left-container">
        <div class="userPanel">
          <GroupPanel
            :groupList="groupDiscoveryStore.groupList"
            :title="groupPanelTitleImg"
          ></GroupPanel>
        </div>
        <div class="userChart">
          <GroupChart
            :title="groupChartTitleImg"
            :moduleName="'群体规模演化图'"
            :chartData="groupDiscoveryStore.chartData"
          ></GroupChart>
        </div>
      </div>
      <div class="middle-container">
        <div class="graph">
          <GroupGraph
            :store="groupDiscoveryStore"
            @click:pointerDownAndSlide="handleChangeXAxis"
          ></GroupGraph>
        </div>
        <div class="postList">
          <GroupPost
            :posts="groupDiscoveryStore.posts"
            :moduleName="moduleName"
            @click:open-dialog="handleOpenPostDialog"
          ></GroupPost>
        </div>
      </div>
      <div class="right-container">
        <div class="anlysisPanel">
          <GroupShow
            :title="groupGroupShowImg"
            :chartsData="groupDiscoveryStore.chartsData"
          ></GroupShow>
        </div>
        <div class="cloudWords">
          <WordsCloud :wordsCloudList="groupDiscoveryStore.wordCloudData"></WordsCloud>
        </div>
      </div>
    </div>
  </div>
</template>

<script setup>
import { onMounted, ref } from "vue"
import GroupPanel from "../component/groupPanel.vue"
import GroupChart from "../component/groupChart.vue"
import GroupPost from "../component/groupPost.vue"
import GroupShow from "../component/groupShow.vue"
import WordsCloud from "../component/wordsCloud.vue"
import GroupGraph from "../component/groupGraph.vue"
import groupPanelTitleImg from "@/assets/images/groupEvolution/groupPanel-title.png"
import groupChartTitleImg from "@/assets/images/groupEvolution/chart-title.png"
import groupGroupShowImg from "@/assets/images/groupEvolution/groupDisc-title.png"
import { useGroupDiscoveryStore } from "@/store/groupEvolution/index"

const groupDiscoveryStore = useGroupDiscoveryStore()

const moduleName = "群体识别发现"
//控制弹窗
const postDialog = ref(false)

//当前选中的贴文数据
const currentPostPost = ref(null)

const handleOpenPostDialog = (post) => {
  postDialog.value = true
  currentPostPost.value = post
}

const handleChangeXAxis = (utcTime) => {
  groupDiscoveryStore.initializeGroupList(utcTime) //随着时间变动，更新群体列表
  groupDiscoveryStore.initialPostByUtcTime(utcTime) //随着时间轴变动，更新贴文列表
  groupDiscoveryStore.initialGraphByUtcTime(utcTime) //随着时间轴变动，更新关系图
}

onMounted(() => {
  groupDiscoveryStore.initializeGroupList()
  groupDiscoveryStore.initializeGroupScaleChart()
  groupDiscoveryStore.initialGraphTimestamp()
  groupDiscoveryStore.initialGraphByUtcTime()
})
</script>

<style scoped lang="less">
:deep(.custom-dialog) {
  width: 640px;
  border-width: 0px, 0px, 0px, 0px;
  border-style: solid;
  border-image-source: linear-gradient(180deg, #3aa1f8 0%, rgba(58, 161, 248, 0.2) 100%);
  background-color: rgba(6, 45, 90, 1);
  border: 1px solid #1a8bff;
  border-radius: 2px;
  padding: 0 0;
  z-index: 1;
}
:deep(.post-dialog) {
  height: 300px;
}
:deep(.custom-dialog) .postTitleImage {
  margin-top: -24px;
  margin-left: -2px;
}
:deep(.custom-dialog) .dialog-content {
  width: 100%;
  padding: 25px 20px;
}

:deep(.custom-dialog) .dialog-content .content {
  color: rgba(255, 255, 255, 0.8);
  font-family: "PingFang SC";
  font-size: 16px;
  font-style: normal;
  font-weight: 400;
  opacity: 0.7;
}
.post-content {
  color: #fff;
  font-size: 16px;
  opacity: 0.7;
}
.heat {
  display: flex;
  justify-content: flex-end;
  margin-top: 20px;
  .item-heat-detail {
    display: flex;
    justify-content: space-between;
    div {
      display: flex;
      align-items: center;
      justify-content: center;
      width: 70px;
      color: #fff;
      opacity: 0.7;
    }
  }
}
.layout-container {
  width: 1544px;
  display: flex;
  flex-direction: column;
  gap: 20px;
  .top-container {
    width: 100%;
    height: 88px;
    background-image: url(@/assets/images/linkPrediction/title/page-title.png);
    background-repeat: no-repeat;
    background-size: cover;
    fill: linear-gradient(270deg, rgba(6, 61, 113, 0.1) 0%, rgba(8, 30, 56, 0.38) 100%);
    stroke-width: 1px;
    stroke: #3aa1f8;
  }

  .content {
    width: 100%;
    height: 805px;
    display: flex;
    justify-content: space-between;
    gap: 15px;
    .left-container {
      width: 352px;
      height: 100%;
      display: flex;
      flex-direction: column;
      gap: 15px;
      .userPanel {
        width: 100%;
        height: 540px;
        border-radius: 2px;
        flex-shrink: 0;
        background-color: rgba(6, 45, 90, 0.3);
        border: 1px solid rgba(0, 113, 188, 0.705);
      }
      .userChart {
        flex: 1;
        border-radius: 2px;
        background-color: rgba(6, 45, 90, 0.3);
        border: 1px solid rgba(0, 113, 188, 0.705);
        overflow: auto;
        -ms-overflow-style: none; /* IE 和 Edge */
        scrollbar-width: none; /* Firefox */
      }
    }

    .middle-container {
      flex: 1;
      display: flex;
      flex-direction: column;
      gap: 15px;
      .search {
        width: 100%;
        height: 60px;
      }
      .graph {
        width: 100%;
        height: 541px;
        background-color: #070a22;
        border-radius: 4px;
        background-color: rgba(6, 45, 90, 0.3);
        border: 1px solid rgba(0, 113, 188, 0.705);
      }
      .postList {
        flex: 1;
        border-radius: 4px;
        background-color: rgba(6, 45, 90, 0.3);
        border: 1px solid rgba(0, 113, 188, 0.705);
        fill: linear-gradient(270deg, rgba(6, 61, 113, 0.1) 0%, rgba(8, 30, 56, 0.38) 100%);
        stroke-width: 1px;
        stroke: #3aa1f8;
        overflow: auto;
        padding: 10px 10px;
      }
    }

    .right-container {
      width: 352px;
      height: 100%;
      display: flex;
      flex-direction: column;
      gap: 15px;
      .anlysisPanel {
        width: 100%;
        height: 540px;
        border-radius: 2px;
        flex-shrink: 0;
        background-color: rgba(6, 45, 90, 0.3);
        border: 1px solid rgba(0, 113, 188, 0.705);
      }
      .cloudWords {
        flex: 1;
        border-radius: 2px;
        flex-shrink: 0;
        background-color: rgba(6, 45, 90, 0.3);
        border: 1px solid rgba(0, 113, 188, 0.705);
      }
    }
  }
}
</style>
