<?php

namespace App\Form;

use App\Entity\Task;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class TaskType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options): void
    {
        $builder
            ->add('name', null, [
                'label' => 'Nom',
            ])
            ->add('description', null, [
                'label' => 'Description',
            ])
            ->add('geojson', TextareaType::class, [
                'label' => 'GeoJSON',
                'required' => false,
                'help_html' => true,
                'help' => 'Ce qu’il faut dessiner sur la carte au format <a href="https://fr.wikipedia.org/wiki/GeoJSON" target="_blank">GeoJSON</a> et mettre à disposition à l’export sous forme de <a href="https://fr.wikipedia.org/wiki/GPX_(format_de_fichier)" target="_blank">GPX</a> pour l’import dans JOSM. Outil pratique&nbsp;: <a href="https://geojson.io/" target="_blank">geojson.io</a>.',
            ])
            ->add('osm', TextareaType::class, [
                'label' => 'OSM',
                'required' => false,
                'help_html' => true,
                'help' => 'XML décrivant ce qu’il faut charger dans la feuille de données de JOSM (cf <a href="https://wiki.openstreetmap.org/wiki/FR:OSM_XML" target="_blank">FR:OSM XML - OpenStreetMap Wiki</a>)',
                'empty_data' => '',
            ])
            ->add('status', TaskLifecycleType::class, [
                'label' => 'État',
            ])
            ->add('urgent', null, [
                'label' => 'Urgence',
                'required' => false,
                'help' => 'Un entier signé optionnel.',
            ])
            ->add('important', null, [
                'label' => 'Importance',
                'required' => false,
                'help' => 'Un entier signé optionnel.',
            ])
        ;
    }

    public function configureOptions(OptionsResolver $resolver): void
    {
        $resolver->setDefaults([
            'data_class' => Task::class,
        ]);
    }
}
