using Foundation;
using System;
using WebKit;
namespace Shared
{
///
/// MyEchartsViewOn HDLON+
///
public class MyEchartsViewOn : View
{
//EchartRootJson jsonData = new EchartRootJson() { };
///
/// option的配置json
///
string optionJsonString;
///
/// WKWebView控件
///
WKWebView uIWebView;
///
///
///
public MyEchartsViewOn()
{
//jsonData = new EchartRootJson();
//默认布局,宽高为0的话会异常
var mFrame = new CoreGraphics.CGRect(base.X, base.Y, 10, 10);
uIWebView = new WKWebView(mFrame, new WKWebViewConfiguration()) { };
uiView = uIWebView;
uIWebView.ScrollView.Bounces = false;
uIWebView.ScrollView.ScrollEnabled = false;
uIWebView.NavigationDelegate = new OnWKNavigationDelegate(this);
//var filePath = NSBundle.MainBundle.PathForResource("echarts", "html");
var filePath = NSBundle.MainBundle.PathForResource("echartsNew", "html");
var url = new NSUrl(filePath, false);
uIWebView.LoadFileUrl(url, url);
}
///
/// 加载本地HTML
///
public void LoadFileUrl()
{
var filePath = NSBundle.MainBundle.PathForResource(htmlPathName, "html");
var url = new NSUrl(filePath, false);
uIWebView.LoadFileUrl(url, url);
}
///
///
///
string htmlPathName = "echarts";
public string HtmlPathName
{
get
{
return htmlPathName;
}
set
{
htmlPathName = value;
LoadFileUrl();
}
}
///
/// 是否采用LoadEchartsNew的方式
///
bool IsLoadEchartsNew = false;
///
/// 加载Option配置参数
/// 刷新图表
///
///
public void ShowWithOption(string option)
{
IsLoadEchartsNew = true;
optionJsonString = option;
EvaluateJavascript();
}
///
/// 加载Option配置jsonString
///
///
public void ShowWithOptionJsonString(string jsonString)
{
IsLoadEchartsNew = false;
optionJsonString = jsonString;
EvaluateJavascript();
}
///
/// EvaluateJavascript
///
public void EvaluateJavascript()
{
WKJavascriptEvaluationResult handler = (NSObject result, NSError err) =>
{
if (err != null)
{
HDLUtils.WriteLine("EvaluateJavascript:" + err);
}
if (result != null)
{
HDLUtils.WriteLine("EvaluateJavascript:" + result);
}
};
//是否调用loadEchartsNew
if (IsLoadEchartsNew)
{
uIWebView.EvaluateJavaScript($"loadEchartsNew({optionJsonString})", handler);
}
else
{
uIWebView.EvaluateJavaScript($"loadEcharts({optionJsonString})", handler);
}
}
///
/// OnWKNavigationDelegate
///
public class OnWKNavigationDelegate : WKNavigationDelegate
{
[Weak] MyEchartsViewOn _MyEchartsViewOn;
public OnWKNavigationDelegate(MyEchartsViewOn view)
{
_MyEchartsViewOn = view;
}
public override void DidFinishNavigation(WKWebView webView, WKNavigation navigation)
{
Console.WriteLine("WKWebView DidFinishNavigation");
_MyEchartsViewOn.EvaluateJavascript();
}
}
}
}