JSDOC, Tests Ref Behavior, VF

This commit is contained in:
Annie Rheaume committed 2023-12-17 17:21:13 -05:00
1 parent 77c7a3e919
commit 97ba006192
1 file changed
+48 -13
+48 -13
View File
@@ -1,7 +1,6 @@
/* /*
TP1 - Dessins d'Enfants TP1 - Dessins d'Enfants
Version 1 (complète) Date: 17/12/2023
Date: 16/12/2023
*/ */
import { import {
@@ -11,24 +10,39 @@ import {
Circle, Circle,
Point } from " https://cdn.jsdelivr.net/gh/didiercrunch/cours-420-301-ah@tp1.1/modules-examples/mod.js"; Point } from " https://cdn.jsdelivr.net/gh/didiercrunch/cours-420-301-ah@tp1.1/modules-examples/mod.js";
// VARIABLES PORTÉE GLOBALE // VARIABLES PORTÉE GLOBALE
const svg = document.getElementById("canvas"); const svg = document.getElementById("canvas");
const table = document.getElementById("table-body"); const table = document.getElementById("table-body");
const STEP = 10; const STEP = 10; // 10 pixels
let circles = []; let circles = [];
// FONCTIONS LOGIQUE APPLICATION // FONCTIONS DE LA LOGIQUE DE L'APPLICATION
/**
* Vide la liste circles de tous ses éléments.
*/
function emptyCircles(){ function emptyCircles(){
circles.splice(0, circles.length); circles.splice(0, circles.length);
} }
/**
* Créé et ajoute un cercle dans la liste circles selon
* la position et le rayon spécicifiés
* @param {Number} x (coordonnée du centre en x)
* @param {Number} y (coordonnée du centre en y)
* @param {Number} r (rayon du cercle)
* @returns {Circle}
*/
function addCircle(x, y, r){ function addCircle(x, y, r){
const c = new Circle(new Point(x,y), r, Date.now()); const c = new Circle(new Point(x,y), r, Date.now());
circles.push(c); circles.push(c);
return c; return c;
} }
/**
* Fait le rendu de l'image SVG et du tableau des cercles créés
*/
function render(){ function render(){
populateTable(table,circles, populateTable(table,circles,
pointToString, pointToString,
@@ -40,6 +54,12 @@ function render(){
drawCircles(svg,circles); drawCircles(svg,circles);
} }
/**
* Récupère l'ID d'un cercle dans le 1er élément HTML <td> de
* l'élément HTML <tr> parent d'un icône visé par un événement 'clic'.
* @param {EVENT} event
* @returns {Number} id d'un cercle
*/
function retrieveCircleId(event){ function retrieveCircleId(event){
return Number(event.target. return Number(event.target.
parentElement. parentElement.
@@ -47,16 +67,25 @@ function retrieveCircleId(event){
firstElementChild.textContent); firstElementChild.textContent);
} }
/**
* Recherche un cercle selon son ID dans la liste circles.
* @param {Number} circleId
* @returns {Circle}
*/
function getCircleById(circleId){ function getCircleById(circleId){
console.log(circleId)
for (const circle of circles){ for (const circle of circles){
console.log(circle.getId())
if(circle.getId() === circleId){ if(circle.getId() === circleId){
return circle; return circle;
} }
} }
} }
/**
* Modifie la position en x ou en y du centre du cercle d'un nombre
* donné de pixels (step) selon la direction spécifiée par l'icône 'flèche'.
* @param {Event} event
* @param {Number} step
*/
function moveCircle(event, step){ function moveCircle(event, step){
const d = retrieveArrowDirection(event); const d = retrieveArrowDirection(event);
@@ -72,6 +101,12 @@ function moveCircle(event, step){
} }
} }
/**
* Récupère la direction spécifiée par la flèche dans la
* classe de l'élément HTML visé
* @param {Event} event
* @returns {String}
*/
function retrieveArrowDirection(event){ function retrieveArrowDirection(event){
const directions = ['up', 'down', 'left', 'right']; const directions = ['up', 'down', 'left', 'right'];
const arrowSpec = event.target.className; const arrowSpec = event.target.className;
@@ -83,6 +118,11 @@ function retrieveArrowDirection(event){
} }
} }
/**
* Modifie la couleur d'un cercle sur une échelle de gris
* en sélectionnant un code RGB de façon aléatoire.
* @param {EVENT} event
*/
function changeCircleColor(event){ function changeCircleColor(event){
const c = getCircleById(retrieveCircleId(event)); const c = getCircleById(retrieveCircleId(event));
@@ -92,9 +132,9 @@ function changeCircleColor(event){
// GESTIONNAIRES D'ÉVÉNEMENTS CRÉÉS dans main.js // GESTIONNAIRES D'ÉVÉNEMENTS CRÉÉS dans main.js
document.getElementById("draw-simple-circle").addEventListener("click", simpleCercleBtn); document.getElementById("draw-simple-circle").addEventListener("click", simpleCircleBtn);
function simpleCercleBtn(){ function simpleCircleBtn(){
emptyCircles(); emptyCircles();
addCircle(250,250,50); addCircle(250,250,50);
render(); render();
@@ -127,12 +167,7 @@ function reverseOrderBtn(){
// GESTIONNAIRES D'ÉVÉNEMENTS CRÉÉS PAR LA FONCTION IMPORTÉE populateTable() // GESTIONNAIRES D'ÉVÉNEMENTS CRÉÉS PAR LA FONCTION IMPORTÉE populateTable()
// Dans populateTable: lors de la création du td : pointToString(circle.getCenter())
// La méthode getCenter() est donc appelée pour chaque cercle de circles lors du rendu
// et c'est ce qui donne sa valeur au paramètre center
function pointToString(center){ function pointToString(center){
console.log('Dans pointToString');
console.log(center);
return `(${center.getX()}, ${center.getY()})`; return `(${center.getX()}, ${center.getY()})`;
} }