[483] | 1 | define([ |
---|
| 2 | "dojo/_base/declare", |
---|
| 3 | "dojo/_base/lang", |
---|
| 4 | "dojo/dom-construct", |
---|
| 5 | "dijit/_WidgetBase", |
---|
| 6 | "./iconUtils" |
---|
| 7 | ], function(declare, lang, domConstruct, WidgetBase, iconUtils){ |
---|
| 8 | |
---|
| 9 | // module: |
---|
| 10 | // dojox/mobile/Rating |
---|
| 11 | |
---|
| 12 | return declare("dojox.mobile.Rating", WidgetBase, { |
---|
| 13 | // summary: |
---|
| 14 | // A widget that displays a rating, usually with stars. |
---|
| 15 | // description: |
---|
| 16 | // This widget simply shows the specified number of stars. It is a |
---|
| 17 | // read-only widget, and has no editing capability. |
---|
| 18 | |
---|
| 19 | // image: String |
---|
| 20 | // Path to a star image, which includes three stars, full star, |
---|
| 21 | // empty star, and half star, from left to right. |
---|
| 22 | image: "", |
---|
| 23 | |
---|
| 24 | // numStars: Number |
---|
| 25 | // The number of stars to show. |
---|
| 26 | numStars: 5, |
---|
| 27 | |
---|
| 28 | // value: Number |
---|
| 29 | // The current value of the Rating. |
---|
| 30 | value: 0, |
---|
| 31 | |
---|
| 32 | // alt: String |
---|
| 33 | // An alternate text for the icon image. |
---|
| 34 | alt: "", |
---|
| 35 | |
---|
| 36 | /* internal properties */ |
---|
| 37 | |
---|
| 38 | // baseClass: String |
---|
| 39 | // The name of the CSS class of this widget. |
---|
| 40 | baseClass: "mblRating", |
---|
| 41 | |
---|
| 42 | buildRendering: function(){ |
---|
| 43 | this.inherited(arguments); |
---|
| 44 | this.domNode.style.display = "inline-block"; |
---|
| 45 | var img = this.imgNode = domConstruct.create("img"); |
---|
| 46 | this.connect(img, "onload", |
---|
| 47 | lang.hitch(this, function(){ this.set("value", this.value); })); |
---|
| 48 | iconUtils.createIcon(this.image, null, img); |
---|
| 49 | }, |
---|
| 50 | |
---|
| 51 | _setValueAttr: function(/*Number*/value){ |
---|
| 52 | // summary: |
---|
| 53 | // Sets the value of the Rating. |
---|
| 54 | // tags: |
---|
| 55 | // private |
---|
| 56 | this._set("value", value); |
---|
| 57 | var h = this.imgNode.height; |
---|
| 58 | if(h == 0){ return; } // loading of image has not been completed yet |
---|
| 59 | domConstruct.empty(this.domNode); |
---|
| 60 | var i, left, w = this.imgNode.width / 3; |
---|
| 61 | for(i = 0; i < this.numStars; i++){ |
---|
| 62 | if(i <= value - 1){ |
---|
| 63 | left = 0; // full |
---|
| 64 | }else if(i >= value){ |
---|
| 65 | left = w; // empty |
---|
| 66 | }else{ |
---|
| 67 | left = w * 2; // half |
---|
| 68 | } |
---|
| 69 | var parent = domConstruct.create("div", { |
---|
| 70 | style: {"float": "left"} |
---|
| 71 | }, this.domNode); |
---|
| 72 | iconUtils.createIcon(this.image, |
---|
| 73 | "0," + left + "," + w + "," + h, null, this.alt, parent); |
---|
| 74 | } |
---|
| 75 | } |
---|
| 76 | }); |
---|
| 77 | }); |
---|