@@ -181,31 +181,34 @@ (delta (map (lambda (a b)(abs (- a b))) c1 c2))) (null? (filter (lambda (x)(> x 3)) delta)))) ;; keypatts: ( (KEY1 "abc%def")(KEY2 "%") ) (define (update-rundat runnamepatt numruns testnamepatt itemnamepatt keypatts) - (let* ((allruns (db:get-runs *db* runnamepatt numruns *start-run-offset* keypatts)) + (let* ((allruns (db:get-runs *db* runnamepatt (+ numruns (/ numruns 2)) *start-run-offset* keypatts)) (header (db:get-header allruns)) (runs (db:get-rows allruns)) (result '()) (maxtests 0) (states (hash-table-keys *state-ignore-hash*)) (statuses (hash-table-keys *status-ignore-hash*))) - (if (> (+ *last-update* 300) (current-seconds)) ;; every five minutes - (begin - (set! *last-update* (current-seconds)) - (set! *tot-run-count* (db:get-num-runs *db* runnamepatt)))) + ;; Instead of this mechanism lets try setting number of runs based on "result" below + ;; (if (> (+ *last-update* 300) (current-seconds)) ;; every five minutes + ;; (begin + ;; (set! *last-update* (current-seconds)) + ;; (set! *tot-run-count* (db:get-num-runs *db* runnamepatt)))) (for-each (lambda (run) (let* ((run-id (db:get-value-by-header run header "id")) (tests (db-get-tests-for-run *db* run-id testnamepatt itemnamepatt states statuses)) (key-vals (get-key-vals *db* run-id))) (if (> (length tests) maxtests) (set! maxtests (length tests))) - (set! result (cons (vector run tests key-vals) result)))) + (if (not (null? tests)) + (set! result (cons (vector run tests key-vals) result))))) runs) (set! *header* header) (set! *allruns* result) + (set! *tot-run-count* (+ 1 (length *allruns*))) maxtests)) (define *collapsed* (make-hash-table)) ; (define *row-lookup* (make-hash-table)) ;; testname => (rownum lableobj) @@ -461,32 +464,50 @@ (hash-table-set! *status-ignore-hash* "WARN" #t) (hash-table-delete! *status-ignore-hash* "WARN")))) (iup:toggle "WAIVED" #:action (lambda (obj val) (if (eq? val 1) (hash-table-set! *status-ignore-hash* "WAIVED" #t) - (hash-table-delete! *status-ignore-hash* "WAIVED"))))) + (hash-table-delete! *status-ignore-hash* "WAIVED")))) + (iup:toggle "STUCK/DEAD" #:action (lambda (obj val) + (if (eq? val 1) + (hash-table-set! *status-ignore-hash* "STUCK/DEAD" #t) + (hash-table-delete! *status-ignore-hash* "STUCK/DEAD")))) + ) (iup:hbox (iup:toggle "RUNNING" #:action (lambda (obj val) (if (eq? val 1) (hash-table-set! *state-ignore-hash* "RUNNING" #t) (hash-table-delete! *state-ignore-hash* "RUNNING")))) (iup:toggle "COMPLETED" #:action (lambda (obj val) (if (eq? val 1) (hash-table-set! *state-ignore-hash* "COMPLETED" #t) (hash-table-delete! *state-ignore-hash* "COMPLETED")))) + (iup:toggle "INCOMPLETE" #:action (lambda (obj val) + (if (eq? val 1) + (hash-table-set! *state-ignore-hash* "INCOMPLETE" #t) + (hash-table-delete! *state-ignore-hash* "INCOMPLETE")))) + (iup:toggle "LAUNCHED" #:action (lambda (obj val) + (if (eq? val 1) + (hash-table-set! *state-ignore-hash* "LAUNCHED" #t) + (hash-table-delete! *state-ignore-hash* "LAUNCHED")))) + (iup:toggle "NOT_STARTED" #:action (lambda (obj val) + (if (eq? val 1) + (hash-table-set! *state-ignore-hash* "NOT_STARTED" #t) + (hash-table-delete! *state-ignore-hash* "NOT_STARTED")))) (iup:toggle "KILLED" #:action (lambda (obj val) (if (eq? val 1) (hash-table-set! *state-ignore-hash* "KILLED" #t) (hash-table-delete! *state-ignore-hash* "KILLED"))))))) (iup:valuator #:valuechanged_cb (lambda (obj) - (let ((val (inexact->exact (round (string->number (iup:attribute obj "VALUE"))))) + (let ((val (inexact->exact (round (+ 0.5 (string->number (iup:attribute obj "VALUE")))))) (maxruns *tot-run-count*)) ;;; (+ *num-runs* (length *allruns*)))) (set! *start-run-offset* val) (debug:print 3 "maxruns: " maxruns ", val: " val) (iup:attribute-set! obj "MAX" maxruns))) #:expand "YES" - #:max (+ *num-runs* (length *allruns*))) + #:max (+ ;; *num-runs* + (length *allruns*))) ;(iup:button "inc rows" #:action (lambda (obj)(set! *num-tests* (+ *num-tests* 1)))) ;(iup:button "dec rows" #:action (lambda (obj)(set! *num-tests* (if (> *num-tests* 0)(- *num-tests* 1) 0)))) ) )