<script lang="ts" setup>
import type { BasicQuestion } from "@/types/basic";

useHead({
  title: "Pytanie 1/20",
});

const { data, error, status, refresh } = await useFetch<BasicQuestion[]>(
  "/api/basic"
);

const runtimeConfig = useRuntimeConfig();
const cdnUrl = runtimeConfig.public.cdn_url;

const count = ref(0);

const tak_nie_model = ref();

async function next() {
  if (count.value + 1 < data.value?.length!) {
    questionaries.value.push({
      nr_pytania: question.value?.nr_pytania,
      chosen_answer: tak_nie_model.value ?? "",
      correct_answer: question.value?.poprawna_odp?.toLowerCase(),
      chosen_is_correct:
        tak_nie_model.value == question.value?.poprawna_odp?.toLowerCase(),
      liczba_pkt: question.value?.liczba_pkt,
    });
    tak_nie_model.value = "";
    count.value++;
    useHead({
      title: `Pytanie ${count.value + 1}/${data.value?.length}`,
    });
  } else {
    // await navigateTo("/advanced");
  }
}

const question = computed(() => data.value?.at(count.value));
const media = computed(() => {
  const mediaSplit = question.value?.media?.split(".");
  return {
    fileType: mediaSplit?.pop()?.toLowerCase(),
    fileName: mediaSplit?.join("."),
  };
});

const questionaries: Ref<Array<any>> = ref([]);

const progres = ref();

onMounted(() => {
  const progresInterval = setInterval(() => {
    progres.value.value = +progres.value.value + 1;
    if (progres.value.value >= 100) {
      clearInterval(progresInterval);
    }
  }, 100);
});
</script>

<template>
  <div>
    <div v-if="status === 'success'">
      <div class="grid grid-cols-4">
        <div class="col-span-3 flex flex-col gap-4 p-4">
          <div class="flex flex-row gap-5">
            <div>
              Wartość punktowa
              <div class="info-little-box">
                {{ question?.liczba_pkt }}
              </div>
            </div>
            <div>
              Aktualna kategoria (implement)
              <div class="info-little-box">B</div>
            </div>
            <div>
              Czas do końca egzaminu (implement)
              <div class="info-little-box">25:00</div>
            </div>
          </div>
          <div
            class="select-none z-[-1] w-full flex items-center justify-center *:object-contain *:object-contain *:*:object-contain"
          >
            <div class="w-[650px] *:w-full">
              <img
                :src="cdnUrl + [media.fileName, media.fileType].join('.')"
                alt=""
                v-if="media.fileType == 'jpg'"
              />
              <video
                v-else-if="media.fileType == 'wmv'"
                :key="media.fileName"
                autoplay
              >
                <source
                  :src="cdnUrl + [media.fileName, 'mp4'].join('.')"
                  type="video/mp4"
                />
              </video>
              <span v-else>Brak mediów</span>
            </div>
          </div>
          <div>{{ question?.pytanie }}</div>
          <div>
            <div class="flex flex-row justify-around">
              <input
                type="radio"
                name="tak_nie"
                id="odp_tak"
                v-model="tak_nie_model"
                value="tak"
                class="hidden"
              />
              <label for="odp_tak">
                <div
                  :class="`btn-answer ${
                    tak_nie_model == 'tak' ? ' !bg-fuchsia-500' : ''
                  }`"
                >
                  TAK
                </div>
              </label>
              <input
                type="radio"
                name="tak_nie"
                id="odp_nie"
                v-model="tak_nie_model"
                value="nie"
                class="hidden"
              />
              <label for="odp_nie">
                <div
                  :class="`btn-answer ${
                    tak_nie_model == 'nie' ? ' !bg-fuchsia-500' : ''
                  }`"
                >
                  NIE
                </div>
              </label>
            </div>
          </div>
        </div>

        <div class="flex flex-col items-center">
          <div>
            <button class="btn-major">Zakończ egzamin</button>
          </div>
          <div class="flex flex-row">
            <div>
              Pytania podstawowe
              <div class="progressive">
                {{ count + 1 }} / {{ data?.length }}
              </div>
            </div>
            <div>
              Pytania specjalistyczne
              <div class="progressive">
                {{ count + 1 }} / {{ data?.length }}
              </div>
            </div>
          </div>
          <div>TimeLeft (implement)</div>
          <div>
            <button @click="next()" class="btn-major">Następne pytanie</button>
          </div>
        </div>
      </div>
      <br />
      {{ questionaries }}
    </div>
    <div v-else-if="status === 'error'">Error: {{ error }}</div>
    <div v-else>Loading...</div>
    <progress max="100" ref="progres">Aha...</progress>
  </div>
</template>

<style scoped>
.btn {
  @apply box-border text-white font-bold p-3 rounded-md w-fit cursor-pointer border-[4px];
}

.btn-answer {
  @apply btn bg-blue-500 text-xl;
}

.btn-answer:hover {
  @apply bg-blue-300;
}

.btn-answer:active {
  @apply bg-blue-400;
}

.btn-major {
  @apply btn bg-orange-400 text-base;
}

.info-little-box {
  @apply inline-block px-[15px] py-[8px] bg-blue-500 text-white font-bold;
}
/* 
.progressive {
} */
</style>