view contrib/wochenbericht @ 303:c75eed90ae01

Set focus to project list body when changing from adding and subtracting time back to the old state This alows to use keys to navigate throught the list again after adding or subtracting time from the running project.
author Björn Ricks <bjoern.ricks@intevation.de>
date Fri, 11 Oct 2013 10:13:40 +0200
parents 4de86feae6ac
children
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.
#
usage() {
    cat <<EOF
usage: ./wochenbericht [<week of year>] [<year>] [<getan database file>] 
    <week of year>        defaults to current week
    <year>                defaults to current year
    <getan database file> defaults to time.db
EOF
    exit 1
}

if [ "$1" ==  "--help" -o "$1" == "-h" ]; then
    usage
fi


if [[ "$1" -eq "" ]]; then
    WEEK=`date +'%W'`
    # remove hash below if you want previous week
    #WEEK=`expr ${WEEK} '-' 1 '|' 52`
else
    WEEK=$1
fi

if [[ "$2" -eq "" ]]; then
    YEAR=`date +'%Y'`
else
    YEAR=$2
fi

TIME_DB=${3:-time.db}

if [ ! -f ${TIME_DB} ]; then
    echo "error: Database file ${TIME_DB} does not exist."
    usage
fi

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}' AND
        strftime('%Y', start_time) = '${YEAR}') OR 
        (strftime('%W', stop_time)  = '${WEEK}' AND
        strftime('%Y', stop_time) = '${YEAR}')
    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)