Development
This commit is contained in:
parent
33ec9e7f1c
commit
0cec7d69c9
12 changed files with 124 additions and 92 deletions
|
|
@ -15,10 +15,19 @@ from config_utils import (
|
|||
_is_locked, _lock_mtime, _entry_ts_from_queue,
|
||||
)
|
||||
|
||||
PAGES_DIR = os.path.join(APP_DIR, 'pages')
|
||||
NAVBAR_FILE = os.path.join(APP_DIR, 'navbar.json')
|
||||
CSS_FILE = os.path.join(DATA_DIR, 'styles.css')
|
||||
COMMON_JS_FILE = os.path.join(DATA_DIR, 'common.js')
|
||||
import settings as settings
|
||||
|
||||
PAGES_DIR = os.path.join(APP_DIR, 'pages')
|
||||
NAVBAR_FILE = os.path.join(APP_DIR, 'navbar.json')
|
||||
CSS_FILE = os.path.join(WWW_DIR, 'styles.css')
|
||||
COMMON_JS_FILE = os.path.join(WWW_DIR, 'common.js')
|
||||
|
||||
|
||||
def _file_version(path):
|
||||
try:
|
||||
return int(os.path.getmtime(path))
|
||||
except OSError:
|
||||
return 0
|
||||
|
||||
# Constants ===========================================================
|
||||
|
||||
|
|
@ -91,21 +100,20 @@ def load_icon(name):
|
|||
return ''
|
||||
|
||||
def inline_js(page_name=None):
|
||||
big_validate_js = build_big_validate()
|
||||
try:
|
||||
with open(COMMON_JS_FILE) as f:
|
||||
app_js = f.read()
|
||||
except Exception:
|
||||
app_js = ''
|
||||
page_js = ''
|
||||
if page_name:
|
||||
page_js_path = os.path.join(PAGES_DIR, page_name, 'page.js')
|
||||
parts = [build_big_validate()]
|
||||
if not settings.is_production():
|
||||
try:
|
||||
with open(page_js_path) as f:
|
||||
page_js = f.read()
|
||||
with open(COMMON_JS_FILE) as f:
|
||||
parts.append(f.read())
|
||||
except Exception:
|
||||
pass
|
||||
return big_validate_js + '\n' + app_js + ('\n' + page_js if page_js else '')
|
||||
if page_name:
|
||||
try:
|
||||
with open(os.path.join(PAGES_DIR, page_name, 'page.js')) as f:
|
||||
parts.append(f.read())
|
||||
except Exception:
|
||||
pass
|
||||
return '\n'.join(parts)
|
||||
|
||||
# Utilities ===========================================================
|
||||
|
||||
|
|
@ -1512,7 +1520,6 @@ def build_item(item, tokens, inherited_req=None):
|
|||
# Layout renderer =====================================================
|
||||
|
||||
def render_layout(view_id, content_html, tokens, page_name=None):
|
||||
css = load_css()
|
||||
level = client_level()
|
||||
has_pending_alert = not _apply_changes_immediately() and bool(get_dashboard_pending())
|
||||
titlebar_html = f'<div class="titlebar"><span class="titlebar-brand">{WEB_APP_DISPLAY_NAME}</span></div>'
|
||||
|
|
@ -1636,17 +1643,27 @@ def render_layout(view_id, content_html, tokens, page_name=None):
|
|||
'</div>\n'
|
||||
)
|
||||
|
||||
if settings.is_production():
|
||||
css_ver = _file_version(CSS_FILE)
|
||||
js_ver = _file_version(COMMON_JS_FILE)
|
||||
css_tag = f' <link rel="stylesheet" href="/www/styles.css?v={css_ver}">\n'
|
||||
common_js = f'<script src="/www/common.js?v={js_ver}"></script>\n'
|
||||
else:
|
||||
css_tag = f' <style>{load_css()}</style>\n'
|
||||
common_js = ''
|
||||
|
||||
return (
|
||||
'<!DOCTYPE html>\n<html lang="en">\n<head>\n'
|
||||
' <meta charset="UTF-8"/>\n'
|
||||
' <meta name="viewport" content="width=device-width, initial-scale=1.0"/>\n'
|
||||
f' <title>{WEB_APP_DISPLAY_NAME}</title>\n'
|
||||
f' <style>{css}</style>\n'
|
||||
f'{css_tag}'
|
||||
'</head>\n<body>\n'
|
||||
f'{titlebar_html}\n'
|
||||
f'{navbar_html}\n'
|
||||
f'<main class="main-content">\n{pending_bar}{problem_bars}{other_bars}{content_html}\n</main>\n'
|
||||
f'{footer_html}\n'
|
||||
f'{common_js}'
|
||||
f'<script>var CONFIG_HASH="{page_hash}";var LAN_IFACE="{lan_iface}";var VPN_VLAN_COUNT={vpn_count};var APPLY_UUID={json.dumps(my_uuid)};</script>\n'
|
||||
f'<script>{inline_js(page_name)}</script>\n'
|
||||
'</body>\n</html>'
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue