Index: common.scm ================================================================== --- common.scm +++ common.scm @@ -128,10 +128,14 @@ (sec (- secs (* hrs 3600)(* min 60)))) (conc (if (> hrs 0)(conc hrs "hr ") "") (if (> min 0)(conc min "m ") "") sec "s"))) +(define (seconds->time-string sec) + (time->string + (seconds->local-time sec) "%H:%M:%S")) + ;;====================================================================== ;; Colors ;;====================================================================== (define (common:name->iup-color name) Index: dashboard-tests.scm ================================================================== --- dashboard-tests.scm +++ dashboard-tests.scm @@ -329,11 +329,11 @@ #:expand "YES" #:size "200x150" #:alignment "ALEFT:ATOP"))) (hash-table-set! widgets "Test Steps" (lambda (testdat) (let* ((currval (iup:attribute stepsdat "TITLE")) - (fmtstr "~15a~8a~8a~8a~20a") + (fmtstr "~25a~10a~10a~15a~20a") (steps (db:get-steps-for-test db test-id)) ;; organise the steps for better readability (comprsteps (let ((res (make-hash-table))) (for-each (lambda (step) @@ -342,13 +342,18 @@ (db:step-get-stepname step) ;; stepname start end status (vector (db:step-get-stepname step) "" "" "" "")))) (case (string->symbol (db:step-get-state step)) ((start)(vector-set! record 1 (db:step-get-event_time step)) - (vector-set! record 3 (db:step-get-status step))) + (vector-set! record 3 (if (equal? (vector-ref record 3) "") + (db:step-get-status step)))) ((end) (vector-set! record 2 (db:step-get-event_time step)) - (vector-set! record 3 (db:step-get-status step))) + (vector-set! record 3 (db:step-get-status step)) + (vector-set! record 4 (let ((startt (vector-ref record 1)) + (endt (vector-ref record 2))) + (if (and (number? startt)(number? endt)) + (seconds->hr-min-sec (- endt startt)) "-1")))) (else (vector-set! record 1 (db:step-get-event_time step))) (vector-set! record 2 (db:step-get-state step)) (vector-set! record 3 (db:step-get-status step)) (vector-set! record 4 (db:step-get-event_time step))) (hash-table-set! res (db:step-get-stepname step) record))) @@ -361,16 +366,18 @@ (format #f fmtstr "========" "=====" "======" "======" "==========")) (map (lambda (x) ;; take advantage of the \n on time->string (format #f fmtstr (vector-ref x 0) - (seconds->time-string (vector-ref x 1)) - (vector-ref x 2) + (let ((s (vector-ref x 1))) + (if (number? s)(seconds->time-string s) s)) + (let ((s (vector-ref x 2))) + (if (number? s)(seconds->time-string s) s)) (vector-ref x 3) (vector-ref x 4))) (sort (hash-table-values comprsteps) - (lambda (a b)(< (vector-ref 1 a)(vector-ref 1 b)))))) + (lambda (a b)(< (vector-ref a 1)(vector-ref b 1)))))) "\n"))) (if (not (equal? currval newval)) (iup:attribute-set! stepsdat "TITLE" newval))))) stepsdat))))) (iup:show self) Index: db.scm ================================================================== --- db.scm +++ db.scm @@ -449,14 +449,10 @@ (define-inline (db:step-set-event_time! vec val)(vector-set! vec 5 val)) (define (db:step-get-time-as-string vec) (seconds->time-string (db:step-get-event_time vec))) -(define (seconds->time-string sec) - (time->string - (seconds->local-time sec))) - ;; db-get-test-steps-for-run (define (db:get-steps-for-test db test-id) (let ((res '())) (sqlite3:for-each-row (lambda (id test-id stepname state status event-time)