diff options
Diffstat (limited to 'js/dojo-1.7.2/dojox/charting/widget/BidiSupport.js')
| -rw-r--r-- | js/dojo-1.7.2/dojox/charting/widget/BidiSupport.js | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/js/dojo-1.7.2/dojox/charting/widget/BidiSupport.js b/js/dojo-1.7.2/dojox/charting/widget/BidiSupport.js new file mode 100644 index 0000000..9dc3248 --- /dev/null +++ b/js/dojo-1.7.2/dojox/charting/widget/BidiSupport.js @@ -0,0 +1,93 @@ +//>>built +define("dojox/charting/widget/BidiSupport", ["dojo/dom", "dojo/_base/lang", "dojo/_base/html", "dojo/_base/array", "dojo/_base/connect", "dojo/query", + "dijit/_BidiSupport", "../BidiSupport", "dijit/registry", "./Chart", "./Legend"], + function(dom, lang, html, arrayUtil, hub, query, dBidi, cBidi, widgetManager, Chart, Legend){ + + // patch only if present + if( Legend ){ + lang.extend(Legend, { + // summary: + // Add support for bidi scripts in legend. + // description: + // Since dojox.charting.widget.Legend inherits from _Widget use the bidi support + // that introduced there. + + postMixInProperties: function(){ + // summary: + // Connect the setter of textDir legend to setTextDir of the chart, + // so _setTextDirAttr of the legend will be called after setTextDir of the chart is called. + // tags: + // private + + // find the chart that is the owner of this legend, use it's + // textDir + if(!this.chart){ + if(!this.chartRef){ return; } + var chart = widgetManager.byId(this.chartRef); + if(!chart){ + var node = dom.byId(this.chartRef); + if(node){ + chart = widgetManager.byNode(node); + }else{ + return; + } + } + this.textDir = chart.chart.textDir; + hub.connect(chart.chart, "setTextDir", this, "_setTextDirAttr"); + + }else{ + this.textDir = this.chart.textDir; + hub.connect(this.chart, "setTextDir", this, "_setTextDirAttr"); + + } + }, + + _setTextDirAttr: function(/*String*/ textDir){ + // summary: + // Setter for textDir. + // description: + // Users shouldn't call this function; they should be calling + // set('textDir', value) + // tags: + // private + + // only if new textDir is different from the old one + if(validateTextDir(textDir) != null){ + if(this.textDir != textDir){ + this._set("textDir", textDir); + // get array of all the labels + var legendLabels = query(".dojoxLegendText", this._tr); + // for every label calculate it's new dir. + arrayUtil.forEach(legendLabels, function(label){ + label.dir = this.getTextDir(label.innerHTML, label.dir); + }, this); + } + } + } + }); + } + + // patch only if present + if( Chart ){ + lang.extend( Chart ,{ + postMixInProperties: function(){ + // set initial textDir of the chart, if passed in the creation use that value + // else use default value, following the GUI direction, this.chart doesn't exist yet + // so can't use set("textDir", textDir). This passed to this.chart in it's future creation. + this.textDir = this.params["textDir"] ? this.params["textDir"] : this.params["dir"]; + }, + + _setTextDirAttr: function(/*String*/ textDir){ + if(validateTextDir(textDir) != null){ + this._set("textDir", textDir); + this.chart.setTextDir(textDir); + } + } + }); + } + + function validateTextDir(textDir){ + return /^(ltr|rtl|auto)$/.test(textDir) ? textDir : null; + } + +}); |
