"use client"; import { useTranslations } from "next-intl"; import { useEffect, useState } from "react"; import ActionBar from "@/components/actionbar"; import useAvatarDataStore from "@/stores/avatarDataStore"; import { getCharacterListApi, getEnemyListApi } from "@/lib/api"; import LineupBar from "@/components/lineupbar"; import useBattleDataStore from "@/stores/battleDataStore"; import DamagePerAvatarForAll from "@/components/chart/damagePerAvatarForAll"; import MultiCharLineChart from "@/components/chart/damageLineForAll"; import DamagePerCycleForAll from "@/components/chart/damagePerCycleForAll"; import DamagePercentChartForAll from "@/components/chart/damagePercentForAll"; import EnemyBar from "@/components/enemybar"; import { CharacterBasic, MonsterBasic } from "@/types"; export default function Home() { const transI18n = useTranslations("DataAnalysisPage"); const { setListAvatar, setMapAvatar, setListEnemy, setMapEnemy } = useAvatarDataStore(); const { totalAV, totalDamage, damagePerAV, turnHistory, enemyDetail } = useBattleDataStore(); const [expandedCharts, setExpandedCharts] = useState([]); const toggleExpand = (chartId: string) => { if (expandedCharts.includes(chartId.toLowerCase())) { setExpandedCharts(expandedCharts.filter(id => id !== chartId.toLowerCase())); } else { setExpandedCharts([...expandedCharts, chartId.toLowerCase()]); } }; useEffect(() => { const fetchData = async () => { const avatarData = await getCharacterListApi(); setListAvatar(avatarData); const avatarMap = avatarData.reduce>((acc, m) => { acc[m.id] = m return acc }, {}) setMapAvatar(avatarMap) const enemyData = await getEnemyListApi(); setListEnemy(enemyData); const monsterMap = enemyData.reduce>((acc, m) => { acc[m.id] = m return acc }, {}) setMapEnemy(monsterMap) }; fetchData(); }, [setListAvatar, setListEnemy]); useEffect(() => { window.dispatchEvent(new Event('resize')); }, [expandedCharts]); return (
{transI18n("totalDamage")}
{Number(totalDamage).toLocaleString(undefined, { minimumFractionDigits: 1, maximumFractionDigits: 1 })}
{transI18n("totalAV")}
{Number(totalAV).toLocaleString(undefined, { minimumFractionDigits: 1, maximumFractionDigits: 1 })}
{transI18n("damagePerAV")}
{Number(damagePerAV).toLocaleString(undefined, { minimumFractionDigits: 1, maximumFractionDigits: 1 })}
{transI18n("totalTurn")}
{turnHistory.filter(it => it.avatarId && it.avatarId != -1).length}
{enemyDetail && }
); }