dojo.provide("dijit.ProgressBar"); dojo.require("dojo.fx"); dojo.require("dojo.number"); dojo.require("dijit._Widget"); dojo.require("dijit._Templated"); dojo.declare("dijit.ProgressBar", [dijit._Widget, dijit._Templated], { // summary: // A progress indication widget, showing the amount completed // (often the percentage completed) of a task. // // example: // |
// |
// // description: // Note that the progress bar is updated via (a non-standard) // update() method, rather than via attr() like other widgets. // progress: [const] String (Percentage or Number) // Number or percentage indicating amount of task completed. // With "%": percentage value, 0% <= progress <= 100%, or // without "%": absolute value, 0 <= progress <= maximum // TODO: rename to value for 2.0 progress: "0", // maximum: [const] Float // Max sample number maximum: 100, // places: [const] Number // Number of places to show in values; 0 by default places: 0, // indeterminate: [const] Boolean // If false: show progress value (number or percentage). // If true: show that a process is underway but that the amount completed is unknown. indeterminate: false, templatePath: dojo.moduleUrl("dijit", "templates/ProgressBar.html"), // _indeterminateHighContrastImagePath: [private] dojo._URL // URL to image to use for indeterminate progress bar when display is in high contrast mode _indeterminateHighContrastImagePath: dojo.moduleUrl("dijit", "themes/a11y/indeterminate_progress.gif"), // public functions postCreate: function(){ this.inherited(arguments); this.indeterminateHighContrastImage.setAttribute("src", this._indeterminateHighContrastImagePath); this.update(); }, update: function(/*Object?*/attributes){ // summary: // Change attributes of ProgressBar, similar to attr(hash). // // attributes: // May provide progress and/or maximum properties on this parameter; // see attribute specs for details. // // example: // | myProgressBar.update({'indeterminate': true}); // | myProgressBar.update({'progress': 80}); // TODO: deprecate this method and use attr() instead dojo.mixin(this, attributes || {}); var tip = this.internalProgress; var percent = 1, classFunc; if(this.indeterminate){ classFunc = "addClass"; dijit.removeWaiState(tip, "valuenow"); dijit.removeWaiState(tip, "valuemin"); dijit.removeWaiState(tip, "valuemax"); }else{ classFunc = "removeClass"; if(String(this.progress).indexOf("%") != -1){ percent = Math.min(parseFloat(this.progress)/100, 1); this.progress = percent * this.maximum; }else{ this.progress = Math.min(this.progress, this.maximum); percent = this.progress / this.maximum; } var text = this.report(percent); this.label.firstChild.nodeValue = text; dijit.setWaiState(tip, "describedby", this.label.id); dijit.setWaiState(tip, "valuenow", this.progress); dijit.setWaiState(tip, "valuemin", 0); dijit.setWaiState(tip, "valuemax", this.maximum); } dojo[classFunc](this.domNode, "dijitProgressBarIndeterminate"); tip.style.width = (percent * 100) + "%"; this.onChange(); }, report: function(/*float*/percent){ // summary: // Generates message to show inside progress bar (normally indicating amount of task completed). // May be overridden. // tags: // extension return dojo.number.format(percent, { type: "percent", places: this.places, locale: this.lang }); }, onChange: function(){ // summary: // Callback fired when progress updates. // tags: // progress } });