feat: Add domain sorting and fixed a few ui bugs

This commit is contained in:
Nathan Woodburn 2024-01-25 18:53:04 +11:00
parent a5c0ffc4ba
commit 123e4eea98
Signed by: nathanwoodburn
GPG Key ID: 203B000478AD0EF1
3 changed files with 83 additions and 7 deletions

82
main.py
View File

@ -38,6 +38,49 @@ def index():
pending = account_module.getPendingTX(account) pending = account_module.getPendingTX(account)
domains = account_module.getDomains(account) domains = account_module.getDomains(account)
# Sort
sort = request.args.get("sort")
if sort == None:
sort = "domain"
sort = sort.lower()
sort_price = ""
sort_price_next = ""
sort_expiry = ""
sort_expiry_next = ""
sort_domain = ""
sort_domain_next = ""
reverse = False
direction = request.args.get("direction")
if direction == None:
direction = ""
if direction == "":
reverse = True
if sort == "expiry":
# Sort by next expiry
domains = sorted(domains, key=lambda k: k['renewal'],reverse=reverse)
sort_expiry = direction
sort_expiry_next = reverseDirection(direction)
elif sort == "price":
# Sort by price
domains = sorted(domains, key=lambda k: k['value'],reverse=reverse)
sort_price = direction
sort_price_next = reverseDirection(direction)
else:
# Sort by domain
domains = sorted(domains, key=lambda k: k['name'],reverse=reverse)
sort_domain = direction
sort_domain_next = reverseDirection(direction)
domain_count = len(domains) domain_count = len(domains)
domains = render.domains(domains) domains = render.domains(domains)
@ -45,7 +88,17 @@ def index():
return render_template("index.html", account=account, available=available, return render_template("index.html", account=account, available=available,
total=total, pending=pending, domains=domains, total=total, pending=pending, domains=domains,
domain_count=domain_count, sync=account_module.getNodeSync()) domain_count=domain_count, sync=account_module.getNodeSync(),
sort_price=sort_price,sort_expiry=sort_expiry,
sort_domain=sort_domain,sort_price_next=sort_price_next,
sort_expiry_next=sort_expiry_next,sort_domain_next=sort_domain_next)
def reverseDirection(direction: str):
if direction == "":
return ""
else:
return ""
#region Transactions #region Transactions
@app.route('/tx') @app.route('/tx')
@ -124,13 +177,36 @@ def send():
if amount > account_module.getBalance(account)['available'] - fees: if amount > account_module.getBalance(account)['available'] - fees:
return redirect("/send?message=Not enough funds to transfer&address=" + address + "&amount=" + str(amount)) return redirect("/send?message=Not enough funds to transfer&address=" + address + "&amount=" + str(amount))
# Send the transaction toAddress = address
if request.form.get('address') != address:
toAddress = request.form.get('address') + "<br>" + address
action = f"Send HNS to {request.form.get('address')}"
content = f"Are you sure you want to send {amount} HNS to {toAddress}<br><br>"
content += f"This will cost {amount} HNS + mining fees and is not able to be undone."
cancel = f"/send"
confirm = f"/send/confirm?address={address}&amount={amount}"
return render_template("confirm.html", account=account_module.check_account(request.cookies.get("account")),
sync=account_module.getNodeSync(),action=action,
content=content,cancel=cancel,confirm=confirm)
@app.route('/send/confirm')
def sendConfirmed():
address = request.args.get("address")
amount = float(request.args.get("amount"))
response = account_module.send(request.cookies.get("account"),address,amount) response = account_module.send(request.cookies.get("account"),address,amount)
if 'error' in response: if 'error' in response:
return redirect("/send?message=" + response['error'] + "&address=" + address + "&amount=" + str(amount)) return redirect("/send?message=" + response['error'] + "&address=" + address + "&amount=" + str(amount))
return redirect("/success?tx=" + response['tx']) return redirect("/success?tx=" + response['tx'])
@app.route('/receive') @app.route('/receive')
def receive(): def receive():
# Check if the user is logged in # Check if the user is logged in
@ -410,7 +486,7 @@ def bid(domain):
action = f"Bid on {domain}/" action = f"Bid on {domain}/"
content = f"Are you sure you want to bid on {domain}/?" content = f"Are you sure you want to bid on {domain}/?"
content = "You are about to bid with the following details:<br><br>" content += "You are about to bid with the following details:<br><br>"
content += f"Bid: {request.args.get('bid')} HNS<br>" content += f"Bid: {request.args.get('bid')} HNS<br>"
content += f"Blind: {request.args.get('blind')} HNS<br>" content += f"Blind: {request.args.get('blind')} HNS<br>"
content += f"Total: {total} HNS (excluding fees)<br><br>" content += f"Total: {total} HNS (excluding fees)<br><br>"

View File

@ -137,9 +137,9 @@
<table class="table"> <table class="table">
<thead> <thead>
<tr> <tr>
<th>Domain</th> <th><a href="/?direction={{sort_domain_next}}">Domain{{sort_domain}}</a></th>
<th>Expires</th> <th><a href="/?sort=expiry&direction={{sort_expiry_next}}">Expires{{sort_expiry}}</a></th>
<th>Price Paid</th> <th><a href="/?sort=price&direction={{sort_price_next}}">Price Paid{{sort_price}}</a></th>
<th></th> <th></th>
</tr> </tr>
</thead> </thead>

View File

@ -71,7 +71,7 @@
<div class="container-fluid" style="margin-top: 50px;"> <div class="container-fluid" style="margin-top: 50px;">
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
<h4 class="card-title">DNS</h4><div class="table-responsive"> <h4 class="card-title" style="display: inline-block;">DNS</h4><a class="btn btn-primary" role="button" style="position: absolute; right:16px;" href="/manage/{{domain}}/edit">Edit</a><div class="table-responsive">
<table class="table"> <table class="table">
<thead> <thead>
<tr> <tr>