<template>
  <LayoutContainer>
    <UiLoadingPanel v-if="pending" />
    <div v-else>
      <v-table>
        <thead>
          <tr>
            <td>{{ $t('educationTimings') }}</td>
            <td></td>
          </tr>
        </thead>
        <tbody v-if="educationTimings!.items.length > 0">
          <tr v-for="timing in educationTimings!.items" :key="timing.id">
            <td class="cycle-editable-cell">
              {{ timing.timing }}
            </td>
            <td class="d-flex flex-row">
              <v-btn
                :flat="true"
                icon="fa fa-pen"
                class="cycle-edit-icon mr-3"
                @click="goToEditPage(timing.id as number)"
              />
              <UiButtonDelete
                :model="EducationTiming"
                :entity="timing"
                :flat="true"
                class="cycle-edit-icon"
              />
            </td>
          </tr>
        </tbody>
        <tbody v-else>
          <tr class="theme-neutral">
            <td>
              <i>{{ $t('nothing_to_show') }}</i>
            </td>
            <td></td>
          </tr>
        </tbody>
      </v-table>
      <v-btn
        :flat="true"
        prepend-icon="fa fa-plus"
        class="theme-primary mt-4"
        @click="goToCreatePage"
      >
        {{ $t('add') }}
      </v-btn>
    </div>
  </LayoutContainer>
</template>

<script setup lang="ts">
import { useEntityFetch } from '~/composables/data/useEntityFetch'
import EducationTiming from '~/models/Education/EducationTiming'
import { useOrganizationProfileStore } from '~/stores/organizationProfile'
import UrlUtils from '~/services/utils/urlUtils'

definePageMeta({
  name: 'parameters_education_timings_page',
})

const organizationProfile = useOrganizationProfileStore()

if (organizationProfile.parametersId === null) {
  throw new Error('Missing organization parameters id')
}

const { fetchCollection } = useEntityFetch()

const { data: educationTimings, pending } = fetchCollection(EducationTiming)

const goToEditPage = (id: number) => {
  navigateTo(UrlUtils.join('/parameters/education_timings', id))
}

const goToCreatePage = () => {
  navigateTo('/parameters/education_timings/new')
}
</script>

<style scoped lang="scss">
.v-table {
  width: 100%;
  max-width: 800px;
}

// TODO: voir à factoriser ces styles, ptêt en faisant un component de ces boutons?
:deep(.cycle-edit-icon .v-icon) {
  color: rgb(var(--v-theme-primary));
  font-size: 18px;
}
</style>
