78 lines
2.0 KiB
JavaScript
78 lines
2.0 KiB
JavaScript
define("dojox/mobile/Rating", [
|
|
"dojo/_base/declare",
|
|
"dojo/_base/lang",
|
|
"dojo/dom-construct",
|
|
"dijit/_WidgetBase",
|
|
"./iconUtils"
|
|
], function(declare, lang, domConstruct, WidgetBase, iconUtils){
|
|
|
|
// module:
|
|
// dojox/mobile/Rating
|
|
|
|
return declare("dojox.mobile.Rating", WidgetBase, {
|
|
// summary:
|
|
// A widget that shows rating with stars.
|
|
// description:
|
|
// This widget simply shows the specified number of stars. It is a
|
|
// read-only widget, and has no editing capability.
|
|
|
|
// image: String
|
|
// Path to a star image, which includes three stars, full star,
|
|
// empty star, and half star, from left to right.
|
|
image: "",
|
|
|
|
// numStars: Number
|
|
// The number of stars to show.
|
|
numStars: 5,
|
|
|
|
// value: Number
|
|
// The current value of the Rating.
|
|
value: 0,
|
|
|
|
// alt: String
|
|
// An alternate text for the icon image.
|
|
alt: "",
|
|
|
|
/* internal properties */
|
|
|
|
// baseClass: String
|
|
// The name of the CSS class of this widget.
|
|
baseClass: "mblRating",
|
|
|
|
buildRendering: function(){
|
|
this.inherited(arguments);
|
|
this.domNode.style.display = "inline-block";
|
|
var img = this.imgNode = domConstruct.create("img");
|
|
this.connect(img, "onload",
|
|
lang.hitch(this, function(){ this.set("value", this.value); }));
|
|
iconUtils.createIcon(this.image, null, img);
|
|
},
|
|
|
|
_setValueAttr: function(/*Number*/value){
|
|
// summary:
|
|
// Sets the value of the Rating.
|
|
// tags:
|
|
// private
|
|
this._set("value", value);
|
|
var h = this.imgNode.height;
|
|
if(h == 0){ return; } // loading of image has not been completed yet
|
|
domConstruct.empty(this.domNode);
|
|
var i, left, w = this.imgNode.width / 3;
|
|
for(i = 0; i < this.numStars; i++){
|
|
if(i <= value - 1){
|
|
left = 0; // full
|
|
}else if(i >= value){
|
|
left = w; // empty
|
|
}else{
|
|
left = w * 2; // half
|
|
}
|
|
var parent = domConstruct.create("div", {
|
|
style: {"float": "left"}
|
|
}, this.domNode);
|
|
iconUtils.createIcon(this.image,
|
|
"0," + left + "," + w + "," + h, null, this.alt, parent);
|
|
}
|
|
}
|
|
});
|
|
});
|