diff --git a/js/uhr.js b/js/uhr.js index d08e86d..f0dc379 100644 --- a/js/uhr.js +++ b/js/uhr.js @@ -19,16 +19,13 @@ along with this program. If not, see . "languages": [], "themes": [], registerLanguage: function registerLanguage(code, language) { - var alreadyExists = uhrGlobals.languages.reduce(function (exists, element) { - if (exists) { - return true; - } + var alreadyExists = uhrGlobals.languages.some(function (element) { if (code === element.code) { console.error("Error: Language code '" + code + "' cannot be registered for language '" + language.language + "' because it is already registered for language '" + element.language + "'!"); return true; } return false; - }, false); + }); if (!alreadyExists) { language.code = code; uhrGlobals.languages.push(language); @@ -37,18 +34,17 @@ along with this program. If not, see . }; // auto-detect themes - var styleSheets = $('link[rel=stylesheet]'); - for (var i = 0; i < styleSheets.length; i++) { - var styleSheet = $(styleSheets[i]); - var styleClass = styleSheet.attr('data-class'); - if (styleClass !== undefined) { - var name = styleSheet.attr('data-name'); - if (name === undefined) { - name = styleClass; - } - uhrGlobals.themes.push({'styleClass': styleClass, 'name': name}); - } - } + $('link[rel=stylesheet]').each(function (index, item) { + var styleSheet = $(item); + var styleClass = styleSheet.attr('data-class'); + if (styleClass !== undefined) { + var name = styleSheet.attr('data-name'); + if (name === undefined) { + name = styleClass; + } + uhrGlobals.themes.push({'styleClass': styleClass, 'name': name}); + } + }); // fall-back if no theme was included if (uhrGlobals.themes.length === 0) { uhrGlobals.themes.push({}); @@ -205,14 +201,9 @@ along with this program. If not, see . if (selectedLanguage === undefined || uhr.options.force) { selectedLanguage = uhr.options.language; } - var found = false; - for (var i = 0; i < uhrGlobals.languages.length; i++) { - var code = uhrGlobals.languages[i].code; - if (selectedLanguage === code) { - found = true; - break; - } - } + var found = uhrGlobals.languages.some(function (item) { + return selectedLanguage === item.code; + }); if (!found) { var fallback; if (uhrGlobals.languages.length > 0) { @@ -236,14 +227,9 @@ along with this program. If not, see . if (selectedTheme === undefined || uhr.options.force) { selectedTheme = uhr.options.theme; } - found = false; - for (var i = 0; i < uhrGlobals.themes.length; i++) { - var styleClass = uhrGlobals.themes[i].styleClass; - if (selectedTheme === styleClass) { - found = true; - break; - } - } + found = uhrGlobals.themes.some(function (item) { + return selectedTheme === item.styleClass; + }); if (!found) { var fallback = uhrGlobals.themes[0].styleClass; console.warn("Theme " + selectedTheme + " not found! Using fallback: " + fallback); @@ -377,15 +363,14 @@ along with this program. If not, see . var letters = this.layout._parsed; this.renderarea.fadeOut('fast', function () { renderer.renderarea.empty(); - for (var y = 0; y < letters.length; y++) { - for (var x = 0; x < letters[y].length; x++) { - var letter = letters[y][x]; - renderer.renderarea.append(letter.toString()); - } - if (y < letters.length - 1) { - renderer.renderarea.append('
'); - } - } + letters.forEach(function(line, index, array) { + line.forEach(function (letter) { + renderer.renderarea.append(letter.toString()); + }); + if (index < array.length - 1) { + renderer.renderarea.append('
'); + } + }); if (typeof beforeshow === 'function') { beforeshow(); } @@ -396,47 +381,42 @@ along with this program. If not, see . this.layout = layout; this._parseArrayOrObject = function (letters, styleClass, input) { if (Array.isArray(input)) { - for (var i = 0; i < input.length; i++) { - this._parseObject(letters, styleClass, input[i]); - } + input.forEach(function (item) { + this._parseObject(letters, styleClass, item); + }, this); } else { this._parseObject(letters, styleClass, input); } - } - this._parseObject = function(letters, styleClass, object) { - for (var line in object) { - if (object.hasOwnProperty(line)) { - var highlightLetters = object[line]; - for (var i = 0; i < highlightLetters.length; i++) { - var x = highlightLetters[i] - 1; - letters[line - 1][x].addStyle(styleClass); - } - } - } - } + }; + this._parseObject = function (letters, styleClass, object) { + Object.keys(object).forEach(function (y) { + var highlightLetters = object[y]; + highlightLetters.forEach(function (x) { + letters[y - 1][x - 1].addStyle(styleClass); + }); + }); + }; this._parseTimeDefinition = function(letters, styleClass, definition) { - for (var listString in definition) { - if (definition.hasOwnProperty(listString)) { - var array = listString.split(','); - var highlightLetters = definition[listString]; - for (var index = 0; index < array.length; index++) { - this._parseArrayOrObject(letters, styleClass + array[index], highlightLetters); - } - } - } - } + var renderer = this; + Object.keys(definition).forEach(function (listString) { + var array = listString.split(','); + var highlightLetters = definition[listString]; + array.forEach(function (item) { + renderer._parseArrayOrObject(letters, styleClass + item, highlightLetters); + }); + }); + }; } _UhrRendererV2Delegate.prototype.parse = function() { var letters = []; - for (var i = 0; i < this.layout.letters.length; i++) { - var line = []; - var string = this.layout.letters[i]; - for (var c = 0; c < string.length; c++) { - var character = new Letter(string[c]); - line.push(character); - } - letters.push(line); - } + this.layout.letters.forEach(function(string) { + var line = []; + for (var c = 0; c < string.length; c++) { + var character = new Letter(string[c]); + line.push(character); + } + letters.push(line); + }); this._parseArrayOrObject(letters, 'on', this.layout.permanent); this._parseTimeDefinition(letters, 'minute', this.layout.minutes); this._parseTimeDefinition(letters, 'hour', this.layout.hours);