Adjusted styles

This commit is contained in:
Donald Zou
2025-09-01 22:35:43 +08:00
parent 8191668d60
commit 572c223854
5 changed files with 55 additions and 31 deletions

View File

@@ -1491,7 +1491,11 @@ def peerInformationBackgroundThread():
time.sleep(10) time.sleep(10)
while True: while True:
with app.app_context(): with app.app_context():
for c in WireguardConfigurations.values(): try:
curKeys = list(WireguardConfigurations.keys())
for name in curKeys:
if name in WireguardConfigurations.keys() and WireguardConfigurations.get(name) is not None:
c = WireguardConfigurations.get(name)
if c.getStatus(): if c.getStatus():
c.getPeersLatestHandshake() c.getPeersLatestHandshake()
c.getPeersTransfer() c.getPeersTransfer()
@@ -1500,6 +1504,9 @@ def peerInformationBackgroundThread():
if delay == 6: if delay == 6:
c.logPeersTraffic() c.logPeersTraffic()
c.getRestrictedPeersList() c.getRestrictedPeersList()
except Exception as e:
print(f"[WGDashboard] Background Thread #1 Error: {str(e)}", flush=True)
if delay == 6: if delay == 6:
delay = 1 delay = 1
else: else:

View File

@@ -30,7 +30,6 @@ Chart.register(
PointElement, PointElement,
Filler Filler
); );
import {Line} from "vue-chartjs";
import PeerSessions from "@/components/peerDetailsModalComponents/peerSessions.vue"; import PeerSessions from "@/components/peerDetailsModalComponents/peerSessions.vue";
import PeerTraffics from "@/components/peerDetailsModalComponents/peerTraffics.vue"; import PeerTraffics from "@/components/peerDetailsModalComponents/peerTraffics.vue";
const props = defineProps(['selectedPeer']) const props = defineProps(['selectedPeer'])
@@ -40,9 +39,9 @@ defineEmits(['close'])
<template> <template>
<div class="peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll "> <div class="peerSettingContainer w-100 h-100 position-absolute top-0 start-0 overflow-y-scroll ">
<div class=" d-flex h-100 w-100"> <div class="d-flex h-100 w-100 pb-2">
<div class="w-100 p-2"> <div class="m-auto w-100 p-2">
<div class="card rounded-3 shadow" style="width: 100%"> <div class="card rounded-3 shadow h-100" >
<div class="card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-2"> <div class="card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-2">
<h4 class="mb-0 fw-normal"> <h4 class="mb-0 fw-normal">
<LocaleText t="Peer Details"></LocaleText> <LocaleText t="Peer Details"></LocaleText>
@@ -102,7 +101,7 @@ defineEmits(['close'])
<LocaleText t="Latest Handshake Time"></LocaleText> <LocaleText t="Latest Handshake Time"></LocaleText>
</small></p> </small></p>
<strong class="h4"> <strong class="h4">
<LocaleText :t="selectedPeer.latest_handshake + ' ago'"></LocaleText> <LocaleText :t="selectedPeer.latest_handshake !== 'No Handshake' ? selectedPeer.latest_handshake + ' ago': 'No Handshake'"></LocaleText>
</strong> </strong>
</div> </div>
<i class="bi bi-person-raised-hand ms-auto h2 text-muted"></i> <i class="bi bi-person-raised-hand ms-auto h2 text-muted"></i>
@@ -150,19 +149,18 @@ defineEmits(['close'])
</div> </div>
</div> </div>
</div> </div>
<div class="col-12">
<PeerTraffics
:selectedDate="selectedDate"
:selectedPeer="selectedPeer"></PeerTraffics>
</div>
<div class="col-12"> <div class="col-12">
<PeerSessions <PeerSessions
:selectedDate="selectedDate" :selectedDate="selectedDate"
@selectDate="args => selectedDate = args" @selectDate="args => selectedDate = args"
:selectedPeer="selectedPeer"></PeerSessions> :selectedPeer="selectedPeer"></PeerSessions>
</div> </div>
<div class="col-12">
<PeerTraffics
:selectedDate="selectedDate"
:selectedPeer="selectedPeer"></PeerTraffics>
</div>
</div> </div>

View File

@@ -42,7 +42,7 @@ defineEmits(['openDetails'])
</script> </script>
<template> <template>
<div class="d-flex gap-1 flex-column" @click="$emit('openDetails', sessionsOfToday)"> <div class="d-flex gap-1 flex-column session-list" @click="$emit('openDetails', sessionsOfToday)">
<small v-if="sessionsOfToday.length > 0" class="sessions-label"> <small v-if="sessionsOfToday.length > 0" class="sessions-label">
<LocaleText :t="sessionsOfToday.length + ' Session' + (sessionsOfToday.length > 1 ? 's':'')"></LocaleText> <LocaleText :t="sessionsOfToday.length + ' Session' + (sessionsOfToday.length > 1 ? 's':'')"></LocaleText>
</small> </small>
@@ -50,7 +50,7 @@ defineEmits(['openDetails'])
<div class="bg-warning" <div class="bg-warning"
style="height: 5px; width: 5px; border-radius: 100%; vertical-align: top" v-for="_ in sessionsOfToday.length"></div> style="height: 5px; width: 5px; border-radius: 100%; vertical-align: top" v-for="_ in sessionsOfToday.length"></div>
</div> </div>
<div class="p-1 badge text-bg-warning text-start session-list" v-for="s in sessionsOfToday"> <div class="p-1 badge text-bg-warning text-start session-badge-list" v-for="s in sessionsOfToday">
<div> <div>
<i class="bi bi-stopwatch me-1"></i>{{ s.timestamps[0].format("HH:mm:ss") }}<i class="bi bi-arrow-right mx-1"></i>{{ s.timestamps[s.timestamps.length - 1].format("HH:mm:ss") }} <i class="bi bi-stopwatch me-1"></i>{{ s.timestamps[0].format("HH:mm:ss") }}<i class="bi bi-arrow-right mx-1"></i>{{ s.timestamps[s.timestamps.length - 1].format("HH:mm:ss") }}
</div> </div>
@@ -63,7 +63,7 @@ defineEmits(['openDetails'])
<style scoped> <style scoped>
@media screen and (max-width: 992px) { @media screen and (max-width: 992px) {
.calendar-day .session-list{ .calendar-day .session-badge-list{
display: none; display: none;
} }
@@ -71,10 +71,21 @@ defineEmits(['openDetails'])
display: none; display: none;
} }
} }
.session-list{
aspect-ratio: 1 / 1;
}
@media screen and (min-width: 992px) { @media screen and (min-width: 992px) {
.session-dot{ .session-dot{
display: none !important; display: none !important;
} }
.session-list{
height: calc(100vh / 8);
overflow: scroll;
aspect-ratio: auto !important;
} }
}
</style> </style>

View File

@@ -29,6 +29,14 @@ const calendarDays = computed(() => {
dates.push(cur) dates.push(cur)
cur = cur.add(1, 'day') cur = cur.add(1, 'day')
} }
if (dates.length < 42){
let q = 42 - dates.length
for (let i = 0; i < q; i++){
console.log('push')
dates.push(cur)
cur = cur.add(1, 'day')
}
}
return dates return dates
}) })
@@ -43,7 +51,7 @@ const getSessions = async () => {
}) })
} }
await getSessions() getSessions()
interval.value = setInterval(async () => { interval.value = setInterval(async () => {
await getSessions() await getSessions()
}, 60000) }, 60000)
@@ -92,10 +100,10 @@ const emits = defineEmits(['selectDate'])
'border-bottom': index < calendarDays.length - 7, 'border-bottom': index < calendarDays.length - 7,
'extra-day': !day.isSame(today, 'month')}" 'extra-day': !day.isSame(today, 'month')}"
v-for="(day, index) in calendarDays"> v-for="(day, index) in calendarDays">
<h5 class="d-flex"> <h6 class="d-flex day-label">
{{ day.format('D')}} {{ day.format('D')}}
<i class="bi bi-check-circle-fill ms-auto" v-if="selectedDate && selectedDate.isSame(day, 'D')"></i> <i class="bi bi-check-circle-fill ms-auto" v-if="selectedDate && selectedDate.isSame(day, 'D')"></i>
</h5> </h6>
<PeerSessionCalendarDay <PeerSessionCalendarDay
class="flex-grow-1" class="flex-grow-1"
@openDetails="args => {dayDetailsData = {day: day, details: args}; dayDetails = true}" @openDetails="args => {dayDetailsData = {day: day, details: args}; dayDetails = true}"
@@ -163,7 +171,7 @@ const emits = defineEmits(['selectDate'])
} }
} }
.extra-day h5{ .extra-day .day-label{
opacity: 0.5; opacity: 0.5;
} }
</style> </style>

View File

@@ -24,7 +24,7 @@ const getTraffic = async () => {
}) })
} }
const interval = ref(undefined) const interval = ref(undefined)
await getTraffic() getTraffic()
interval.value = setInterval(async () => { interval.value = setInterval(async () => {
await getTraffic() await getTraffic()
}, 60000) }, 60000)