浏览代码

Support all types JS function properties && Add AALang for AAOptions

An An 4 年之前
父节点
当前提交
8287f6dfe0

+ 24 - 29
app/src/main/assets/AAChartView.js

@@ -2,7 +2,14 @@
         var aaGlobalChart;
 
         function loadTheHighChartView (sender,receivedWidth, receivedHeight) {
-        var aaOptions = JSON.parse(sender);
+            var aaOptions = JSON.parse(sender, function (key, value) {
+            if (   typeof(value) == 'string'
+                && value.indexOf('function') != -1) {
+                  return eval(value)
+                }
+                return value;
+                });
+
             if (aaOptions.xAxisArray) {
                 aaOptions.xAxis = aaOptions.xAxisArray
                 }
@@ -11,15 +18,18 @@
                 aaOptions.yAxis = aaOptions.yAxisArray
                 }
 
-
             aaOptions.credits = {enabled:false};
 
+            if (aaOptions.defaultOptions) {
+                Highcharts.setOptions({
+                 lang: aaOptions.defaultOptions
+                   });
+                 }
+
             if (aaOptions.plotOptions) {
                 configurePlotOptions(aaOptions);
                 }
 
-            configureOptionsFormatters(aaOptions);
-
             aaGlobalChart = Highcharts.chart('container', aaOptions);
            //全局配置(可通过全局配置设置主题)https://api.hcharts.cn/highcharts#Highcharts.setOptions
         };
@@ -52,33 +62,18 @@
                         window.androidObject.androidMethod(messageStr);
                     };
 
-                         var seriesPoint = {
-                                    events:{
-                                        mouseOver: mouseOverFunc,
-                                    }
-                                   };
-                         aaPlotOptions.series.point = seriesPoint;
+                    if (aaPlotOptions.series.point) {// set property directly for series point
+                        aaPlotOptions.series.point.events.mouseOver = mouseOverFunc;
+                    } else {// create a new series point object instance
+                        var seriesPoint = {
+                            events:{
+                                mouseOver: mouseOverFunc,
+                             }
+                         };
+                    aaPlotOptions.series.point = seriesPoint;
+                    }
                 }
 
-        function configureOptionsFormatters(aaOptions) {
-            if (aaOptions.tooltip
-                && aaOptions.tooltip.formatter) {
-                aaOptions.tooltip.formatter = eval(aaOptions.tooltip.formatter);
-            }
-
-            if (aaOptions.xAxis
-                && aaOptions.xAxis.labels
-                && aaOptions.xAxis.labels.formatter) {
-                aaOptions.xAxis.labels.formatter = eval(aaOptions.xAxis.labels.formatter);
-            }
-
-            if (aaOptions.yAxis
-                && aaOptions.yAxis.labels
-                && aaOptions.yAxis.labels.formatter) {
-                aaOptions.yAxis.labels.formatter = eval(aaOptions.yAxis.labels.formatter);
-            }
-        }
-
         function onlyRefreshTheChartDataWithSeries(receivedSeries, animation) {
             var receivedSeriesArr = JSON.parse(receivedSeries);
             var seriesArrLength = receivedSeriesArr.length;

+ 17 - 0
app/src/main/java/com/aachartmodel/aainfographics/AAInfographicsLib/AAOptionsModel/AALang.kt

@@ -0,0 +1,17 @@
+package com.aachartmodel.aainfographics.AAInfographicsLib.AAOptionsModel
+
+class AALang {
+    var resetZoom: String? = null
+    var thousandsSep: String? = null
+
+    fun resetZoom(prop: String?): AALang {
+        resetZoom = prop
+        return this
+    }
+
+    fun thousandsSep(prop: String?): AALang {
+        thousandsSep = prop
+        return this
+    }
+}
+

+ 6 - 0
app/src/main/java/com/aachartmodel/aainfographics/AAInfographicsLib/AAOptionsModel/AAOptions.kt

@@ -24,6 +24,7 @@ class AAOptions {
     var legend: AALegend? = null
     var pane: AAPane? = null
     var colors: Array<Any>? = null
+    var defaultOptions: AALang? = null
     var touchEventEnabled: Boolean? = null
 
     fun chart(prop: AAChart): AAOptions {
@@ -91,6 +92,11 @@ class AAOptions {
         return this
     }
 
+    fun defaultOptions(prop: AALang): AAOptions? {
+        defaultOptions = prop
+        return this
+    }
+
     fun touchEventEnabled(prop: Boolean?): AAOptions {
         touchEventEnabled = prop
         return this

+ 5 - 0
app/src/main/java/com/aachartmodel/aainfographics/ChartsDemo/ChartComposer/ChartOptionsComposer.kt

@@ -81,6 +81,11 @@ class ChartOptionsComposer {
                 .align(AAChartAlignType.Right)
 
             aaOptions.yAxis?.labels?.format = "{value} %"//给y轴添加单位
+
+            aaOptions.defaultOptions = AALang()
+                .resetZoom("重置缩放比例")
+                .thousandsSep(",")
+
             return aaOptions
         }