///
import { computed, onMounted, reactive, ref } from 'vue';
import { useTasksStore } from '@/stores/tasks';
import { usePlantingsStore } from '@/stores/plantings';
import { usePlantsStore } from '@/stores/plants';
import { useGardensStore } from '@/stores/gardens';
import { useToast } from '@/composables/useToast';
// ── Stores & composables ───────────────────────────────────────────────────────
const store = useTasksStore();
const plantingsStore = usePlantingsStore();
const plantsStore = usePlantsStore();
const gardensStore = useGardensStore();
const toast = useToast();
// ── État UI ────────────────────────────────────────────────────────────────────
const showForm = ref(false);
const showScheduleModal = ref(false);
const showQuickSection = ref(true);
const editId = ref(null);
const submitting = ref(false);
// ── Formulaire template (création / édition) ───────────────────────────────────
const form = reactive({
titre: '',
description: '',
priorite: 'normale',
repetition: false,
freq_nb: 1,
freq_unite: 'semaines',
});
const formFreqEnJours = computed(() => {
const n = form.freq_nb || 1;
if (form.freq_unite === 'semaines')
return n * 7;
if (form.freq_unite === 'mois')
return n * 30;
return n;
});
// ── Formulaire "programmer" (instancier un template) ──────────────────────────
const scheduleForm = reactive({
titre: '',
date_debut: today(),
notes: '',
priorite: 'normale',
planting_id: null,
repetition: false,
freq_nb: 1,
freq_unite: 'semaines',
});
const scheduleFreqEnJours = computed(() => {
const n = scheduleForm.freq_nb || 1;
if (scheduleForm.freq_unite === 'semaines')
return n * 7;
if (scheduleForm.freq_unite === 'mois')
return n * 30;
return n;
});
// ── Templates prédéfinis jardinage ─────────────────────────────────────────────
const QUICK_TEMPLATES = [
{ titre: 'Arrosage', icone: '💧', priorite: 'normale' },
{ titre: 'Semis en intérieur', icone: '🌱', priorite: 'normale' },
{ titre: 'Semis en pleine terre', icone: '🌾', priorite: 'normale' },
{ titre: 'Repiquage / Transplantation', icone: '🪴', priorite: 'normale' },
{ titre: 'Récolte', icone: '🥕', priorite: 'normale' },
{ titre: 'Taille / Ébourgeonnage', icone: '✂️', priorite: 'normale' },
{ titre: 'Désherbage', icone: '🌿', priorite: 'basse' },
{ titre: 'Fertilisation / Amendement', icone: '💊', priorite: 'normale' },
{ titre: 'Traitement phytosanitaire', icone: '🧪', priorite: 'haute' },
{ titre: 'Observation / Relevé', icone: '👁️', priorite: 'basse' },
{ titre: 'Paillage', icone: '🍂', priorite: 'basse' },
{ titre: 'Compostage', icone: '♻️', priorite: 'basse' },
{ titre: 'Buttage', icone: '⛏️', priorite: 'normale' },
{ titre: 'Protection gel / Voile', icone: '🌡️', priorite: 'haute' },
{ titre: 'Tuteurage', icone: '🪵', priorite: 'normale' },
{ titre: 'Éclaircissage', icone: '🌞', priorite: 'normale' },
];
const quickTemplatesFiltered = computed(() => {
const existing = new Set(byStatut('template').map(t => t.titre.toLowerCase().trim()));
return QUICK_TEMPLATES.filter(qt => !existing.has(qt.titre.toLowerCase().trim()));
});
const totalTemplates = computed(() => byStatut('template').length + quickTemplatesFiltered.value.length);
// ── Plantations groupées par jardin pour le