99# pylint: disable=no-name-in-module, unused-import, no-member, invalid-name, c-extension-no-member
1010# pylint: disable=logging-fstring-interpolation, line-too-long
1111
12+ import datetime
13+ import time
1214import logging
1315import os
1416
1517from PyQt6 import uic
16- from PyQt6 .QtWidgets import QLabel , QVBoxLayout , QWidget , QDockWidget
18+ from PyQt6 .QtWidgets import QLabel , QWidget , QDockWidget
1719from PyQt6 .QtGui import QMouseEvent , QColorConstants , QPalette , QColor
18- from PyQt6 .QtCore import pyqtSignal
20+ from PyQt6 .QtCore import pyqtSignal , QTimer
1921
2022import not1mm .fsutils as fsutils
2123from not1mm .lib .database import DataBase
@@ -33,6 +35,7 @@ class RateWindow(QDockWidget):
3335 message = pyqtSignal (dict )
3436 dbname = None
3537 pref = {}
38+ poll_time = datetime .datetime .now () + datetime .timedelta (milliseconds = 1000 )
3639
3740 def __init__ (self ):
3841 super ().__init__ ()
@@ -45,6 +48,9 @@ def __init__(self):
4548 self .database .current_contest = self .pref .get ("contest" , 0 )
4649
4750 uic .loadUi (fsutils .APP_DATA_PATH / "ratewindow.ui" , self )
51+ self .timer = QTimer ()
52+ self .timer .timeout .connect (self .get_run_and_total_qs )
53+ self .timer .start (1000 )
4854
4955 def msg_from_main (self , packet ):
5056 """"""
@@ -128,3 +134,41 @@ def load_pref(self) -> None:
128134 except (IOError , JSONDecodeError ) as exception :
129135 logger .critical ("Error: %s" , exception )
130136 self .setDarkMode (self .pref .get ("darkmode" , False ))
137+
138+ def get_run_and_total_qs (self ):
139+ """get numbers"""
140+
141+ # last_hour
142+ # 10_last_qso
143+ # hundred_last_qso
144+ # since_starttime
145+ # --------------------
146+ # time_on
147+ # time_off
148+ # --------------------
149+ # run_qso
150+ # sandp_qso
151+ # hour_run_qso
152+ # hour_sandp_qso
153+ # --------------------
154+ # avg_km
155+ # avg_pts
156+ # --------------------
157+ # time_by_mult
158+ # qso_counts
159+ # mult_counts
160+ # mult_worth
161+ # {'runs': 3, 'totalqs': 3}
162+
163+ # WHERE datetime(timestamp) > datetime(current_timestamp, '-60 minutes')
164+ if self .active :
165+ query = f"select sum(IsRunQSO) as runs, count(*) as totalqs from dxlog where ContestNR = { self .database .current_contest } ;"
166+ result = self .database .exec_sql (query )
167+ sandp = result .get ("totalqs" , 0 ) - result .get ("runs" , 0 )
168+ self .run_qso .setText (f"{ result .get ("runs" , 0 )} " )
169+ self .sandp_qso .setText (f"{ sandp } " )
170+ self .qso_counts .setText (f"{ result .get ("totalqs" , 0 )} pts" )
171+
172+ query = f"select count(*) as totalqs from dxlog where ContestNR = { self .database .current_contest } and datetime(TS) > datetime(current_timestamp, '-60 minutes');"
173+ result = self .database .exec_sql (query )
174+ self .last_hour .setText (f"{ result .get ("totalqs" , 0 )} Q/h" )
0 commit comments