view contrib/wochenbericht @ 4:2b2f74f301db

Added little script to summarize the entries for a given week number of year.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 31 Jul 2008 01:00:42 +0200
parents
children e7245c2127e5
line wrap: on
line source
#!/bin/bash
#
# wochenbericht
# -------------
# (c) 2008 by Sascha L. Teichmann

# Little script to summarize times within a given week.
# usage:
# ./wochenbericht [<week of year>] [<getan database file>]
# week defaults to current week, database to time.db
#
# This is Free Software in terms of GPLv3 or later. See
# LICENSE coming with getan for details.
#
if [[ "$1" -eq "" ]]; then
    WEEK=`date +'%W'`
    # remove hash below if you want previous week
    #WEEK=`expr ${WEEK} '-' 1 '|' 52`
else
    WEEK=$1
fi

TIME_DB=${2:-time.db}

sqlite3 ${TIME_DB} "
SELECT coalesce(description, 'Verschiedenes'), total FROM projects 
INNER JOIN (
    SELECT 
        project_id,
        sum(strftime('%s', stop_time) - strftime('%s', start_time)) AS total
    FROM entries
    WHERE strftime('%W', start_time) = '${WEEK}' OR 
          strftime('%W', stop_time)  = '${WEEK}' 
    GROUP BY project_id
) ON id = project_id
WHERE active;
" | awk '
function human_time(t) {
    h = int(t / 3600)
    m = int((t % 3600)/60.0 + 0.5)
    while (m >= 60) { ++h; m -= 60 }
    return sprintf("%2d:%02dh", h, m)
}
BEGIN { FS="|"; sum = 0 }
      { sum += $2 
        printf("%s: %s\n", human_time($2), $1) 
      }
END   { printf("%s: Gesamt\n", human_time(sum)) } 
'
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)