def include_chart_jscss()

in ailab/benchmark/templatetags/nvd3_tags.py [0:0]


def include_chart_jscss(static_dir="", css_dir="", js_dir=""):
    """
    Include the html for the chart container and css for nvd3
    This will include something similar as :

        <link media="all" href="/static/nvd3/src/nv.d3.css" type="text/css" rel="stylesheet" />
        <script src="/static/d3/d3.min.js" type="text/javascript"></script>
        <script src="/static/nvd3/nv.d3.min.js" type="text/javascript"></script>

    **usage**:

        {% include_chart_jscss %}

    Or if you want to specify a subdirectory below STATIC_URL for all static files,

        {% include_chart_jscss 'newfies' %}

    Or if you have all your CSS and JS files in particular directories and want to specify them,

        {% include_chart_jscss css_dir='css' js_dir='js' %}

    **Arguments**:

        * ``static_dir`` -
        * ``css_dir`` -
        * ``js_dir`` -
    """
    if static_dir:
        static_dir += "/"

    css_files_dirs = collections.OrderedDict()
    js_files_dirs = collections.OrderedDict()

    css_files_dirs["nv.d3.min.css"] = "%s%snvd3/build/" % (
        settings.STATIC_URL,
        static_dir,
    )

    js_files_dirs["d3.min.js"] = "%s%sd3/" % (settings.STATIC_URL, static_dir)
    js_files_dirs["nv.d3.min.js"] = "%s%snvd3/build/" % (
        settings.STATIC_URL,
        static_dir,
    )

    if css_dir:
        if not css_dir.endswith("/"):
            css_dir += "/"
        for css_file in css_files_dirs:
            css_files_dirs[css_file] = "%s%s%s" % (
                settings.STATIC_URL,
                static_dir,
                css_dir,
            )

    if js_dir:
        if not js_dir.endswith("/"):
            js_dir += "/"
        for js_file in js_files_dirs:
            js_files_dirs[js_file] = "%s%s%s" % (
                settings.STATIC_URL,
                static_dir,
                js_dir,
            )

    chart = NVD3Chart()
    chart.header_css = [
        '<link media="all" href="%s" type="text/css" rel="stylesheet" />\n' % h
        for h in (
            "%s%s" % (path, css_file) for css_file, path in css_files_dirs.items()
        )
    ]

    chart.header_js = [
        '<script src="%s" type="text/javascript" charset="utf-8"></script>\n' % h
        for h in ("%s%s" % (path, js_file) for js_file, path in js_files_dirs.items())
    ]
    chart.buildhtmlheader()
    return mark_safe(chart.htmlheader + "\n")