<script setup lang="ts">
const props = defineProps<{
  builds: Builds
}>()

const {data : items} : ItemResponse = await useFetch(CDRAGON_BASE + "plugins/rcp-be-lol-game-data/global/default/v1/items.json")
const itemMap = reactive(new Map())
for(let item of items.value) {
    itemMap.set(item.id, item)
}

const builds = ref(JSON.parse(JSON.stringify(props.builds)))
watch(() => props.builds, () => {
    builds.value = JSON.parse(JSON.stringify(props.builds))
    trimBuilds(builds.value)
    trimLateGameItems(builds.value)
})
trimBuilds(builds.value)
trimLateGameItems(builds.value)

function trimBuilds(builds : Builds) {
    builds.tree.children.splice(1, builds.tree.children.length - 1)
    if(builds.tree.children[0] != null && builds.tree.children[0] != undefined)
        builds.tree.children[0].children.splice(1, builds.tree.children[0].children.length - 1)
}
function trimLateGameItems(builds: Builds) {
    function trimLateGameItemsFromTree(tree: ItemTree) {
        const foundIndex = builds.lateGame.findIndex((x) => x.data === tree.data)
        if(foundIndex != -1) builds.lateGame.splice(foundIndex, 1)
        for(let children of tree.children) {
            trimLateGameItemsFromTree(children)
        }
    }
    trimLateGameItemsFromTree(builds.tree)
}

</script>

<template>
    <div id="iv-container">
        
        <div>
        <!-- Start items -->
        <ItemBox title="start" v-if="builds.suppItems == undefined || builds.suppItems == null">
            <div class="iv-items-container">
                <div style="margin-left: 5px; margin-right: 5px;" v-for="item in builds.start" >
                <NuxtImg v-if="item.data != null && item.data != undefined" 
                    class="item-img" width="64" height="64" :alt="item.data.toString()" 
                    :src="CDRAGON_BASE + mapPath(itemMap.get(item.data).iconPath)" />
                <h3 style="width: fit-content; margin:auto; margin-bottom: 10px;">{{ (item.count/builds.tree.count * 100).toFixed(0) }}%</h3>
                </div>
            </div>
        </ItemBox>
        <!-- Supp items -->
        <ItemBox v-if="builds.suppItems != undefined && builds.suppItems != null" title="supp">
            <div class="iv-items-container">
                <div style="margin-left: 5px; margin-right: 5px;" v-for="item in builds.suppItems" >
                <NuxtImg v-if="item.data != null && item.data != undefined" 
                    class="item-img" width="64" height="64" :alt="item.data.toString()" 
                    :src="CDRAGON_BASE + mapPath(itemMap.get(item.data).iconPath)" />
                <h3 style="width: fit-content; margin:auto; margin-bottom: 10px;">{{ (item.count/builds.tree.count * 100).toFixed(0) }}%</h3>
                </div>
            </div>
        </ItemBox>
        </div>

        <!-- Boots first : when champion rush boots -->
        <ItemBox v-if="builds.bootsFirst > 0.5" title="boots rush" :bootsFirst="builds.bootsFirst">
            <div class="iv-items-container">
            <div style="margin-left: 5px; margin-right: 5px;" v-for="item in builds.boots" >
            <NuxtImg v-if="item.data != null && item.data != undefined"  
                class="item-img" width="64" height="64" :alt="item.data.toString()" 
                :src="CDRAGON_BASE + mapPath(itemMap.get(item.data).iconPath)" />
            <h3 style="width: fit-content; margin:auto; margin-bottom: 10px;">{{ (item.count/builds.tree.count * 100).toFixed(0) }}%</h3>
            </div>
            </div>
        </ItemBox>

        <!-- Core items -->
        <ItemBox title="core">
            <ItemTree style="margin:auto; width: fit-content;" :tree="builds.tree" />
        </ItemBox>

        <!-- Boots -->
        <ItemBox v-if="builds.bootsFirst <= 0.5" title="boots">
            <div class="iv-items-container">
            <div style="margin-left: 5px; margin-right: 5px;" v-for="item in builds.boots.slice(0, 4)" >
            <NuxtImg v-if="item.data != null && item.data != undefined" 
                class="item-img" width="64" height="64" :alt="item.data.toString()" 
                :src="CDRAGON_BASE + mapPath(itemMap.get(item.data).iconPath)" />
            <h3 style="width: fit-content; margin:auto; margin-bottom: 10px;">{{ (item.count/builds.tree.count * 100).toFixed(0) }}%</h3>
            </div>
            </div>
        </ItemBox>

        <!-- Late game items -->
        <ItemBox title="late game">
            <div id="iv-late-game-container">

            <div class="iv-items-container">
            <div style="margin-left: 5px; margin-right: 5px;" v-for="item in builds.lateGame.slice(0, 4)" >
            <NuxtImg v-if="item.data != null && item.data != undefined"
                 class="item-img" width="64" height="64" :alt="item.data.toString()" 
                 :src="CDRAGON_BASE + mapPath(itemMap.get(item.data).iconPath)" />
            <h3 style="width: fit-content; margin:auto; margin-bottom: 10px;">{{ (item.count/builds.tree.count * 100).toFixed(0) }}%</h3>
            </div>
            </div>
            
            <div class="iv-items-container" v-if="builds.lateGame.length > 4">
            <div style="margin-left: 5px; margin-right: 5px;" v-for="item in builds.lateGame.slice(4, 8)" >
            <NuxtImg v-if="item.data != null && item.data != undefined"
                 class="item-img" width="64" height="64" :alt="item.data.toString()" 
                 :src="CDRAGON_BASE + mapPath(itemMap.get(item.data).iconPath)" />
            <h3 style="width: fit-content; margin:auto; margin-bottom: 10px;">{{ (item.count/builds.tree.count * 100).toFixed(0) }}%</h3>
            </div>
            </div>

            </div>
        </ItemBox>
    </div>
</template>

<style>
#iv-container {
    display: flex;
    width: fit-content; 
    height: fit-content;
}
.iv-items-container {
    display: flex; 
    flex-direction: column; 
    width: fit-content; 
    height: fit-content; 
    margin:auto;
}
.item-img {
    border: 1px solid var(--color-on-surface);
    margin: 10px;
}
#iv-late-game-container {
    display: flex;
}

@media only screen and (max-width: 1000px) {
    #iv-container {
        flex-direction: column;
        width: 100%;
    }
    .iv-items-container {
        flex-direction: row;
    }
    .item-img {
        width: 48px;
        height: 48px;
    }
    #iv-late-game-container {
        flex-direction: column;
    }
}
</style>
