summaryrefslogtreecommitdiff
path: root/Statics/Js/userinfo.js
blob: 6b4c1d9e4a15e7b7c7dadf36d2a4b605ec1c1315 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106

// ****************************************************************************
// USERINFO
// ****************************************************************************
// Mes sources pour créer cette partie:
// https://stackoverflow.com/questions/1085801/get-selected-value-in-dropdown-list-using-javascript
// https://stackoverflow.com/questions/47951287/dynamically-add-li-to-ul-javascript
// https://developer.mozilla.org/en-US/docs/Web/API/Document/createTextNode
// https://www.encodedna.com/javascript/how-to-get-all-li-elements-in-ul-using-javascript.htm
// https://www.geeksforgeeks.org/javascript-convert-an-array-to-json/
// https://stackoverflow.com/questions/17785592/difference-between-json-stringify-and-json-parse
// https://www.w3docs.com/snippets/javascript/how-to-remove-an-element-from-an-array-in-javascript.html
// On passe par du JSON pour passer la liste des emplois du pro

// ****************************************************************************
// GLOBAL
// ****************************************************************************
var payload  = [];
var dictJobs = {};

// ****************************************************************************
// FONCTIONS ANNEXES
// ****************************************************************************
// Récupération des possibles emplois et stockage dans une variable
function init_dict_jobs() {
    // Récupération des emplois disponibles
    let selJob = document.getElementById("jobsSel");

    // Pour chaque emploi disponible
    for (i = 0; i < selJob.length; i ++) {
        if (selJob[i].value !== "") {
            // Création d'un dictionnaire -> "Nom Emploi": "ID"
            dictJobs[selJob[i].text] = selJob[i].value;
        }
    }
}

// Création et ajout d'un bouton "supprimmer"
function add_bouton_rm(li, jobsId) {
    // Création et configuration du bouton
    let buttonDel       = document.createElement("button");
    buttonDel.type      = "button";
    buttonDel.innerHTML = "<i class=\"fas fa-ban\"></i>";
    buttonDel.onclick   = () => {remove(li, jobsId);};

    // Ajout du boutton au "li" passé en argument
    li.appendChild(buttonDel);
}

// ****************************************************************************
// FONCTIONS PRINCIPALES
// ****************************************************************************
// Initiation
function init() {
    // Peuplement du dictionnaire des emploies "Nom Emploi": "ID"
    init_dict_jobs();
    
    // Récupération des emplois déja présent
    let jobs = document.getElementById("jobsList").getElementsByTagName("li");

    // Pour chaque emploi déja enregistré
    for (i = 0; i < jobs.length; i ++) {
        // Ajout de chaques choix à la liste final "payload"
        payload.push(dictJobs[jobs[i].innerHTML]);
        // Ajout d'un id et d'un bouton remove à chaque "li".
        jobs[i].id = "jobId_" + dictJobs[jobs[i].innerHTML];
        add_bouton_rm(jobs[i], dictJobs[jobs[i].innerHTML]);
    }

    // Transformation de la liste des emplois choisis en JSON
    // et inscription de ce dernier dans la "value" de l'input "jobs".
    document.getElementById("jobs").value = JSON.stringify(payload);
}

// Ajout d'un emploi
function add() {
    // Récupération du nom du choix dans le "select" des emplois
    let jobName = document.getElementById("jobsSel").options[jobsSel.selectedIndex].text;

    // Si l'emploi n'est pas deja dans "payload" 
    // et si il fait bien partie du dictionnaire de tous les emplois
    if (jobName in dictJobs && !payload.includes(dictJobs[jobName])) {
        // Ajout à payload
        payload.push(dictJobs[jobName]);
        // Création, configuration et ajout du nouveau "li"
        let li = document.createElement("li");
        li.id  = "jobId_" + dictJobs[jobName];
        li.appendChild(document.createTextNode(jobName));
        add_bouton_rm(li, dictJobs[jobName]);
        document.getElementById("jobsList").appendChild(li);
        // Transformation de la liste des emplois choisis en JSON
        // et inscription de ce dernier dans la "value" de l'input "jobs".
        document.getElementById("jobs").value = JSON.stringify(payload);
    }
}

// Suppression d'un emploi
function remove(li, jobsId) {
    // Suppression de l'emploi dans "payload"
    payload.splice(payload.indexOf(jobsId), 1);
    // Suppression du "li" de l'emploi
    document.getElementById("jobsList").removeChild(li);
    // Transformation de la liste des emplois choisis en JSON
    // et inscription de ce dernier dans la "value" de l'input "jobs".
    document.getElementById("jobs").value = JSON.stringify(payload);
}