ridZddlmZmZmZmZmZmZmZm Z m Z m Z ddl m Z ddlmZddlmZddlZddlmZddlmZdd lmZGd d eZdS) z? History Widget for Python Scheduler Display execution history ) QWidget QVBoxLayout QHBoxLayout QTableWidgetQTableWidgetItem QPushButton QHeaderViewQLabelQSpinBox QMessageBox)Qt)QColor)loggerN)SchedulerDatabase)SchedulerConfig)LogMonitorWindowcDeZdZdZdedeffd ZdZdZdZ dZ xZ S) HistoryWidgetzExecution history widgetdbconfigct||_||_d|_||dS)N2)super__init__rrlimit _setup_uirefresh)selfrr __class__s %C:\PYTHON\Frank\gui\history_widget.pyrzHistoryWidget.__init__sO     ct|}t}td}|d|||td}||t |_|jd|j d|j d|j d|jj |j||jtd|_|jj |j|jd||j||t+|_|jd |jgd |jd t6jj|jt*jj |j!d |j"t*j#j$||jd S)zSetup UIzExecution Historyz#font-size: 14px; font-weight: bold;z Show last: iru📺 Monitor Logz'Open log monitor for selected execution)IDzJob NameStatusz Start TimeDurationz Exit Codez Triggered ByTN)%rrr setStyleSheet addWidget addStretchr limit_spin setMinimum setMaximumsetValue setSingleStep valueChangedconnect_on_limit_changedr monitor_btnclicked _open_monitor setToolTip addLayoutrtablesetColumnCountsetHorizontalHeaderLabelshorizontalHeadersetSectionResizeModer ResizeModeStretchsetSelectionBehaviorSelectionBehavior SelectRowssetAlternatingRowColorssetEditTriggers EditTriggerNoEditTriggers)rlayout header_layout header_label limit_labels r rzHistoryWidget._setup_ui spT""$ 122 ""#HIII ---  """\**  ,,,"** ""2&&& ""3'''   $$$ %%b))) $,,T-CDDD000''9::  (();<<< ##$MNNN 0111'''"^^  !!!$$$ ,,. . .     ##%%::1k>T>\]]] '' (F(QRRR **4000 ""<#;#JKKK$$$$$r!c<||_|dS)zHandle limit changeN)rr)rvalues r r3zHistoryWidget._on_limit_changedMs  r!c  |j|jtj}|jt|t|D]\}}|j |dtt|dt|d}|j |d||d}t| }|dkr:| tjj|dn|d kr:| tjj|d n|d kr:| tjj|d n?|d kr9| tjj|d|j |d||dr|dddnd}|j |dt||dr |ddd}nd}|j |dt||dt|dnd} t| } |ddkr%| tjjn8|d0|ddkr$| tjj|j |d| |j |dt|dt+jdt|ddS#t.$r"} t+jd| Yd} ~ dSd} ~ wwxYw) zRefresh execution history)rhostnameridjob_namer(status completedu ✓ COMPLETEDfailedu ✗ FAILEDrunningu ▶ RUNNINGtimeoutu ⏱ TIMEOUT start_timeNzN/Aduration_secondsz.1fs exit_code triggered_byzRefreshed history table: z executionszError refreshing history: )rget_recent_executionsrsocket gethostnamer9 setRowCountlen enumeratesetItemrstrupper setForegroundr GlobalColor darkGreensetTextredblue darkYellowrdebug Exceptionerror) r executionsrow execution name_itemrQ status_itemrW duration_strr] exit_itemes r rzHistoryWidget.refreshRs: ;66TZRXRdRfRf6ggJ J " "3z?? 3 3 3"+J"7"70 X0 XY ""3+;C $> [((--bn.FGGG''8888x''--bn.@AAA'' 5555y((--bn.ABBB'' 6666y((--bn.GHHH'' 666 ""3;777>G|=T_Y|4SbS99Z_  ""3+;J+G+GHHH/0)&/0B&C#J#J#J#JLL#(L ""3+;L+I+IJJJ??? ""39555 ""3+;InrsF  ++++++''''''333333UPUPUPUPUPGUPUPUPUPUPr!