DIR : /home/kozerus/public_html/pn/uize/site-source/js/Uize/Widget/Bar/Progress.js

/home/kozerus/public_html/pn/uize/site-source/js/Uize/Widget/Bar

/*______________
|       ______  |   U I Z E    J A V A S C R I P T    F R A M E W O R K
|     /      /  |   ---------------------------------------------------
|    /    O /   |    MODULE : Uize.Widget.Bar.Progress Class
|   /    / /    |
|  /    / /  /| |    ONLINE : http://www.uize.com
| /____/ /__/_| | COPYRIGHT : (c)2005-2016 UIZE
|          /___ |   LICENSE : Available under MIT License or GNU General Public License
|_______________|             http://www.uize.com/license.html
*/

/* Module Meta Data
	type: Class
	importance: 3
	codeCompleteness: 100
	docCompleteness: 7
*/

/*?
	Introduction
		The =Uize.Widget.Bar.Progress= class implements a progress bar that estimates the duration of operations using the known durations of past operations.

		*DEVELOPERS:* `Chris van Rensburg`
*/

Uize.module ({
	name:'Uize.Widget.Bar.Progress',
	required:[
		'Uize.Fade',
		'Uize.Templates.ProgressBar'
	],
	builder:function (_superclass) {
		'use strict';

		/*** Private Instance Methods ***/
			function _updateUiShown () {
				this.isWired && this.showNode ('',this._inProgress);
			}

		return _superclass.subclass ({
			alphastructor:function () {
				var m = this;

				/*** Private Instance Properties ***/
					m._totalProcesses = m._totalProcessesTime = 0;
					(m._fade = Uize.Fade ({duration:4000})).wire (
						'Changed.value',
						function (_event) {m.set ({value:_event.newValue})}
					);
			},

			instanceMethods:{
				updateUi:_updateUiShown
			},

			stateProperties:{
				_inProgress:{
					name:'inProgress',
					onChange:function () {
						var
							m = this,
							_nowMs = Uize.now ()
						;
						if (m._inProgress) m._startTime = _nowMs;
						if (!m._inProgress && typeof m._startTime == 'number') {
							m._totalProcesses++;
							m._totalProcessesTime += _nowMs - m._startTime;
						}
						if (m.isWired) {
							var _updateShown = function () {
								if (m._vanishTimeout) {
									clearTimeout (m._vanishTimeout);
									m._vanishTimeout = null;
								}
								_updateUiShown.call (m);
							};
							if (m._inProgress) {
								m._fade.start ({duration:(m._totalProcesses > 0 ? m._totalProcessesTime / m._totalProcesses : 3000) * m._paddingFactor});
								_updateShown ();
							} else {
								m._fade.stop ();
								m._fade.set ({value:100});
								m._vanishTimeout = setTimeout (_updateShown,m._vanishTime);
							}
						}
					},
					value:false
					/*?
						State Properties
							inProgress
								[DOCUMENT]
					*/
				},
				_paddingFactor:{
					name:'paddingFactor',
					value:1.5
					/*?
						State Properties
							paddingFactor
								[DOCUMENT]
					*/
				},
				_vanishTime:{
					name:'vanishTime',
					value:250
					/*?
						State Properties
							vanishTime
								[DOCUMENT]
					*/
				}
			},

			set:{
				html:Uize.Templates.ProgressBar,
				orientation:'horizontal'
			}
		});
	}
});

//


koh5_pano



Your browser does not support the HTML5 canvas element.


Drag mouse to navigate.

Navigation





17.Aug.2010, Martin Wengenmayer