summaryrefslogtreecommitdiff
path: root/js/dojo-1.6/dojox/charting/scaler/common.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/dojo-1.6/dojox/charting/scaler/common.js')
-rw-r--r--js/dojo-1.6/dojox/charting/scaler/common.js69
1 files changed, 69 insertions, 0 deletions
diff --git a/js/dojo-1.6/dojox/charting/scaler/common.js b/js/dojo-1.6/dojox/charting/scaler/common.js
new file mode 100644
index 0000000..3a83ff0
--- /dev/null
+++ b/js/dojo-1.6/dojox/charting/scaler/common.js
@@ -0,0 +1,69 @@
+/*
+ Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+
+if(!dojo._hasResource["dojox.charting.scaler.common"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.charting.scaler.common"] = true;
+dojo.provide("dojox.charting.scaler.common");
+
+(function(){
+ var eq = function(/*Number*/ a, /*Number*/ b){
+ // summary: compare two FP numbers for equality
+ return Math.abs(a - b) <= 1e-6 * (Math.abs(a) + Math.abs(b)); // Boolean
+ };
+
+ dojo.mixin(dojox.charting.scaler.common, {
+ findString: function(/*String*/ val, /*Array*/ text){
+ val = val.toLowerCase();
+ for(var i = 0; i < text.length; ++i){
+ if(val == text[i]){ return true; }
+ }
+ return false;
+ },
+ getNumericLabel: function(/*Number*/ number, /*Number*/ precision, /*Object*/ kwArgs){
+ var def = "";
+ if(dojo.number){
+ def = (kwArgs.fixed ? dojo.number.format(number, {places : precision < 0 ? -precision : 0}) :
+ dojo.number.format(number)) || "";
+ }else{
+ def = kwArgs.fixed ? number.toFixed(precision < 0 ? -precision : 0) : number.toString();
+ }
+ if(kwArgs.labelFunc){
+ var r = kwArgs.labelFunc(def, number, precision);
+ if(r){ return r; }
+ // else fall through to the regular labels search
+ }
+ if(kwArgs.labels){
+ // classic binary search
+ var l = kwArgs.labels, lo = 0, hi = l.length;
+ while(lo < hi){
+ var mid = Math.floor((lo + hi) / 2), val = l[mid].value;
+ if(val < number){
+ lo = mid + 1;
+ }else{
+ hi = mid;
+ }
+ }
+ // lets take into account FP errors
+ if(lo < l.length && eq(l[lo].value, number)){
+ return l[lo].text;
+ }
+ --lo;
+ if(lo >= 0 && lo < l.length && eq(l[lo].value, number)){
+ return l[lo].text;
+ }
+ lo += 2;
+ if(lo < l.length && eq(l[lo].value, number)){
+ return l[lo].text;
+ }
+ // otherwise we will produce a number
+ }
+ return def;
+ }
+ });
+})();
+
+}