summaryrefslogtreecommitdiff
path: root/js/dojo-1.7.2/dojox/charting/widget/BidiSupport.js
diff options
context:
space:
mode:
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.js93
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;
+ }
+
+});