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 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186
| var req = new XMLHttpRequest();
req.open("GET", "https://oc-jswebsrv.herokuapp.com/api/liens");
req.addEventListener("load", function () {
if (req.status >= 200 && req.status < 400) { // Le serveur a réussi à traiter la requête
console.log(req.responseText);
}
else {
// Affichage des informations sur l'échec du traitement de la requête
console.error(req.status + " " + req.statusText);
}
});
req.addEventListener("error", function () {
// La requête n'a pas réussi à atteindre le serveur
console.error("Erreur réseau");
});
req.send(null);
/*
Activité 1
*/
// Liste des liens Web à afficher. Un lien est défini par :
// - son titre
// - son URL
// - son auteur (la personne qui l'a publié)
var listeLiens = [
{
titre: "So Foot"
, url: "http://sofoot.com"
, auteur: "yann.usaille"
}
, {
titre: "Guide d'autodéfense numérique"
, url: "http://guide.boum.org"
, auteur: "paulochon"
}
, {
titre: "L'encyclopédie en ligne Wikipedia"
, url: "http://Wikipedia.org"
, auteur: "annie.zette"
}
];
// Crée et renvoie un élément DOM affichant les données d'un lien
// Le paramètre lien est un objet JS représentant un lien
function creerElementLien(lien) {
var titreLien = document.createElement("a");
titreLien.href = lien.url;
titreLien.style.color = "#428bca";
titreLien.style.textDecoration = "none";
titreLien.style.marginRight = "5px";
titreLien.appendChild(document.createTextNode(lien.titre));
var urlLien = document.createElement("span");
urlLien.appendChild(document.createTextNode(lien.url));
// La ligne contient le titre et l'URL du lien
var ligneTitre = document.createElement("h4");
ligneTitre.style.margin = "0px";
ligneTitre.appendChild(titreLien);
ligneTitre.appendChild(urlLien);
// La ligne contient l'auteur
var ligneDetails = document.createElement("span");
ligneDetails.appendChild(document.createTextNode("Ajouté par " + lien.auteur));
var divLien = document.createElement("div");
divLien.classList.add("lien");
divLien.appendChild(ligneTitre);
divLien.appendChild(ligneDetails);
return divLien;
}
//Crée fonction creerInputElement
function creerInputElement(placeholder, id) {
var inputElt = document.createElement("input");
inputElt.setAttribute("type", "text");
inputElt.setAttribute("required", "required");
inputElt.setAttribute("placeholder", placeholder);
inputElt.setAttribute("id", id);
inputElt.setAttribute("name", id);
inputElt.style.marginRight = "5px";
return inputElt;
}
var contenu = document.getElementById("contenu");
// Parcours de la liste des liens et ajout d'un élément au DOM pour chaque lien
listeLiens.forEach(function (lien) {
var elementLien = creerElementLien(lien);
contenu.appendChild(elementLien);
});
//Création et positionnement du bouton
var boutonElt = document.createElement("button");
boutonElt.textContent = "Ajouter un lien";
var pElt = document.createElement("p"); // Crée un paragraphe pour contenir boutonElt
pElt.appendChild(boutonElt);
document.body.insertBefore(pElt, contenu);
//Ajout évènement click sur boutonElt
boutonElt.addEventListener("click", function () {
boutonElt.style.visibility = "hidden";
//Création du formulaire
var form = document.createElement("form");
//Création des éléments du formulaire
var inputAuteurElt = creerInputElement("Entrez votre nom", "auteur");
var inputTitreElt = creerInputElement("Entrez le titre du lien", "titre");
var inputUrlElt = creerInputElement("Entrez l'URL du lien", "url");
//Création du type submit sans la fonction
var inputSubmitElt = document.createElement("input");
inputSubmitElt.setAttribute("type", "submit");
inputSubmitElt.setAttribute("value", "Ajouter");
//Insertion des éléments dans le formulaire
form.appendChild(inputAuteurElt);
form.appendChild(inputTitreElt);
form.appendChild(inputUrlElt);
form.appendChild(inputSubmitElt);
//Insertion du formulaire dans pElt
pElt.insertBefore(form, boutonElt)
//Ajout évènement de type submit sur le formulaire
form.addEventListener("submit", function (e) {
var inputUrlEltValeur = form.elements.url.value;
if ((inputUrlEltValeur.indexOf("http://") === -1) || (inputUrlEltValeur.indexOf("https://") === -1)) {
inputUrlEltValeur = "http://" + inputUrlEltValeur;
}
//Crée objet lien
var lienAjoute = {
titre: form.elements.titre.value
, url: inputUrlEltValeur
, auteur: form.elements.auteur.value
};
//Déclaration du nouveau lien à ajouter
var nouveauLien = creerElementLien(lienAjoute);
//ajout du lien direct
// Insertion du nouveau lien
var contenu = document.getElementById("contenu");
contenu.appendChild(nouveauLien) ;
ajaxPost(" https://oc-jswebsrv.herokuapp.com/api/lien", lienAjoute, function (reponse) {}, true
);
ajaxGet("https://oc-jswebsrv.herokuapp.com/api/liens", function (reponse) {
// Transforme la réponse en tableau d'objets JavaScript
var results = JSON.parse(reponse);
var contenu = document.getElementById("contenu");
// Parcours de la liste des liens et ajout d'un élément au DOM pour chaque lien
var lienRenvoye = {
titre: results.titre
, url: results.url
, auteur: results.auteur
};
for (i= 0;i<= results.length; i++) {
lienRenvoye.forEach(function (lienRenvoye) {
var elementLien1 = creerElementLien(results);
contenu.appendChild(elementLien1);
});
console.log(elementLien1);
}
//var nouveauLienrenvoye = creerElementLien(lienRenvoye);
//var contenu = document.getElementById("contenu");
//contenu.appendChild(nouveauLienrenvoye);
});
// sessionStorage.setItem("Liens",results);
form.style.visibility = "hidden";
boutonElt.style.visibility = "visible";
//Message de confirmation
var messageElt = document.createElement("p");
messageElt.textContent = "Le lien \"" + lienAjoute.titre + "\" a bien été ajouté.";
pElt.insertBefore(messageElt, boutonElt);
// Suppresion du message
setTimeout(function () {
pElt.removeChild(messageElt);
}, 2000);
e.preventDefault(); // Annulation d'envoi des données
});
});
// Vérification de l'existence d'une donnée enregistrée auparavant
// (ce ne sera le cas que si la page a été rafraîchie)
if (sessionStorage.getItem("autosave")) {
// Restauration du contenu du champ
nouveauLienrenvoye = sessionStorage.getItem("autosave");
}
// Écoute des changements de valeur du champ
nouveauLienrenvoye.addEventListener("change", function () {
// Enregistrement de la saisie utilisateur dans le stockage de session
sessionStorage.setItem("autosave", nouveauLienrenvoye);
}); |
Partager