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 {
 | 
			
		||||
  i = i + 1;
 | 
			
		||||
  from[i] = int(($1 + dlt)/ spw);
 | 
			
		||||
  from_year[i] = $1
 | 
			
		||||
  from_week[i] = $2
 | 
			
		||||
  getline;
 | 
			
		||||
  to[i] = int(($1 + dlt) / spw);
 | 
			
		||||
  to_year[i] = $1
 | 
			
		||||
  to_week[i] = $2
 | 
			
		||||
  next
 | 
			
		||||
} # Load start and end week numbers from first file
 | 
			
		||||
 | 
			
		||||
{ 
 | 
			
		||||
  if (from[FNR] > to[FNR])
 | 
			
		||||
    print "FNR", FNR, ":", from[FNR],"-",to[FNR], "    ",$0;
 | 
			
		||||
  for(i=from[FNR]; i<=to[FNR]; i++) {
 | 
			
		||||
    week[i] = week[i] " " $5
 | 
			
		||||
  year_i = from_year[FNR]
 | 
			
		||||
  week_i = from_week[FNR]
 | 
			
		||||
  year_end = to_year[FNR]
 | 
			
		||||
  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() {
 | 
			
		||||
  dates=$(awk -F'|' '{ print $2; print $3 }' "$APPROX_DATA_FILE")
 | 
			
		||||
  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"
 | 
			
		||||
  rm "$file_dates"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
__show_day() {
 | 
			
		||||
  weeknr=$(date -d "$DISPLAY_DATE" +"%s")
 | 
			
		||||
  weeknr=$(((weeknr - 259200) / 604800)) # shift, because epoch origin is a Thursday
 | 
			
		||||
  files=$(grep "^$weeknr " "$WEEKLY_DATA_FILE" | cut -d " " -f 2-)
 | 
			
		||||
  weeknr=$(date -d "$DISPLAY_DATE" +"%G.%V")
 | 
			
		||||
  files=$(grep "^$weeknr\ " "$WEEKLY_DATA_FILE" | cut -d " " -f 2-)
 | 
			
		||||
  # Find relevant files in list of week files
 | 
			
		||||
  sef=$({
 | 
			
		||||
    set -- $files
 | 
			
		||||
@@ -199,9 +198,8 @@ __show_day() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
__list() {
 | 
			
		||||
  weeknr=$(date -d "$DISPLAY_DATE" +"%s")
 | 
			
		||||
  weeknr=$(((weeknr - 259200) / 604800)) # shift, because epoch origin is a Thursday
 | 
			
		||||
  files=$(grep "^$weeknr " "$WEEKLY_DATA_FILE" | cut -d " " -f 2-)
 | 
			
		||||
  weeknr=$(date -d "$DISPLAY_DATE" +"%G.%V")
 | 
			
		||||
  files=$(grep "^$weeknr\ " "$WEEKLY_DATA_FILE" | cut -d " " -f 2-)
 | 
			
		||||
  dayofweek=$(date -d "$DISPLAY_DATE" +"%u")
 | 
			
		||||
  delta=$((1 - dayofweek))
 | 
			
		||||
  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
 | 
			
		||||
      mv "$filenew" "$fpath"
 | 
			
		||||
      __refresh_data
 | 
			
		||||
      start=$(awk -v field="DTSTART" "$AWK_GET" "$fpath" | grep -o '[0-9]\{8\}')
 | 
			
		||||
    else
 | 
			
		||||
      rm -f "$filenew"
 | 
			
		||||
      err "Failed to create new entry. Press <enter> to continue."
 | 
			
		||||
@@ -395,6 +394,7 @@ if [ "${1:-}" = "--new" ]; then
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
  rm "$filetmp"
 | 
			
		||||
  set -- "--day" "$start"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -z "${APPROX_DATA_FILE:-}" ]; then
 | 
			
		||||
@@ -473,8 +473,8 @@ if [ "${1:-}" = "--preview" ]; then
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
month_previous() {
 | 
			
		||||
  month="$1"
 | 
			
		||||
  year="$2"
 | 
			
		||||
  month=$(echo "$1" | sed 's/^0//')
 | 
			
		||||
  year=$(echo "$2" | sed 's/^0//')
 | 
			
		||||
  if [ "$month" -eq 1 ]; then
 | 
			
		||||
    month=12
 | 
			
		||||
    year=$((year - 1))
 | 
			
		||||
@@ -485,8 +485,8 @@ month_previous() {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
month_next() {
 | 
			
		||||
  month="$1"
 | 
			
		||||
  year="$2"
 | 
			
		||||
  month=$(echo "$1" | sed 's/^0//')
 | 
			
		||||
  year=$(echo "$2" | sed 's/^0//')
 | 
			
		||||
  if [ "$month" -eq 12 ]; then
 | 
			
		||||
    month=1
 | 
			
		||||
    year=$((year + 1))
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user