diff --git a/superset/__init__.py b/superset/__init__.py index 5ec3c94a337dd..ce98dc2ee5ce8 100644 --- a/superset/__init__.py +++ b/superset/__init__.py @@ -69,12 +69,21 @@ def get_css_manifest_files(filename): return entry_files.get('css', []) +def get_unloaded_chunks(files, loaded_chunks): + filtered_files = [f for f in files if f not in loaded_chunks] + for f in filtered_files: + loaded_chunks.add(f) + return filtered_files + + parse_manifest_json() @app.context_processor def get_manifest(): return dict( + loaded_chunks=set(), + get_unloaded_chunks=get_unloaded_chunks, js_manifest=get_js_manifest_files, css_manifest=get_css_manifest_files, ) diff --git a/superset/templates/superset/base.html b/superset/templates/superset/base.html index f974348b841a6..b4397f510d880 100644 --- a/superset/templates/superset/base.html +++ b/superset/templates/superset/base.html @@ -3,21 +3,21 @@ {% block head_css %} {{super()}} - {% for entry in css_manifest('theme') %} + {% for entry in get_unloaded_chunks(css_manifest('theme'), loaded_chunks) %} {% endfor %} {% endblock %} {% block head_js %} {{super()}} - {% for entry in js_manifest('theme') %} + {% for entry in get_unloaded_chunks(js_manifest('theme'), loaded_chunks) %} {% endfor %} {% endblock %} {% block tail_js %} {{super()}} - {% for entry in js_manifest('common') %} + {% for entry in get_unloaded_chunks(js_manifest('common'), loaded_chunks) %} {% endfor %} {% endblock %} diff --git a/superset/templates/superset/basic.html b/superset/templates/superset/basic.html index 802f14a4a9c36..a5e72f38fae85 100644 --- a/superset/templates/superset/basic.html +++ b/superset/templates/superset/basic.html @@ -16,23 +16,23 @@ - {% for entry in css_manifest('theme') %} + {% for entry in get_unloaded_chunks(css_manifest('theme'), loaded_chunks) %} {% endfor %} {% if entry %} {% set entry_files = css_manifest(entry) %} - {% for entry in entry_files %} + {% for entry in get_unloaded_chunks(entry_files, loaded_chunks) %} {% endfor %} {% endif %} {% endblock %} - {% for entry in js_manifest('theme') %} + {% for entry in get_unloaded_chunks(js_manifest('theme'), loaded_chunks) %} {% endfor %} - {% for entry in js_manifest('common') %} + {% for entry in get_unloaded_chunks(js_manifest('common'), loaded_chunks) %} {% endfor %} @@ -80,7 +80,7 @@ {% block tail_js %} {% if entry %} {% set entry_files = js_manifest(entry) %} - {% for entry in entry_files %} + {% for entry in get_unloaded_chunks(entry_files, loaded_chunks) %} {% endfor %} {% endif %} diff --git a/superset/templates/superset/partials/_script_tag.html b/superset/templates/superset/partials/_script_tag.html index fd049a78834aa..f530c7bd4038b 100644 --- a/superset/templates/superset/partials/_script_tag.html +++ b/superset/templates/superset/partials/_script_tag.html @@ -1,5 +1,5 @@ {% block tail_js %} - {% for entry in js_manifest(filename) %} + {% for entry in get_unloaded_chunks(js_manifest(filename), loaded_chunks) %} {% endfor %} {% endblock %}