From d63de2dd4ef8620c7eacf308a2a75b94c6adfbb0 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Santos Souza de Miranda Date: Mon, 5 Aug 2024 15:37:59 -0300 Subject: [PATCH] Added some documentation comments on the main js file to help understand the code --- src/photoview.js | 86 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 83 insertions(+), 3 deletions(-) diff --git a/src/photoview.js b/src/photoview.js index 890a07a..ceeddde 100644 --- a/src/photoview.js +++ b/src/photoview.js @@ -1,4 +1,20 @@ +/** + * @file Arquivo contendo a logica para a manipulação do canvas para exibição de uma galeria de fotos + * @version 0.0.1 + * @author Gustavo Henrique S. S. de Miranda + */ + +/** + * @author Gustavo Henrique S. S. de Miranda + * @class + * @classdesc Classe Geral da Aplicação contendo a base da Aplicação + * + */ class PhotoViewAPP{ + /** + * @constructs + * @description Constructor da classe que obtem dados do Canvas + */ constructor(){ this.context = new PhotoViewContext() this.canvas = this.setCanvasFromID() @@ -6,58 +22,122 @@ class PhotoViewAPP{ this.canvasCRect = this.setCanvasCRect() console.log(this.context.getstate()) } + /** + * @description Obtém o Canvas do documentos html pelo ID dado ao mesmo + * @returns Retorna O Canvas + * @todo Alterar para a propiedade this.canvas + */ setCanvasFromID() { return document.querySelector('#PhotoView') } + /** + * @description Define o contexto do canvas + */ setCanvasContext(){ this.canvasContext = this.canvas.getContext('2d') } + /** + * @description Obtém a posição do canvas na página index.html + */ setCanvasCRect(){ this.canvasCRect = this.canvas.getBoundingClientRect() } + /** + * @description Define o evento de onClick da tag canvas + */ setCanvasClickEvent(){ this.canvas.addEventListener('click',(e)=>{this.context.clickEvent(e)}) } + /** + * @description Inicializa o a aplicação + */ initalizePhotoViewApp(){ this.setCanvasClickEvent() } } + +/** + * @author Gustavo Henrique S. S. de Miranda + * @class + * + * @classdesc Contexto para Gerencias as telas da aplicação + */ class PhotoViewContext{ #state = null #stateList = {} + /** + * @constructs + * @param {*} state Tela Inicial a ser exibida na aplicação + */ constructor(state){ this.#state = state } + /** + * + * @description Add a view to a list of views + * @param {*} state state to be added + * @param {*} statename name of the state to be added + */ addToStateList(state,statename){ this.#stateList[statename] = new state(); } + /** + * @description Gets a view on the list of views + * @param {*} statename Name of the view to be returned + * @returns The view on the list + */ getStateByName(statename){ return this.#stateList[statename] } - + /** + * + * @returns the current view + */ getstate(){ return this.#state } } - +/** + * @author Gustavo Henrique S. S. de Miranda + * @class + * @classdesc Abstract Class to be extended as a screen for the app + * @abstract + */ class abstractStateClass{ #parentClass = null + /** + * @constructs + * + */ constructor(){ if (this.constructor == abstractStateClass){ throw new Error("Abstract Class not should not be instatiated") } } - setParentClass(parentclass){ + /** + * + * @param {*} parentclass Reference of the parent class + * @description Defines a reference to the parent class to access its methods and attributes + */ + #setParentClass(parentclass){ this.#parentClass = parentclass } } + +/** + * @author Gustavo Henrique S. S. de Miranda + * @class + * @classdesc Represents a thumbnail view for the app + * @extends abstractStateClass + */ + class thumbnailView extends abstractStateClass{ constructor(){