bugfix: corrected week calculation (iso)
This commit is contained in:
@@ -1,17 +1,27 @@
|
|||||||
BEGIN { FS="|"; i=0; dlt = -259200; spw = 604800; }
|
BEGIN { FS="|" }
|
||||||
NR == FNR {
|
NR == FNR {
|
||||||
i = i + 1;
|
i = i + 1;
|
||||||
from[i] = int(($1 + dlt)/ spw);
|
from_year[i] = $1
|
||||||
|
from_week[i] = $2
|
||||||
getline;
|
getline;
|
||||||
to[i] = int(($1 + dlt) / spw);
|
to_year[i] = $1
|
||||||
|
to_week[i] = $2
|
||||||
next
|
next
|
||||||
} # Load start and end week numbers from first file
|
} # Load start and end week numbers from first file
|
||||||
|
|
||||||
{
|
{
|
||||||
if (from[FNR] > to[FNR])
|
year_i = from_year[FNR]
|
||||||
print "FNR", FNR, ":", from[FNR],"-",to[FNR], " ",$0;
|
week_i = from_week[FNR]
|
||||||
for(i=from[FNR]; i<=to[FNR]; i++) {
|
year_end = to_year[FNR]
|
||||||
week[i] = week[i] " " $5
|
week_end = to_week[FNR]
|
||||||
|
while(year_i <= year_end && (year_i < year_end || week_i <= week_end)) {
|
||||||
|
label = year_i"|"week_i
|
||||||
|
week[label] = week[label] " " $5
|
||||||
|
week_i++
|
||||||
|
if (week_i > 53) {
|
||||||
|
week_ = 1
|
||||||
|
year_i++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
END { for (i in week) print i week[i]; }
|
}
|
||||||
|
END { for (label in week) print label week[label]; }
|
||||||
|
22
src/main.sh
22
src/main.sh
@@ -144,15 +144,14 @@ __load_approx_data() {
|
|||||||
__load_weeks() {
|
__load_weeks() {
|
||||||
dates=$(awk -F'|' '{ print $2; print $3 }' "$APPROX_DATA_FILE")
|
dates=$(awk -F'|' '{ print $2; print $3 }' "$APPROX_DATA_FILE")
|
||||||
file_dates=$(mktemp)
|
file_dates=$(mktemp)
|
||||||
echo "$dates" | date --file="/dev/stdin" +"%s" >"$file_dates"
|
echo "$dates" | date --file="/dev/stdin" +"%G|%V" >"$file_dates"
|
||||||
awk "$AWK_MERGE" "$file_dates" "$APPROX_DATA_FILE"
|
awk "$AWK_MERGE" "$file_dates" "$APPROX_DATA_FILE"
|
||||||
rm "$file_dates"
|
rm "$file_dates"
|
||||||
}
|
}
|
||||||
|
|
||||||
__show_day() {
|
__show_day() {
|
||||||
weeknr=$(date -d "$DISPLAY_DATE" +"%s")
|
weeknr=$(date -d "$DISPLAY_DATE" +"%G.%V")
|
||||||
weeknr=$(((weeknr - 259200) / 604800)) # shift, because epoch origin is a Thursday
|
files=$(grep "^$weeknr\ " "$WEEKLY_DATA_FILE" | cut -d " " -f 2-)
|
||||||
files=$(grep "^$weeknr " "$WEEKLY_DATA_FILE" | cut -d " " -f 2-)
|
|
||||||
# Find relevant files in list of week files
|
# Find relevant files in list of week files
|
||||||
sef=$({
|
sef=$({
|
||||||
set -- $files
|
set -- $files
|
||||||
@@ -199,9 +198,8 @@ __show_day() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
__list() {
|
__list() {
|
||||||
weeknr=$(date -d "$DISPLAY_DATE" +"%s")
|
weeknr=$(date -d "$DISPLAY_DATE" +"%G.%V")
|
||||||
weeknr=$(((weeknr - 259200) / 604800)) # shift, because epoch origin is a Thursday
|
files=$(grep "^$weeknr\ " "$WEEKLY_DATA_FILE" | cut -d " " -f 2-)
|
||||||
files=$(grep "^$weeknr " "$WEEKLY_DATA_FILE" | cut -d " " -f 2-)
|
|
||||||
dayofweek=$(date -d "$DISPLAY_DATE" +"%u")
|
dayofweek=$(date -d "$DISPLAY_DATE" +"%u")
|
||||||
delta=$((1 - dayofweek))
|
delta=$((1 - dayofweek))
|
||||||
startofweek=$(date -d "$DISPLAY_DATE -$delta days" +"%D")
|
startofweek=$(date -d "$DISPLAY_DATE -$delta days" +"%D")
|
||||||
@@ -388,6 +386,7 @@ if [ "${1:-}" = "--new" ]; then
|
|||||||
if awk -v uid="$uuid" "$AWK_NEW" "$filetmp" >"$filenew"; then
|
if awk -v uid="$uuid" "$AWK_NEW" "$filetmp" >"$filenew"; then
|
||||||
mv "$filenew" "$fpath"
|
mv "$filenew" "$fpath"
|
||||||
__refresh_data
|
__refresh_data
|
||||||
|
start=$(awk -v field="DTSTART" "$AWK_GET" "$fpath" | grep -o '[0-9]\{8\}')
|
||||||
else
|
else
|
||||||
rm -f "$filenew"
|
rm -f "$filenew"
|
||||||
err "Failed to create new entry. Press <enter> to continue."
|
err "Failed to create new entry. Press <enter> to continue."
|
||||||
@@ -395,6 +394,7 @@ if [ "${1:-}" = "--new" ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
rm "$filetmp"
|
rm "$filetmp"
|
||||||
|
set -- "--day" "$start"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "${APPROX_DATA_FILE:-}" ]; then
|
if [ -z "${APPROX_DATA_FILE:-}" ]; then
|
||||||
@@ -473,8 +473,8 @@ if [ "${1:-}" = "--preview" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
month_previous() {
|
month_previous() {
|
||||||
month="$1"
|
month=$(echo "$1" | sed 's/^0//')
|
||||||
year="$2"
|
year=$(echo "$2" | sed 's/^0//')
|
||||||
if [ "$month" -eq 1 ]; then
|
if [ "$month" -eq 1 ]; then
|
||||||
month=12
|
month=12
|
||||||
year=$((year - 1))
|
year=$((year - 1))
|
||||||
@@ -485,8 +485,8 @@ month_previous() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
month_next() {
|
month_next() {
|
||||||
month="$1"
|
month=$(echo "$1" | sed 's/^0//')
|
||||||
year="$2"
|
year=$(echo "$2" | sed 's/^0//')
|
||||||
if [ "$month" -eq 12 ]; then
|
if [ "$month" -eq 12 ]; then
|
||||||
month=1
|
month=1
|
||||||
year=$((year + 1))
|
year=$((year + 1))
|
||||||
|
Reference in New Issue
Block a user