JSdocs added

This commit is contained in:
Mal 2023-01-19 22:32:04 +01:00
parent 288be2eac0
commit 09c5b04fac
1 changed files with 59 additions and 0 deletions

View File

@ -1,3 +1,6 @@
/**
* @param {number} duration
*/
const Frame = function (duration) { const Frame = function (duration) {
this.layers = []; this.layers = [];
this.duration = duration; this.duration = duration;
@ -18,6 +21,9 @@ COLOR_CLASS[LED_COLOR.RED] = 'led-red';
COLOR_CLASS[LED_COLOR.GREEN] = 'led-green'; COLOR_CLASS[LED_COLOR.GREEN] = 'led-green';
COLOR_CLASS[LED_COLOR.BLUE] = 'led-blue'; COLOR_CLASS[LED_COLOR.BLUE] = 'led-blue';
/**
* @param {string} id
*/
const Selector = function (id) { const Selector = function (id) {
this.items = []; this.items = [];
this.currentItem = 0; this.currentItem = 0;
@ -45,6 +51,9 @@ const Selector = function (id) {
this.onSelect = function () {}; this.onSelect = function () {};
/**
* @param {number} index
*/
this.selectItem = function (index) { this.selectItem = function (index) {
this.htmlItems.hidden = true; this.htmlItems.hidden = true;
@ -58,11 +67,20 @@ const Selector = function (id) {
}; };
} }
/**
* @param {number} width
* @param {number} depth
* @param {number} height
*/
const FrameFactory = function (width, depth, height) { const FrameFactory = function (width, depth, height) {
this.width = width; this.width = width;
this.depth = depth; this.depth = depth;
this.height = height; this.height = height;
/**
* @param {number} duration
* @returns Frame
*/
this.getFrame = function (duration) { this.getFrame = function (duration) {
const frame = new Frame(duration); const frame = new Frame(duration);
@ -80,6 +98,11 @@ const FrameFactory = function (width, depth, height) {
} }
} }
/**
* @param {number} width
* @param {number} depth
* @param {number} height
*/
const Cube = function (width, depth, height) { const Cube = function (width, depth, height) {
this.width = width; this.width = width;
this.depth = depth; this.depth = depth;
@ -92,26 +115,43 @@ const Cube = function (width, depth, height) {
this._setupHtml(); this._setupHtml();
} }
/**
* @param {number} frameIndex
*/
this.setCurrentFrame = function (frameIndex) { this.setCurrentFrame = function (frameIndex) {
this.currentFrame = frameIndex; this.currentFrame = frameIndex;
this._loadFrame(frameIndex); this._loadFrame(frameIndex);
} }
/**
* @param {Frame} frame
*/
this.addFrame = function (frame) { this.addFrame = function (frame) {
this.frames.push(frame); this.frames.push(frame);
} }
/**
* @param {number} frameIndex
*/
this.deleteFrame = function (frameIndex) { this.deleteFrame = function (frameIndex) {
this.frames = this.frames.slice(0, frameIndex).concat( this.frames = this.frames.slice(0, frameIndex).concat(
this.frames.slice(frameIndex + 1) this.frames.slice(frameIndex + 1)
); );
} }
/**
* @param {number} layerIndex
* @param {number} ledIndex
*/
this.switchLed = function (layerIndex, ledIndex) { this.switchLed = function (layerIndex, ledIndex) {
this.frames[this.currentFrame].layers[layerIndex][ledIndex] = !this.frames[this.currentFrame].layers[layerIndex][ledIndex]; this.frames[this.currentFrame].layers[layerIndex][ledIndex] = !this.frames[this.currentFrame].layers[layerIndex][ledIndex];
} }
/**
* @param {number} layerIndex
* @param {boolean} state
*/
this.setLayer = function (layerIndex, state) { this.setLayer = function (layerIndex, state) {
for (let index = 0; index < this.width * this.depth; index++) { for (let index = 0; index < this.width * this.depth; index++) {
this.frames[this.currentFrame].layers[layerIndex][index] = state; this.frames[this.currentFrame].layers[layerIndex][index] = state;
@ -124,6 +164,9 @@ const Cube = function (width, depth, height) {
} }
} }
/**
* @param {LED_COLOR} color
*/
this.setLedColor = function (color) { this.setLedColor = function (color) {
for (const layer of this.html.children) { for (const layer of this.html.children) {
for (const row of layer.children) { for (const row of layer.children) {
@ -138,6 +181,9 @@ const Cube = function (width, depth, height) {
} }
} }
/**
* @param {number} frameIndex
*/
this._loadFrame = function (frameIndex) { this._loadFrame = function (frameIndex) {
for (let layer = 0; layer < this.frames[frameIndex].layers.length; layer++) { for (let layer = 0; layer < this.frames[frameIndex].layers.length; layer++) {
for (let row = 0; row < this.depth; row++) { for (let row = 0; row < this.depth; row++) {
@ -197,6 +243,10 @@ const Cube = function (width, depth, height) {
} }
} }
/**
* @param {HTMLElement} ledHtml
* @param {boolean} state
*/
this._setLed = function (ledHtml, state) { this._setLed = function (ledHtml, state) {
if (state) { if (state) {
ledHtml.classList.remove('led-off'); ledHtml.classList.remove('led-off');
@ -206,6 +256,9 @@ const Cube = function (width, depth, height) {
} }
} }
/**
* @param {string} id
*/
const FrameMenu = function (id) { const FrameMenu = function (id) {
this.html = document.getElementById(id); this.html = document.getElementById(id);
this.htmlSlider = this.html.querySelector('#frame-slider'); this.htmlSlider = this.html.querySelector('#frame-slider');
@ -302,11 +355,17 @@ const FrameMenu = function (id) {
} }
) )
/**
* @param {number} frameIndex
*/
this.slideToFrame = function (frameIndex) { this.slideToFrame = function (frameIndex) {
this.htmlSlider.value = frameIndex + 1; this.htmlSlider.value = frameIndex + 1;
this._updateFramePosition(); this._updateFramePosition();
} }
/**
* @param {number} frameIndex
*/
this.setDuration = function (duration) { this.setDuration = function (duration) {
this.htmlInputDuration.value = duration; this.htmlInputDuration.value = duration;
} }