Merged all onchain items into single dashboard
This commit is contained in:
parent
5ae4353a70
commit
b86ffd0c3d
2 changed files with 68 additions and 97 deletions
|
|
@ -190,38 +190,11 @@
|
||||||
v-model="formDialog.data.display_preferences.fun_exchange_market_rate"
|
v-model="formDialog.data.display_preferences.fun_exchange_market_rate"
|
||||||
label="Current dirty fiat to BTC price"
|
label="Current dirty fiat to BTC price"
|
||||||
></q-toggle>
|
></q-toggle>
|
||||||
<q-expansion-item
|
|
||||||
expand-separator
|
|
||||||
icon="link"
|
|
||||||
label="Onchain Information"
|
|
||||||
>
|
|
||||||
<q-toggle
|
|
||||||
v-model="toggleStates.onchain"
|
|
||||||
label="Toggle all"
|
|
||||||
>
|
|
||||||
<q-tooltip>Toggle all</q-tooltip>
|
|
||||||
</q-toggle>
|
|
||||||
<br>
|
|
||||||
<q-toggle
|
|
||||||
v-model="formDialog.data.display_preferences.onchain_difficulty_epoch_progress"
|
|
||||||
label="Percent of current difficulty epoch complete"
|
|
||||||
></q-toggle>
|
|
||||||
|
|
||||||
<q-toggle
|
<q-toggle
|
||||||
v-model="formDialog.data.display_preferences.onchain_difficulty_retarget_date"
|
v-model="formDialog.data.display_preferences.onchain_dashboard"
|
||||||
label="Estimated retarget date"
|
label="Onchain dashboard"
|
||||||
></q-toggle>
|
></q-toggle>
|
||||||
|
|
||||||
<q-toggle
|
|
||||||
v-model="formDialog.data.display_preferences.onchain_difficulty_blocks_remaining"
|
|
||||||
label="Blocks until next difficulty adjustment"
|
|
||||||
></q-toggle>
|
|
||||||
|
|
||||||
<q-toggle
|
|
||||||
v-model="formDialog.data.display_preferences.onchain_difficulty_epoch_time_remaining"
|
|
||||||
label="Estimated time until next difficulty adjustment"
|
|
||||||
></q-toggle>
|
|
||||||
</q-expansion-item>
|
|
||||||
<q-expansion-item
|
<q-expansion-item
|
||||||
expand-separator
|
expand-separator
|
||||||
icon="psychology"
|
icon="psychology"
|
||||||
|
|
@ -542,10 +515,7 @@
|
||||||
dashboard: true,
|
dashboard: true,
|
||||||
fun_satoshi_quotes: true,
|
fun_satoshi_quotes: true,
|
||||||
fun_exchange_market_rate: true,
|
fun_exchange_market_rate: true,
|
||||||
onchain_difficulty_epoch_progress: true,
|
onchain_dashboard: true,
|
||||||
onchain_difficulty_retarget_date: true,
|
|
||||||
onchain_difficulty_blocks_remaining: true,
|
|
||||||
onchain_difficulty_epoch_time_remaining: true,
|
|
||||||
mempool_recommended_fees: true,
|
mempool_recommended_fees: true,
|
||||||
mempool_tx_count: true,
|
mempool_tx_count: true,
|
||||||
mining_current_hash_rate: true,
|
mining_current_hash_rate: true,
|
||||||
|
|
|
||||||
|
|
@ -101,6 +101,7 @@ async def api_gerty_satoshi():
|
||||||
else:
|
else:
|
||||||
return quote
|
return quote
|
||||||
|
|
||||||
|
|
||||||
@gerty_ext.get("/api/v1/gerty/{gerty_id}/{p}")
|
@gerty_ext.get("/api/v1/gerty/{gerty_id}/{p}")
|
||||||
async def api_gerty_json(
|
async def api_gerty_json(
|
||||||
gerty_id: str,
|
gerty_id: str,
|
||||||
|
|
@ -174,14 +175,8 @@ async def get_screen_data(screen_num: int, screens_list: dict, gerty):
|
||||||
areas.append(await get_satoshi_quotes())
|
areas.append(await get_satoshi_quotes())
|
||||||
elif screen_slug == "fun_exchange_market_rate":
|
elif screen_slug == "fun_exchange_market_rate":
|
||||||
areas.append(await get_exchange_rate(gerty))
|
areas.append(await get_exchange_rate(gerty))
|
||||||
elif screen_slug == "onchain_difficulty_epoch_progress":
|
elif screen_slug == "onchain_dashboard":
|
||||||
areas.append(await get_onchain_stat(screen_slug, gerty))
|
areas.append(await get_onchain_dashboard(gerty))
|
||||||
elif screen_slug == "onchain_difficulty_retarget_date":
|
|
||||||
areas.append(await get_onchain_stat(screen_slug, gerty))
|
|
||||||
elif screen_slug == "onchain_difficulty_blocks_remaining":
|
|
||||||
areas.append(await get_onchain_stat(screen_slug, gerty))
|
|
||||||
elif screen_slug == "onchain_difficulty_epoch_time_remaining":
|
|
||||||
areas.append(await get_onchain_stat(screen_slug, gerty))
|
|
||||||
elif screen_slug == "mempool_recommended_fees":
|
elif screen_slug == "mempool_recommended_fees":
|
||||||
areas.append(await get_mempool_stat(screen_slug, gerty))
|
areas.append(await get_mempool_stat(screen_slug, gerty))
|
||||||
elif screen_slug == "mempool_tx_count":
|
elif screen_slug == "mempool_tx_count":
|
||||||
|
|
@ -200,6 +195,7 @@ async def get_screen_data(screen_num: int, screens_list: dict, gerty):
|
||||||
|
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
# Get the dashboard screen
|
# Get the dashboard screen
|
||||||
async def get_dashboard(gerty):
|
async def get_dashboard(gerty):
|
||||||
areas = []
|
areas = []
|
||||||
|
|
@ -283,39 +279,37 @@ async def get_exchange_rate(gerty):
|
||||||
return text
|
return text
|
||||||
|
|
||||||
|
|
||||||
|
async def get_onchain_dashboard(gerty):
|
||||||
|
areas = []
|
||||||
|
|
||||||
async def get_onchain_stat(stat_slug: str, gerty):
|
|
||||||
text = []
|
|
||||||
if isinstance(gerty.mempool_endpoint, str):
|
if isinstance(gerty.mempool_endpoint, str):
|
||||||
async with httpx.AsyncClient() as client:
|
async with httpx.AsyncClient() as client:
|
||||||
if (
|
|
||||||
stat_slug == "onchain_difficulty_epoch_progress" or
|
|
||||||
stat_slug == "onchain_difficulty_retarget_date" or
|
|
||||||
stat_slug == "onchain_difficulty_blocks_remaining" or
|
|
||||||
stat_slug == "onchain_difficulty_epoch_time_remaining"
|
|
||||||
):
|
|
||||||
r = await client.get(gerty.mempool_endpoint + "/api/v1/difficulty-adjustment")
|
r = await client.get(gerty.mempool_endpoint + "/api/v1/difficulty-adjustment")
|
||||||
if stat_slug == "onchain_difficulty_epoch_progress":
|
text = []
|
||||||
stat = round(r.json()['progressPercent'])
|
stat = round(r.json()['progressPercent'])
|
||||||
text.append(get_text_item_dict("Progress through current difficulty epoch", 15))
|
text.append(get_text_item_dict("Progress through current difficulty epoch", 12))
|
||||||
text.append(get_text_item_dict("{0}%".format(stat), 80))
|
text.append(get_text_item_dict("{0}%".format(stat), 20))
|
||||||
elif stat_slug == "onchain_difficulty_retarget_date":
|
areas.append(text)
|
||||||
|
|
||||||
|
text = []
|
||||||
stat = r.json()['estimatedRetargetDate']
|
stat = r.json()['estimatedRetargetDate']
|
||||||
dt = datetime.fromtimestamp(stat / 1000).strftime("%e %b %Y at %H:%M")
|
dt = datetime.fromtimestamp(stat / 1000).strftime("%e %b %Y at %H:%M")
|
||||||
text.append(get_text_item_dict("Estimated date of next difficulty adjustment", 15))
|
text.append(get_text_item_dict("Estimated date of next difficulty adjustment", 12))
|
||||||
text.append(get_text_item_dict(dt, 40))
|
text.append(get_text_item_dict(dt, 20))
|
||||||
elif stat_slug == "onchain_difficulty_blocks_remaining":
|
areas.append(text)
|
||||||
stat = r.json()['remainingBlocks']
|
|
||||||
text.append(get_text_item_dict("Blocks remaining until next difficulty adjustment", 15))
|
|
||||||
text.append(get_text_item_dict("{0}".format(format_number(stat)), 80))
|
|
||||||
elif stat_slug == "onchain_difficulty_epoch_time_remaining":
|
|
||||||
stat = r.json()['remainingTime']
|
|
||||||
text.append(get_text_item_dict("Blocks remaining until next difficulty adjustment", 15))
|
|
||||||
text.append(get_text_item_dict(get_time_remaining(stat / 1000, 4), 20))
|
|
||||||
return text
|
|
||||||
|
|
||||||
|
text = []
|
||||||
|
stat = r.json()['remainingBlocks']
|
||||||
|
text.append(get_text_item_dict("Blocks remaining until next difficulty adjustment", 12))
|
||||||
|
text.append(get_text_item_dict("{0}".format(format_number(stat)), 20))
|
||||||
|
areas.append(text)
|
||||||
|
|
||||||
|
text = []
|
||||||
|
stat = r.json()['remainingTime']
|
||||||
|
text.append(get_text_item_dict("Blocks remaining until next difficulty adjustment", 12))
|
||||||
|
text.append(get_text_item_dict(get_time_remaining(stat / 1000, 4), 20))
|
||||||
|
areas.append(text)
|
||||||
|
|
||||||
|
return areas
|
||||||
|
|
||||||
async def get_time_remaining_next_difficulty_adjustment(gerty):
|
async def get_time_remaining_next_difficulty_adjustment(gerty):
|
||||||
if isinstance(gerty.mempool_endpoint, str):
|
if isinstance(gerty.mempool_endpoint, str):
|
||||||
|
|
@ -325,6 +319,7 @@ async def get_time_remaining_next_difficulty_adjustment(gerty):
|
||||||
time = get_time_remaining(stat / 1000, 3)
|
time = get_time_remaining(stat / 1000, 3)
|
||||||
return time
|
return time
|
||||||
|
|
||||||
|
|
||||||
async def get_block_height(gerty):
|
async def get_block_height(gerty):
|
||||||
if isinstance(gerty.mempool_endpoint, str):
|
if isinstance(gerty.mempool_endpoint, str):
|
||||||
async with httpx.AsyncClient() as client:
|
async with httpx.AsyncClient() as client:
|
||||||
|
|
@ -332,6 +327,7 @@ async def get_block_height(gerty):
|
||||||
|
|
||||||
return r.json()
|
return r.json()
|
||||||
|
|
||||||
|
|
||||||
async def get_mempool_stat(stat_slug: str, gerty):
|
async def get_mempool_stat(stat_slug: str, gerty):
|
||||||
text = []
|
text = []
|
||||||
if isinstance(gerty.mempool_endpoint, str):
|
if isinstance(gerty.mempool_endpoint, str):
|
||||||
|
|
@ -365,33 +361,38 @@ async def get_mempool_stat(stat_slug: str, gerty):
|
||||||
fee_append = "/vB"
|
fee_append = "/vB"
|
||||||
fee_rate = fees["economyFee"]
|
fee_rate = fees["economyFee"]
|
||||||
text.append(get_text_item_dict(
|
text.append(get_text_item_dict(
|
||||||
"{0} {1}{2}".format(format_number(fee_rate), ("sat" if fee_rate == 1 else "sats"), fee_append), font_size,
|
"{0} {1}{2}".format(format_number(fee_rate), ("sat" if fee_rate == 1 else "sats"), fee_append),
|
||||||
|
font_size,
|
||||||
30, pos_y))
|
30, pos_y))
|
||||||
|
|
||||||
fee_rate = fees["hourFee"]
|
fee_rate = fees["hourFee"]
|
||||||
text.append(get_text_item_dict(
|
text.append(get_text_item_dict(
|
||||||
"{0} {1}{2}".format(format_number(fee_rate), ("sat" if fee_rate == 1 else "sats"), fee_append), font_size,
|
"{0} {1}{2}".format(format_number(fee_rate), ("sat" if fee_rate == 1 else "sats"), fee_append),
|
||||||
|
font_size,
|
||||||
235, pos_y))
|
235, pos_y))
|
||||||
|
|
||||||
fee_rate = fees["halfHourFee"]
|
fee_rate = fees["halfHourFee"]
|
||||||
text.append(get_text_item_dict(
|
text.append(get_text_item_dict(
|
||||||
"{0} {1}{2}".format(format_number(fee_rate), ("sat" if fee_rate == 1 else "sats"), fee_append), font_size,
|
"{0} {1}{2}".format(format_number(fee_rate), ("sat" if fee_rate == 1 else "sats"), fee_append),
|
||||||
|
font_size,
|
||||||
460, pos_y))
|
460, pos_y))
|
||||||
|
|
||||||
fee_rate = fees["fastestFee"]
|
fee_rate = fees["fastestFee"]
|
||||||
text.append(get_text_item_dict(
|
text.append(get_text_item_dict(
|
||||||
"{0} {1}{2}".format(format_number(fee_rate), ("sat" if fee_rate == 1 else "sats"), fee_append), font_size,
|
"{0} {1}{2}".format(format_number(fee_rate), ("sat" if fee_rate == 1 else "sats"), fee_append),
|
||||||
|
font_size,
|
||||||
750, pos_y))
|
750, pos_y))
|
||||||
return text
|
return text
|
||||||
|
|
||||||
|
|
||||||
def get_date_suffix(dayNumber):
|
def get_date_suffix(dayNumber):
|
||||||
if 4 <= dayNumber <= 20 or 24 <= dayNumber <= 30:
|
if 4 <= dayNumber <= 20 or 24 <= dayNumber <= 30:
|
||||||
return "th"
|
return "th"
|
||||||
else:
|
else:
|
||||||
return ["st", "nd", "rd"][dayNumber % 10 - 1]
|
return ["st", "nd", "rd"][dayNumber % 10 - 1]
|
||||||
|
|
||||||
def get_time_remaining(seconds, granularity=2):
|
|
||||||
|
|
||||||
|
def get_time_remaining(seconds, granularity=2):
|
||||||
intervals = (
|
intervals = (
|
||||||
# ('weeks', 604800), # 60 * 60 * 24 * 7
|
# ('weeks', 604800), # 60 * 60 * 24 * 7
|
||||||
('days', 86400), # 60 * 60 * 24
|
('days', 86400), # 60 * 60 * 24
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue