You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
173 lines
3.9 KiB
173 lines
3.9 KiB
<!DOCTYPE html> |
|
<html lang="zh"> |
|
<head> |
|
<meta charset="UTF-8"> |
|
<meta name="viewport" |
|
content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"> |
|
<meta http-equiv="X-UA-Compatible" content="ie=edge"> |
|
<title></title> |
|
<style type="text/css"> |
|
html, |
|
body, |
|
.canvas { |
|
padding: 0; |
|
margin: 0; |
|
overflow-y: hidden; |
|
background-color: transparent; |
|
width: 100%; |
|
height: 100%; |
|
} |
|
</style> |
|
</head> |
|
<body> |
|
<div class="canvas" id="limeChart"></div> |
|
<script type="text/javascript" src="./uni.webview.1.5.5.js"></script> |
|
<script type="text/javascript" src="./echarts.min.js"></script> |
|
<script type="text/javascript" src="./ecStat.min.js"></script> |
|
<!-- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-liquidfill@latest/dist/echarts-liquidfill.min.js"></script> --> |
|
<script> |
|
let chart = null; |
|
let cache = []; |
|
console.log = function() { |
|
emit('log', { |
|
log: arguments, |
|
}) |
|
} |
|
|
|
function emit(event, data) { |
|
postMessage({ |
|
event, |
|
data |
|
}) |
|
cache = [] |
|
} |
|
|
|
function postMessage(data) { |
|
uni.webView.postMessage({ |
|
data |
|
}) |
|
// window.__uniapp_x_.postMessage(JSON.stringify(data)) |
|
}; |
|
|
|
function stringify(key, value) { |
|
if (typeof value === 'object' && value !== null) { |
|
if (cache.indexOf(value) !== -1) { |
|
return; |
|
} |
|
cache.push(value); |
|
} |
|
return value; |
|
} |
|
|
|
function parse(name, callback, options) { |
|
const optionNameReg = /[\w]+\.setOption\(([\w]+\.)?([\w]+)\)/ |
|
if (optionNameReg.test(callback)) { |
|
const optionNames = callback.match(optionNameReg) |
|
if (optionNames[1]) { |
|
const _this = optionNames[1].split('.')[0] |
|
window[_this] = {} |
|
window[_this][optionNames[2]] = options |
|
return optionNames[2] |
|
} else { |
|
return null |
|
} |
|
} |
|
return null |
|
} |
|
|
|
function init(callback, options, opts, theme) { |
|
if (!chart) { |
|
chart = echarts.init(document.getElementById('limeChart'), theme, opts) |
|
|
|
if (options) { |
|
chart.setOption(options) |
|
} |
|
} |
|
} |
|
|
|
function on(data) { |
|
if (chart && data.length > 0) { |
|
const [type, query] = data |
|
const key = `${type}${JSON.stringify(query||'')}` |
|
if (query) { |
|
chart.on(type, query, function(options) { |
|
var obj = {}; |
|
Object.keys(options).forEach(function(key) { |
|
if (key != 'event') { |
|
obj[key] = options[key]; |
|
} |
|
}); |
|
emit(key, { |
|
event: key, |
|
options: obj, |
|
}); |
|
}); |
|
} else { |
|
chart.on(type, function(options) { |
|
var obj = {}; |
|
Object.keys(options).forEach(function(key) { |
|
if (key != 'event') { |
|
obj[key] = options[key]; |
|
} |
|
}); |
|
emit(key, { |
|
event: key, |
|
options: obj, |
|
}); |
|
}); |
|
} |
|
} |
|
|
|
} |
|
|
|
function setChart(callback, options) { |
|
if (!callback) return |
|
if (chart && callback && options) { |
|
var r = null |
|
const name = parse('r', callback, options) |
|
if (name) this[name] = options |
|
eval(`r = ${callback};`) |
|
if (r) { |
|
r(chart) |
|
} |
|
} |
|
} |
|
|
|
function setOption(data) { |
|
if (chart) chart.setOption(data[0], data[1]) |
|
} |
|
|
|
function showLoading(data) { |
|
if (chart) chart.showLoading(data[0], data[1]) |
|
} |
|
|
|
function hideLoading() { |
|
if (chart) chart.hideLoading() |
|
} |
|
|
|
function clear() { |
|
if (chart) chart.clear() |
|
|
|
} |
|
|
|
function dispose() { |
|
if (chart) chart.dispose() |
|
} |
|
|
|
function resize(size) { |
|
if (chart) chart.resize(size) |
|
} |
|
|
|
function canvasToTempFilePath(opt) { |
|
if (chart) { |
|
delete opt.success |
|
const src = chart.getDataURL(opt) |
|
postMessage({ |
|
// event: 'file', |
|
file: src |
|
}) |
|
} |
|
} |
|
</script> |
|
</body> |
|
</html> |