diff --git a/js/uhr.js b/js/uhr.js index f0dc379..25f4ccc 100644 --- a/js/uhr.js +++ b/js/uhr.js @@ -205,14 +205,14 @@ along with this program. If not, see . return selectedLanguage === item.code; }); if (!found) { - var fallback; + var fallbackLanguage; if (uhrGlobals.languages.length > 0) { - fallback = uhrGlobals.languages[0].code; + fallbackLanguage = uhrGlobals.languages[0].code; } else { - fallback = ''; + fallbackLanguage = ''; } - console.warn("Language " + selectedLanguage + " not found! Using fallback: " + fallback); - selectedLanguage = fallback; + console.warn("Language '" + selectedLanguage + "' not found! Using fallback '" + fallbackLanguage + "'"); + selectedLanguage = fallbackLanguage; } languageChooser.val(selectedLanguage); uhr.options.language = ""; @@ -231,9 +231,9 @@ along with this program. If not, see . return selectedTheme === item.styleClass; }); if (!found) { - var fallback = uhrGlobals.themes[0].styleClass; - console.warn("Theme " + selectedTheme + " not found! Using fallback: " + fallback); - selectedTheme = fallback; + var fallbackTheme = uhrGlobals.themes[0].styleClass; + console.warn("Theme '" + selectedTheme + "' not found! Using fallback '" + fallbackTheme + "'"); + selectedTheme = fallbackTheme; } themeChooser.val(selectedTheme); uhr.options.theme = ""; @@ -310,7 +310,7 @@ along with this program. If not, see . var language = function language(uhr) { var matchingLanguages = uhrGlobals.languages.filter(function (element) { - return (element.code === this.options.language) + return (element.code === this.options.language); }, uhr); if (matchingLanguages.length > 0) { return matchingLanguages[0]; @@ -344,84 +344,80 @@ along with this program. If not, see . * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll. */ function UhrRenderer(layout, renderarea) { - this.layout = layout; - this.renderarea = renderarea; - } - UhrRenderer.prototype.render = function (uhr, beforeshow) { - var renderer = this; - if (this.layout._parsed === undefined) { - switch (this.layout.version) { - case 2: - var delegate = new _UhrRendererV2Delegate(this.layout); - this.layout._parsed = delegate.parse(); - break; - default: - console.warn("Unknown layout version: '" + this.layout.version + "'"); - return; - } - } - var letters = this.layout._parsed; - this.renderarea.fadeOut('fast', function () { - renderer.renderarea.empty(); - letters.forEach(function(line, index, array) { - line.forEach(function (letter) { - renderer.renderarea.append(letter.toString()); - }); - if (index < array.length - 1) { - renderer.renderarea.append('
'); + this.render = function render(uhr, beforeshow) { + if (layout.parsed === undefined) { + switch (layout.version) { + case 2: + var delegate = new _UhrRendererV2Delegate(layout); + var parsedLayout = delegate.parse(); + Object.defineProperty(layout, "parsed", {"value": parsedLayout, "writable": false, "configurable": false}); + break; + default: + console.warn("Unknown layout version: '" + layout.version + "'"); + return; } + } + var letters = layout.parsed; + renderarea.fadeOut('fast', function () { + renderarea.empty(); + letters.forEach(function (line, index, array) { + line.forEach(function (letter) { + renderarea.append(letter.toString()); + }); + if (index < array.length - 1) { + renderarea.append('
'); + } + }); + if (typeof beforeshow === 'function') { + beforeshow(); + } + renderarea.fadeIn('fast'); }); - if (typeof beforeshow === 'function') { - beforeshow(); - } - renderer.renderarea.fadeIn('fast'); - }); - }; + }; + } function _UhrRendererV2Delegate(layout) { - this.layout = layout; - this._parseArrayOrObject = function (letters, styleClass, input) { + function parseArrayOrObject(letters, styleClass, input) { if (Array.isArray(input)) { input.forEach(function (item) { - this._parseObject(letters, styleClass, item); + parseObject(letters, styleClass, item); }, this); } else { - this._parseObject(letters, styleClass, input); + parseObject(letters, styleClass, input); } - }; - this._parseObject = function (letters, styleClass, object) { + } + function parseObject(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) { - var renderer = this; + } + function parseTimeDefinition(letters, styleClass, definition) { Object.keys(definition).forEach(function (listString) { var array = listString.split(','); var highlightLetters = definition[listString]; array.forEach(function (item) { - renderer._parseArrayOrObject(letters, styleClass + item, highlightLetters); + parseArrayOrObject(letters, styleClass + item, highlightLetters); }); }); - }; + } + this.parse = function parse() { + var letters = []; + 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); + }); + parseArrayOrObject(letters, 'on', layout.permanent); + parseTimeDefinition(letters, 'minute', layout.minutes); + parseTimeDefinition(letters, 'hour', layout.hours); + return letters; + }; } - _UhrRendererV2Delegate.prototype.parse = function() { - var letters = []; - 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); - return letters; - }; /** * Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays. * @param value Der Buchstabe, der Dargestellt werden soll.