Mercurial > getan
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)) } '