1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- 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;
- }
-
- });
|