Path: blob/main/public/games/files/garbage-collector/js/views/settings-view.js
1036 views
/*globals define*/1define([2'config/settings',3'text!./../../templates/settings-view.html'4], function( Settings, settingsTemplate ) {5'use strict';67function checkboxListener( event ) {8var id = event.target.id;9Settings[ id ] = event.target.checked;10}1112function toggleSettings() {13var settingsEl = document.querySelector( '.settings' );14if ( settingsEl.style.display === '' ) {15settingsEl.style.display = 'inline';16} else {17settingsEl.style.display = '';18}19}2021function SettingsView( el ) {22this.el = document.querySelector( el );23if ( !this.el ) {24this.el = document.createElement( 'div' );25this.el.id = 'settings-view';26this.el.classList.add( 'settings-view' );27}2829this.template = settingsTemplate;30this.initialize();3132this.toggleBtn = null;33}3435SettingsView.prototype.initialize = function() {36this.el.innerHTML = this.template;3738Settings.keys.map(function( key ) {39var element = this.el.querySelector( '#' + key );40element.addEventListener( 'click', checkboxListener );41element.checked = Settings[ key ];42}.bind( this ));4344this.toggleBtn = this.el.querySelector( '.toggle-settings-btn' );45this.toggleBtn.addEventListener( 'click', toggleSettings );46};4748SettingsView.prototype.remove = function() {49Settings.keys.map(function( key ) {50var element = this.el.querySelector( '#' + key );51element.removeEventListener( 'click', checkboxListener );52}.bind( this ));53this.toggleBtn.removeEventListener( 'click', toggleSettings );5455this.el.innerHTML = '';5657if ( this.el.parentElement ) {58this.el.parentElement.removeChild( this.el );59}60};6162return SettingsView;63});646566