More UI tweaks

This commit is contained in:
Taylor Helsper 2020-09-30 19:55:24 -05:00
parent 930968ba75
commit 382f7fa6b4
13 changed files with 270 additions and 113 deletions

View File

@ -112,6 +112,12 @@ def get_bitcoin_blockchain_info():
global bitcoin_blockchain_info
return copy.deepcopy(bitcoin_blockchain_info)
def get_bitcoin_difficulty():
info = get_bitcoin_blockchain_info()
if "difficulty" in info:
return "{:.3g}".format(info["difficulty"])
return "???"
def get_bitcoin_block_height():
global bitcoin_block_height
return bitcoin_block_height
@ -128,6 +134,12 @@ def get_bitcoin_peers():
global bitcoin_peers
return copy.deepcopy(bitcoin_peers)
def get_bitcoin_peer_count():
peers = get_bitcoin_peers()
if peers != None:
return len(peers)
return 0
def get_bitcoin_network_info():
global bitcoin_network_info
return copy.deepcopy(bitcoin_network_info)
@ -136,6 +148,20 @@ def get_bitcoin_mempool():
global bitcoin_mempool
return copy.deepcopy(bitcoin_mempool)
def get_bitcoin_mempool_info():
mempooldata = get_bitcoin_mempool()
mempool = {}
mempool["size"] = "???"
mempool["bytes"] = "0"
if mempooldata != None:
if "size" in mempooldata:
mempool["size"] = mempooldata["size"]
if "bytes" in mempooldata:
mempool["bytes"] = mempooldata["bytes"]
return copy.deepcopy(mempool)
def get_bitcoin_wallet_info():
global bitcoin_wallet_info
return copy.deepcopy(bitcoin_wallet_info)

View File

@ -35,20 +35,12 @@ def bitcoind_status_page():
blockdata = get_bitcoin_recent_blocks()
peerdata = get_bitcoin_peers()
networkdata = get_bitcoin_network_info()
mempooldata = get_bitcoin_mempool()
walletdata = get_bitcoin_wallet_info()
version = get_bitcoin_version()
rpc_password = get_bitcoin_rpc_password()
# Mempool info
mempool = {}
mempool["size"] = "???"
mempool["bytes"] = "0"
if mempooldata != None:
if "size" in mempooldata:
mempool["size"] = mempooldata["size"]
if "bytes" in mempooldata:
mempool["bytes"] = mempooldata["bytes"]
mempool = get_bitcoin_mempool_info()
# Recent blocks
blocks = []
@ -116,7 +108,7 @@ def bitcoind_status_page():
"blocks": blocks,
"peers": peers,
"local_address": local_address,
"difficulty": "{:.3g}".format(info["difficulty"]),
"difficulty": get_bitcoin_difficulty(),
"block_num": info["blocks"],
"header_num": info["headers"],
"rpc_password": rpc_password,

View File

@ -86,10 +86,23 @@ def get_lightning_peers():
global lightning_peers
return copy.deepcopy(lightning_peers)
def get_lightning_peer_count():
info = get_lightning_info()
num_peers = 0
if "num_peers" in info:
num_peers = info['num_peers']
return num_peers
def get_lightning_channels():
global lightning_channels
return copy.deepcopy(lightning_channels)
def get_lightning_channel_count():
channeldata = get_lightning_channels()
if channeldata != None and "channels" in channeldata:
return len(channeldata["channels"])
return 0
def get_lightning_channel_balance():
global lightning_channel_balance
return copy.deepcopy(lightning_channel_balance)
@ -98,6 +111,30 @@ def get_lightning_wallet_balance():
global lightning_wallet_balance
return copy.deepcopy(lightning_wallet_balance)
def get_lightning_balance_info():
channel_balance_data = get_lightning_channel_balance()
wallet_balance_data = get_lightning_wallet_balance()
balance_data = {}
balance_data["channel_balance"] = "N/A"
balance_data["channel_pending"] = "N/A"
balance_data["wallet_balance"] = "N/A"
balance_data["wallet_pending"] = "N/A"
channel_balance_data = get_lightning_channel_balance()
if channel_balance_data != None and "balance" in channel_balance_data:
balance_data["channel_balance"] = channel_balance_data["balance"]
if channel_balance_data != None and "pending_open_balance" in channel_balance_data:
balance_data["channel_pending"] = channel_balance_data["pending_open_balance"]
wallet_balance_data = get_lightning_wallet_balance()
if wallet_balance_data != None and "confirmed_balance" in wallet_balance_data:
balance_data["wallet_balance"] = wallet_balance_data["confirmed_balance"]
if wallet_balance_data != None and "unconfirmed_balance" in wallet_balance_data:
balance_data["wallet_pending"] = wallet_balance_data["unconfirmed_balance"]
return balance_data
def is_lnd_ready():
global lnd_ready
return lnd_ready
@ -213,13 +250,13 @@ def get_lnd_version():
global lnd_version
if lnd_version == None:
lnd_version = subprocess.check_output("lnd --version | egrep -o '[0-9]+\\.[0-9]+\\.[0-9]+' | head -n 1", shell=True)
return lnd_version
return "v{}".format(lnd_version)
def get_loopd_version():
global loopd_version
if loopd_version == None:
loopd_version = subprocess.check_output("loopd --version | egrep -o '[0-9]+\\.[0-9]+\\.[0-9]+' | head -n 1", shell=True)
return loopd_version
return "v{}".format(loopd_version)
def get_default_lnd_config():
try:

View File

@ -134,6 +134,7 @@ def page_lnd():
channel["remote_balance"] = "0"
channels.append(channel)
balance_info = get_lightning_balance_info()
channel_balance_data = get_lightning_channel_balance()
if channel_balance_data != None and "balance" in channel_balance_data:
@ -173,10 +174,10 @@ def page_lnd():
"pubkey": pubkey,
"uri": uri,
"ip": ip,
"channel_balance": channel_balance,
"channel_pending": channel_pending,
"wallet_balance": wallet_balance,
"wallet_pending": wallet_pending,
"channel_balance": balance_info["channel_balance"],
"channel_pending": balance_info["channel_pending"],
"wallet_balance": balance_info["wallet_balance"],
"wallet_pending": balance_info["wallet_pending"],
"peers": peers,
"channels": channels,
"ui_settings": read_ui_settings()

View File

@ -361,7 +361,7 @@ def index():
templateData = {
"title": "myNode Status",
"header_text": "Starting...",
"subheader_text": Markup("Launching myNode services...{}".format(message)),
"subheader_text": Markup("Launching myNode Services{}".format(message)),
"error_message": error_message,
"ui_settings": read_ui_settings()
}
@ -398,6 +398,9 @@ def index():
tor_status_color = get_service_status_color("tor@default")
# Find bitcoind status
bitcoin_info = get_bitcoin_blockchain_info()
bitcoin_mempool = get_bitcoin_mempool_info()
bitcoin_peers = get_bitcoin_peers()
if bitcoind_status_code != 0:
bitcoind_status_color = "red"
else:
@ -567,9 +570,17 @@ def index():
"bitcoind_status_color": bitcoind_status_color,
"bitcoind_status": Markup(bitcoind_status),
"current_block": current_block,
"bitcoin_peer_count": get_bitcoin_peer_count(),
"bitcoin_difficulty": get_bitcoin_difficulty(),
"bitcoin_mempool_size": "{:.3} MB".format(float(bitcoin_mempool["bytes"]) / 1000 / 1000),
"bitcoin_version": get_bitcoin_version(),
"lnd_status_color": lnd_status_color,
"lnd_status": Markup(lnd_status),
"lnd_ready": lnd_ready,
"lnd_peer_count": get_lightning_peer_count(),
"lnd_channel_count": get_lightning_channel_count(),
"lnd_balance_info": get_lightning_balance_info(),
"lnd_version": get_lnd_version(),
"tor_status_color": tor_status_color,
"is_installing_docker_images": is_installing_docker_images(),
"is_device_from_reseller": is_device_from_reseller(),

View File

@ -1,4 +1,4 @@
@import url(/fonts/inter.css);
@import url(/static/fonts/inter.css);
body, input, select, textarea {
font-family: "Inter", "Source Sans Pro", Helvetica, sans-serif;
@ -44,10 +44,12 @@ table{
}
td {
padding-top: 11px;
padding-bottom: 8px;
padding-top: 9px;
padding-bottom: 6px;
border-collapse: collapse;
border-top: #e7e7e7 1px solid;
}
.td_left_header {
padding-right: 40px;
}
@ -155,7 +157,7 @@ td {
display: flex;
text-align: center;
justify-content: center;
margin-bottom: 30px;
margin-bottom: 20px;
}
.app_tile_row_section {
margin: auto;
@ -189,6 +191,17 @@ td {
margin: 10px;
background: #f0f0f0;
}
.app_tile_very_wide {
display: inline-block;
position: relative;
border: none;
border-radius: 10px;
width: 300px;
height: 180px;
padding: 10px;
margin: 6px 10px 6px 10px;
background: #f0f0f0;
}
.green { background-color: green; }
.yellow { background-color: yellow; }
.red { background-color: red; }
@ -223,7 +236,7 @@ td {
.app_logo_icon {
margin: auto;
display: block;
width: 40%;
width: 55px;
}
.app_title {
font-size: 18px;
@ -383,12 +396,12 @@ a:link.ui-button, a:visited.ui-button, .ui-button {
margin: auto;
text-align: justify;
font-size: 14px;
margin-bottom: 80px;
margin-bottom: 30px;
}
.divider {
width: 100%;
margin-top: 50px;
margin-bottom: 20px;
margin-top: 25px;
margin-bottom: 15px;
border-bottom: 1px solid #ffb70054;
margin-left: auto;
margin-right: auto;

View File

@ -41,11 +41,13 @@ table,
.app_tile,
.app_tile_short,
.app_tile_very_wide,
.info_tile {
border: none;
}
.app_tile,
.app_tile_very_wide,
.app_tile_short {
background-color: #121C21;
}

View File

@ -18,6 +18,18 @@
{% endif %}
</div>
</div>
<div class="app_tile">
<div class="app_status_icon {{ electrs_status_color }}"></div>
<div class="app_logo"><img class="app_logo_icon" src="{{ url_for('static', filename="images/electrum_logo.png")}}"/></div>
<div class="app_title">Electrum Server</div>
<div class="app_status">{{ electrs_status }}</div>
<div class="app_contents">
{% if electrs_enabled %}
<a class="ui-button ui-widget ui-corner-all mynode_button" href="/electrum-server">Info</a>
{% endif %}
<a class="ui-button ui-widget ui-corner-all mynode_button" href="#" id="toggle-electrs">{% if electrs_enabled %}Disable{% else %}Enable{% endif %}</a>
</div>
</div>
<div class="app_tile">
<div class="app_status_icon {{ btcpayserver_status_color }}"></div>
<div class="app_logo"><img class="app_logo_icon" src="{{ url_for('static', filename="images/btcpayserver.png")}}"/></div>
@ -50,6 +62,7 @@
{% endif %}
</div>
</div>
<!--
<div class="app_tile">
<div class="app_status_icon {{ lndconnect_status_color }}"></div>
<div class="app_logo"><img class="app_logo_icon" src="{{ url_for('static', filename="images/lndconnect.png")}}"/></div>
@ -61,6 +74,7 @@
{% endif %}
</div>
</div>
-->
</div>
<div class="app_tile_row">
@ -225,3 +239,56 @@
<!-- BETA APPS -->
<!-- <div class="main_header">Beta Apps</div> -->
<!-- REMOTE SERVICES -->
<div class="app_tile_row">
<div>
<div class="main_header">Remote Access Services</div>
<div class="app_tile_row_section">
<!--
<div class="app_tile">
<div class="app_status_icon {{ electrs_status_color }}"></div>
<div class="app_logo"><img class="app_logo_icon" src="{{ url_for('static', filename="images/electrum_logo.png")}}"/></div>
<div class="app_title">Electrum Server</div>
<div class="app_status">{{ electrs_status }}</div>
<div class="app_contents">
{% if electrs_enabled %}
<a class="ui-button ui-widget ui-corner-all mynode_button" href="/electrum-server">Info</a>
{% endif %}
<a class="ui-button ui-widget ui-corner-all mynode_button" href="#" id="toggle-electrs">{% if electrs_enabled %}Disable{% else %}Enable{% endif %}</a>
</div>
</div>
-->
<div class="app_tile">
<div class="app_status_icon {{ tor_status_color }}"></div>
<div class="app_logo"><img class="app_logo_icon" src="{{ url_for('static', filename="images/tor.png")}}"/></div>
<div class="app_title">Tor</div>
<div class="app_status">Private Connections</div>
<div class="app_contents">
{% if product_key_skipped %}
Remote Access Premium Feature
{% else %}
<a class="ui-button ui-widget ui-corner-all mynode_button" href="/tor">Tor Services</a>
{% endif %}
</div>
</div>
<div class="app_tile">
<div class="app_status_icon {{ vpn_status_color }}"></div>
<div class="app_logo"><img class="app_logo_icon" src="{{ url_for('static', filename="images/vpn.png")}}"/></div>
<div class="app_title">VPN</div>
<div class="app_status">{{ vpn_status }}</div>
<div class="app_contents">
{% if product_key_skipped %}
Premium Feature
{% else %}
{% if vpn_enabled %}
<a class="ui-button ui-widget ui-corner-all mynode_button" href="/vpn-info">Info</a>
{% endif %}
<a class="ui-button ui-widget ui-corner-all mynode_button" href="#" id="toggle-vpn">{% if vpn_enabled %}Disable{% else %}Enable{% endif %}</a>
{% endif %}
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -3,12 +3,12 @@
</div>
<table border="0">
<tr>
<td>Serial Number</td>
<td style="padding-left: 20px;">{{serial_number}}</td>
<td class="td_left_header">Serial Number</td>
<td>{{serial_number}}</td>
</tr>
<tr>
<td>Product Key</td>
<td style="padding-left: 20px;">
<td class="td_left_header">Product Key</td>
<td>
{% if product_key_skipped %}
{{product_key}}
&nbsp;<a href="/product-key" class="ui-button ui-widget ui-corner-all settings_button_small">Enter Product Key</a>
@ -20,22 +20,22 @@
</td>
</tr>
<tr>
<td>Device Type</td>
<td style="padding-left: 20px;">{{device_type}}</td>
<td class="td_left_header">Device Type</td >
<td>{{device_type}}</td>
</tr>
<tr>
<td>Device RAM</td>
<td style="padding-left: 20px;">{{device_ram}} GB</td>
<td class="td_left_header">Device RAM</td>
<td>{{device_ram}} GB</td>
</tr>
<tr>
<td>Local IP</td>
<td style="padding-left: 20px;">{{local_ip}}</td>
<td class="td_left_header">Local IP</td>
<td>{{local_ip}}</td>
</tr>
{% if throttled_data['RAW_DATA'] != "0x0" and throttled_data['RAW_DATA'] != "MISSING" %}
{% if throttled_data['UNDERVOLTED'] or throttled_data['CAPPED'] or throttled_data['THROTTLED'] or throttled_data['SOFT_TEMPLIMIT'] %}
<tr>
<td>Active Throttling Data</td>
<td style="padding-left: 20px; color: red; font-size: 10px">
<td class="td_left_header">Active Throttling Data</td>
<td style="color: red; font-size: 10px">
{% if throttled_data['UNDERVOLTED'] %}Undervolted<br/>{% endif %}
{% if throttled_data['CAPPED'] %}Capped CPU<br/>{% endif %}
{% if throttled_data['THROTTLED'] %}Throttled CPU<br/>{% endif %}
@ -45,8 +45,8 @@
{% endif %}
{% if throttled_data['HAS_UNDERVOLTED'] or throttled_data['HAS_CAPPED'] or throttled_data['HAS_THROTTLED'] or throttled_data['HAS_SOFT_TEMPLIMIT'] %}
<tr>
<td>Historic Throttling Data<br/><span style="font-size: 10px;">*Occurred since last reboot</span></td>
<td style="padding-left: 20px; color: red; font-size: 10px;">
<td class="td_left_header">Historic Throttling Data<br/><span style="font-size: 10px;">*Occurred since last reboot</span></td>
<td style="color: red; font-size: 10px;">
{% if throttled_data['HAS_UNDERVOLTED'] %}Undervolted<br/>{% endif %}
{% if throttled_data['HAS_CAPPED'] %}Capped CPU<br/>{% endif %}
{% if throttled_data['HAS_THROTTLED'] %}Throttled CPU<br/>{% endif %}
@ -57,8 +57,8 @@
{% endif %}
{% if has_checkin_error %}
<tr>
<td>Server</td>
<td style="padding-left: 20px; color: red;"><b>Error contacting mynodebtc.com via Tor!</b><br/>You may have issues checking for new versions or saving product keys.</td>
<td class="td_left_header">Server</td>
<td style="color: red;"><b>Error contacting mynodebtc.com via Tor!</b><br/>You may have issues checking for new versions or saving product keys.</td>
</tr>
{% endif %}

View File

@ -1,8 +1,8 @@
<div class="app_tile_row">
<div>
<div class="main_header">Core Services</div>
<div class="app_tile_row_section">
<div class="app_tile">
<div class="app_tile_very_wide" style="width: 300px;">
<div style="width: 130px; float: left;">
<div class="app_status_icon {{ bitcoind_status_color }}"></div>
<div class="app_logo"><img class="app_logo_icon" src="{{ url_for('static', filename="images/bitcoin.png")}}"/></div>
<div class="app_title">Bitcoin</div>
@ -11,61 +11,69 @@
<a class="ui-button ui-widget ui-corner-all mynode_button" href="/bitcoind">Manage</a>
</div>
</div>
<div class="app_tile">
<div style="width: 160px; padding-left: 10px; float: right;">
<table style="font-size: 10px; width: 100%;" cellpadding="0" cellspacing="0">
<tr>
<td class="td_left_header">Height</td>
<td>{{ current_block }}</td>
</tr>
<tr>
<td class="td_left_header">Peers</td>
<td>{{ bitcoin_peer_count }}</td>
</tr>
<tr>
<td class="td_left_header">Difficulty</td>
<td>{{ bitcoin_difficulty }}</td>
</tr>
<tr>
<td class="td_left_header">Mempool Size</td>
<td>{{ bitcoin_mempool_size }}</td>
</tr>
<tr>
<td class="td_left_header">Version</td>
<td>{{ bitcoin_version }}</td>
</tr>
</table>
</div>
</div>
<div class="app_tile_very_wide" style="width: 300px;">
<div style="width: 130px; float: left;">
<div class="app_status_icon {{ lnd_status_color }}"></div>
<div class="app_logo"><img class="app_logo_icon" src="{{ url_for('static', filename="images/lightning.png")}}"/></div>
<div class="app_title">Lightning</div>
<div class="app_status">{{ lnd_status }}</div>
<div class="app_contents">
{% if lnd_ready %}
<a class="ui-button ui-widget ui-corner-all mynode_button" href="#" id="lndconnect">Pair Wallet</a>
{% endif %}
<a class="ui-button ui-widget ui-corner-all mynode_button" href="/lnd">Manage</a>
</div>
</div>
</div>
</div>
<div>
<div class="main_header">Services</div>
<div class="app_tile_row_section">
<div class="app_tile">
<div class="app_status_icon {{ electrs_status_color }}"></div>
<div class="app_logo"><img class="app_logo_icon" src="{{ url_for('static', filename="images/electrum_logo.png")}}"/></div>
<div class="app_title">Electrum Server</div>
<div class="app_status">{{ electrs_status }}</div>
<div class="app_contents">
{% if electrs_enabled %}
<a class="ui-button ui-widget ui-corner-all mynode_button" href="/electrum-server">Info</a>
{% endif %}
<a class="ui-button ui-widget ui-corner-all mynode_button" href="#" id="toggle-electrs">{% if electrs_enabled %}Disable{% else %}Enable{% endif %}</a>
</div>
</div>
<div class="app_tile">
<div class="app_status_icon {{ tor_status_color }}"></div>
<div class="app_logo"><img class="app_logo_icon" src="{{ url_for('static', filename="images/tor.png")}}"/></div>
<div class="app_title">Tor</div>
<div class="app_status">Private Connections</div>
<div class="app_contents">
{% if product_key_skipped %}
Remote Access Premium Feature
{% else %}
<a class="ui-button ui-widget ui-corner-all mynode_button" href="/tor">Tor Services</a>
{% endif %}
</div>
</div>
<div class="app_tile">
<div class="app_status_icon {{ vpn_status_color }}"></div>
<div class="app_logo"><img class="app_logo_icon" src="{{ url_for('static', filename="images/vpn.png")}}"/></div>
<div class="app_title">VPN</div>
<div class="app_status">{{ vpn_status }}</div>
<div class="app_contents">
{% if product_key_skipped %}
Premium Feature
{% else %}
{% if vpn_enabled %}
<a class="ui-button ui-widget ui-corner-all mynode_button" href="/vpn-info">Info</a>
{% endif %}
<a class="ui-button ui-widget ui-corner-all mynode_button" href="#" id="toggle-vpn">{% if vpn_enabled %}Disable{% else %}Enable{% endif %}</a>
{% endif %}
</div>
</div>
<div style="width: 160px; padding-left: 10px; float: right;">
<table style="font-size: 10px; width: 100%;" cellpadding="0" cellspacing="0">
<tr>
<td class="td_left_header">Peers</td>
<td>{{ lnd_peer_count }}</td>
</tr>
<tr>
<td class="td_left_header">Channels</td>
<td>{{ lnd_channel_count }}</td>
</tr>
<!--
<tr>
<td class="td_left_header">On-chain Balance</td>
<td>{{ lnd_balance_info['wallet_balance'] }}</td>
</tr>
<tr>
<td class="td_left_header">Lightning Balance</td>
<td>{{ lnd_balance_info['channel_balance'] }}</td>
</tr>
-->
<tr>
<td class="td_left_header">Version</td>
<td>{{ lnd_version }}</td>
</tr>
</table>
</div>
</div>
</div>

View File

@ -1,8 +1,8 @@
<div class="settings_block_subheader">Status</div>
<table border="0">
<tr>
<td>Details</td>
<td style="padding-left: 20px;">
<td class="td_left_header">Details</td>
<td>
{% if is_netdata_enabled %}
{% if is_bitcoin_synced %}
{% if not is_installing_docker_images %}
@ -18,36 +18,36 @@
</td>
</tr>
<tr>
<td>Manage</td>
<td style="padding-left: 20px;">
<td class="td_left_header">Manage</td>
<td>
<a id="linux_terminal" class="ui-button ui-widget ui-corner-all settings_button_small" href="#">Linux Terminal</a>
</td>
</tr>
<tr>
<td>Disk Usage</td>
<td style="padding-left: 20px;">{{drive_usage}}</td>
<td class="td_left_header">Disk Usage</td>
<td>{{drive_usage}}</td>
</tr>
<tr>
<td>CPU</td>
<td style="padding-left: 20px;">{{cpu_usage}}</td>
<td class="td_left_header">CPU</td>
<td>{{cpu_usage}}</td>
</tr>
<tr>
<td>RAM</td>
<td style="padding-left: 20px;">{{ram_usage}}</td>
<td class="td_left_header">RAM</td>
<td>{{ram_usage}}</td>
</tr>
{% if device_temp != '...' %}
<tr>
<td>Temperature</td>
<td style="padding-left: 20px;">{{device_temp}} &deg;C</td>
<td class="td_left_header">Temperature</td>
<td>{{device_temp}} &deg;C</td>
</tr>
{% endif %}
<tr>
<td>Uptime</td>
<td style="padding-left: 20px;">{{uptime}}</td>
<td class="td_left_header">Uptime</td>
<td>{{uptime}}</td>
</tr>
<tr>
<td>Date</td>
<td style="padding-left: 20px;">{{date}}</td>
<td class="td_left_header">Date</td>
<td>{{date}}</td>
</tr>
</table>
<div class="divider"></div>

View File

@ -420,7 +420,7 @@
<div class="settings_block_subheader">Version</div>
<table border="0">
<tr>
<td>Current Version</td>
<td class="td_left_header">Current Version</td>
<td>{{current_version}}</td>
<td></td>
</tr>
@ -462,15 +462,15 @@
<form action="/settings/password" method="POST">
<table border="0">
<tr>
<td>Current Password</td>
<td class="td_left_header">Current Password</td>
<td><input type="password" id="current_password" name="current_password" width="20" class="ui-corner-all settings_input"/></td>
</tr>
<tr>
<td>Password</td>
<td class="td_left_header">Password</td>
<td><input type="password" id="password1" name="password1" width="20" class="ui-corner-all settings_input"/></td>
</tr>
<tr>
<td>Repeat Password</td>
<td class="td_left_header">Repeat Password</td>
<td><input type="password" id="password2" name="password2" width="20" class="ui-corner-all settings_input"/></td>
</tr>
</table>

View File

@ -168,7 +168,7 @@
<div class="settings_block_subheader">Version</div>
<table border="0">
<tr>
<td>Current Version</td>
<td class="td_left_header">Current Version</td>
<td>{{current_version}}</td>
<td></td>
</tr>