diff --git a/srcs/frontend/src/app.js b/srcs/frontend/src/app.js index 0d5a39e..718acfa 100644 --- a/srcs/frontend/src/app.js +++ b/srcs/frontend/src/app.js @@ -1,138 +1,13 @@ +import {Element, MenuElement} from "./element.js"; +import {Grid} from "./grid.js"; +import {fenetre, LoginWindow} from "./windows.js"; function direBonjour() { alert("clicked !"); } -class Element { - constructor(id) { - this.element = document.getElementById(id); - this.element.addEventListener("mouseenter", () => { - console.log("La souris est sur le bouton " + id + " !"); - }); - this.element.addEventListener("mouseleave", () => { - console.log("La souris a quitté le bouton " + id + "."); - }); - } -} - -class MenuElement extends Element { - constructor(id) { - super(id); - this.element.addEventListener("click", () => { - console.log("Le bouton " + id + " a été cliqué !"); - }); - this.element.addEventListener("mouseenter", () => { - this.element.style.backgroundColor = "lightgrey"; - this.element.style.fontSize = "1.2em"; - this.element.style.cursor = "move"; - }); - this.element.addEventListener("mouseleave", () => { - this.element.style.backgroundColor = ""; - this.element.style.fontSize = ""; - this.element.style.cursor = ""; - this.element.getAnimations().forEach(animation => animation.cancel()); - }); - } -} -class Grid { - constructor(color = '#143a0fff', zIndex = 1, gridSize = 25, speed = 0.35, sens = "normal") { - // Initialisation des propriétés de l'instance - this.canvas = document.createElement('canvas'); - this.ctx = this.canvas.getContext('2d'); - this.offset = 0; - this.gridSize = gridSize; - this.speed = speed; - this.color = color; - - // Configuration du style - document.body.appendChild(this.canvas); - this.canvas.style.position = 'fixed'; - this.canvas.style.top = '0'; - this.canvas.style.left = '0'; - this.canvas.style.zIndex = zIndex; - this.canvas.style.pointerEvents = 'none'; // Pour ne pas bloquer les clics sur les boutons - - // Gestion du redimensionnement - window.addEventListener('resize', () => this.resize()); - this.resize(); - this.draw(sens); - } - - resize() { - this.canvas.width = window.innerWidth; - this.canvas.height = window.innerHeight; - } - - draw(sens = "normal") { - this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); - this.ctx.strokeStyle = this.color; - this.ctx.lineWidth = 1; - - // Mise à jour de l'offset - this.offset = (this.offset + this.speed) % this.gridSize; - if (sens === "normal") { - // Lignes verticales - for (let x = this.offset; x < this.canvas.width; x += this.gridSize) { - this.ctx.beginPath(); - this.ctx.moveTo(x, 0); - this.ctx.lineTo(x, this.canvas.height); - this.ctx.stroke(); - } - - // Lignes horizontales - for (let y = this.offset; y < this.canvas.height; y += this.gridSize) { - this.ctx.beginPath(); - this.ctx.moveTo(0, y); - this.ctx.lineTo(this.canvas.width, y); - this.ctx.stroke(); - } - } - //pareillement pour le sens reverse - else if (sens === "reverse") { - // Lignes verticales - for (let x = this.gridSize - this.offset; x < this.canvas.width; x += this.gridSize) { - this.ctx.beginPath(); - this.ctx.moveTo(x, 0); - this.ctx.lineTo(x, this.canvas.height); - this.ctx.stroke(); - } - // Lignes horizontales - for (let y = this.gridSize - this.offset; y < this.canvas.height; y += this.gridSize) { - this.ctx.beginPath(); - this.ctx.moveTo(0, y); - this.ctx.lineTo(this.canvas.width, y); - this.ctx.stroke(); - } - } - // Appel récursif pour l'animation - requestAnimationFrame(() => this.draw(sens)); - } - -} - -class fenetre{ - constructor(width = 300, height = 150) { - this.width = width; - this.height = height; - this.main = document.createElement("div"); - this.main.style.width = this.width + "px"; - this.main.style.height = this.height + "px"; - this.main.style.position = "absolute"; - this.main.style.top = "50%"; - this.main.style.left = "50%"; - this.main.style.transform = "translate(-50%, -50%)"; - this.main.style.backgroundColor = '#000000ff'; - this.main.style.border = "1.4mm ridge white"; - this.body = document.createElement("div"); - this.body.style.width = "50%"; - this.body.style.height = "50%"; - this.body.style.backgroundColor = '#faeaea'; - document.body.appendChild(this.main); - this.main.appendChild(this.body); - } -} const menuElement = new Element("menu"); const loginElement = new MenuElement("login"); @@ -145,4 +20,9 @@ const gridgreen = new Grid('#143a0fff', -1, 25, 0.12, "normal"); const gridReverseRed = new Grid('#3a0f0f75', -1, 12.5, 0.09, "reverse"); //Ajouter les fenetres -const loginWindow = new fenetre(); \ No newline at end of file +const test = new fenetre(); +const loginWindow = new LoginWindow(); + +document.getElementById("login").addEventListener("click", () => { + loginWindow.show(); +}); diff --git a/srcs/frontend/src/element.js b/srcs/frontend/src/element.js new file mode 100644 index 0000000..c4c7442 --- /dev/null +++ b/srcs/frontend/src/element.js @@ -0,0 +1,31 @@ +export class Element { + constructor(id) { + this.element = document.getElementById(id); + this.element.addEventListener("mouseenter", () => { + console.log("La souris est sur le bouton " + id + " !"); + }); + this.element.addEventListener("mouseleave", () => { + console.log("La souris a quitté le bouton " + id + "."); + }); + } +} + +export class MenuElement extends Element { + constructor(id) { + super(id); + this.element.addEventListener("click", () => { + console.log("Le bouton " + id + " a été cliqué !"); + }); + this.element.addEventListener("mouseenter", () => { + this.element.style.backgroundColor = "lightgrey"; + this.element.style.fontSize = "1.2em"; + this.element.style.cursor = "move"; + }); + this.element.addEventListener("mouseleave", () => { + this.element.style.backgroundColor = ""; + this.element.style.fontSize = ""; + this.element.style.cursor = ""; + this.element.getAnimations().forEach(animation => animation.cancel()); + }); + } +} \ No newline at end of file diff --git a/srcs/frontend/src/grid.js b/srcs/frontend/src/grid.js new file mode 100644 index 0000000..dc3e876 --- /dev/null +++ b/srcs/frontend/src/grid.js @@ -0,0 +1,75 @@ +export class Grid { + constructor(color = '#143a0fff', zIndex = 1, gridSize = 25, speed = 0.35, sens = "normal") { + // Initialisation des propriétés de l'instance + this.canvas = document.createElement('canvas'); + this.ctx = this.canvas.getContext('2d'); + this.offset = 0; + this.gridSize = gridSize; + this.speed = speed; + this.color = color; + + // Configuration du style + document.body.appendChild(this.canvas); + this.canvas.style.position = 'fixed'; + this.canvas.style.top = '0'; + this.canvas.style.left = '0'; + this.canvas.style.zIndex = zIndex; + this.canvas.style.pointerEvents = 'none'; // Pour ne pas bloquer les clics sur les boutons + + // Gestion du redimensionnement + window.addEventListener('resize', () => this.resize()); + this.resize(); + this.draw(sens); + } + + resize() { + this.canvas.width = window.innerWidth; + this.canvas.height = window.innerHeight; + } + + draw(sens = "normal") { + this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); + this.ctx.strokeStyle = this.color; + this.ctx.lineWidth = 1; + + // Mise à jour de l'offset + this.offset = (this.offset + this.speed) % this.gridSize; + if (sens === "normal") { + // Lignes verticales + for (let x = this.offset; x < this.canvas.width; x += this.gridSize) { + this.ctx.beginPath(); + this.ctx.moveTo(x, 0); + this.ctx.lineTo(x, this.canvas.height); + this.ctx.stroke(); + } + + // Lignes horizontales + for (let y = this.offset; y < this.canvas.height; y += this.gridSize) { + this.ctx.beginPath(); + this.ctx.moveTo(0, y); + this.ctx.lineTo(this.canvas.width, y); + this.ctx.stroke(); + } + } + //pareillement pour le sens reverse + else if (sens === "reverse") { + // Lignes verticales + for (let x = this.gridSize - this.offset; x < this.canvas.width; x += this.gridSize) { + this.ctx.beginPath(); + this.ctx.moveTo(x, 0); + this.ctx.lineTo(x, this.canvas.height); + this.ctx.stroke(); + } + // Lignes horizontales + for (let y = this.gridSize - this.offset; y < this.canvas.height; y += this.gridSize) { + this.ctx.beginPath(); + this.ctx.moveTo(0, y); + this.ctx.lineTo(this.canvas.width, y); + this.ctx.stroke(); + } + } + // Appel récursif pour l'animation + requestAnimationFrame(() => this.draw(sens)); + } + +} \ No newline at end of file diff --git a/srcs/frontend/src/index.html b/srcs/frontend/src/index.html index 9b43ecd..108c931 100644 --- a/srcs/frontend/src/index.html +++ b/srcs/frontend/src/index.html @@ -14,13 +14,10 @@
- + - +