]> git.plutz.net Git - confetti/blobdiff - cards/widgets.sh
insert optional line break in long street names
[confetti] / cards / widgets.sh
index 1ead03ec284c487ecd8331ccafce146f138954ea..463a64814cf0afaa8dd72e74fe23bbca8a9a2fa0 100755 (executable)
@@ -19,26 +19,47 @@ list_categories() {
   grep -vxE '^[        ]*$' "${_DATA}/mappings/categories"
 }
 
+list_courses() {
+  local file name cachefile="${_DATA}/cache/courses.ui.cache"
+  if [ $cachefile -nt "${_DATA}/ical" ]; then
+    cat "$cachefile"
+  else
+    for file in "$_DATA/ical"/*.ics; do
+      name="$(pdi_value "$(pdi_load "$file")" SUMMARY |HTML)"
+      printf '%s       %s\n' "$file" "$name"
+    done \
+    | sort -k2 |tee "$cachefile"
+  fi
+}
+
 w_filter_item() {
 n=$3
 cat <<EOF
   [fieldset .item
     [legend $(l10n filter_item):]
 
-    $(for field in any name street zip TEL BDAY CATEGORIES; do
+    $(for field in any name street zip TEL BDAY CATEGORIES course; do
       printf '[input id="%s%i" type="radio" name="filter_type%i" value="%s" %s][label for="%s%i" %s ]' \
               "$field" "$n" "$n" "$field" "$([ "$1" = "$field" ] && printf checked )" \
               "$field" "$n" "$(l10n filter_$field)"
     done)
-    [input type="text" name="filter_text$n" value="$([ "$1" = CATEGORIES ] || HTML "$2")" placeholder="$(l10n filter_placeholder)"]
+    [input type="text" name="filter_text$n" value="$([ "$1" = CATEGORIES -o "$1" = course ] || HTML "$2")" placeholder="$(l10n filter_placeholder)"]
     [fieldset .categories
       $(list_categories | while read cat; do
-          printf '[label [checkbox "filter_cat%i" "|%s" %s] %s ]' \
+          printf '[label [checkbox "filter_cat%i" "|%s" %s] %s ] ' \
                  "$n" "$(HTML "$cat")" \
                  "$(printf %s "$cat" |grep -qxEe "$2" && printf checked )" \
                  "$(HTML "$cat")"
       done)
-      [a href="/cards/categories.sh" $(l10n edit_categories)]
+      [a href="/categories/" $(l10n edit_categories)]
+    ]
+    [fieldset .courses
+      $(list_courses | while read course coursename; do
+        printf '[label [checkbox "filter_course%i" "|%s" %s] %s ] ' \
+               "$n" "$(HTML "${course##*/}")" \
+               "$(printf %s "${course##*/}" |grep -qxEe "$2" && printf checked )" \
+               "$coursename"
+      done)
     ]
   ]
 EOF
@@ -67,6 +88,7 @@ w_filter_diag(){
     ]
     [button type="submit" name="choice" value="filter" $(l10n filter_apply)]
     [button type="submit" name="choice" value="del_filter" $(l10n filter_cancel)]
+    [button type="submit" name="choice" value="export_csv" $(l10n export_csv)]
   ]
 EOF
 }
@@ -145,6 +167,13 @@ card_item(){
                     "$(pdi_value "$card" TEL $c |unescape |HTML)"
         done
         ;;
+      ADR)[ $cnt -gt 0 ] && printf '[h3 %s]' "$(l10n "$item")"
+        shy="$(printf '\302\255')"
+        seq 1 $cnt |while read c; do
+          printf '[span .item .%s . %s]' "$item" \
+                 "$(pdi_value "$card" "$item" $c |sed -r "s;(straße|weg|damm|allee|ufer);${shy}\1;g" |unescape |HTML)"
+        done
+        ;;
       *)[ $cnt -gt 0 ] && printf '[h3 %s]' "$(l10n "$item")"
         seq 1 $cnt |while read c; do
           printf '[span .item .%s . %s]' "$item" \
@@ -172,8 +201,7 @@ edit_item(){
                EOF
         else
          N="$(pdi_value "$card" FN |unescape)"
-          n1="${N%%[a-z]*}" n1="${N#$n1}"
-          [ "$n1" ] || n1="${N##* }"
+          n1="${N##* }"
           n2="${N%$n1}"
         fi
         printf '
@@ -184,7 +212,7 @@ edit_item(){
         [input .item .N name="5N" placeholder="%s" value="%s"]
         ' "$(l10n "$item")" \
         "$(l10n n_pre)"   "$(HTML "$n4")" \
-        "$(l10n n_first)" "$(HTML "$n2" "$n3")" \
+        "$(l10n n_first)" "$(HTML "${n2}$([ "$n2" -a "$n3" ] && printf ' ')${n3}")" \
         "$(l10n n_last)"  "$(HTML "$n1")" \
         "$(l10n n_post)"  "$(HTML "$n5")"
         ;;