server individually listed javascript files vs single compiled file

This commit is contained in:
James Tolton 2023-01-21 14:07:48 -05:00
parent 17af0fb955
commit 50059ea661
3 changed files with 23 additions and 32 deletions

View File

@ -1919,47 +1919,41 @@ def create_ui():
def reload_javascript(): def reload_javascript():
javascript_files = OrderedDict()
with open(os.path.join(script_path, "script.js"), "r", encoding="utf8") as jsfile:
contents = jsfile.read()
javascript_files["script.js"] = [contents]
scripts_list = modules.scripts.list_scripts("javascript", ".js") scripts_list = modules.scripts.list_scripts("javascript", ".js")
js_files = []
for basedir, filename, path in scripts_list: for basedir, filename, path in scripts_list:
with open(path, "r", encoding="utf8") as jsfile: path = path[len(script_path) + 1:]
contents = jsfile.read() js_files.append(path)
javascript_files[filename] = [contents]
inline = [f"{localization.localization_js(shared.opts.localization)};"]
if cmd_opts.theme is not None: if cmd_opts.theme is not None:
javascript_files["theme.js"] = [f"set_theme('{cmd_opts.theme}');"] inline.append(f"set_theme('{cmd_opts.theme}');", )
javascript_files["localization.js"] = [f"{localization.localization_js(shared.opts.localization)}"] t = int(time.time())
head = [
compiled_name = "webui-compiled.js" f"""
head = f""" <script type="text/javascript" src="file=./script.js?{t}"></script>
<script src=/statica/{compiled_name}?{int(time.time())} type="text/javascript"></script> """.strip()
""" ]
inline_code = "\n".join(inline)
head.append(f"""
<script type="text/javascript">
{inline_code}
</script>
""".strip())
for file in js_files:
head.append(f"""
<script type="text/javascript" src="file={file}?{t}"></script>
""".strip())
def template_response(*args, **kwargs): def template_response(*args, **kwargs):
res = shared.GradioTemplateResponseOriginal(*args, **kwargs) res = shared.GradioTemplateResponseOriginal(*args, **kwargs)
head_inject = "\n".join(head)
res.body = res.body.replace( res.body = res.body.replace(
b'</head>', f'{head}</head>'.encode("utf8")) b'</head>', f'{head_inject}</head>'.encode("utf8"))
res.init_headers() res.init_headers()
return res return res
for k in javascript_files:
javascript_files[k] = "\n".join(javascript_files[k])
# make static_path if not exists
statica_path = os.path.join(script_path, 'statica')
if not os.path.exists(statica_path):
os.mkdir(statica_path)
javascript_out = "\n\n\n".join([f"// <!-- {k} -->\n\n{v}" for k, v in javascript_files.items()])
with open(os.path.join(script_path, "statica", compiled_name), "w", encoding="utf8") as jsfile:
jsfile.write(javascript_out)
gradio.routes.templates.TemplateResponse = template_response gradio.routes.templates.TemplateResponse = template_response

View File

@ -1 +0,0 @@
ayo

View File

@ -8,7 +8,6 @@ import re
from fastapi import FastAPI from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
from fastapi.middleware.gzip import GZipMiddleware from fastapi.middleware.gzip import GZipMiddleware
from starlette.staticfiles import StaticFiles
from modules import import_hook, errors, extra_networks from modules import import_hook, errors, extra_networks
from modules import extra_networks_hypernet, ui_extra_networks_hypernets, ui_extra_networks_textual_inversion from modules import extra_networks_hypernet, ui_extra_networks_hypernets, ui_extra_networks_textual_inversion
@ -196,7 +195,6 @@ def webui():
setup_cors(app) setup_cors(app)
app.add_middleware(GZipMiddleware, minimum_size=1000) app.add_middleware(GZipMiddleware, minimum_size=1000)
app.mount("/statica", StaticFiles(directory=os.path.join(script_path, 'statica')), name="statica")
modules.progress.setup_progress_api(app) modules.progress.setup_progress_api(app)