Răsfoiți Sursa

Optimize AAChartView

An An 5 ani în urmă
părinte
comite
a59e4a769f

+ 90 - 80
app/src/main/assets/AAChartView.js

@@ -2,36 +2,24 @@
         var aaGlobalChart;
 
         function loadTheHighChartView (sender,receivedWidth, receivedHeight) {
-            var aaOptions = JSON.parse(sender);
+        var aaOptions = JSON.parse(sender);
             if (aaOptions.xAxisArray) {
-                    aaOptions.xAxis = aaOptions.xAxisArray
+                aaOptions.xAxis = aaOptions.xAxisArray
                 }
 
             if (aaOptions.yAxisArray) {
-                    aaOptions.yAxis = aaOptions.yAxisArray
+                aaOptions.yAxis = aaOptions.yAxisArray
                 }
 
+
             aaOptions.credits = {enabled:false};//去掉表格右下角版权信息
+
             if (aaOptions.plotOptions) {
-                    configurePlotOptions(aaOptions);
-                }
-            if (aaOptions.tooltip) {
-                    if (aaOptions.tooltip.formatter) {
-                        aaOptions.tooltip.formatter = eval(aaOptions.tooltip.formatter);
-                    }
+                configurePlotOptions(aaOptions);
                 }
 
-                    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);
-                            }
+            configureOptionsFormatters(aaOptions);
+
             aaGlobalChart = Highcharts.chart('container', aaOptions);
            //全局配置(可通过全局配置设置主题)https://api.hcharts.cn/highcharts#Highcharts.setOptions
         };
@@ -45,13 +33,12 @@
                     }
                     // 添加鼠标事件
                     if (aaOptions.touchEventEnabled == true && aaPlotOptions.series) {
-                        configureChartTouchEvent(aaOptions);
+                        configureChartTouchEvent(aaPlotOptions);
                     }
                 }
 
-        function configureChartTouchEvent(aaOptions) {
+        function configureChartTouchEvent(aaPlotOptions) {
                     var mouseOverFunc = function(){
-                        //console.log(this)
                         var message = {
                             name: this.series.name,
                             y :this.y,
@@ -62,86 +49,109 @@
                         };
 
                         var messageStr = JSON.stringify(message);
-
-//                        alert("AAChartViewBridge://?"+ messageStr);
-
                         window.androidObject.androidMethod(messageStr);
-
-//                        overrideUrlLoading("AAChartViewBridge://?"+ messageStr);
-
                     };
 
-                    var seriesPoint = {
-                              events:{
-                                  mouseOver: mouseOverFunc,
-          //                      click: mouseOverFunc,
-                              }
-                             };
-                              aaOptions.plotOptions.series.point = seriesPoint;
+                         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);
+            }
 
-        function overrideUrlLoading(testOverrideUrlStr) {
-            alert(testOverrideUrlStr);
-            uiWebViewLoadURL(testOverrideUrlStr);
-        }
+            if (aaOptions.xAxis
+                && aaOptions.xAxis.labels
+                && aaOptions.xAxis.labels.formatter) {
+                aaOptions.xAxis.labels.formatter = eval(aaOptions.xAxis.labels.formatter);
+            }
 
-        function uiWebViewLoadURL(url) {
-            var iFrame;
-            iFrame = document.createElement("iframe");
-            iFrame.setAttribute("src", url);
-            iFrame.setAttribute("style", "display:none;");
-            iFrame.setAttribute("height", "0px");
-            iFrame.setAttribute("width", "0px");
-            iFrame.setAttribute("frameborder", "0");
-            document.body.appendChild(iFrame);
-            iFrame.parentNode.removeChild(iFrame);
-            iFrame = null;
+            if (aaOptions.yAxis
+                && aaOptions.yAxis.labels
+                && aaOptions.yAxis.labels.formatter) {
+                aaOptions.yAxis.labels.formatter = eval(aaOptions.yAxis.labels.formatter);
+            }
         }
 
-        function onlyRefreshTheChartDataWithSeries (receivedSeries) {
-            var receivedSeriesElementArr = JSON.parse(receivedSeries);
-
-            for (var i = 0; i < receivedSeriesElementArr.length; i++) {
-                var receivedSeriesData = receivedSeriesElementArr[i].data;
+        function onlyRefreshTheChartDataWithSeries(receivedSeries) {
+            var receivedSeriesArr = JSON.parse(receivedSeries);
+            var seriesArrLength = receivedSeriesArr.length;
+            for (var i = 0; i < seriesArrLength; i++) {
+                var receivedSeriesElementData = receivedSeriesArr[i].data;
                 // 获取series
-                var chartSeries =  aaGlobalChart.series[i];
+                var seriesElement = aaGlobalChart.series[i];
                 // 执行只刷新数据的函数
-                chartSeries.setData(receivedSeriesData);
+                seriesElement.setData(receivedSeriesElementData);
             }
         }
 
-          //pragma mark -- setter method 适应内容https://code.hcharts.cn/highcharts/4YM0a8
-        function setTheChartViewContentWidth (receivedWidth) {
-            var container = document.getElementById('container');//获得元素
-            container.style.width = receivedWidth;//设置宽度
-            aaGlobalChart.reflow();
+        function updateChart(optionsStr, redraw) {
+            var options = JSON.parse(optionsStr);
+            aaGlobalChart.update(options,redraw);
         }
 
-        function setTheChartViewContentHeight (receivedHeight) {
-             var container = document.getElementById('container');//获得元素
-             container.style.height = receivedHeight;//设置高度
-             aaGlobalChart.reflow();
+        function addPointToChartSeries(elementIndex, optionsStr, redraw, shift, animation) {
+            var options = JSON.parse(optionsStr);
+            var redrawBool = (redraw == "true") ? true:false;
+            var shiftBool = (shift == "true") ? true:false;
+            var animationBool = (animation == "true") ? true:false;
 
+            var seriesElement = aaGlobalChart.series[elementIndex];
+            seriesElement.addPoint(options, redrawBool, shiftBool, animationBool);
+        }
+
+        //pragma mark -- setter method
+        function setTheChartViewContentWidth(receivedWidth) {
+            var container = document.getElementById('container'); //获得元素
+            container.style.width = receivedWidth; //设置宽度
+            aaGlobalChart.reflow();
+        }
+
+        function setTheChartViewContentHeight(receivedHeight) {
+            var container = document.getElementById('container'); //获得元素
+            container.style.height = receivedHeight; //设置高度
+            aaGlobalChart.reflow();
         }
 
         function setChartSeriesHidden(hidden) {
-             for (var i = 0; i < aaGlobalChart.series.length; i++) {
-                  var series = aaGlobalChart.series[i];
-                     if (hidden == true) {
-                        series.hide();
-                     } else {
-                         series.show();
-                       }
-                   }
+            for (var i = 0; i < aaGlobalChart.series.length; i++) {
+                var seriesElement = aaGlobalChart.series[i];
+                if (hidden == true) {
+                    seriesElement.hide();
+                } else {
+                    seriesElement.show();
+                }
+            }
         }
 
-        function showTheSeriesElementContentWithIndex (elementIndex) {
-            var series = aaGlobalChart.series[elementIndex];
-            series.show();
+        function showTheSeriesElementContentWithIndex(elementIndex) {
+            var seriesElement = aaGlobalChart.series[elementIndex];
+            seriesElement.show();
         }
 
         function hideTheSeriesElementContentWithIndex(elementIndex) {
-            var series = aaGlobalChart.series[elementIndex];
-            series.hide();
+            var seriesElement = aaGlobalChart.series[elementIndex];
+            seriesElement.hide();
+        }
+
+        function addElementToChartSeriesWithElement(elementStr) {
+            var seriesElement = JSON.parse(elementStr);
+            aaGlobalChart.addSeries(seriesElement);
+        }
+
+        function removeElementFromChartSeriesWithElementIndex(elementIndex) {
+            var seriesElement = aaGlobalChart.series[elementIndex];
+            if (seriesElement) {
+                seriesElement.remove(true);
+            }
+        }
+
+        function evaluateTheJavaScriptStringFunction(jsStringFunction) {
+            eval(jsStringFunction);
         }

+ 227 - 115
app/src/main/java/com/aachartmodel/aainfographics/AAInfographicsLib/AAChartConfiger/AAChartView.kt

@@ -36,6 +36,7 @@ package com.aachartmodel.aainfographics.aainfographicsLib.aachartConfiger
 import android.content.Context
 import android.os.Build
 import android.support.annotation.RequiresApi
+import android.support.v7.app.AlertDialog
 import android.util.AttributeSet
 import android.util.Log
 import android.webkit.JavascriptInterface
@@ -44,6 +45,7 @@ import android.webkit.WebChromeClient
 import android.webkit.WebResourceRequest
 import android.webkit.WebView
 import android.webkit.WebViewClient
+import com.aachartmodel.aainfographics.AAInfographicsLib.AAChartConfiger.AAJSStringPurer
 import com.aachartmodel.aainfographics.AAInfographicsLib.AAOptionsModel.AAOptions
 import com.example.chartcorekotlin.AAChartConfiger.AAChartModel
 import com.example.chartcorekotlin.AAChartConfiger.AAOptionsConstructor
@@ -54,6 +56,7 @@ import com.google.gson.internal.LinkedTreeMap
 
 import java.util.HashMap
 
+
 class AAMoveOverEventMessageModel {
     var name: String? = null
     var x: Double? = null
@@ -65,15 +68,6 @@ class AAMoveOverEventMessageModel {
 
 
 class AAChartView : WebView {
-
-    var contentWidth: Float? = null
-    var contentHeight: Float? = null
-    var chartSeriesHidden: Boolean? = null
-    var callBack: AAChartViewCallBack? = null
-
-
-    private val optionsJson: String? = null
-
     interface AAChartViewCallBack {
         fun chartViewDidFinishLoad(aaChartView: AAChartView)
         fun chartViewMoveOverEventMessage(
@@ -82,108 +76,245 @@ class AAChartView : WebView {
         )
     }
 
-    constructor(context: Context) : super(context) {
-        sharedConstructor()
+    var contentWidth: Float? = null
+        set(value) {
+            field = value
+            val jsStr = ("setTheChartViewContentWidth('"
+                    + field + "')")
+            safeEvaluateJavaScriptString(jsStr)
+        }
+    var contentHeight: Float? = null
+        set(value) {
+            field = value
+            val jsStr = ("setTheChartViewContentHeight('"
+                    + field + "')")
+            safeEvaluateJavaScriptString(jsStr)
+        }
+    var chartSeriesHidden: Boolean? = null
+        set(value) {
+            field = value
+            val jsStr = ("setChartSeriesHidden('"
+                    + field + "')")
+            safeEvaluateJavaScriptString(jsStr)
+        }
+    var isClearBackgroundColor: Boolean? = null
+//        set(value) {
+//            field = value
+//            if (field!!) {
+//                setBackgroundColor(0)
+//                this.background.alpha = 0
+//            } else {
+//                setBackgroundColor(1)
+//                this.background.alpha = 255
+//            }
+//        }
+    var callBack: AAChartViewCallBack? = null
+
+
+    private var optionsJson: String? = null
+
+    constructor(
+        context: Context?
+    ) : super(context) {
+        setupBasicContent()
     }
 
-    constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
-        sharedConstructor()
+    constructor(
+        context: Context?,
+        attrs: AttributeSet?
+    ) : super(context, attrs) {
+        setupBasicContent()
     }
 
-    constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(
-        context,
-        attrs,
-        defStyleAttr
-    ) {
-        sharedConstructor()
+    constructor(
+        context: Context?,
+        attrs: AttributeSet?,
+        defStyleAttr: Int
+    ) : super(context, attrs, defStyleAttr) {
+        setupBasicContent()
     }
 
-    private fun sharedConstructor() {
-        // Do some initialize work.
-        this.contentWidth = 320f
-        this.contentHeight = 350f
-        //        //设置WebView支持JavaScript(这一句是十分关键的一句)
+    private fun setupBasicContent() { // Do some initialize work.
+        contentWidth = 420f
+        contentHeight = 580f
+        isClearBackgroundColor = false
         this.settings.javaScriptEnabled = true
-//        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
-//            this.setWebContentsDebuggingEnabled(true)
-//        }
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+            setWebContentsDebuggingEnabled(true)
+        }
         //把当前对象作为androidObject别名传递给js
-        //js通过window.androidObject.androidMethod()就可以直接调用安卓的androidMethod方法
-        this.addJavascriptInterface(this, "androidObject")
+//js通过window.androidObject.androidMethod()就可以直接调用安卓的androidMethod方法
+        addJavascriptInterface(this, "androidObject")
     }
 
-
     //js调用安卓,必须加@JavascriptInterface注释的方法才可以被js调用
     @JavascriptInterface
-    fun androidMethod(message: String): String {
+    fun androidMethod(message: String?): String {
         val gson = Gson()
-        var messageBody: Map<*, *> = HashMap<String, Any>()
+        var messageBody: Map<*, *> =
+            HashMap<String, Any>()
         messageBody = gson.fromJson(message, messageBody.javaClass)
-        val eventMessageModel = getEventMessageModel(messageBody)
+        val eventMessageModel: AAMoveOverEventMessageModel = getEventMessageModel(messageBody)
         if (callBack != null) {
             callBack!!.chartViewMoveOverEventMessage(this, eventMessageModel)
         }
-        println("显示总共调用了几次")
-
+        //       Log.i("androidMethod","++++++++++++++++显示总共调用了几次");
         return ""
     }
 
-    internal fun getEventMessageModel(messageBody: Map<*, *>): AAMoveOverEventMessageModel {
-        val eventMessageModel = AAMoveOverEventMessageModel()
-        eventMessageModel.name = messageBody["name"].toString()
-        eventMessageModel.x = messageBody["x"] as Double
-        eventMessageModel.y = messageBody["y"] as Double
-        eventMessageModel.category = messageBody["category"].toString()
-        eventMessageModel.offset = messageBody["offset"] as LinkedTreeMap<*, *>
-        eventMessageModel.index = messageBody["index"] as Double
-        return eventMessageModel
+    fun aa_drawChartWithChartModel(chartModel: AAChartModel) {
+        val aaOptions: AAOptions = AAOptionsConstructor.configureChartOptions(chartModel)
+        aa_drawChartWithChartOptions(aaOptions)
     }
 
-    fun aa_drawChartWithChartModel(chartModel: AAChartModel) {
-        val aaOptions = AAOptionsConstructor.configureChartOptions(chartModel)
-        this.aa_drawChartWithChartOptions(aaOptions)
+    fun aa_refreshChartWithChartModel(chartModel: AAChartModel) {
+        val aaOptions: AAOptions = AAOptionsConstructor.configureChartOptions(chartModel)
+        aa_refreshChartWithChartOptions(aaOptions)
     }
 
-    fun aa_onlyRefreshTheChartDataWithChartModelSeriesArray(seriesElementsArr: Array<AASeriesElement>) {
-        this.aa_onlyRefreshTheChartDataWithChartOptionsSeriesArray(seriesElementsArr)
+    fun aa_drawChartWithChartOptions(chartOptions: AAOptions) {
+        if (optionsJson != null) {
+            aa_refreshChartWithChartOptions(chartOptions)
+        } else {
+            loadLocalFilesAndDrawChart(chartOptions)
+            showJavaScriptAlertView()
+        }
     }
 
-    fun aa_refreshChartWithChartModel(chartModel: AAChartModel) {
-        val aaOptions = AAOptionsConstructor.configureChartOptions(chartModel)
-        this.aa_refreshChartWithChartOptions(aaOptions)
+    fun aa_refreshChartWithChartOptions(chartOptions: AAOptions) {
+        configureChartOptionsAndDrawChart(chartOptions)
     }
 
-    fun aa_drawChartWithChartOptions(chartOptions: AAOptions) {
+    fun aa_onlyRefreshTheChartDataWithChartOptionsSeriesArray(seriesElementsArr: Array<AASeriesElement?>?) {
+        val gson = Gson()
+        val seriesArr = gson.toJson(seriesElementsArr)
+        val javaScriptStr = ("onlyRefreshTheChartDataWithSeries('"
+                + seriesArr + "')")
+        safeEvaluateJavaScriptString(javaScriptStr)
+    }
+
+    fun aa_updateChartWithOptions(
+        options: Any,
+        redraw: Boolean
+    ) {
+        var classNameStr = options.javaClass.simpleName
+        classNameStr = classNameStr.replace("AA", "")
+        //convert fist character to be lowercase string
+        val firstChar = classNameStr.substring(0, 1)
+        val lowercaseFirstStr = firstChar.toLowerCase()
+        classNameStr = classNameStr.substring(1)
+        val finalClassName = lowercaseFirstStr + classNameStr
+        val finalOptionsMap = HashMap<Any?, Any?>()
+        finalOptionsMap[finalClassName] = options
+        val optionsStr = Gson().toJson(finalOptionsMap)
+        val javaScriptStr = "updateChart('$optionsStr','$redraw')"
+        safeEvaluateJavaScriptString(javaScriptStr)
+    }
+
+    @JvmOverloads
+    fun aa_addPointToChartSeriesElement(
+        elementIndex: Int,
+        options: Any,
+        shift: Boolean =
+            true
+    ) {
+        aa_addPointToChartSeriesElement(
+            elementIndex,
+            options,
+            true,
+            shift,
+            true
+        )
+    }
+
+    fun aa_addPointToChartSeriesElement(
+        elementIndex: Int,
+        options: Any,
+        redraw: Boolean,
+        shift: Boolean,
+        animation: Boolean
+    ) {
+        val optionsStr: String
+        optionsStr = if (options is Int
+            || options is Float
+            || options is Double
+        ) {
+            options.toString()
+        } else {
+            Gson().toJson(options)
+        }
+        val javaScriptStr = ("addPointToChartSeries('"
+                + elementIndex + "','"
+                + optionsStr + "','"
+                + redraw + "','"
+                + shift + "','"
+                + animation + "')")
+        safeEvaluateJavaScriptString(javaScriptStr)
+    }
+
+    fun aa_showTheSeriesElementContent(elementIndex: Int) {
+        val javaScriptStr = ("showTheSeriesElementContentWithIndex('"
+                + elementIndex + "')")
+        safeEvaluateJavaScriptString(javaScriptStr)
+    }
+
+    fun aa_hideTheSeriesElementContent(elementIndex: Int) {
+        val javaScriptStr = ("hideTheSeriesElementContentWithIndex('"
+                + elementIndex + "')")
+        safeEvaluateJavaScriptString(javaScriptStr)
+    }
+
+    fun aa_addElementToChartSeries(aaSeriesElement: AASeriesElement) {
+        val pureElementJsonStr = Gson().toJson(aaSeriesElement)
+        val javaScriptStr = ("addElementToChartSeriesWithElement('"
+                + pureElementJsonStr + "')")
+        safeEvaluateJavaScriptString(javaScriptStr)
+    }
+
+    fun aa_removeElementFromChartSeries(elementIndex: Int) {
+        val javaScriptStr = ("removeElementFromChartSeriesWithElementIndex('"
+                + elementIndex + "')")
+        safeEvaluateJavaScriptString(javaScriptStr)
+    }
+
+    fun aa_evaluateTheJavaScriptStringFunction(jsFunctionStr: String) {
+        val pureJSFunctionStr: String =
+            AAJSStringPurer.pureJavaScriptFunctionString(jsFunctionStr)
+        val jsFunctionNameStr = ("evaluateTheJavaScriptStringFunction('"
+                + pureJSFunctionStr + "')")
+        safeEvaluateJavaScriptString(jsFunctionNameStr)
+    }
+
+    private fun loadLocalFilesAndDrawChart(aaOptions: AAOptions) {
         this.loadUrl("file:///android_asset/AAChartView.html")
         this.webViewClient = object : WebViewClient() {
-            override fun onPageFinished(view: WebView, url: String) {
-                println("图表加载完成!!!!!!!! ")
+            override fun onPageFinished(
+                view: WebView,
+                url: String
+            ) { //                Log.i("js files load","图表加载完成!!!!!!!! ");
+                configureChartOptionsAndDrawChart(aaOptions)
                 if (callBack != null) {
                     callBack!!.chartViewDidFinishLoad(this@AAChartView)
                 }
-                configureChartOptionsAndDrawChart(chartOptions)
-            }
-
-            @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
-            override fun shouldOverrideUrlLoading(
-                view: WebView,
-                request: WebResourceRequest
-            ): Boolean {
-                super.shouldOverrideUrlLoading(view, request)
-                val urlStr = request.url.toString()
-                val jsBridgeName = "AAChartViewBridge".toLowerCase()
-                if (urlStr.startsWith(jsBridgeName)) {
-                    val message = urlStr.replace("$jsBridgeName://?", "")
-                    val gson = Gson()
-                    var messageBody: Map<*, *> = HashMap<String, Any>()
-                    messageBody = gson.fromJson(message, messageBody.javaClass)
-                }
-
-                return false
             }
         }
+    }
 
+    private fun configureChartOptionsAndDrawChart(chartOptions: AAOptions) {
+        if (isClearBackgroundColor!!) {
+            chartOptions.chart!!.backgroundColor("rgba(0,0,0,0)")
+        }
+        val gson = Gson()
+        val aaOptionsJsonStr = gson.toJson(chartOptions)
+        optionsJson = aaOptionsJsonStr
+        val javaScriptStr = ("loadTheHighChartView('"
+                + aaOptionsJsonStr + "','"
+                + contentWidth + "','"
+                + contentHeight + "')")
+        safeEvaluateJavaScriptString(javaScriptStr)
+    }
 
+    private fun showJavaScriptAlertView() {
         this.webChromeClient = object : WebChromeClient() {
             override fun onJsAlert(
                 view: WebView,
@@ -192,57 +323,38 @@ class AAChartView : WebView {
                 result: JsResult
             ): Boolean {
                 super.onJsAlert(view, url, message, result)
-
+                val urlStr = "url --->$url\n\n\n"
+                val messageStr = "message --->$message\n\n\n"
+                val resultStr = "result --->$result"
+                val alertMessageStr = urlStr + messageStr + resultStr
+                AlertDialog.Builder(context)
+                    .setTitle("JavaScript alert Information") //设置对话框标题
+                    .setMessage(alertMessageStr)
+                    .setNeutralButton("sure", null)
+                    .show()
                 return true
             }
         }
     }
 
-    fun aa_onlyRefreshTheChartDataWithChartOptionsSeriesArray(seriesElementsArr: Array<AASeriesElement>) {
-        // 将对象编译成json
-        val gson = Gson()
-        val seriesArr = gson.toJson(seriesElementsArr)
-        val javaScriptStr = "onlyRefreshTheChartDataWithSeries('$seriesArr')"
-        this.safeEvaluateJavaScriptString(javaScriptStr)
-    }
-
-    fun aa_refreshChartWithChartOptions(chartOptions: AAOptions) {
-        // 将对象编译成json
-        val gson = Gson()
-        val aaOptionsJsonStr = gson.toJson(chartOptions)
-        val javaScriptStr =
-            "loadTheHighChartView('$aaOptionsJsonStr','$contentWidth','$contentHeight')"
-        this.safeEvaluateJavaScriptString(javaScriptStr)
-    }
-
-    fun aa_showTheSeriesElementContent(elementIndex: Int?) {
-        val javaScriptStr = "showTheSeriesElementContentWithIndex('$elementIndex')"
-        this.safeEvaluateJavaScriptString(javaScriptStr)
-
-    }
-
-    fun aa_hideTheSeriesElementContent(elementIndex: Int?) {
-        val javaScriptStr = "hideTheSeriesElementContentWithIndex('$elementIndex')"
-        this.safeEvaluateJavaScriptString(javaScriptStr)
-    }
-
-    private fun configureChartOptionsAndDrawChart(chartOptions: AAOptions) {
-        // 将对象编译成json
-        val gson = Gson()
-        val aaOptionsJsonStr = gson.toJson(chartOptions)
-        val javaScriptStr = "loadTheHighChartView('$aaOptionsJsonStr','420','580')"
-        this.safeEvaluateJavaScriptString(javaScriptStr)
+    private fun getEventMessageModel(messageBody: Map<*, *>): AAMoveOverEventMessageModel {
+        val eventMessageModel = AAMoveOverEventMessageModel()
+        eventMessageModel.name = messageBody["name"].toString()
+        eventMessageModel.x = messageBody["x"] as Double?
+        eventMessageModel.y = messageBody["y"] as Double?
+        eventMessageModel.category = messageBody["category"].toString()
+        eventMessageModel.offset = messageBody["offset"] as LinkedTreeMap<*, *>?
+        eventMessageModel.index = messageBody["index"] as Double?
+        return eventMessageModel
     }
 
     private fun safeEvaluateJavaScriptString(javaScriptString: String) {
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
-            this.evaluateJavascript(
-                "javascript:$javaScriptString"
-            ) { s -> Log.i("回调信息", "输出打印查看回调的结果$s") }
+            evaluateJavascript("javascript:$javaScriptString") {
+                //                 Log.i("call back information","输出打印查看回调的结果"+ it);
+            }
         } else {
             this.loadUrl("javascript:$javaScriptString")
         }
     }
-
-
-}
+}