refactor: move every helper function inside the scope-limiting block in order not to pollute world

This commit is contained in:
Manuel Friedli 2014-06-28 15:53:08 +02:00
parent ffcf8fa2f2
commit 480736e877
1 changed files with 120 additions and 120 deletions

46
uhr.js
View File

@ -34,7 +34,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
if (name === undefined) { if (name === undefined) {
name = styleClass; name = styleClass;
} }
window._uhr.themes.push({'class': styleClass, 'name': name}); window._uhr.themes.push({'styleClass': styleClass, 'name': name});
} }
} }
// fall-back if no theme was included // fall-back if no theme was included
@ -46,7 +46,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
width: '100%', width: '100%',
status: 'on', status: 'on',
language: 'de_CH', language: 'de_CH',
theme: window._uhr.themes[0].class, theme: window._uhr.themes[0].styleClass,
force: false, force: false,
controls: true controls: true
}, },
@ -248,7 +248,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
var themeChooser = $('<select id="uhr-themechooser' + this._id + '"></select>'); var themeChooser = $('<select id="uhr-themechooser' + this._id + '"></select>');
for (var i = 0; i < window._uhr.themes.length; i++) { for (var i = 0; i < window._uhr.themes.length; i++) {
var theme = window._uhr.themes[i]; var theme = window._uhr.themes[i];
themeChooser.append('<option value="' + theme.class + '">' + theme.name + '</option>'); themeChooser.append('<option value="' + theme.styleClass + '">' + theme.name + '</option>');
} }
e.after(themeChooser); e.after(themeChooser);
} }
@ -297,14 +297,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
} }
var found = false; var found = false;
for (var i = 0; i < window._uhr.themes.length; i++) { for (var i = 0; i < window._uhr.themes.length; i++) {
var styleClass = window._uhr.themes[i].class; var styleClass = window._uhr.themes[i].styleClass;
if (selectedTheme == styleClass) { if (selectedTheme == styleClass) {
found = true; found = true;
break; break;
} }
} }
if (!found) { if (!found) {
var fallback = window._uhr.themes[0].class; var fallback = window._uhr.themes[0].styleClass;
console.warn("Theme " + selectedTheme + " not found! Using fallback: " + fallback); console.warn("Theme " + selectedTheme + " not found! Using fallback: " + fallback);
selectedTheme = fallback; selectedTheme = fallback;
} }
@ -313,18 +313,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
this.theme(selectedTheme); this.theme(selectedTheme);
} }
}); });
})(jQuery); /**
/**
* Hilfsklasse zum Rendern der Uhr. * Hilfsklasse zum Rendern der Uhr.
* @param layout Layout-Objekt, das gerendert werden soll. * @param layout Layout-Objekt, das gerendert werden soll.
* @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll. * @param renderarea Das jQuery-gewrappte HTML-Element, auf dem gerendert werden soll.
*/ */
function UhrRenderer(layout, renderarea) { function UhrRenderer(layout, renderarea) {
this.layout = layout; this.layout = layout;
this.renderarea = renderarea; this.renderarea = renderarea;
} }
UhrRenderer.prototype.render = function(uhr, beforeshow) { UhrRenderer.prototype.render = function(uhr, beforeshow) {
var renderer = this; var renderer = this;
if (this.layout._parsed === undefined) { if (this.layout._parsed === undefined) {
switch (this.layout.version) { switch (this.layout.version) {
@ -354,8 +352,8 @@ UhrRenderer.prototype.render = function(uhr, beforeshow) {
} }
renderer.renderarea.fadeIn('fast'); renderer.renderarea.fadeIn('fast');
}); });
}; };
function _UhrRendererV2Delegate(layout) { function _UhrRendererV2Delegate(layout) {
this.layout = layout; this.layout = layout;
this._parseArrayOrObject = function(letters, styleClass, input) { this._parseArrayOrObject = function(letters, styleClass, input) {
if (Array.isArray(input)) { if (Array.isArray(input)) {
@ -367,7 +365,7 @@ function _UhrRendererV2Delegate(layout) {
} }
} }
this._parseObject = function(letters, styleClass, object) { this._parseObject = function(letters, styleClass, object) {
for (line in object) { for (var line in object) {
if (object.hasOwnProperty(line)) { if (object.hasOwnProperty(line)) {
var highlightLetters = object[line]; var highlightLetters = object[line];
for (var i = 0; i < highlightLetters.length; i++) { for (var i = 0; i < highlightLetters.length; i++) {
@ -378,7 +376,7 @@ function _UhrRendererV2Delegate(layout) {
} }
} }
this._parseTimeDefinition = function(letters, styleClass, definition) { this._parseTimeDefinition = function(letters, styleClass, definition) {
for (listString in definition) { for (var listString in definition) {
if (definition.hasOwnProperty(listString)) { if (definition.hasOwnProperty(listString)) {
var array = listString.split(','); var array = listString.split(',');
var highlightLetters = definition[listString]; var highlightLetters = definition[listString];
@ -388,8 +386,8 @@ function _UhrRendererV2Delegate(layout) {
} }
} }
} }
} }
_UhrRendererV2Delegate.prototype.parse = function() { _UhrRendererV2Delegate.prototype.parse = function() {
var letters = []; var letters = [];
for (var i = 0; i < this.layout.letters.length; i++) { for (var i = 0; i < this.layout.letters.length; i++) {
var line = []; var line = [];
@ -404,13 +402,13 @@ _UhrRendererV2Delegate.prototype.parse = function() {
this._parseTimeDefinition(letters, 'minute', this.layout.minutes); this._parseTimeDefinition(letters, 'minute', this.layout.minutes);
this._parseTimeDefinition(letters, 'hour', this.layout.hours); this._parseTimeDefinition(letters, 'hour', this.layout.hours);
return letters; return letters;
}; };
/** /**
* Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays. * Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays.
* @param value Der Buchstabe, der Dargestellt werden soll. * @param value Der Buchstabe, der Dargestellt werden soll.
* @param style Die CSS-Styleklassen des Buchstabens. * @param style Die CSS-Styleklassen des Buchstabens.
*/ */
function Letter(value, style) { function Letter(value, style) {
this.value = value; this.value = value;
this.style = style || ''; this.style = style || '';
this.getStyle = function() { this.getStyle = function() {
@ -426,7 +424,9 @@ function Letter(value, style) {
this.style += ' ' + style; this.style += ' ' + style;
} }
} }
} }
Letter.prototype.toString = function letterToString() { Letter.prototype.toString = function letterToString() {
return '<span class="' + this.getStyle() + '">' + this.getValue() + '</span>'; return '<span class="' + this.getStyle() + '">' + this.getValue() + '</span>';
}; };
})(jQuery);