
extends layouts/inner

block inner_content

    div(id='main-container')
        div(id='code-container')
            div(id="control-panel")
                div(id='code-info')
                div(class="control-btn-panel")
                    a(class='btn btn-default btn-sm', href='javascript:;', onclick='disposeAndRun()') #{lang == 'zh' ? '运行' : 'RUN'}
            div(id='code-panel')

        div(class='handler', id='h-handler')

        div(class='right-container')
            div(class='right-panel', id='chart-panel')
            div(id="tool-panel")
                #theme
                    a(class="default" title="default")
                        span
                    a(class="light" title="light")
                        span
                    a(class="dark" title="dark")
                        span
                button#download.btn.btn-sm Download

    script.
        if (window !== top) {
            var nav = document.getElementsByClassName('navbar')[0];
            nav.parentNode.removeChild(nav);
            document.getElementById('main-container').style.top = 0;
        }
block extra_js

    script(type='text/javascript', src='#{cdnThirdParty.datGUIMinJS}')
    script(type='text/javascript', src='#{cdnThirdParty.echartsMinJS}?_v_=#{buildVersion}')
    script(type='text/javascript', src='#{cdnThirdParty.echartsStatMinJS}')
    script(type='text/javascript', src='#{cdnThirdParty.echartsDir}/map/js/china.js?_v_=#{buildVersion}')
    script(type='text/javascript', src='#{cdnThirdParty.echartsDir}/map/js/world.js?_v_=#{buildVersion}')
    script(type='text/javascript', src='#{cdnThirdParty.echartsDir}/dist/extension/dataTool.js?_v_=#{buildVersion}')
    script(type='text/javascript', src='#{cdnThirdParty.aceDir}/ace.js')
    script(type='text/javascript', src='#{cdnThirdParty.aceDir}/ext-language_tools.js')
    script(type='text/javascript', src='#{cdnPayRoot}/javascripts/editor.js?_v_=#{buildVersion}')

    script(type='text/javascript', src='https://api.map.baidu.com/api?v=2.0&ak=KOmVjPVUAey1G2E8zNhPiuQ6QiEmAwZu&__ec_v__=20190126')
    script(type='text/javascript', src='#{cdnThirdParty.echartsDir}/dist/extension/bmap.js?_v_=#{buildVersion}')

    script(type='text/javascript').
        document.getElementById('nav-examples').className = 'active';
