UNPKG

ares-ide

Version:

A browser-based code editor and UI designer for Enyo 2 projects

105 lines (98 loc) 3.08 kB
/** _onyx.ProgressBar_ is a control that shows the current progress of a process in a horizontal bar. {kind: "onyx.ProgressBar", progress: 10} To animate progress changes, call the _animateProgressTo()_ method: this.$.progressBar.animateProgressTo(50); You may customize the color of the bar by applying a style via the _barClasses_ property, e.g.: {kind: "onyx.ProgressBar", barClasses: "onyx-dark"} For more information, see the documentation on [Progress Indicators](building-apps/controls/progress-indicators.html) in the Enyo Developer Guide. */ enyo.kind({ name: "onyx.ProgressBar", classes: "onyx-progress-bar", published: { //* Current position of progress bar progress: 0, //* Minimum progress value (i.e., no progress made) min: 0, //* Maximum progress value (i.e., process complete) max: 100, //* CSS classes to apply to progress bar barClasses: "", //* If true, stripes are shown in progress bar showStripes: true, //* If true (and _showStripes_ is true), stripes shown in progress bar //* are animated animateStripes: true, //* Value increment that a sliders can be "snapped to" in either direction increment: 0 }, events: { //* Fires when progress bar finishes animating to a position. onAnimateProgressFinish: "" }, //* @protected components: [ {name: "progressAnimator", kind: "enyo.Animator", onStep: "progressAnimatorStep", onEnd: "progressAnimatorComplete"}, {name: "bar", classes: "onyx-progress-bar-bar"} ], create: function() { this.inherited(arguments); this.progressChanged(); this.barClassesChanged(); this.showStripesChanged(); this.animateStripesChanged(); }, barClassesChanged: function(inOld) { this.$.bar.removeClass(inOld); this.$.bar.addClass(this.barClasses); }, showStripesChanged: function() { this.$.bar.addRemoveClass("striped", this.showStripes); }, animateStripesChanged: function() { this.$.bar.addRemoveClass("animated", this.animateStripes); }, progressChanged: function() { this.progress = this.clampValue(this.min, this.max, this.progress); var p = this.calcPercent(this.progress); this.updateBarPosition(p); }, calcIncrement: function(inValue) { return (Math.round(inValue / this.increment) * this.increment); }, clampValue: function(inMin, inMax, inValue) { return Math.max(inMin, Math.min(inValue, inMax)); }, calcRatio: function(inValue) { return (inValue - this.min) / (this.max - this.min); }, calcPercent: function(inValue) { return this.calcRatio(inValue) * 100; }, updateBarPosition: function(inPercent) { this.$.bar.applyStyle("width", inPercent + "%"); }, //* @public //* Animates progress to the given value. animateProgressTo: function(inValue) { this.$.progressAnimator.play({ startValue: this.progress, endValue: inValue, node: this.hasNode() }); }, //* @protected progressAnimatorStep: function(inSender) { this.setProgress(inSender.value); return true; }, progressAnimatorComplete: function(inSender) { this.doAnimateProgressFinish(inSender); return true; } });