Creating a main menu with createButton(), adds a margin to the grid. Why?
Submitted by Adrian2589 on Tue, 09/07/2021 - 16:18
Forums:
Hi,
I'm new at coding in H5P, and I'm trying to make my own modifications of H5P-FindTheWords in order to understand its code better.
I'm facing this issue, and I don't know how to fix it... I'm using createButton() function in order to create a main menu, but as soon as I click on Start Game, a margin is added between the grid and the button:
I've also noticed that each time I make web browser smaller or larger, the grid starts removing the margin until it's in the correct position. Why is this happening?
My code:
FindTheWords.prototype.registerDOMElements = function () { const that = this; this.$playArea = $('<div />', { class: 'h5p-play-area' }); this.$taskDescription = $('<div />', { class: 'h5p-task-description', html: this.options.taskDescription, tabIndex: 0, }); // timer part this.$timer = $('<div/>', { class: 'time-status', tabindex: 0, html: '<span role="term" ><em class="fa fa-clock-o" ></em>' + this.options.l10n.timeSpent + '</span >:' + '<span role="definition" class="h5p-time-spent" >0:00</span>' }); this.timer = new FindTheWords.Timer(this.$timer.find('.h5p-time-spent')); // counter part const counterText = that.options.l10n.found .replace('@found', '<span class="h5p-counter">0</span>') .replace('@totalWords', '<span><strong>' + this.vocabulary.words.length + '</strong></span>'); this.$counter = $('<div/>', { class: 'counter-status', tabindex: 0, html: '<div role="term"><span role="definition">' + counterText + '</span></div>' }); this.counter = new FindTheWords.Counter(this.$counter.find('.h5p-counter')); // feedback plus progressBar this.$feedback = $('<div/>', { class: 'feedback-element', tabindex: '0' }); this.$progressBar = UI.createScoreBar(this.vocabulary.words.length, 'scoreBarLabel'); // buttons section this.$startGameButton = this.createButton('start game', 'play', this.options.l10n.startGame, this.startGame); //button for the menu that.$submitButton = that.createButton('submit', 'check', that.options.l10n.check, that.gameSubmitted); if (this.options.behaviour.enableShowSolution) { this.$showSolutionButton = this.createButton('solution', 'eye', this.options.l10n.showSolution, that.showSolutions); } if (this.options.behaviour.enableRetry) { this.$retryButton = this.createButton('retry', 'undo', this.options.l10n.tryAgain, that.resetTask); } FindTheWords.prototype.attach = function ($container) { this.$container = $container.addClass('h5p-find-the-words'); this.triggerXAPI('attempted'); if (this.grid) { this.calculateElementSize(); this.grid.appendTo(this.$puzzleContainer, this.elementSize); this.$puzzleContainer.appendTo(this.$gameContainer); if (this.options.behaviour.showVocabulary) { this.setVocabularyMode(); this.vocabulary.appendTo(this.$vocabularyContainer, this.isVocModeBlock); this.$vocabularyContainer.appendTo(this.$gameContainer); } } this.$timer.appendTo(this.$statusContainer); this.$counter.appendTo(this.$statusContainer); this.$feedback.appendTo(this.$feedbackContainer); this.$progressBar.appendTo(this.$feedbackContainer); this.$container.append(this.$startGameButton); //Here I add startGameButton to the container }; FindTheWords.prototype.startGame = function () { $(this.$startGameButton).remove(); this.$submitButton.appendTo(this.$buttonContainer); //append status and feedback and button containers to footer this.$statusContainer.appendTo(this.$footerContainer); this.$feedbackContainer.appendTo(this.$footerContainer); this.$buttonContainer.appendTo(this.$footerContainer); //append description , cards and footer to main container. this.$taskDescription.appendTo(this.$playArea); this.$gameContainer.appendTo(this.$playArea); this.$footerContainer.appendTo(this.$playArea); this.$playArea.appendTo(this.$container); this.grid.drawGrid(MARGIN); this.registerGridEvents(); this.trigger('resize'); }
If anyone can help me with this, it would be appreciated!
Thanks in advance!
otacke
Tue, 09/07/2021 - 20:03
Permalink
Hi!I guess you'd have to ask
Hi!
I guess you'd have to ask the author of that content type for the "why". It's Jithin Thankachan (not a member of the H5P core team), but I think he cannot contribute to H5P anymore.
Find the Words in fact has a couple of quirks, maybe you have come across one of them.
Best,
Oliver