From b386f9c5edf799a7522eb7cc73b1ac020667a5c1 Mon Sep 17 00:00:00 2001
From: Marcelin <m.lechossec@lpoaste.net>
Date: Mon, 14 Oct 2024 12:02:37 +0200
Subject: [PATCH 1/2] =?UTF-8?q?ajout=20du=20bouton=20csv=20et=20s=C3=A9par?=
 =?UTF-8?q?ation=20de=20la=20page?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 core/templates/core/activite_form.html | 575 ++++++++++++-------------
 core/templates/core/activites.html     |   3 +-
 core/views.py                          |   3 +
 3 files changed, 286 insertions(+), 295 deletions(-)

diff --git a/core/templates/core/activite_form.html b/core/templates/core/activite_form.html
index d769bc9..87a72c5 100644
--- a/core/templates/core/activite_form.html
+++ b/core/templates/core/activite_form.html
@@ -26,274 +26,274 @@
 
         
     </style>
-
-    <div class="container mb-4">
-        <div class="row justify-content-center">
-            <div class="col-12  m-3"> 
-                <div class="card shadow h-100 text-center">
-                    <div class="card-header text-center d-flex justify-content-between align-items-center" id="cardHeader">
-                        <h2 class="d-inline-block mb-0">Option CSV</h2>
-                        <button class="btn btn-link" id="toggle-button">
-                            <i class="fas fa-caret-down " style="color: 4d1d35;"></i>
-                        </button>
-                    </div>
-                    <div class="card-body" style="display: none;">
-                        <form method="post" enctype="multipart/form-data" action="{% url 'core:activite_create' %}">
-                            {% csrf_token %}
-                            <div class="form-group text-center"> <!-- Centering the form group -->
-                                <div class="d-inline-block"> <!-- Centering the inner div -->
-                                    <input type="file" name="csv_file" class="form-control-file">
+    {% if is_csv %}
+        <div class="container mb-4">
+            <div class="row justify-content-center">
+                <div class="col-12  m-3"> 
+                    <div class="card shadow h-100 text-center">
+                        <div class="card-header text-center d-flex justify-content-between align-items-center" id="cardHeader">
+                            <h2 class="d-inline-block mb-0">Option CSV</h2>
+                        </div>
+                        <div class="card-body">
+                            <form method="post" enctype="multipart/form-data" action="{% url 'core:activite_create' %}">
+                                {% csrf_token %}
+                                <div class="form-group text-center"> <!-- Centering the form group -->
+                                    <div class="d-inline-block"> <!-- Centering the inner div -->
+                                        <input type="file" name="csv_file" class="form-control-file">
+                                    </div>
                                 </div>
-                            </div>
-                            <button type="submit" class="btn btn-primary">Importer CSV</button>
-                        </form>
-                        <a href="{% url 'core:generate_example_csv' %}" class="btn btn-success mt-2">Télécharger Exemple CSV</a>
+                                <button type="submit" class="btn btn-primary">Importer CSV</button>
+                            </form>
+                            <a href="{% url 'core:generate_example_csv' %}" class="btn btn-success mt-2">Télécharger Exemple CSV</a>
+                        </div>
                     </div>
                 </div>
             </div>
         </div>
-    </div>
-
-    <form method="post">
-    {% csrf_token %}
-    <div class="container mb-4">
-        <div class="row justify-content-center">
-            <div class="col-12 m-3"> 
-                <div class="card shadow h-100 " >
-                    <div class="card-header text-center" id="cardHeader2">
-                        <h2>Nouvelle activité</h2>
-                    </div>
-                    <div class="card-body text-center">
-                        <form id="projet-form">
-                            <div class="btn-group d-flex flex-wrap justify-content-center" role="group" aria-label="Basic radio toggle button group">
-                                {% for projet in projet_dict %}
-                                <input type="radio" class="btn-check" name="projet" id="projet-{{ projet.pk }}" autocomplete="off" 
-                                       value="{{ projet.pk }}" 
-                                       data-got-structures="{% if projet.gotStructures %}true{% else %}false{% endif %}"
-                                       data-got-services="{% if projet.gotServices %}true{% else %}false{% endif %}"
-                                       
-                                       data-nom="{{ projet.nom }}" 
-                                       {% if projet.pk|stringformat:"s" == selected_projet %}checked{% endif %}>
-                                
-                                <label class="btn btn-outline-primary hover-buttons" 
-                                       style="color: white; background-color: {{ projet.color }};" 
-                                       for="projet-{{ projet.pk }}">{{ projet.nom }}</label>
-                                {% empty %}
-                                <p>Veuillez sélectionner un SDSI par défaut</p>
-                                {% endfor %}
+    {% endif %}
+
+    {% if is_manual %}
+        <form method="post">
+            {% csrf_token %}
+            <div class="container mb-4">
+                <div class="row justify-content-center">
+                    <div class="col-12 m-3"> 
+                        <div class="card shadow h-100 " >
+                            <div class="card-header text-center" id="cardHeader2">
+                                <h2>Nouvelle activité</h2>
                             </div>
-                        </form>
-                        
-                        <hr>
-
-                        <div class="pt-1 pb-2" id="autres-projets-select" style="display: none;">
-                            
-                                <div class="mt-3 pb-4" id="projet-buttons">
-                                    {% for projet in projet_history %}
-                                    <button type="button" class="btn btn-primary projet-btn m-1" data-projet-id="{{ projet.pk }}">{{ projet.nom }}</button>
-                                    {% endfor %}
-                                </div>
-                                {{ form.projet.label_tag }}
-                                <select class="form-select" id="id_projet" name="projet">
-                                    <option value="">Sélectionnez un projet...</option>
-                                    {% for projet in projet_list %}
-                                        <option value="{{ projet.pk }}">{{ projet.nom }}</option>
-                                    {% endfor %}
-                                </select>
-                                <div class="pb-2"></div>
+                            <div class="card-body text-center">
+                                <form id="projet-form">
+                                    <div class="btn-group d-flex flex-wrap justify-content-center" role="group" aria-label="Basic radio toggle button group">
+                                        {% for projet in projet_dict %}
+                                        <input type="radio" class="btn-check" name="projet" id="projet-{{ projet.pk }}" autocomplete="off" 
+                                            value="{{ projet.pk }}" 
+                                            data-got-structures="{% if projet.gotStructures %}true{% else %}false{% endif %}"
+                                            data-got-services="{% if projet.gotServices %}true{% else %}false{% endif %}"
+                                            
+                                            data-nom="{{ projet.nom }}" 
+                                            {% if projet.pk|stringformat:"s" == selected_projet %}checked{% endif %}>
+                                        
+                                        <label class="btn btn-outline-primary hover-buttons" 
+                                            style="color: white; background-color: {{ projet.color }};" 
+                                            for="projet-{{ projet.pk }}">{{ projet.nom }}</label>
+                                        {% empty %}
+                                        <p>Veuillez sélectionner un SDSI par défaut</p>
+                                        {% endfor %}
+                                    </div>
+                                </form>
+                                
                                 <hr>
-                        </div>
 
-                        <div class="pt-1 pb-2" id="champ-structures" style="display: none;">
-                            <div id="structure-list">
-                                <div class="mt-3 pb-4" id="structure-buttons">
-                                    {% for structure in structure_history %}
-                                        <button type="button" class="btn btn-primary structure-btn m-1" data-structure-id="{{ structure.pk }}">{{ structure.nom }}</button>
-                                    {% endfor %}
-                                </div>
-                                {{ form.structure.label_tag }}
-                                <select name="structure" id="id_structure" class="form-select">
-                                    <option value="">Sélectionnez une structure...</option> <!-- Option par défaut ajoutée -->
-                                    {% for type_label, structures in structures_by_type.items %}
-                                        <optgroup label="{{ type_label }}">
-                                            {% for structure in structures %}
-                                                <option value="{{ structure.id }}">{{ structure.nom }}</option>
+                                <div class="pt-1 pb-2" id="autres-projets-select" style="display: none;">
+                                    
+                                        <div class="mt-3 pb-4" id="projet-buttons">
+                                            {% for projet in projet_history %}
+                                            <button type="button" class="btn btn-primary projet-btn m-1" data-projet-id="{{ projet.pk }}">{{ projet.nom }}</button>
                                             {% endfor %}
-                                        </optgroup>
-                                    {% endfor %}
-                                </select>
-                                <div class="pb-2"></div>
-                                <hr>
-                            </div>
-                        </div>
+                                        </div>
+                                        {{ form.projet.label_tag }}
+                                        <select class="form-select" id="id_projet" name="projet">
+                                            <option value="">Sélectionnez un projet...</option>
+                                            {% for projet in projet_list %}
+                                                <option value="{{ projet.pk }}">{{ projet.nom }}</option>
+                                            {% endfor %}
+                                        </select>
+                                        <div class="pb-2"></div>
+                                        <hr>
+                                </div>
 
-                        <div class="pt-1 pb-2" id="champ-services" style="display: none;">
-                            <div id="service-list">
-                                <div class="mt-3 pb-4" id="service-buttons">
-                                    {% for service_id, service_nom in service_history %}
-                                        <button type="button" class="btn btn-primary service-btn m-1" data-service-id="{{ service_id }}">{{ service_nom }}</button>
-                                    {% endfor %}
+                                <div class="pt-1 pb-2" id="champ-structures" style="display: none;">
+                                    <div id="structure-list">
+                                        <div class="mt-3 pb-4" id="structure-buttons">
+                                            {% for structure in structure_history %}
+                                                <button type="button" class="btn btn-primary structure-btn m-1" data-structure-id="{{ structure.pk }}">{{ structure.nom }}</button>
+                                            {% endfor %}
+                                        </div>
+                                        {{ form.structure.label_tag }}
+                                        <select name="structure" id="id_structure" class="form-select">
+                                            <option value="">Sélectionnez une structure...</option> <!-- Option par défaut ajoutée -->
+                                            {% for type_label, structures in structures_by_type.items %}
+                                                <optgroup label="{{ type_label }}">
+                                                    {% for structure in structures %}
+                                                        <option value="{{ structure.id }}">{{ structure.nom }}</option>
+                                                    {% endfor %}
+                                                </optgroup>
+                                            {% endfor %}
+                                        </select>
+                                        <div class="pb-2"></div>
+                                        <hr>
+                                    </div>
                                 </div>
-                                {{ form.service.label_tag }}
-                                <select name="service" id="id_service" class="form-select">
-                                    <option value="">Sélectionnez un service...</option> <!-- Option par défaut ajoutée -->
-                                    {% for value, label in form.fields.service.choices %}
-                                        {% if value %}  <!-- Ignore la valeur null/None qui est interprétée comme une chaîne vide -->
-                                            <option value="{{ value }}">{{ label }}</option>
-                                        {% endif %}
-                                    {% endfor %}
-                                </select>
-                                <div class="pb-2"></div>
-                                <hr>
-                            </div>
-                        </div>
 
+                                <div class="pt-1 pb-2" id="champ-services" style="display: none;">
+                                    <div id="service-list">
+                                        <div class="mt-3 pb-4" id="service-buttons">
+                                            {% for service_id, service_nom in service_history %}
+                                                <button type="button" class="btn btn-primary service-btn m-1" data-service-id="{{ service_id }}">{{ service_nom }}</button>
+                                            {% endfor %}
+                                        </div>
+                                        {{ form.service.label_tag }}
+                                        <select name="service" id="id_service" class="form-select">
+                                            <option value="">Sélectionnez un service...</option> <!-- Option par défaut ajoutée -->
+                                            {% for value, label in form.fields.service.choices %}
+                                                {% if value %}  <!-- Ignore la valeur null/None qui est interprétée comme une chaîne vide -->
+                                                    <option value="{{ value }}">{{ label }}</option>
+                                                {% endif %}
+                                            {% endfor %}
+                                        </select>
+                                        <div class="pb-2"></div>
+                                        <hr>
+                                    </div>
+                                </div>
 
-                        <div class="pt-1 pb-2">
-                            <div class="mt-3 pb-4" id="most-used-hours-buttons">
-                                {% for hour, count in most_used_hours %}
-                                <button type="button" class="btn btn-primary structure-btn m-1" onclick="updateTempsPasse('{{ hour }}')">{{ hour }}</button>
-                                {% endfor %}
-                            </div>
-                            {{ form.temps_passe.label_tag }}
-                            {{ form.temps_passe }} 
-                        </div>
 
-                        <div class="row pt-1 pb-2">
-                            <div class="col-12 col-md-6">
-                              <div class="card-body" style="height: 30vh; overflow-y: auto;">
-                                <canvas id="ChartActivite" class=""></canvas>
-                              </div>
-                              <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
-                              <p id="totalTemps" class="text-center">Temps distribué : {{ total_temps_passe|default:'0' }}h</p>
-                            </div>
-                            <div class="col-12 col-md-6 align-items-center d-flex justify-content-center text-center">
-                              <div class="col-6 form-group align-items-center">
-                                <label for="semaine_annee">Sélectionnez une semaine :</label>
-                                <select name="semaine_annee" id="semaine_annee">
-                                  {% for semaine in semaines %}
-                                    <option value="{{ semaine.0 }}">{{ semaine.1 }}</option>
-                                  {% endfor %}
-                                </select>
-      
-                                <button type="button" class="btn btn-light mt-5" data-toggle="modal" data-target="#confirmUpdateModal">Modifier le temps de travail par semaines ({{ user.temps_semaine }})</button>
-                              </div>
-                            </div>
-                            <script>
-                                // Définition de la fonction sum pour calculer la somme d'un tableau
-                                function sum(array) {
-                                    
-                                    return array.slice(0, -1).reduce((total, current) => total + current, 0)
-                                }
+                                <div class="pt-1 pb-2">
+                                    <div class="mt-3 pb-4" id="most-used-hours-buttons">
+                                        {% for hour, count in most_used_hours %}
+                                        <button type="button" class="btn btn-primary structure-btn m-1" onclick="updateTempsPasse('{{ hour }}')">{{ hour }}</button>
+                                        {% endfor %}
+                                    </div>
+                                    {{ form.temps_passe.label_tag }}
+                                    {{ form.temps_passe }} 
+                                </div>
 
-                                function sum2(array) {
-                                    
-                                    return array.reduce((total, current) => total + current, 0)
-                                }
-                              
-                                function updateChart(semaineSelectionnee) {
-                                    const url = `/update-temps-travail/?semaine_annee=${semaineSelectionnee}`
-                                    fetch(url)
-                                    .then((response) => {
-                                        if (!response.ok) {
-                                        throw new Error('Network response was not ok')
-                                        }
-                                        return response.json()
-                                    })
-                                    .then((data) => {
-                                        const labels = data.chart_label_projet
-                                        const dataValues = data.chart_data_projet
-                                        const backgroundColors = data.chart_color_projet
-                                        let totalTemps
-
-                                        if (labels.includes("Temps restant")) {
-                                            totalTemps = sum(dataValues)
-                                        } else {
-                                            totalTemps = sum2(dataValues)
+                                <div class="row pt-1 pb-2">
+                                    <div class="col-12 col-md-6">
+                                    <div class="card-body" style="height: 30vh; overflow-y: auto;">
+                                        <canvas id="ChartActivite" class=""></canvas>
+                                    </div>
+                                    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
+                                    <p id="totalTemps" class="text-center">Temps distribué : {{ total_temps_passe|default:'0' }}h</p>
+                                    </div>
+                                    <div class="col-12 col-md-6 align-items-center d-flex justify-content-center text-center">
+                                    <div class="col-6 form-group align-items-center">
+                                        <label for="semaine_annee">Sélectionnez une semaine :</label>
+                                        <select name="semaine_annee" id="semaine_annee">
+                                        {% for semaine in semaines %}
+                                            <option value="{{ semaine.0 }}">{{ semaine.1 }}</option>
+                                        {% endfor %}
+                                        </select>
+            
+                                        <button type="button" class="btn btn-light mt-5" data-toggle="modal" data-target="#confirmUpdateModal">Modifier le temps de travail par semaines ({{ user.temps_semaine }})</button>
+                                    </div>
+                                    </div>
+                                    <script>
+                                        // Définition de la fonction sum pour calculer la somme d'un tableau
+                                        function sum(array) {
+                                            
+                                            return array.slice(0, -1).reduce((total, current) => total + current, 0)
                                         }
-                                
-                                        ChartActivite.data.labels = labels
-                                        ChartActivite.data.datasets[0].data = dataValues
-                                        ChartActivite.data.datasets[0].backgroundColor = backgroundColors
-                                        ChartActivite.update()
-                                
-                                        document.getElementById('totalTemps').textContent = `Temps distribué : ${totalTemps}h`
-                                    })
-                                    .catch((error) => {
-                                        console.error('Erreur lors de la récupération des données du graphique:', error)
-                                    })
-                                }
-                              
-                                document.addEventListener('DOMContentLoaded', () => {
-                                    const semaineSelectionnee = document.getElementById('semaine_annee').value
-                                    updateChart(semaineSelectionnee)
-                                })
-                                
-                                document.getElementById('semaine_annee').addEventListener('change', function () {
-                                    const semaineSelectionnee = this.value
-                                    updateChart(semaineSelectionnee)
-                                })
-                                
-                                const ctx = document.getElementById('ChartActivite').getContext('2d')
-                                const ChartActivite = new Chart(ctx, {
-                                    type: 'doughnut',
-                                    data: {
-                                    labels: [],
-                                    datasets: [
-                                        {
-                                        label: 'temps passe (h)',
-                                        data: [],
-                                        backgroundColor: [],
-                                        hoverOffset: 4
+
+                                        function sum2(array) {
+                                            
+                                            return array.reduce((total, current) => total + current, 0)
                                         }
-                                    ]
-                                    },
-                                    options: {
-                                    plugins: {
-                                        legend: {
-                                        position: 'right'
+                                    
+                                        function updateChart(semaineSelectionnee) {
+                                            const url = `/update-temps-travail/?semaine_annee=${semaineSelectionnee}`
+                                            fetch(url)
+                                            .then((response) => {
+                                                if (!response.ok) {
+                                                throw new Error('Network response was not ok')
+                                                }
+                                                return response.json()
+                                            })
+                                            .then((data) => {
+                                                const labels = data.chart_label_projet
+                                                const dataValues = data.chart_data_projet
+                                                const backgroundColors = data.chart_color_projet
+                                                let totalTemps
+
+                                                if (labels.includes("Temps restant")) {
+                                                    totalTemps = sum(dataValues)
+                                                } else {
+                                                    totalTemps = sum2(dataValues)
+                                                }
+                                        
+                                                ChartActivite.data.labels = labels
+                                                ChartActivite.data.datasets[0].data = dataValues
+                                                ChartActivite.data.datasets[0].backgroundColor = backgroundColors
+                                                ChartActivite.update()
+                                        
+                                                document.getElementById('totalTemps').textContent = `Temps distribué : ${totalTemps}h`
+                                            })
+                                            .catch((error) => {
+                                                console.error('Erreur lors de la récupération des données du graphique:', error)
+                                            })
                                         }
-                                    },
-                                    responsive: true,
-                                    maintainAspectRatio: false
-                                    }
-                                })
-                            </script>
-                          </div>
-                    </div>
-                    <div class="card-footer text-body-secondary pb-4 text-center" id="cardFooter">
-                        <button type="submit" class="btn btn-dark">Enregistrer</button>
+                                    
+                                        document.addEventListener('DOMContentLoaded', () => {
+                                            const semaineSelectionnee = document.getElementById('semaine_annee').value
+                                            updateChart(semaineSelectionnee)
+                                        })
+                                        
+                                        document.getElementById('semaine_annee').addEventListener('change', function () {
+                                            const semaineSelectionnee = this.value
+                                            updateChart(semaineSelectionnee)
+                                        })
+                                        
+                                        const ctx = document.getElementById('ChartActivite').getContext('2d')
+                                        const ChartActivite = new Chart(ctx, {
+                                            type: 'doughnut',
+                                            data: {
+                                            labels: [],
+                                            datasets: [
+                                                {
+                                                label: 'temps passe (h)',
+                                                data: [],
+                                                backgroundColor: [],
+                                                hoverOffset: 4
+                                                }
+                                            ]
+                                            },
+                                            options: {
+                                            plugins: {
+                                                legend: {
+                                                position: 'right'
+                                                }
+                                            },
+                                            responsive: true,
+                                            maintainAspectRatio: false
+                                            }
+                                        })
+                                    </script>
+                                </div>
+                            </div>
+                            <div class="card-footer text-body-secondary pb-4 text-center" id="cardFooter">
+                                <button type="submit" class="btn btn-dark">Enregistrer</button>
+                            </div>
+                        </div>
                     </div>
                 </div>
             </div>
-        </div>
-    </div>
-    </form>
-    <!-- Modal modification -->
-    <div class="modal fade" id="confirmUpdateModal" tabindex="-1" role="dialog" aria-hidden="true">
-        <div class="modal-dialog modal-dialog-centered" role="document">
-            <div class="modal-content">
-                <div class="modal-header">
-                    <h5 class="modal-title">Confirmation de modification</h5>
-                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-                        <span aria-hidden="true">&times;</span>
-                    </button>
-                </div>
-                <form method="post" action="{% url 'core:update_temps_travail' user.id %}">
-                    {% csrf_token %}
-                    <div class="modal-body">
-                        <p>Êtes-vous sûr de vouloir modifier le temps de travail par semaine ?</p>
-                        <label for="id_temps_semaine_nouveau">Nouveau temps de travail (en heures)</label>
-                        <input type="number" id="id_temps_semaine_nouveau" name="temps_semaine_nouveau" class="form-control" value="{{ user_instance.temps_semaine }}" required>
-                    </div>
-                    <div class="modal-footer">
-                        <button type="button" class="btn btn-secondary" data-dismiss="modal">Annuler</button>
-                        <button type="submit" class="btn btn-primary">Confirmer</button>
+        </form>
+        <!-- Modal modification -->
+        <div class="modal fade" id="confirmUpdateModal" tabindex="-1" role="dialog" aria-hidden="true">
+            <div class="modal-dialog modal-dialog-centered" role="document">
+                <div class="modal-content">
+                    <div class="modal-header">
+                        <h5 class="modal-title">Confirmation de modification</h5>
+                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                            <span aria-hidden="true">&times;</span>
+                        </button>
                     </div>
-                </form>
+                    <form method="post" action="{% url 'core:update_temps_travail' user.id %}">
+                        {% csrf_token %}
+                        <div class="modal-body">
+                            <p>Êtes-vous sûr de vouloir modifier le temps de travail par semaine ?</p>
+                            <label for="id_temps_semaine_nouveau">Nouveau temps de travail (en heures)</label>
+                            <input type="number" id="id_temps_semaine_nouveau" name="temps_semaine_nouveau" class="form-control" value="{{ user_instance.temps_semaine }}" required>
+                        </div>
+                        <div class="modal-footer">
+                            <button type="button" class="btn btn-secondary" data-dismiss="modal">Annuler</button>
+                            <button type="submit" class="btn btn-primary">Confirmer</button>
+                        </div>
+                    </form>
+                </div>
             </div>
         </div>
-    </div>
+    {% endif %}
 
     <script>
 
@@ -333,14 +333,22 @@
                 projectColor = rgbToHex(r, g, b);
             }
 
-            //card Options CSV
-            var cardHeader = document.getElementById('cardHeader');
-            //card Nouvelle activité
-            var cardHeader2 = document.getElementById('cardHeader2');
-
-            var cardFooter = document.getElementById('cardFooter');
-
+            var isCSV = {{ is_csv|yesno:"true,false" }};
+            var isManual = {{ is_manual|yesno:"true,false" }};
         
+            if (isCSV) {
+                // Afficher la carte pour CSV
+                var cardHeader = document.getElementById('cardHeader');
+                cardHeader.style.display = 'block';  // Affiche la carte CSV
+            } else if (isManual) {
+                // Afficher la carte pour l'ajout manuel
+                var cardHeader2 = document.getElementById('cardHeader2');
+                cardHeader2.style.display = 'block';  // Affiche la carte manuelle
+                
+                var cardFooter = document.getElementById('cardFooter');
+                cardFooter.style.display = 'block';  // Affiche le pied de carte
+            }
+           
             
             // Fonction pour éclaircir une couleur HEX
             function lightenColor(hex, percent) {
@@ -361,56 +369,34 @@
             
             var paleHeaderColor = lightenColor(projectColor, 0); 
             var paleFooterColor = lightenColor(projectColor, 0); 
-            var paleHeader2Color = lightenColor(projectColor, 10); // Rendre la couleur 10% plus pâle pour le cardSecondaire
+            var paleHeader2Color = lightenColor(projectColor, 0); // Rendre la couleur 10% plus pâle pour le cardSecondaire
 
         
-        
-            // Appliquer la couleur de fond pâle à cardHeader, si présent
-            if (cardHeader) {
-                cardHeader.style.backgroundColor = paleHeaderColor;
-            } else {
-                console.error('Element with ID "cardHeader" not found.');
-            }
-
-            // Appliquer la couleur de fond pâle à cardHeader2, si présent
-            if (cardHeader2) {
-                cardHeader2.style.backgroundColor = paleHeader2Color;
-            } else {
-                console.error('Element with ID "cardHeader2" not found.');
-            }
-
-            // Appliquer la couleur de fond pâle à cardFooter, si présent
-            if (cardFooter) {
-                cardFooter.style.backgroundColor = paleFooterColor;
-            } else {
-                console.error('Element with ID "cardFooter" not found.');
+            if (isCSV) {
+                // Appliquer la couleur de fond pâle à cardHeader, si présent
+                if (cardHeader) {
+                    cardHeader.style.backgroundColor = paleHeaderColor;
+                } else {
+                    console.error('Element with ID "cardHeader" not found.');
+                }
             }
-
-        });
+            if (isManual) {
+                // Appliquer la couleur de fond pâle à cardHeader2, si présent
+                if (cardHeader2) {
+                    cardHeader2.style.backgroundColor = paleHeader2Color;
+                } else {
+                    console.error('Element with ID "cardHeader2" not found.');
+                }
         
-        // Récupérer le bouton et la div à déplier/replier
-        const toggleButton = document.getElementById("toggle-button");
-        const cardBody = document.querySelector(".card-body");
-
-        // Vérifiez que le bouton et la div existent avant d'ajouter des écouteurs d'événements
-        if (toggleButton && cardBody) {
-            // Ajouter un écouteur d'événement au bouton
-            toggleButton.addEventListener("click", function() {
-                // Vérifier si la div est actuellement affichée ou masquée
-                if (cardBody.style.display === "none") {
-                    // Si elle est masquée, l'afficher
-                    cardBody.style.display = "block";
-                    // Modifier l'icône de la flèche pour indiquer que la div est ouverte
-                    toggleButton.innerHTML = '<i class="fas fa-caret-up" style="color: 4d1d35;"></i>';
+                // Appliquer la couleur de fond pâle à cardFooter, si présent
+                if (cardFooter) {
+                    cardFooter.style.backgroundColor = paleFooterColor;
                 } else {
-                    // Sinon, la masquer
-                    cardBody.style.display = "none";
-                    // Modifier l'icône de la flèche pour indiquer que la div est fermée
-                    toggleButton.innerHTML = '<i class="fas fa-caret-down" style="color: 4d1d35;"></i>';
+                    console.error('Element with ID "cardFooter" not found.');
                 }
-            });
-        }
+            }
 
+        });
         
         // Fonction pour masquer la div "Structure" et désactiver le champ de sélection de la structure
         function hideStructureDiv() {
@@ -664,6 +650,7 @@
 
 
     </script>
+
 {% else %}
     <div class="container">
       <div class="row justify-content-center">
diff --git a/core/templates/core/activites.html b/core/templates/core/activites.html
index 1abb70e..54c85a2 100644
--- a/core/templates/core/activites.html
+++ b/core/templates/core/activites.html
@@ -13,7 +13,8 @@
           <div class="card shadow h-100">
             <div class="card-header text-center" id="cardHeader">
               <h2 class="text-center">Liste des activités</h2>
-              <a href="{% url 'core:activite_create' %}" class="btn btn-dark mb-3 mt-3">Ajouter une activité</a>
+              <a href="{% url 'core:activite_create' %}?type=manual" class="btn btn-dark mb-3 mt-3">Ajouter une activité</a>
+              <a href="{% url 'core:activite_create' %}?type=csv" class="btn btn-dark mb-3 mt-3">CSV</a>
             </div>
             <div class="card-body">
               <div class="container-fluid">
diff --git a/core/views.py b/core/views.py
index eba075e..8bbf57b 100644
--- a/core/views.py
+++ b/core/views.py
@@ -1362,6 +1362,9 @@ class ActiviteCreate(CreateView):
         sdsi = SDSI.objects.filter(EnCours=True).first()
         context["menu_activite"] = "active"
 
+        context['is_csv'] = self.request.GET.get('type') == 'csv'
+        context['is_manual'] = self.request.GET.get('type') == 'manual'
+
         most_used_hours = self.get_most_used_hours()
         context["most_used_hours"] = most_used_hours
 
-- 
GitLab


From a99d94823bb7e7b75b333d57b1f183912c3a2ba2 Mon Sep 17 00:00:00 2001
From: Marcelin <m.lechossec@lpoaste.net>
Date: Mon, 14 Oct 2024 16:36:19 +0200
Subject: [PATCH 2/2] =?UTF-8?q?s=C3=A9paration=20activit=C3=A9=20et=20csv?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 core/templates/core/activite_form.html |  4 ++--
 core/templates/core/activites.html     | 15 +++++++++++----
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/core/templates/core/activite_form.html b/core/templates/core/activite_form.html
index 87a72c5..2d06b1c 100644
--- a/core/templates/core/activite_form.html
+++ b/core/templates/core/activite_form.html
@@ -31,8 +31,8 @@
             <div class="row justify-content-center">
                 <div class="col-12  m-3"> 
                     <div class="card shadow h-100 text-center">
-                        <div class="card-header text-center d-flex justify-content-between align-items-center" id="cardHeader">
-                            <h2 class="d-inline-block mb-0">Option CSV</h2>
+                        <div class="card-header text-center d-flex justify-content-center align-items-center" id="cardHeader">
+                            <h2 class="text-center mb-0">Ajouter des activités via un fichier CSV</h2>
                         </div>
                         <div class="card-body">
                             <form method="post" enctype="multipart/form-data" action="{% url 'core:activite_create' %}">
diff --git a/core/templates/core/activites.html b/core/templates/core/activites.html
index 54c85a2..bfb38f8 100644
--- a/core/templates/core/activites.html
+++ b/core/templates/core/activites.html
@@ -11,10 +11,17 @@
         <div class="col-12 m-3">
           <!-- Centering the column -->
           <div class="card shadow h-100">
-            <div class="card-header text-center" id="cardHeader">
-              <h2 class="text-center">Liste des activités</h2>
-              <a href="{% url 'core:activite_create' %}?type=manual" class="btn btn-dark mb-3 mt-3">Ajouter une activité</a>
-              <a href="{% url 'core:activite_create' %}?type=csv" class="btn btn-dark mb-3 mt-3">CSV</a>
+            <div class="card-header position-relative text-center" id="cardHeader">
+              <!-- Titre centré -->
+              <h2 class="mb-0">Liste des activités</h2>
+          
+              <!-- Bouton CSV à droite -->
+              <a href="{% url 'core:activite_create' %}?type=csv" class="btn btn-dark m-3" style="position: absolute; right: 0; top: 50%; transform: translateY(-50%);">CSV</a>
+              
+              <!-- Bouton "Ajouter une activité" en dessous -->
+              <div class="mt-3">
+                  <a href="{% url 'core:activite_create' %}?type=manual" class="btn btn-dark mb-3">Ajouter une activité</a>
+              </div>
             </div>
             <div class="card-body">
               <div class="container-fluid">
-- 
GitLab