| (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(); |
| } |
| }); |
| })(); |