diff --git a/src/awk/lines.awk b/src/awk/lines.awk index 50dfb27..4478d11 100644 --- a/src/awk/lines.awk +++ b/src/awk/lines.awk @@ -48,7 +48,7 @@ function title(start, summary) { depth = split(FILENAME, path, "/"); collection = depth > 1 ? path[depth-1] : ""; collection = collection in collection2label ? collection2label[collection] : collection; - return FAINT "~ " collection " " gensub(/^[^0-9]*([0-9]{4})([0-9]{2}).*$/, "\\1-\\2", "1", start) " " summary " ;" start OFF + return FAINT "~ " collection " " gensub(/^[^0-9]*([0-9]{4})([0-9]{2}).*$/, "\\1-\\2", "1", start) " " summary OFF } BEGIN { @@ -69,7 +69,7 @@ BEGIN { OFF = "\033[m"; } BEGINFILE { inside = 0; rs = 0; dur = 0; summary = ""; start = "ERROR"; end = "ERROR" } -/^END:VEVENT/ { print start, dur ? start " " end : end, title(start, summary), fn(FILENAME, n, a); nextfile } +/^END:VEVENT/ { print "~", start, dur ? start " " end : end, title(start, summary), fn(FILENAME, n, a); nextfile } /^DTSTART/ && inside { start = parse( dt) } /^DTEND/ && inside { end = parse( dt) } /^DURATION/ && inside { end = parse_duration( dt, dta, i, n, a, seps); dur = 1 } diff --git a/src/awk/merge.awk b/src/awk/merge.awk index 6210c8a..b8fb670 100644 --- a/src/awk/merge.awk +++ b/src/awk/merge.awk @@ -11,7 +11,7 @@ NR == FNR { 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] ? week[i] ";" $4 : $4 + week[i] = week[i] " " $5 } } -END { for (i in week) print i, week[i]; } +END { for (i in week) print i week[i]; } diff --git a/src/awk/weekview.awk b/src/awk/weekview.awk index dae6325..b078561 100644 --- a/src/awk/weekview.awk +++ b/src/awk/weekview.awk @@ -8,12 +8,13 @@ BEGIN { CYAN = "\033[1;36m"; FAINT = "\033[2m"; OFF = "\033[m"; + OFS = "|" } /^[0-7] 00:00 -- 00:00/ { dayline = dayline " " c(); next } /^[0-7] 00:00 -- / { dayline = dayline " <-|" $4 " " c(); next } /^[0-7] [0-9]{2}:[0-9]{2} -- 00:00/ { dayline = dayline " " $2 "|-> " c(); next } /^[0-7] [0-9]{2}:[0-9]{2} -- [0-9]{2}:[0-9]{2}/ { dayline = dayline " " $2 " - " $4 " " c(); next } -/^[0-7]$/ && dayline { print dayline " ;" startofweek " +" $0 " days"; } +/^[0-7]$/ && dayline { print "+", startofweek " +" $0 " days", "", dayline; } /^[0-7]$/ { cmd = "date -d '" startofweek " +" $0 " days' +\"%a %e %b %Y\""; cmd | getline dayline; diff --git a/src/main.sh b/src/main.sh index b6c215f..391dcea 100755 --- a/src/main.sh +++ b/src/main.sh @@ -73,13 +73,6 @@ EOF ) export AWK_PARSE - AWK_WEEKS=$( - cat <<'EOF' -@@include src/awk/weeks.awk -EOF - ) - export AWK_WEEKS - AWK_WEEKVIEW=$( cat <<'EOF' @@include src/awk/weekview.awk @@ -100,7 +93,7 @@ __load_approx_data() { } __load_weeks() { - dates=$(awk -F'|' '{ print $1; print $2 }' "$APPROX_DATA_FILE") + dates=$(awk -F'|' '{ print $2; print $3 }' "$APPROX_DATA_FILE") file_dates=$(mktemp) echo "$dates" | date --file="/dev/stdin" +"%s" >"$file_dates" awk "$AWK_MERGE" "$file_dates" "$APPROX_DATA_FILE" @@ -110,13 +103,12 @@ __load_weeks() { __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) + 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") # loop over files sef=$({ - IFS=';' set -- $files for file in "$@"; do file="$ROOT/$file" @@ -166,13 +158,11 @@ __list() { } if [ -z "${APPROX_DATA_FILE:-}" ]; then - echo "GOING TO LOAD" APPROX_DATA_FILE=$(mktemp) __load_approx_data >"$APPROX_DATA_FILE" export APPROX_DATA_FILE fi if [ -z "${WEEKLY_DATA_FILE:-}" ]; then - echo "GOING TO LOAD WD" WEEKLY_DATA_FILE=$(mktemp) __load_weeks >"$WEEKLY_DATA_FILE" export WEEKLY_DATA_FILE @@ -188,7 +178,8 @@ DISPLAY_DATE_PREV=$(date -d "$DISPLAY_DATE -1 week" +"%D") DISPLAY_DATE_NEXT=$(date -d "$DISPLAY_DATE +1 week" +"%D") selection=$( ( - cut -d '|' -f 3 "$APPROX_DATA_FILE" + #cut -d '|' -f 3 "$APPROX_DATA_FILE" + cat "$APPROX_DATA_FILE" yes " " | head -n 50 __list ) | @@ -197,6 +188,9 @@ selection=$( ( --no-sort \ --no-hscroll \ --ellipsis='' \ + --delimiter='|' \ + --with-nth='{4}' \ + --accept-nth=1,2,3,5 \ --ansi \ --no-clear \ --bind="ctrl-p:become($0 --date '$DISPLAY_DATE_PREV')" \ @@ -208,16 +202,15 @@ if [ -z "$selection" ]; then return 0 fi -case "$selection" in -"~"*) - start=$(echo "$selection" | rev | cut -d';' -f 1 | rev) - exec $0 --date "$start" - ;; -*) - day=$(echo "$selection" | rev | cut -d';' -f 1 | rev) - exec $0 --day "$day" - ;; -esac +sign=$(echo "$selection" | cut -d '|' -f 1) +startdate=$(echo "$selection" | cut -d '|' -f 2) +endate=$(echo "$selection" | cut -d '|' -f 3) +files=$(echo "$selection" | cut -d '|' -f 4) +if [ "$sign" = "~" ]; then + exec $0 --date "$startdate" +else + exec $0 --day "$startdate" +fi echo "Going to end..." echo "$selection" echo "STOPPING NOW"