Merge branch 'develop' of /var/lib/git/repositories/manuel/uhr
This commit is contained in:
		
						commit
						9a4882dc25
					
				
					 11 changed files with 389 additions and 339 deletions
				
			
		
							
								
								
									
										71
									
								
								README
									
										
									
									
									
								
							
							
						
						
									
										71
									
								
								README
									
										
									
									
									
								
							|  | @ -1,71 +0,0 @@ | |||
| Bärneruhr | ||||
| 
 | ||||
| Du willst Bärneruhr auf deiner Website verwenden? Das geht ganz einfach. | ||||
| 
 | ||||
| 1. Benötigte Dateien einbinden | ||||
| 
 | ||||
| Binde folgende Javascript-Dateien im HTML-Dokument ein: | ||||
| - jquery-2.0.3.min.js (Falls nicht bereits vorhanden) | ||||
| - jquery.cookie.js (Falls nicht bereits vorhanden) | ||||
| - uhr.js | ||||
| 
 | ||||
| Binde mindestens eine der folgenden Javascript-Dateien im HTML ein, je nach dem, welche Sprachen deine Uhr unterstützen soll: | ||||
| - uhr-de_CH.js | ||||
| - uhr-de.js | ||||
| - uhr-en.js | ||||
| 
 | ||||
| Binde folgende CSS-Dateien im HTML-Dokument ein: | ||||
| - uhr.css | ||||
| - uhr-black.css | ||||
| - uhr-blue.css | ||||
| - uhr-green.css | ||||
| - uhr-red.css | ||||
| - uhr-white.css | ||||
| 
 | ||||
| Die möglichen Themes (Farbschemata) sind im Moment noch hartcodiert, deshalb sollten alle Dateien eingebunden werden. | ||||
| 
 | ||||
| 2. Uhr-Element im HTML-Dokument einfügen | ||||
| 
 | ||||
| Erstelle ein leeres <div> mit einer ID: | ||||
| <div id="meineuhr"></div> | ||||
| 
 | ||||
| 3. Uhr per Javascript konfigurieren | ||||
| 
 | ||||
| Initialisiere die Uhr mit einer einzigen Zeile Javascript: | ||||
| new Uhr(jQuery('#meineuhr')); | ||||
| 
 | ||||
| Als Parameter wird ein jQuery-gewrapptes HTML-Element erwartet. | ||||
| 
 | ||||
| Dies erzeugt eine Uhr in der Standardkonfiguration. Das heisst: | ||||
| - Breite ist 100% des Eltenelements | ||||
| - Farbe ist Schwarz | ||||
| - Sprache ist Bärndütsch | ||||
| - Die Uhr ist eingeschaltet | ||||
| 
 | ||||
| Wie du diese Optionen ändern kannst, verrät der nächte Abschnitt | ||||
| 
 | ||||
| 4. Weitere Optionen | ||||
| Der Uhr()-Methode kann ein Options-Objekt mitgegeben werden: | ||||
| new Uhr(jQuery('#uhrcontainer'), { | ||||
| 	status: 'on', // 'on' oder 'off' | ||||
| 	theme: 'red', // 'black', 'red', 'blue', 'green' oder 'white' | ||||
| 	layout: 'en', // 'de_EC', 'de' oder 'en' (je nach eingebundenen Sprachdateien | ||||
| 	width: '20em' // eine CSS-Grössenangabe | ||||
| }); | ||||
| 
 | ||||
| Viel Spass! | ||||
| 
 | ||||
| A. Lizenzbestimmungen | ||||
| 
 | ||||
| This program is free software: you can redistribute it and/or modify | ||||
| it under the terms of the GNU General Public License as published by | ||||
| the Free Software Foundation, either version 3 of the License, or | ||||
| (at your option) any later version. | ||||
| 
 | ||||
| This program is distributed in the hope that it will be useful, | ||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| GNU General Public License for more details. | ||||
| 
 | ||||
| You should have received a copy of the GNU General Public License | ||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
							
								
								
									
										94
									
								
								README.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								README.md
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,94 @@ | |||
| Bärneruhr | ||||
| ========= | ||||
| 
 | ||||
| Du willst Bärneruhr auf deiner Website verwenden? Dank des jQuery-Plugins geht das so einfach, dass es sogar deine Grossmutter tun könnte! | ||||
| 
 | ||||
| 1. Benötigte Dateien einbinden | ||||
| ------------------------------ | ||||
| * Binde folgende Javascript-Dateien im HTML-Dokument ein: | ||||
| 	* jquery-2.0.3.min.js (Falls nicht bereits vorhanden) | ||||
| 	* jquery-ui-1.10.3.custom.min.js (Falls nicht bereits vorhanden) | ||||
| 		* Von jquery-ui werden die Komponenten 'core' und 'widget' benötigt. | ||||
| 	* jquery-cookie-1.4.0.js (Falls nicht bereits vorhanden) | ||||
| 	* uhr.js | ||||
| * Binde mindestens eine der folgenden Javascript-Dateien im HTML ein, je nach dem, welche Sprachen deine Uhr unterstützen soll: | ||||
| 	* uhr-de_CH.js | ||||
| 	* uhr-de.js | ||||
| 	* uhr-en.js | ||||
| * Binde folgende CSS-Dateien im HTML-Dokument ein: | ||||
| 	* uhr.css | ||||
| 	* uhr-black.css | ||||
| 	* uhr-blue.css | ||||
| 	* uhr-green.css | ||||
| 	* uhr-red.css | ||||
| 	* uhr-white.css | ||||
| * Die möglichen Themes (Farbschemata) sind im Moment noch hartcodiert, deshalb sollten alle Dateien eingebunden werden. | ||||
| 
 | ||||
| 2. Uhr-Element im HTML-Dokument einfügen | ||||
| ---------------------------------------- | ||||
| Erstelle ein leeres `<div>` mit einer ID: | ||||
| 
 | ||||
| 	<div id="uhrcontainer"></div> | ||||
| 3. Uhr per Javascript konfigurieren | ||||
| ----------------------------------- | ||||
| Initialisiere die Uhr mit einer einzigen Zeile Javascript: | ||||
| 
 | ||||
| 	jQuery('#uhrcontainer').uhr(); | ||||
| 
 | ||||
| Damit wird eine Uhr in der Standardkonfiguration erzeugt. Das heisst: | ||||
| 
 | ||||
| * Breite ist 100% des Eltenelements | ||||
| * Farbe ist Schwarz | ||||
| * Sprache ist Bärndütsch | ||||
| * Die Uhr ist eingeschaltet | ||||
| 
 | ||||
| Wie du diese Optionen ändern kannst, verrät der nächte Abschnitt. | ||||
| 
 | ||||
| Es kann natürlich auch eine Collection von Elementen übergeben werden. Mit | ||||
| 
 | ||||
| 	jQuery('div').uhr(); | ||||
| 
 | ||||
| würde also jedes `<div>`-Element der Seite in eine Uhr umgewandelt | ||||
| 
 | ||||
| 4. Weitere Optionen | ||||
| ------------------- | ||||
| Der uhr()-Methode kann ein Options-Objekt mitgegeben werden: | ||||
| 
 | ||||
| 	jQuery('#uhrcontainer').uhr({ | ||||
| 		status: 'on',      // 'on' (default) oder 'off' | ||||
| 		theme: 'black',    // 'black' (default), 'red', 'blue', 'green' oder 'white' | ||||
| 		language: 'de_CH', // 'de_CH' (default), 'de' oder 'en' (je nach eingebundenen Sprachdateien) | ||||
| 		width: '100%',     // eine CSS-Grössenangabe (default: 100%) | ||||
| 		force: false,      // false (default): Falls ein Cookie im Browser besteht, werden dessen Konfigurationswerte übernommen; | ||||
| 		                   // true: immer die angegebene Konfiguration verwenden | ||||
| 	}); | ||||
| 
 | ||||
| 5. Sonderfunktionen | ||||
| ------------------- | ||||
| Es gibt noch einen zusätzlichen Konfigurationsparameter. Mit | ||||
| 
 | ||||
| 		{ | ||||
| 			time: new Date() | ||||
| 		} | ||||
| kann die Uhr auf eine fixe Zeit eingestellt werden. Sie bleibt dann statisch und aktualisiert sich nicht, sondern zeigt immer diese Zeit an. Beim Klick auf den On/Off-Schalter oder beim Wechsel der Sprache wird dies allerdings rückgängig gemacht und die Uhr nimmt das Standardverhalten mit der aktuellen Systemzeit an. | ||||
| 
 | ||||
| Die Zeit kann auch über einen Methodenaufruf dynamisch eingestellt werden: | ||||
| 
 | ||||
| 		jQuery('#uhrcontainer').uhr("time", new Date()); | ||||
| 
 | ||||
| Viel Spass! | ||||
| 
 | ||||
| A. Lizenzbestimmungen | ||||
| ===================== | ||||
| This program is free software: you can redistribute it and/or modify   | ||||
| it under the terms of the GNU General Public License as published by   | ||||
| the Free Software Foundation, either version 3 of the License, or   | ||||
| (at your option) any later version. | ||||
| 
 | ||||
| This program is distributed in the hope that it will be useful,   | ||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of   | ||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   | ||||
| GNU General Public License for more details. | ||||
| 
 | ||||
| You should have received a copy of the GNU General Public License   | ||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>. | ||||
							
								
								
									
										
											BIN
										
									
								
								favicon.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								favicon.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 1.2 KiB | 
							
								
								
									
										21
									
								
								index.html
									
										
									
									
									
								
							
							
						
						
									
										21
									
								
								index.html
									
										
									
									
									
								
							|  | @ -17,7 +17,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||
| <head> | ||||
| 	<title>Die Zeit als Wort - in HTML, CSS und JS</title> | ||||
| 	<script type="text/javascript" src="jquery-2.0.3.min.js"></script> | ||||
| 	<script type="text/javascript" src="jquery.cookie.js"></script> | ||||
| 	<script type="text/javascript" src="jquery-ui-1.10.3.custom.min.js"></script> | ||||
| 	<script type="text/javascript" src="jquery-cookie-1.4.0.js"></script> | ||||
| 	<script type="text/javascript" src="uhr.js"></script> | ||||
| 	<link rel="stylesheet" type="text/css" href="uhr.css" /> | ||||
| 	<link rel="stylesheet" type="text/css" href="uhr-black.css" /> | ||||
|  | @ -25,6 +26,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||
| 	<link rel="stylesheet" type="text/css" href="uhr-green.css" /> | ||||
| 	<link rel="stylesheet" type="text/css" href="uhr-red.css" /> | ||||
| 	<link rel="stylesheet" type="text/css" href="uhr-white.css" /> | ||||
| 	<link rel="shortcut icon" type="image/png" href="favicon.png" /> | ||||
| 	<meta http-equiv="content-type" content="text/html; charset=UTF-8" /> | ||||
| </head> | ||||
| <body style="padding:0;margin:0;"> | ||||
|  | @ -34,15 +36,14 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||
| 	<script type="text/javascript" src="uhr-de.js"></script> | ||||
| 	<script type="text/javascript" src="uhr-en.js"></script> | ||||
| 	<script type="text/javascript"> | ||||
| 		var height = jQuery(window).height(); | ||||
| 		var width = jQuery(window).width(); | ||||
| 		var size = height < width ? height : width; | ||||
| 		new Uhr(jQuery('#uhr'), { | ||||
| 			layout: 'de_CH', | ||||
| 			theme: 'black', | ||||
| 			status: 'on', | ||||
| 			width: size + 'px' | ||||
| 		}); | ||||
| 		(function($) { | ||||
| 			var width = $(window).width(); | ||||
| 			var height = $(window).height(); | ||||
| 			var size = (width < height ? width : height) + 'px'; | ||||
| 			$('#uhr').uhr({ | ||||
| 				width: size | ||||
| 			}); | ||||
| 		})(jQuery); | ||||
| 	</script> | ||||
| </body> | ||||
| </html> | ||||
|  |  | |||
							
								
								
									
										6
									
								
								jquery-ui-1.10.3.custom.min.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								jquery-ui-1.10.3.custom.min.js
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							|  | @ -1,18 +1,20 @@ | |||
| CACHE MANIFEST | ||||
| # 3.0.8 | ||||
| # 4.0.0 | ||||
| 
 | ||||
| COPYING | ||||
| favicon.png | ||||
| index.html | ||||
| jquery-2.0.3.min.js | ||||
| jquery.cookie.js | ||||
| uhr.js | ||||
| uhr-de_CH.js | ||||
| uhr-de.js | ||||
| uhr-en.js | ||||
| uhr.css | ||||
| jquery-cookie-1.4.0.js | ||||
| jquery-ui-1.10.3.custom.min.js | ||||
| uhr-black.css | ||||
| uhr-red.css | ||||
| uhr-blue.css | ||||
| uhr-de.js | ||||
| uhr-de_CH.js | ||||
| uhr-en.js | ||||
| uhr-green.css | ||||
| uhr-red.css | ||||
| uhr-white.css | ||||
| uhr.css | ||||
| uhr.js | ||||
| uhr.woff | ||||
|  |  | |||
|  | @ -27,4 +27,4 @@ var layout = { | |||
| 		[h('Z', 10), h('E', 10),h('H', 10),h('N', 9, 10),h('E', 9),h('U', 9),h('N', 9),l('K'),l('U'),l('H'),l('R')] | ||||
| 	] | ||||
| }; | ||||
| Uhr.register('de', layout); | ||||
| window._uhr.languages['de'] = layout; | ||||
|  |  | |||
|  | @ -27,4 +27,4 @@ var layout = { | |||
| 		[h('Z', 12), h('W', 12),h('Ö', 12),h('U', 12),h('F', 12),h('I', 12),l('N'),l('A'),l('U'),l('H'),l('R')] | ||||
| 	] | ||||
| }; | ||||
| Uhr.register('de_CH', layout); | ||||
| window._uhr.languages['de_CH'] = layout; | ||||
|  |  | |||
|  | @ -34,4 +34,4 @@ var layout = { | |||
| 		return hour; | ||||
| 	} | ||||
| }; | ||||
| Uhr.register('en', layout); | ||||
| window._uhr.languages['en'] = layout; | ||||
|  |  | |||
							
								
								
									
										512
									
								
								uhr.js
									
										
									
									
									
								
							
							
						
						
									
										512
									
								
								uhr.js
									
										
									
									
									
								
							|  | @ -12,250 +12,269 @@ GNU General Public License for more details. | |||
| You should have received a copy of the GNU General Public License | ||||
| along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||
| */ | ||||
| /** | ||||
|  * Die Uhr. | ||||
|  * @param clockarea   Das jQuery-gewrappte HTML-Element, auf dem die Uhr angezeigt werden soll. | ||||
|  * @param themeElement Das HTML-Stylesheet-Tag, das das Theme-CSS referenziert. | ||||
|  */ | ||||
| //if (typeof Uhr === 'undefined') {
 | ||||
| function Uhr(clockarea, settings) { | ||||
| 	this.id = Uhr.id++; | ||||
| 	this.timer = null; | ||||
| 	this.currentTheme = null; | ||||
| 	this.currentLayout = {}; | ||||
| 	this.currentMinute = -1; | ||||
| 	this.initHTMLElements(clockarea, settings || {}); | ||||
| } | ||||
| Uhr.id = 0; | ||||
| Uhr.layouts = new Array(); | ||||
| Uhr.register = function (locale, layout) { | ||||
| 	Uhr.layouts[locale] = layout; | ||||
| } | ||||
| Uhr.prototype.toggle = function() { | ||||
| 	if (this.isOn()) { | ||||
| 		this.stop(); | ||||
| 	} else { | ||||
| 		this.start(); | ||||
| (function($) { | ||||
| 	"use strict"; | ||||
| 
 | ||||
| 	if (window._uhr !== undefined) { | ||||
| 		return; | ||||
| 	} | ||||
| } | ||||
| Uhr.prototype.start = function() { | ||||
| 	if (!this.isOn()) { | ||||
| 		var uhr = this; | ||||
| 		this.timer = window.setInterval(function() {uhr.update();}, 1000); | ||||
| 		this.update(); | ||||
| 		jQuery.cookie('status' + this.id, 'on', {expires: 365, path: '/'}); | ||||
| 	} | ||||
| } | ||||
| Uhr.prototype.stop = function() { | ||||
| 	if (this.isOn()) { | ||||
| 		window.clearInterval(this.timer); | ||||
| 		this.timer = null; | ||||
| 		this.update(); | ||||
| 		jQuery.cookie('status' + this.id, 'off', {expires: 365, path: '/'}); | ||||
| 	} | ||||
| } | ||||
| Uhr.prototype.isOn = function() { | ||||
| 	return this.timer != null; | ||||
| } | ||||
| Uhr.prototype.setLayout = function(locale) { | ||||
| 	var newLayout = Uhr.layouts[locale]; | ||||
| 	if (newLayout !== undefined && newLayout != this.currentLayout) { | ||||
| 		this.currentLayout = newLayout; | ||||
| 		var renderer = new UhrRenderer(this.currentLayout, this.letterarea); | ||||
| 		renderer.render(this); | ||||
| 		jQuery.cookie('layout' + this.id, locale, {expires: 365, path: '/'}); | ||||
| 	} | ||||
| } | ||||
| Uhr.prototype.setTheme = function(theme) { | ||||
| 	if (theme != this.currentTheme) { | ||||
| 		this.clockarea.removeClass(this.currentTheme); | ||||
| 		this.toggleSwitch.removeClass(this.currentTheme); | ||||
| 		this.clockarea.addClass(theme); | ||||
| 		this.toggleSwitch.addClass(theme); | ||||
| 		this.currentTheme = theme; | ||||
| 		jQuery.cookie('theme' + this.id, theme, {expires: 365, path: '/'}); | ||||
| 	} | ||||
| } | ||||
| Uhr.prototype.update = function() { | ||||
| 	if (this.isOn()) { | ||||
| 		var now = new Date(); | ||||
| 		if (now.getMinutes() == this.currentMinute) { | ||||
| 			return; | ||||
| 
 | ||||
| 	window._uhr = { | ||||
| 		id: 0, | ||||
| 		languages: new Array() | ||||
| 	}; | ||||
| 	$.widget("fritteli.uhr", { | ||||
| 		options: { | ||||
| 			width: '100%', | ||||
| 			status: 'on', | ||||
| 			language: 'de_CH', | ||||
| 			theme: 'black', | ||||
| 			force: false | ||||
| 		}, | ||||
| 		start: function() { | ||||
| 			if (!this._isOn()) { | ||||
| 				var uhr = this; | ||||
| 				this._timer = window.setInterval(function() { | ||||
| 					uhr._update(); | ||||
| 				}, 1000); | ||||
| 				this._update(); | ||||
| 				$.cookie('uhr-status' + this._id, 'on', {expires: 365, path: '/'}); | ||||
| 			} else { | ||||
| 			} | ||||
| 		}, | ||||
| 		stop: function() { | ||||
| 			if(this._isOn()) { | ||||
| 				window.clearInterval(this._timer); | ||||
| 				this._timer = null; | ||||
| 				this._update(); | ||||
| 				$.cookie('uhr-status' + this._id, 'off', {expires: 365, path: '/'}); | ||||
| 			} | ||||
| 		}, | ||||
| 		toggle: function() { | ||||
| 			if(this._isOn()) { | ||||
| 				this.stop(); | ||||
| 			} else { | ||||
| 				this.start(); | ||||
| 			} | ||||
| 		}, | ||||
| 		language: function(languageKey) { | ||||
| 			if (languageKey !== this.options.language) { | ||||
| 				this.options.language = languageKey; | ||||
| 				var renderer = new UhrRenderer(this._language(), this.element.find('.letterarea')); | ||||
| 				var uhr = this; | ||||
| 				renderer.render(this, function() { | ||||
| 					uhr._currentMinute = -1; | ||||
| 					uhr._update(); | ||||
| 				}); | ||||
| 				$.cookie('uhr-language' + this._id, languageKey, {expires: 365, path: '/'}); | ||||
| 				this._update(); | ||||
| 			} | ||||
| 		}, | ||||
| 		theme: function(theme) { | ||||
| 			if (theme != this.options.theme) { | ||||
| 				this.element.removeClass(this.options.theme).addClass(theme); | ||||
| 				$('#uhr-onoffswitch' + this._id).removeClass(this.options.theme).addClass(theme); | ||||
| 				this.options.theme = theme; | ||||
| 				$.cookie('uhr-theme' + this._id, theme, {expires: 365, path: '/'}); | ||||
| 			} | ||||
| 		}, | ||||
| 		time: function(time) { | ||||
| 			this.options.time = time; | ||||
| 			if (time == null) { | ||||
| 				this._currentMinute = -1; | ||||
| 				this._update(); | ||||
| 			} else { | ||||
| 				if (this._timer != null) { | ||||
| 					window.clearInterval(this._timer); | ||||
| 				} | ||||
| 				var renderer = new UhrRenderer(this._language(), this.element.find('.letterarea')); | ||||
| 				var uhr = this; | ||||
| 				renderer.render(this, function() { | ||||
| 					uhr._show(time); | ||||
| 				}); | ||||
| 
 | ||||
| 			} | ||||
| 		}, | ||||
| 		// private variables
 | ||||
| 		_id: -1, | ||||
| 		_timer: null, | ||||
| 		_currentMinute: -1, | ||||
| 		// private methods
 | ||||
| 		_isOn: function() { | ||||
| 			return this._timer !== null; | ||||
| 		}, | ||||
| 		_update: function() { | ||||
| 			if (this._isOn()) { | ||||
| 				var time = new Date(); | ||||
| 				if (time.getMinutes() == this._currentMinute) { | ||||
| 					return; | ||||
| 				} | ||||
| 				this._currentMinute = time.getMinutes(); | ||||
| 				this._show(time); | ||||
| 			} else { | ||||
| 				this._clear(); | ||||
| 				this._currentMinute = -1; | ||||
| 			} | ||||
| 		}, | ||||
| 		_show: function(time) { | ||||
| 			var dotMinute = this._getDotMinute(time); | ||||
| 			var hour = this._getHour(time); | ||||
| 			var coarseMinute = this._getCoarseMinute(time); | ||||
| 			this._clear(); | ||||
| 			this._highlight('on'); | ||||
| 			for (var i = 1; i <= dotMinute; i++) { | ||||
| 				this._highlight('dot' + i); | ||||
| 			} | ||||
| 			this._highlight('minute' + coarseMinute); | ||||
| 			hour = this._normalizeHour(hour); | ||||
| 			this._highlight('hour' + hour); | ||||
| 			if (coarseMinute == 0) { | ||||
| 				this._highlight('sharphour'); | ||||
| 			} | ||||
| 		}, | ||||
| 		_language: function() { | ||||
| 			return window._uhr.languages[this.options.language]; | ||||
| 		}, | ||||
| 		_highlight: function(itemClass) { | ||||
| 			this.element.find('.item.' + itemClass).addClass('active'); | ||||
| 		}, | ||||
| 		_clear: function() { | ||||
| 			this.element.find('.item').removeClass('active'); | ||||
| 		}, | ||||
| 		_getHour: function(date) { | ||||
| 			if (typeof this._language().getHour === 'function') { | ||||
| 				return this._language().getHour(date); | ||||
| 			} | ||||
| 			var hour = date.getHours(); | ||||
| 			if (date.getMinutes() >= 25) { | ||||
| 				return hour + 1; | ||||
| 			} | ||||
| 			return hour; | ||||
| 		}, | ||||
| 		_getCoarseMinute: function(date) { | ||||
| 			if (typeof this._language().getCoarseMinute === 'function') { | ||||
| 				return this._language().getCoarseMinute(date); | ||||
| 			} | ||||
| 			var minutes = date.getMinutes(); | ||||
| 			return minutes - this._getDotMinute(date); | ||||
| 		}, | ||||
| 		_getDotMinute: function(date) { | ||||
| 			if (typeof this._language().getDotMinute === 'function') { | ||||
| 				return this._language().getDotMinute(date); | ||||
| 			} | ||||
| 			var minutes = date.getMinutes(); | ||||
| 			return minutes % 5; | ||||
| 		}, | ||||
| 		_normalizeHour: function(hour) { | ||||
| 			if (hour > 12) { | ||||
| 				hour %= 12; | ||||
| 			} | ||||
| 			if (hour == 0) { | ||||
| 				return 12; | ||||
| 			} | ||||
| 			return hour; | ||||
| 		}, | ||||
| 		_create: function() { | ||||
| 			this._id = window._uhr.id++; | ||||
| 			this._setupHTML(); | ||||
| 			this._wireFunctionality(); | ||||
| 			if (this.options.time !== undefined) { | ||||
| 				this.time(this.options.time); | ||||
| 			} | ||||
| 		}, | ||||
| 		_setupHTML: function() { | ||||
| 			var e = this.element; | ||||
| 			// Base clock area
 | ||||
| 			e.addClass('uhr'); | ||||
| 			e.empty(); | ||||
| 			e.append('<span class="item dot dot1"></span>'); | ||||
| 			e.append('<span class="item dot dot2"></span>'); | ||||
| 			e.append('<span class="item dot dot3"></span>'); | ||||
| 			e.append('<span class="item dot dot4"></span>'); | ||||
| 			e.append('<div class="letterarea"></div>'); | ||||
| 			e.append('<div class="reflection"></div>'); | ||||
| 			e.css('width', this.options.width); | ||||
| 			var realWidth = e.width() | ||||
| 			e.width(realWidth); | ||||
| 			e.height(realWidth); | ||||
| 			e.css('font-size', (realWidth / 40) + 'px'); | ||||
| 
 | ||||
| 			// on/off switch
 | ||||
| 			var toggleSwitch = $('<div class="onoffswitch" id="uhr-onoffswitch' + this._id + '"></div>'); | ||||
| 			toggleSwitch.append('<input type="checkbox" class="onoffswitch-checkbox" id="uhr-onoffswitch-checkbox' + this._id + '" checked="checked" />'); | ||||
| 			toggleSwitch.append('<label class="onoffswitch-label" for="uhr-onoffswitch-checkbox' + this._id + '">' | ||||
| 				+ '<div class="onoffswitch-inner"></div>' | ||||
| 				+ '<div class="onoffswitch-switch"></div>' | ||||
| 				+ '</label>'); | ||||
| 			e.after(toggleSwitch); | ||||
| 
 | ||||
| 			// language chooser
 | ||||
| 			var languageChooser = $('<select id="uhr-languagechooser' + this._id + '"></select>') | ||||
| 			for (var code in window._uhr.languages) { | ||||
| 				if (window._uhr.languages.hasOwnProperty(code)) { | ||||
| 					var language = window._uhr.languages[code]; | ||||
| 					languageChooser.append('<option value="' + code + '">' + language.language + '</option>'); | ||||
| 				} | ||||
| 			} | ||||
| 			e.after(languageChooser); | ||||
| 
 | ||||
| 			// theme chooser
 | ||||
| 			var themeChooser = $('<select id="uhr-themechooser' + this._id + '"></select>'); | ||||
| 			themeChooser.append('<option value="black">Schwarz</option>'); | ||||
| 			themeChooser.append('<option value="red">Rot</option>'); | ||||
| 			themeChooser.append('<option value="blue">Blau</option>'); | ||||
| 			themeChooser.append('<option value="green">Grün</option>'); | ||||
| 			themeChooser.append('<option value="white">Weiss</option>'); | ||||
| 			e.after(themeChooser); | ||||
| 		}, | ||||
| 		_wireFunctionality: function() { | ||||
| 			var e = this.element; | ||||
| 			var uhr = this; | ||||
| 
 | ||||
| 			// on/off switch
 | ||||
| 			var toggleSwitch = $('#uhr-onoffswitch-checkbox' + this._id); | ||||
| 			toggleSwitch.on('click', function() { | ||||
| 				uhr.toggle(); | ||||
| 			}); | ||||
| 			var status = $.cookie('uhr-status' + this._id); | ||||
| 			if (status == undefined || this.options.force) { | ||||
| 				status = this.options.status; | ||||
| 			} | ||||
| 			toggleSwitch.prop('checked', status == 'on'); | ||||
| 			if (status == 'on') { | ||||
| 				this.start(); | ||||
| 			} else { | ||||
| 				this.stop(); | ||||
| 			} | ||||
| 
 | ||||
| 			// language chooser
 | ||||
| 			var languageChooser = $('#uhr-languagechooser' + this._id); | ||||
| 			languageChooser.on('change', function() { | ||||
| 				uhr.language(this.value); | ||||
| 			}); | ||||
| 			var selectedLanguage = $.cookie('uhr-language' + this._id); | ||||
| 			if (selectedLanguage == undefined || this.options.force) { | ||||
| 				selectedLanguage = this.options.language; | ||||
| 			} | ||||
| 			languageChooser.val(selectedLanguage); | ||||
| 			this.options.language = ""; | ||||
| 			this.language(selectedLanguage); | ||||
| 
 | ||||
| 			// theme chooser
 | ||||
| 			var themeChooser = $('#uhr-themechooser' + this._id); | ||||
| 			themeChooser.on('change', function() { | ||||
| 				uhr.theme(this.value); | ||||
| 			}); | ||||
| 			var selectedTheme = $.cookie('uhr-theme' + this._id); | ||||
| 			if (selectedTheme == undefined || this.options.force) { | ||||
| 				selectedTheme = this.options.theme; | ||||
| 			} | ||||
| 			themeChooser.val(selectedTheme); | ||||
| 			this.options.theme = ""; | ||||
| 			this.theme(selectedTheme); | ||||
| 		} | ||||
| 		this.currentMinute = now.getMinutes(); | ||||
| 		var dotMinute = this.getDotMinute(now); | ||||
| 		var hour = this.getHour(now); | ||||
| 		var coarseMinute = this.getCoarseMinute(now); | ||||
| 		this.clear(); | ||||
| 		this.highlight('on'); | ||||
| 		for (var i = 1; i <= dotMinute; i++) { | ||||
| 			this.highlight('dot' + i); | ||||
| 		} | ||||
| 		this.highlight('minute' + coarseMinute); | ||||
| 		hour = this.normalizeHour(hour); | ||||
| 		this.highlight('hour' + hour); | ||||
| 		if (coarseMinute == 0) { | ||||
| 			this.highlight('sharphour'); | ||||
| 		} | ||||
| 	} else { | ||||
| 		this.clear(); | ||||
| 		this.currentMinute = -1; | ||||
| 	} | ||||
| } | ||||
| Uhr.prototype.clear = function() { | ||||
| 	this.clockarea.find('.item').removeClass('active'); | ||||
| } | ||||
| Uhr.prototype.highlight = function(itemClass) { | ||||
| 	this.clockarea.find('.item.' + itemClass).addClass('active'); | ||||
| } | ||||
| Uhr.prototype.getHour = function(date) { | ||||
| 	if (typeof this.currentLayout.getHour === 'function') { | ||||
| 		return this.currentLayout.getHour(date); | ||||
| 	} | ||||
| 	var hour = date.getHours(); | ||||
| 	if (date.getMinutes() >= 25) { | ||||
| 		return hour + 1; | ||||
| 	} | ||||
| 	return hour; | ||||
| } | ||||
| Uhr.prototype.getCoarseMinute = function(date) { | ||||
| 	if (typeof this.currentLayout.getCoarseMinute === 'function') { | ||||
| 		return this.currentLayout.getCoarseMinute(date); | ||||
| 	} | ||||
| 	var minutes = date.getMinutes(); | ||||
| 	return minutes - this.getDotMinute(date); | ||||
| } | ||||
| Uhr.prototype.getDotMinute = function(date) { | ||||
| 	if (typeof this.currentLayout.getDotMinute === 'function') { | ||||
| 		return this.currentLayout.getDotMinute(date); | ||||
| 	} | ||||
| 	var minutes = date.getMinutes(); | ||||
| 	return minutes % 5; | ||||
| } | ||||
| Uhr.prototype.normalizeHour = function(hour) { | ||||
| 	if (hour > 12) { | ||||
| 		hour %= 12; | ||||
| 	} | ||||
| 	if (hour == 0) { | ||||
| 		return 12; | ||||
| 	} | ||||
| 	return hour; | ||||
| } | ||||
| Uhr.prototype.initHTMLElements = function(clockarea, presets) { | ||||
| 	this.createHTMLElements(clockarea, presets.width); | ||||
| 	var force = presets.force || false; | ||||
| 	this.initToggleSwitch(presets.status, force); | ||||
| 	this.initLayoutSwitch(presets.layout, force); | ||||
| 	this.initThemeSwitch(presets.theme, force); | ||||
| } | ||||
| Uhr.prototype.createHTMLElements = function(clockarea, width) { | ||||
| 	this.createClockarea(clockarea, width) | ||||
| 	this.letterarea = this.clockarea.find('.letterarea'); | ||||
| 	this.createToggleSwitch(); | ||||
| 	this.createLayoutSwitch(); | ||||
| 	this.createThemeSwitch(); | ||||
| } | ||||
| Uhr.prototype.createClockarea = function(clockarea, width) { | ||||
| 	clockarea.addClass('uhr'); | ||||
| 	clockarea.empty(); | ||||
| 	clockarea.append('<span class="item dot dot1"></span>'); | ||||
| 	clockarea.append('<span class="item dot dot2"></span>'); | ||||
| 	clockarea.append('<span class="item dot dot3"></span>'); | ||||
| 	clockarea.append('<span class="item dot dot4"></span>'); | ||||
| 	clockarea.append('<div class="letterarea"></div>'); | ||||
| 	clockarea.append('<div class="reflection"></div>'); | ||||
| 	if(width == undefined) { | ||||
| 		width = '100%'; | ||||
| 	} | ||||
| 	clockarea.css('width', width); | ||||
| 	var realWidth = clockarea.width() | ||||
| 	clockarea.width(realWidth); | ||||
| 	clockarea.height(realWidth); | ||||
| 	clockarea.css('font-size', (realWidth / 40) + 'px'); | ||||
| 	this.clockarea = clockarea | ||||
| } | ||||
| Uhr.prototype.createToggleSwitch = function() { | ||||
| 	this.toggleSwitch = jQuery('<div class="onoffswitch"></div>'); | ||||
| 	var input = jQuery('<input type="checkbox" name="onoffswitch' + this.id + '" class="onoffswitch-checkbox" id="onoffswitch' + this.id + '" checked="checked" />'); | ||||
| 	this.toggleSwitch.append(input); | ||||
| 	this.toggleSwitch.append('<label class="onoffswitch-label" for="onoffswitch' + this.id + '">' | ||||
| 		+ '<div class="onoffswitch-inner"></div>' | ||||
| 		+ '<div class="onoffswitch-switch"></div>' | ||||
| 		+ '</label>'); | ||||
| 	this.clockarea.after(this.toggleSwitch); | ||||
| } | ||||
| Uhr.prototype.createLayoutSwitch = function () { | ||||
| 	this.layoutSwitch = jQuery('<select></select>') | ||||
| 	for (var code in Uhr.layouts) { | ||||
| 		if (Uhr.layouts.hasOwnProperty(code)) { | ||||
| 			var layout = Uhr.layouts[code]; | ||||
| 			var option = jQuery('<option value="' + code + '">' + layout.language + '</option>') | ||||
| 			this.layoutSwitch.append(option); | ||||
| 		} | ||||
| 	} | ||||
| 	this.clockarea.after(this.layoutSwitch); | ||||
| } | ||||
| Uhr.prototype.createThemeSwitch = function () { | ||||
| 	this.themeSwitch = jQuery('<select></select>'); | ||||
| 	this.themeSwitch.append('<option value="black">Schwarz</option>'); | ||||
| 	this.themeSwitch.append('<option value="red">Rot</option>'); | ||||
| 	this.themeSwitch.append('<option value="blue">Blau</option>'); | ||||
| 	this.themeSwitch.append('<option value="green">Grün</option>'); | ||||
| 	this.themeSwitch.append('<option value="white">Weiss</option>'); | ||||
| 	this.clockarea.after(this.themeSwitch); | ||||
| } | ||||
| Uhr.prototype.initToggleSwitch = function(defaultValue, overrideCookie) { | ||||
| 	var input = jQuery('#onoffswitch' + this.id); | ||||
| 	var uhr = this; | ||||
| 	input.on('click', function() { | ||||
| 		uhr.toggle(); | ||||
| 	}); | ||||
| 	var status = jQuery.cookie('status' + this.id); | ||||
| 	if (status == undefined || (overrideCookie && (defaultValue != undefined))) { | ||||
| 		status = defaultValue; | ||||
| 	} | ||||
| 	if (status == undefined || status == 'undefined') { | ||||
| 		status = 'on'; | ||||
| 	} | ||||
| 	if (status == 'on') { | ||||
| 		this.start(); | ||||
| 		input.prop('checked', true); | ||||
| 	} else { | ||||
| 		this.stop(); | ||||
| 		input.prop('checked', false); | ||||
| 	} | ||||
| } | ||||
| Uhr.prototype.initLayoutSwitch = function(defaultValue, overrideCookie) { | ||||
| 	var uhr = this; | ||||
| 	this.layoutSwitch.on('change', function() { | ||||
| 		uhr.setLayout(this.value); | ||||
| 	}); | ||||
| 	var selectedLayout = jQuery.cookie('layout' + this.id); | ||||
| 	if (selectedLayout == undefined || (overrideCookie && (defaultValue != undefined))) { | ||||
| 		selectedLayout = defaultValue; | ||||
| 	} | ||||
| 	if (selectedLayout == undefined) { | ||||
| 		// FIXME not nice, hardcoded default-value
 | ||||
| 		selectedLayout = 'de_CH'; | ||||
| 	} | ||||
| 	this.layoutSwitch.val(selectedLayout); | ||||
| 	this.setLayout(selectedLayout); | ||||
| } | ||||
| Uhr.prototype.initThemeSwitch = function(defaultValue, overrideCookie) { | ||||
| 	var uhr = this; | ||||
| 	this.themeSwitch.on('change', function() { | ||||
| 		uhr.setTheme(this.value); | ||||
| 	}); | ||||
| 	var selectedTheme = jQuery.cookie('theme' + this.id); | ||||
| 	if (selectedTheme == undefined || (overrideCookie && (defaultValue != undefined))) { | ||||
| 		selectedTheme = defaultValue; | ||||
| 	} | ||||
| 	if (selectedTheme == undefined || selectedTheme == 'undefined') { | ||||
| 		selectedTheme = 'black'; | ||||
| 	} | ||||
| 	this.themeSwitch.val(selectedTheme); | ||||
| 	this.setTheme(selectedTheme); | ||||
| } | ||||
| })(jQuery); | ||||
| 
 | ||||
| /** | ||||
|  * Hilfsklasse zum Rendern der Uhr. | ||||
|  | @ -266,7 +285,7 @@ function UhrRenderer(layout, renderarea) { | |||
| 	this.layout = layout; | ||||
| 	this.renderarea = renderarea; | ||||
| } | ||||
| UhrRenderer.prototype.render = function(uhr) { | ||||
| UhrRenderer.prototype.render = function(uhr, beforeshow) { | ||||
| 	var renderer = this; | ||||
| 	this.renderarea.fadeOut('fast', function() { | ||||
| 		renderer.renderarea.empty(); | ||||
|  | @ -279,12 +298,12 @@ UhrRenderer.prototype.render = function(uhr) { | |||
| 				renderer.renderarea.append('<br/>'); | ||||
| 			} | ||||
| 		} | ||||
| 		uhr.currentMinute = -1; | ||||
| 		uhr.update(); | ||||
| 		if (typeof beforeshow === 'function') { | ||||
| 			beforeshow(); | ||||
| 		} | ||||
| 		renderer.renderarea.fadeIn('fast'); | ||||
| 	}); | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  * Ein Buchstabe. Hilfsklasse für den Renderer und Inhalt der Layout-Arrays. | ||||
|  * @param value Der Buchstabe, der Dargestellt werden soll. | ||||
|  | @ -317,7 +336,7 @@ function l(letter, style) { | |||
|  * | ||||
|  * @param letter   string:  Der Buchstabe, der angezeigt werden soll | ||||
|  * @param hours... integer: Eine Aufzählung von Stundenwerten, zu welchen der Buchstabe als aktiv angezeigt werden soll | ||||
|  * @example h('Z', 2), 11 erzeugt den Buchstaben 'Z', der um 2:xx, 11:xx, 14:xx und 23:xx aktiv angezeigt wird | ||||
|  * @example h('Z', 2, 11) erzeugt den Buchstaben 'Z', der um 2:xx, 11:xx, 14:xx und 23:xx aktiv angezeigt wird | ||||
|  */ | ||||
| function h(letter) { | ||||
| 	var style = ''; | ||||
|  | @ -340,4 +359,3 @@ function m(letter) { | |||
| 	} | ||||
| 	return l(letter, style); | ||||
| } | ||||
| //}
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue