started adding settings page

This commit is contained in:
UpstreamData
2022-03-07 11:17:41 -07:00
parent 23350ea4b6
commit 2bd25c3f35
4 changed files with 74 additions and 6 deletions

View File

@@ -13,6 +13,7 @@ from fastapi.templating import Jinja2Templates
from network import MinerNetwork
from tools.web_monitor.miner_factory import miner_factory
from tools.web_monitor.web_settings import MINER_DATA_TIMEOUT, MINER_IDENTIFY_TIMEOUT, GRAPH_SLEEP_TIME
app = FastAPI()
@@ -49,7 +50,7 @@ async def dashboard_websocket(websocket: WebSocket):
await websocket.send_json(
{"datetime": datetime.datetime.now().isoformat(),
"miners": all_miner_data})
await asyncio.sleep(1)
await asyncio.sleep(GRAPH_SLEEP_TIME)
except WebSocketDisconnect:
print("Websocket disconnected.")
pass
@@ -59,9 +60,9 @@ async def dashboard_websocket(websocket: WebSocket):
async def get_miner_data_dashboard(miner_ip):
try:
miner_ip = await asyncio.wait_for(miner_factory.get_miner(miner_ip), 5)
miner_ip = await asyncio.wait_for(miner_factory.get_miner(miner_ip), MINER_IDENTIFY_TIMEOUT)
miner_summary = await asyncio.wait_for(miner_ip.api.summary(), 5)
miner_summary = await asyncio.wait_for(miner_ip.api.summary(), MINER_DATA_TIMEOUT)
if miner_summary:
if 'MHS av' in miner_summary['SUMMARY'][0].keys():
hashrate = format(
@@ -106,10 +107,10 @@ async def miner_websocket(websocket: WebSocket, miner_ip):
while True:
try:
cur_miner = await asyncio.wait_for(
miner_factory.get_miner(str(miner_ip)), 5)
miner_factory.get_miner(str(miner_ip)), MINER_IDENTIFY_TIMEOUT)
data = await asyncio.wait_for(
cur_miner.api.multicommand("summary", "fans", "stats"), 5)
cur_miner.api.multicommand("summary", "fans", "stats"), MINER_DATA_TIMEOUT)
miner_model = await cur_miner.get_model()
@@ -166,7 +167,7 @@ async def miner_websocket(websocket: WebSocket, miner_ip):
"datetime": datetime.datetime.now().isoformat(),
"model": miner_model}
await websocket.send_json(data)
await asyncio.sleep(1)
await asyncio.sleep(GRAPH_SLEEP_TIME)
except asyncio.exceptions.TimeoutError:
data = {"error": "The miner is not responding."}
await websocket.send_json(data)
@@ -213,6 +214,20 @@ def get_current_miner_list():
return cur_miners
@app.get("/settings")
async def settings(request: Request):
return templates.TemplateResponse("settings.html", {
"request": request,
"cur_miners": get_current_miner_list(),
})
@app.get("/remove_all_miners")
async def remove_all_miners(request: Request):
file = open("miner_list.txt", "w")
file.close()
return RedirectResponse(request.url_for("settings"))
@app.post("/scan/add_miners")
async def add_miners_scan(request: Request):
miners = await request.json()

View File

@@ -0,0 +1,37 @@
{% extends 'navbar.html'%}
{% block content %}
<div class="row mt-2">
<div class="col">
<div class="d-flex flex-row-reverse">
<button type="button" class="btn btn-outline-danger mx-1" data-bs-toggle="modal" data-bs-target="#removeModal">
Remove All Miners
</button>
<!-- Modal -->
<div class="modal fade" id="removeModal" tabindex="-1" aria-labelledby="removeModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="removeModalLabel">Remove Miner</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
Do you really want to remove all miners?
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
<a class="btn btn-danger" href="{{url_for('remove_all_miners')}}" role="button">Remove</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
window.post = function(url, data) {
return fetch(url, {method: "POST", headers: {'Content-Type': 'application/json'}, body: JSON.stringify(data)});
}
</script>
{% endblock content %}

View File

@@ -0,0 +1,13 @@
import toml
import os
try:
with open(os.path.join(os.getcwd(), "web_settings.toml"), "r") as settings_file:
settings = toml.loads(settings_file.read())
GRAPH_SLEEP_TIME: int = settings["graph_data_sleep_time"]
MINER_DATA_TIMEOUT: int = settings["miner_data_timeout"]
MINER_IDENTIFY_TIMEOUT: int = settings["miner_identify_timeout"]
except:
GRAPH_SLEEP_TIME: int = 1
MINER_DATA_TIMEOUT: int = 5
MINER_IDENTIFY_TIMEOUT: int = 5

View File

@@ -0,0 +1,3 @@
graph_data_sleep_time = 1
miner_data_timeout = 5
miner_identify_timeout = 5