mirror of
				https://github.com/flynx/Slang.git
				synced 2025-10-31 11:30:13 +00:00 
			
		
		
		
	timer working...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
		
							parent
							
								
									0adde2cbdf
								
							
						
					
					
						commit
						78c1c683bc
					
				
							
								
								
									
										158
									
								
								TeachersTimer/index.html
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										158
									
								
								TeachersTimer/index.html
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,158 @@ | |||||||
|  | <html> | ||||||
|  | <head> | ||||||
|  | <title>Teacher's Timer</title> | ||||||
|  | 
 | ||||||
|  | <style> | ||||||
|  | 
 | ||||||
|  | .timer { | ||||||
|  | 	position: relative; | ||||||
|  | 	min-height: 30px; | ||||||
|  | 	min-width: 100px; | ||||||
|  | 	border: solid 1px silver; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .timer .sum { | ||||||
|  | 	display: inline-block; | ||||||
|  | 	width: 50px; | ||||||
|  | 	background: gray;	 | ||||||
|  | 	margin: 5px; | ||||||
|  | 	padding-left: 5px; | ||||||
|  | 	padding-right: 5px; | ||||||
|  | 	text-align: right; | ||||||
|  | 	color: white; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .timer .run { | ||||||
|  | 	display: inline-block; | ||||||
|  | 	background: silver; | ||||||
|  | 	margin: 5px; | ||||||
|  | 	color: white; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .timer .start, | ||||||
|  | .timer .end, | ||||||
|  | .timer .duration { | ||||||
|  | 	margin: 10px;  | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | </style> | ||||||
|  | 
 | ||||||
|  | <script> | ||||||
|  | 
 | ||||||
|  | //var DEBUG = true | ||||||
|  | 
 | ||||||
|  | var TIMER_TEMPLATE = '<div class="run">'+ | ||||||
|  | 		'<span class="start">00:00:00</span>'+ | ||||||
|  | 		'<span class="end">00:00:00</span>'+ | ||||||
|  | 		'(<span class="duration">0</span>)'+ | ||||||
|  | 	'</div>' | ||||||
|  | 
 | ||||||
|  | var TIMER = null | ||||||
|  | 
 | ||||||
|  | function getFormattedTime(t){ | ||||||
|  | 	if(t != null){ | ||||||
|  | 		t = new Date(t) | ||||||
|  | 	} else { | ||||||
|  | 		t = new Date() | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	var h = t.getHours() | ||||||
|  | 	var m = t.getMinutes() | ||||||
|  | 	var s = t.getSeconds() | ||||||
|  | 
 | ||||||
|  | 	return (h < 10 ? '0' + h : h) +':'+ | ||||||
|  | 			(m < 10 ? '0' + m : m) +':'+  | ||||||
|  | 			(s < 10 ? '0' + s : s) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function getDurationInMinutes(a, b){ | ||||||
|  | 	var s = b - a | ||||||
|  | 	// return the duration in seconds... | ||||||
|  | 	if(window.DEBUG){ | ||||||
|  | 		// for debug use seconds for faster updates... | ||||||
|  | 		return Math.floor(s/1000) | ||||||
|  | 	} | ||||||
|  | 	return Math.floor(s/1000/60) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function toggleTimer(elem){ | ||||||
|  | 	elem = elem | ||||||
|  | 
 | ||||||
|  | 	// stop timer... | ||||||
|  | 	if(TIMER){ | ||||||
|  | 		clearInterval(TIMER) | ||||||
|  | 		TIMER = null | ||||||
|  | 
 | ||||||
|  | 		var start = elem.getAttribute('start')*1 | ||||||
|  | 		var end = Date.now() | ||||||
|  | 		var d = getDurationInMinutes(start, end) | ||||||
|  | 
 | ||||||
|  | 		var duration = elem.getElementsByClassName('duration') | ||||||
|  | 		duration = duration[duration.length-1] | ||||||
|  | 		duration.innerText = d | ||||||
|  | 
 | ||||||
|  | 		var run = elem.getElementsByClassName('run') | ||||||
|  | 		run = run[run.length-1] | ||||||
|  | 		run.setAttribute('duration', d) | ||||||
|  | 
 | ||||||
|  | 	// setup a new timer... | ||||||
|  | 	} else { | ||||||
|  | 		var now = Date.now() | ||||||
|  | 		elem.innerHTML += TIMER_TEMPLATE | ||||||
|  | 		elem.setAttribute('start', now) | ||||||
|  | 
 | ||||||
|  | 		var run = elem.getElementsByClassName('run') | ||||||
|  | 		run = run[run.length-1] | ||||||
|  | 
 | ||||||
|  | 		var start = elem.getElementsByClassName('start') | ||||||
|  | 		start = start[start.length-1] | ||||||
|  | 
 | ||||||
|  | 		var end = elem.getElementsByClassName('end') | ||||||
|  | 		end = end[end.length-1] | ||||||
|  | 
 | ||||||
|  | 		var duration = elem.getElementsByClassName('duration') | ||||||
|  | 		duration = duration[duration.length-1] | ||||||
|  | 		duration.innerText = 0 | ||||||
|  | 
 | ||||||
|  | 		run.setAttribute('duration', 0) | ||||||
|  | 
 | ||||||
|  | 		// initial data... | ||||||
|  | 		start.innerText = getFormattedTime(now) | ||||||
|  | 		end.innerText = getFormattedTime(now) | ||||||
|  | 
 | ||||||
|  | 		TIMER = setInterval(function(){ | ||||||
|  | 			var start = elem.getAttribute('start')*1 | ||||||
|  | 			var now = Date.now() | ||||||
|  | 			var d = getDurationInMinutes(start, now) | ||||||
|  | 
 | ||||||
|  | 			run.setAttribute('duration', d) | ||||||
|  | 
 | ||||||
|  | 			// update end and duration values... | ||||||
|  | 			end.innerText = getFormattedTime(now) | ||||||
|  | 			duration.innerText = d | ||||||
|  | 
 | ||||||
|  | 			// update total... | ||||||
|  | 			var sum = 0 | ||||||
|  | 			var runs = elem.getElementsByClassName('run') | ||||||
|  | 			for(var i=0; i < runs.length; i++){ | ||||||
|  | 				sum += (runs[i].getAttribute('duration')*1) | ||||||
|  | 			} | ||||||
|  | 			elem.getElementsByClassName('sum')[0].innerText = sum | ||||||
|  | 		}, 1000) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | </script> | ||||||
|  | 
 | ||||||
|  | </head> | ||||||
|  | <body> | ||||||
|  | 
 | ||||||
|  | <div class="timer" onclick="toggleTimer(this)"> | ||||||
|  | 	<div class="sum">0</div> | ||||||
|  | </div> | ||||||
|  | 
 | ||||||
|  | </body> | ||||||
|  | <!-- vim:set ts=4 sw=4 : --> | ||||||
|  | </html> | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user