slides/custom/asset/common/showCode.js (62 lines of code) (raw):
(function () {
window.initShowCode = function (option, opt) {
opt = opt || {};
if (opt.showCode || checkShowCodeFromHash()) {
var css = getCSS(true);
$('#main pre').css('width', css.codeWidth);
$('#main #chart').css('left', css.chartLeft);
}
var myChart = echarts.init(document.getElementById('chart'));
myChart.setOption(option);
var onResize = opt.onResize || myChart.resize;
window.addEventListener('resize', onResize);
window.addEventListener("hashchange", onHashChange, false);
prettyPrint();
PerfectScrollbar.initialize($('#main pre')[0], {});
return myChart;
function onHashChange() {
var css = getCSS(checkShowCodeFromHash());
$('#main pre').css('width', css.codeWidth);
if (opt.noAnimation) {
$('#main #chart').css('left', css.chartLeft);
myChart && onResize();
}
else {
$('#main #chart').animate(
{
left: css.chartLeft
},
{
duration: 300,
easing: 'linear',
progress: function () {
myChart && onResize();
}
}
);
}
}
function checkShowCodeFromHash() {
var hash = window.location.hash;
var matchResult = hash.match(/_md2r_fragment_=([a-zA-Z]+)/);
return matchResult && matchResult[1] === 'code';
}
function getCSS(showCode) {
var targetLeft;
var gap;
var codeWidth = opt.codeWidth || 300;
if (showCode) {
targetLeft = codeWidth;
gap = 30;
}
else {
targetLeft = 0;
gap = 0;
}
return {
codeWidth: targetLeft - gap,
chartLeft: targetLeft
};
}
};
})();