| import { store } from '../../../common/store'; |
| |
| /** |
| * Get templates |
| * @param {string} code |
| * @param {Array<{ src?: string, content?: string }>} scripts |
| * @param {string} css |
| */ |
| export function getTemplates(title, scripts, css) { |
| title = `${title ? title + ' - ' : ''}Apache ECharts Demo`; |
| scripts = (scripts && scripts.slice()) || []; |
| const lang = store.locale && store.locale.indexOf('zh') > -1 ? 'zh-CN' : 'en'; |
| |
| const hasRootPath = store.sourceCode.indexOf('ROOT_PATH') > -1; |
| const rootPathCode = hasRootPath ? `var ROOT_PATH = '${store.cdnRoot}';` : ''; |
| const hasJQuery = /\$[\.\(]+/g.test(store.sourceCode); |
| hasJQuery && |
| scripts.unshift({ |
| src: 'https://fastly.jsdelivr.net/npm/jquery' |
| }); |
| |
| const htmlTpl = `<!DOCTYPE html> |
| <html lang="${lang}"> |
| <head> |
| <meta charset="utf-8"> |
| <title>${title}</title> |
| </head> |
| <body> |
| <div id="chart-container"></div> |
| ${scripts |
| .filter((script) => !script.src || script.src.indexOf('dat.gui') < 0) |
| .map((script) => |
| script.content |
| ? `<script>${script.content}</script>` |
| : `<script src="${ |
| script.src.indexOf('api.map.baidu.com/api') > -1 |
| ? script.src.replace(/(ak=)(\S+)$/, '$1YOUR_API_KEY') |
| : script.src |
| }"></script>` |
| ) |
| .join('\n ')} |
| </body> |
| </html>`; |
| |
| const jsTpl = `var dom = document.getElementById('chart-container'); |
| var myChart = echarts.init(dom, ${store.darkMode ? "'dark'" : 'null'}, { |
| renderer: '${store.renderer}', |
| useDirtyRect: ${store.useDirtyRect} |
| }); |
| var app = {}; |
| ${rootPathCode} |
| var option; |
| |
| ${store.sourceCode} |
| |
| if (option && typeof option === 'object') { |
| myChart.setOption(option); |
| } |
| |
| window.addEventListener('resize', myChart.resize);`; |
| |
| const cssTpl = `* { |
| margin: 0; |
| padding: 0; |
| } |
| #chart-container { |
| position: relative; |
| height: 100vh; |
| overflow: hidden; |
| } |
| ${css || ''}`; |
| |
| return { |
| title, |
| html: htmlTpl, |
| js: jsTpl, |
| css: cssTpl |
| }; |
| } |