blob: aef31fc8c57c97e5a8ef1084471dd9ef3536b6a3 [file] [log] [blame]
(function () {
var lang = ({
zh: {
editDemo: '编辑示例',
reset: '重置',
enableInteraction: '开启交互',
disableInteraction: '关闭交互'
},
en: {
editDemo: 'Edit',
reset: 'Reset',
enableInteraction: 'Enable interaction',
disableInteraction: 'Disable interaction'
}
})[window.EC_DEMO_LANG];
var configs = {};
_.each((location.search || '').substr(1).split('&'), function (item) {
var kv = item.split('=');
configs[kv[0]] = kv[1];
});
var myChart;
var app = {};
var name;
var gui;
// run to get echarts locally
var run = function (code) {
clearTimeout(app.timeTicket);
clearInterval(app.timeTicket);
// Reset
app.config = null;
if (myChart) {
myChart.dispose();
}
myChart = echarts.init(document.getElementById('view-chart'), configs.theme, {
renderer: configs.renderer || 'canvas'
});
eval(code);
if (typeof option === 'object') {
myChart.setOption(option, true);
}
if (app.config) {
gui = new dat.GUI();
$(gui.domElement).css({
position: 'absolute',
right: 5,
top: 0,
zIndex: 1000
});
$('.right-container').append(gui.domElement);
var configParameters = app.configParameters || {};
for (var name in app.config) {
var value = app.config[name];
if (name !== 'onChange' && name !== 'onFinishChange') {
var isColor = false;
// var value = obj;
var controller;
if (configParameters[name]) {
if (configParameters[name].options) {
controller = gui.add(app.config, name, configParameters[name].options);
}
else if (configParameters[name].min != null) {
controller = gui.add(app.config, name, configParameters[name].min, configParameters[name].max);
}
}
if (typeof obj === 'string') {
try {
var colorArr = echarts.color.parse(value);
isColor = !!colorArr;
if (isColor) {
value = echarts.color.stringify(colorArr, 'rgba');
}
}
catch (e) {}
}
if (!controller) {
controller = gui[isColor ? 'addColor' : 'add'](app.config, name);
}
app.config.onChange && controller.onChange(app.config.onChange);
app.config.onFinishChange && controller.onFinishChange(app.config.onFinishChange);
}
}
}
};
if (configs.edit) {
var $editButton = $('<a class="btn btn-default btn-sm">' + lang.editDemo + '</a>').click(function () {
window.open('./editor.html?c=' + configs.c);
});
$('#view-main .control-panel').append($editButton);
}
if (configs.reset) {
var $resetButton = $('<a class="btn btn-default btn-sm">' + lang.reset + '</a>').click(function () {
run();
});
$('#view-main .control-panel').append($resetButton);
}
if (configs.mask) {
var maskEnabled = true;
var $toggleBtn = $('<a id="view-toggle-interable" class="btn btn-default btn-sm">' + lang.enableInteraction + '</a>');
var $mask = $('<div id="view-mask"></div>');
function enableMask() {
$toggleBtn.html(lang.enableInteraction);
$(document.body).append($mask);
maskEnabled = true;
}
function disableMask() {
$toggleBtn.html(lang.disableInteraction);
$mask.remove();
maskEnabled = false;
}
$('#view-main .control-panel').append($toggleBtn);
$toggleBtn.click(function () {
if (maskEnabled) {
disableMask();
}
else {
enableMask();
}
});
enableMask();
}
if (configs.c) {
$.ajax('../data/' + configs.c + '.js', {
dataType: 'text',
success: function (data) {
run(data);
}
}).fail(function () {
// log('加载图表失败!', 'error');
});
}
$(window).resize(function () {
if (myChart) {
myChart.resize();
}
});
})();