view contrib/wochenbericht @ 169:d10a0e35b982

Fix: Allow to move entries to projects with similar names Use the same selection as in the project selection. This allows to select overlapping projects with keys like a, ab, abc.
author Björn Ricks <bjoern.ricks@intevation.de>
date Mon, 10 Dec 2012 09:33:40 +0100
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)