extends basic

block extra_head
    title Examples - Apache ECharts(incubating)
    style.
        html, body {
            /* position: sticky should not have overflow parents.*/
            overflow-x: hidden;
        }
    link(rel="stylesheet", href="#{cdnThirdParty.elementUICSS}")
    link(rel="stylesheet", href="#{cdnPayRoot}/next/examples/css/example-bundle.css?_v_=#{homeVersion}")

block content

    #ec-example-main

block extra_js
    script(src="#{cdnThirdParty.vueJS}")
    script(src="#{cdnThirdParty.elementUIJS}")
    script(src="#{cdnPayRoot}/next/examples/js/example-bundle.js?_v_=#{homeVersion}")
    script(type="text/javascript").
        window.EC_WWW_CDN_PAY_ROOT = '#{cdnPayRoot}';

    block global_args_extra

    script(type="text/javascript").
        window.globalArgsExtra.version = '#{homeVersion}';
        window.globalArgsExtra.cdnRoot = EC_WWW_CDN_PAY_ROOT + '/next/examples';
        echartsExample.init('#ec-example-main', window.globalArgsExtra);

        // Remove apache banner
        const dom = document.getElementById('apache-banner');
        if (dom && dom.parentNode) {
            dom.parentNode.removeChild(dom);
        }

