Added some documentation comments on the main js file to help understand the code

This commit is contained in:
Gustavo Henrique Santos Souza de Miranda 2024-08-05 15:37:59 -03:00
parent 1bdee540e0
commit d63de2dd4e
1 changed files with 83 additions and 3 deletions

View File

@ -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{ class PhotoViewAPP{
/**
* @constructs
* @description Constructor da classe que obtem dados do Canvas
*/
constructor(){ constructor(){
this.context = new PhotoViewContext() this.context = new PhotoViewContext()
this.canvas = this.setCanvasFromID() this.canvas = this.setCanvasFromID()
@ -6,58 +22,122 @@ class PhotoViewAPP{
this.canvasCRect = this.setCanvasCRect() this.canvasCRect = this.setCanvasCRect()
console.log(this.context.getstate()) 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() { setCanvasFromID() {
return document.querySelector('#PhotoView') return document.querySelector('#PhotoView')
} }
/**
* @description Define o contexto do canvas
*/
setCanvasContext(){ setCanvasContext(){
this.canvasContext = this.canvas.getContext('2d') this.canvasContext = this.canvas.getContext('2d')
} }
/**
* @description Obtém a posição do canvas na página index.html
*/
setCanvasCRect(){ setCanvasCRect(){
this.canvasCRect = this.canvas.getBoundingClientRect() this.canvasCRect = this.canvas.getBoundingClientRect()
} }
/**
* @description Define o evento de onClick da tag canvas
*/
setCanvasClickEvent(){ setCanvasClickEvent(){
this.canvas.addEventListener('click',(e)=>{this.context.clickEvent(e)}) this.canvas.addEventListener('click',(e)=>{this.context.clickEvent(e)})
} }
/**
* @description Inicializa o a aplicação
*/
initalizePhotoViewApp(){ initalizePhotoViewApp(){
this.setCanvasClickEvent() this.setCanvasClickEvent()
} }
} }
/**
* @author Gustavo Henrique S. S. de Miranda
* @class
*
* @classdesc Contexto para Gerencias as telas da aplicação
*/
class PhotoViewContext{ class PhotoViewContext{
#state = null #state = null
#stateList = {} #stateList = {}
/**
* @constructs
* @param {*} state Tela Inicial a ser exibida na aplicação
*/
constructor(state){ constructor(state){
this.#state = 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){ addToStateList(state,statename){
this.#stateList[statename] = new state(); 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){ getStateByName(statename){
return this.#stateList[statename] return this.#stateList[statename]
} }
/**
*
* @returns the current view
*/
getstate(){ getstate(){
return this.#state 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{ class abstractStateClass{
#parentClass = null #parentClass = null
/**
* @constructs
*
*/
constructor(){ constructor(){
if (this.constructor == abstractStateClass){ if (this.constructor == abstractStateClass){
throw new Error("Abstract Class not should not be instatiated") 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 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{ class thumbnailView extends abstractStateClass{
constructor(){ constructor(){